<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Strongthium Labs</title>
    <description>The latest articles on DEV Community by Strongthium Labs (@strongthium).</description>
    <link>https://dev.to/strongthium</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4205237%2Feb6a2726-04fa-4fbc-b0db-f10808d1e41f.png</url>
      <title>DEV Community: Strongthium Labs</title>
      <link>https://dev.to/strongthium</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/strongthium"/>
    <language>en</language>
    <item>
      <title>Trojanized Claude Code update on Cursor: cleanup and prevention</title>
      <dc:creator>Strongthium Labs</dc:creator>
      <pubDate>Sat, 31 Oct 2026 17:59:23 +0000</pubDate>
      <link>https://dev.to/strongthium/trojanized-claude-code-update-on-cursor-cleanup-and-prevention-kj5</link>
      <guid>https://dev.to/strongthium/trojanized-claude-code-update-on-cursor-cleanup-and-prevention-kj5</guid>
      <description>&lt;p&gt;For about half a day on October 29, 2026, anyone who installed or auto-updated Claude Code from Cursor's extension marketplace could have received a build that planted an SSH backdoor. The package carried the genuine extension identifier, &lt;code&gt;anthropic.claude-code&lt;/code&gt;, and arrived as an ordinary update. The live part of the attack has been shut down, but what it left on disk is still there until someone removes it. This article lays out what is known, where the reports disagree, how to clean up an affected machine, and what to change so the next tampered update does less damage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html" rel="noopener noreferrer"&gt;The Hacker News&lt;/a&gt;, the tampered package identified itself as &lt;code&gt;anthropic.claude-code&lt;/code&gt; version 2.1.313. Jenn Gile of OpenSourceMalware told the publication that its main JavaScript bundle held "a malicious 66-line loader inserted before the legitimate extension code." Cursor took its marketplace offline for a while to remove the package. It says at most 5,000 users installed the bad version, between about 2:27 a.m. and 1:35 p.m. Pacific time, and that it will contact them directly.&lt;/p&gt;

&lt;p&gt;Nobody has said publicly how the attacker got the access to publish under Anthropic's name on Cursor's marketplace. The two companies describe their roles differently, and both accounts can be true at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; says the malicious version "was not developed by Anthropic" and that no other extension on its marketplace was altered. It reports that it rotated its keys, rebuilt the marketplace and had the attacker's server taken offline with the cloud provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic&lt;/strong&gt; says its own systems and employee laptops were not compromised. As The Hacker News reports its statement, an attacker used access to Cursor's marketplace to publish the tampered build, and the official channels were not affected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Hacker News&lt;/strong&gt; argues that Cursor's wording "misses the point": the code did not come from Anthropic, but users got it under Anthropic's real extension ID, not as a look-alike, so the name told them nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other distribution channels appear clean. The Hacker News cites Socket, which found no sign that 2.1.313 was ever publicly available on Open VSX or npm. It also cites Microsoft, which confirmed the version was never published on the Visual Studio Marketplace or in the &lt;code&gt;anthropic-ai/claude-code&lt;/code&gt; npm package. The same article first reported that Open VSX was compromised and later corrected that. For scale, &lt;a href="https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code" rel="noopener noreferrer"&gt;the Visual Studio Marketplace listing&lt;/a&gt; shows more than 29 million installs under the Anthropic publisher. The Hacker News gives 2.1.314 as the current clean release on the official channels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the reports disagree
&lt;/h3&gt;

&lt;p&gt;The two news accounts, from &lt;a href="https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html" rel="noopener noreferrer"&gt;The Hacker News&lt;/a&gt; and &lt;a href="https://cybersecuritynews.com/malicious-claude-code-extension-with-cursor/" rel="noopener noreferrer"&gt;Cyber Security News&lt;/a&gt;, differ on several details. Where they do, the safer choice is to assume the wider scope.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Detail&lt;/th&gt;
&lt;th&gt;The Hacker News&lt;/th&gt;
&lt;th&gt;Cyber Security News&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Affected versions&lt;/td&gt;
&lt;td&gt;2.1.313&lt;/td&gt;
&lt;td&gt;2.1.312 and 2.1.313, per Cursor's notice as updated on October 30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time available&lt;/td&gt;
&lt;td&gt;"close to 12 hours," in Anthropic's account&lt;/td&gt;
&lt;td&gt;11 hours and 8 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platforms&lt;/td&gt;
&lt;td&gt;Attempts on Windows, Linux and macOS, with a crontab for persistence on Linux&lt;/td&gt;
&lt;td&gt;Aimed at Windows and macOS users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cyber Security News based its version list on Cursor's revised notice, so treat both 2.1.312 and 2.1.313 as bad. Check Linux machines too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the loader did
&lt;/h2&gt;

&lt;p&gt;The two reports agree on how the loader worked. It ran when the extension loaded (The Hacker News says after editor startup and when the extension's webview opens) and then did the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It added an attacker-controlled public key to &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, labeled &lt;code&gt;svc-telemetry&lt;/code&gt; so that it looks routine.&lt;/li&gt;
&lt;li&gt;It tried to turn on the machine's SSH server.&lt;/li&gt;
&lt;li&gt;It opened a reverse SSH tunnel to &lt;code&gt;134.209.82[.]225&lt;/code&gt;, which would let the attacker's server reach back into the victim's own SSH service.&lt;/li&gt;
&lt;li&gt;It installed persistence. Cyber Security News names a macOS LaunchAgent called &lt;code&gt;com.apple.sysmond&lt;/code&gt; and, on Windows, a scheduled task named &lt;code&gt;SysMon&lt;/code&gt; running as SYSTEM, with a script in the Startup folder as a fallback. Background scripts retried the connection about every 60 seconds.&lt;/li&gt;
&lt;li&gt;It sent an unencrypted HTTP POST to port 8099 at &lt;code&gt;/beacon&lt;/code&gt;. The report contained the public IP address (looked up through &lt;code&gt;api.ipify[.]org&lt;/code&gt;), the hostname and username, the OS and CPU architecture, the home and working directories, the global Git email, and the names of up to 40 environment variables containing strings such as &lt;code&gt;KEY&lt;/code&gt;, &lt;code&gt;TOKEN&lt;/code&gt;, &lt;code&gt;SECRET&lt;/code&gt;, &lt;code&gt;PASS&lt;/code&gt;, &lt;code&gt;AWS&lt;/code&gt; or &lt;code&gt;GCP&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The beacon sent variable names, not their values. Researcher Paul McCarty notes that the names still reveal which cloud providers and credential types a machine uses, and that working SSH access would let the operator look at the account directly. No follow-on payloads have been observed.&lt;/p&gt;

&lt;p&gt;How far the loader got depends on the host. As The Hacker News quotes Cursor, turning on the SSH service requires admin rights, which the extension lacks on most macOS and Windows hosts. On those machines the attacker "could not have logged in through the tunnel." Cyber Security News adds that bugs in the malicious code also got in the way. Neither limit stopped the key, the persistence or the beacon. On a Linux workstation that already runs an SSH server, the admin-rights obstacle may not apply at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq4u9on80mv29tzkfvglp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq4u9on80mv29tzkfvglp.jpg" alt="A developer workstation with a hidden thread running from it to a distant server" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding out whether you are affected
&lt;/h2&gt;

&lt;p&gt;A machine is in scope if it ran Cursor with Claude Code installed during the October 29 window, especially with automatic extension updates on. In the Extensions view, check the version that was installed then, not only the current one. The &lt;a href="https://code.claude.com/docs/en/vs-code" rel="noopener noreferrer"&gt;Claude Code VS Code documentation&lt;/a&gt; says the extension's version number matches the Claude Code version it bundles. The same page explains that running &lt;code&gt;claude&lt;/code&gt; in an editor's integrated terminal reinstalls the extension automatically. A developer may therefore have the extension without ever installing it on purpose, so ask about the CLI as well as the extension.&lt;/p&gt;

&lt;p&gt;Then look for the indicators. Cursor's published list, as summarized by Cyber Security News, contains the address &lt;code&gt;134.209.82[.]225&lt;/code&gt;, SSH connections on TCP port 22, HTTP POSTs to port 8099 at &lt;code&gt;/beacon&lt;/code&gt;, and the &lt;code&gt;svc-telemetry&lt;/code&gt; key. Search firewall, proxy and endpoint logs for that address from the morning of October 29 onward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning up an affected machine
&lt;/h2&gt;

&lt;p&gt;Microsoft's research team, quoted by The Hacker News, makes the central point: "Removing or updating the extension does not remove artifacts written outside its installation directory." Updating to a clean version is necessary, but it does not clean anything up. Work through these steps in order.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Preserve evidence&lt;/strong&gt; before you change anything: copy the &lt;code&gt;authorized_keys&lt;/code&gt; files, export the scheduled task, and keep copies of the LaunchAgent, crontab and any unfamiliar startup scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolate the host&lt;/strong&gt; from the network if it shows signs that the payload ran.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remove the artifacts&lt;/strong&gt;: the key, the persistence entries, and the SSH service if you did not turn it on yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update the extension&lt;/strong&gt; to a clean release from the official channel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate credentials and revoke sessions&lt;/strong&gt; from a different, trusted machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decide whether to rebuild.&lt;/strong&gt; Cyber Security News says Cursor advises assessing whether affected machines need a fresh install. If you can't account for everything the machine did during the window, rebuilding is the conservative choice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On Windows, these PowerShell commands check the known locations. Run them as an administrator so that the system-wide key file and the SYSTEM task are visible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Keys the loader may have added&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Select-String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;USERPROFILE&lt;/span&gt;&lt;span class="s2"&gt;\.ssh\authorized_keys"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Pattern&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'svc-telemetry'&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Select-String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;ProgramData&lt;/span&gt;&lt;span class="s2"&gt;\ssh\administrators_authorized_keys"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Pattern&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'svc-telemetry'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Persistence: the scheduled task (export it before deleting) and the Startup folder&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Export-ScheduledTask&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-TaskName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'SysMon'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Out-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sysmon-task.xml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;APPDATA&lt;/span&gt;&lt;span class="s2"&gt;\Microsoft\Windows\Start Menu\Programs\Startup"&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Was the OpenSSH server installed or started? Any live connection to the address?&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Service&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;sshd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-NetTCPConnection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-RemoteAddress&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;134.209.82.225&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On macOS and Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'svc-telemetry'&lt;/span&gt; ~/.ssh/authorized_keys
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; ~/Library/LaunchAgents/ | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; sysmond   &lt;span class="c"&gt;# macOS&lt;/span&gt;
launchctl list | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; sysmond                  &lt;span class="c"&gt;# macOS&lt;/span&gt;
crontab &lt;span class="nt"&gt;-l&lt;/span&gt;                                        &lt;span class="c"&gt;# Linux and macOS: look for entries you did not add&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete the &lt;code&gt;svc-telemetry&lt;/code&gt; line, not the whole file, unless you have confirmed every other key in it. Remove the task, LaunchAgent or cron entry, and the script it starts. If the SSH server is running and nobody needs it, stop and disable it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The servers behind the workstation
&lt;/h2&gt;

&lt;p&gt;To anyone who runs servers, a developer's workstation matters mainly as a way in to everything else. It holds SSH keys, cloud tokens and deployment credentials. The beacon's list of environment variable names works as a list of what to rotate: each name points to a secret that was on the machine. Replace any SSH private keys that lived in that account, remove the old public keys from the &lt;code&gt;authorized_keys&lt;/code&gt; files on your servers, and check your servers' authentication logs for logins from addresses you don't recognize since October 29. Do the rotation from a machine that was not exposed. Otherwise the new secrets end up on a host you don't yet trust.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4f4l30t30hg9ibgv31r5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4f4l30t30hg9ibgv31r5.jpg" alt="A watchtower above roads leading out of a town, one cart on an unmarked track" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the next one less damaging
&lt;/h2&gt;

&lt;p&gt;This attack did not rely on a look-alike name or a typo. It used the real extension ID, delivered through a trusted update channel. Checking the name before installing would not have caught it. What helps is limiting what a bad update can do and noticing quickly when one gets through.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Know which registry each editor uses.&lt;/strong&gt; The same extension ID lives in several registries. The Claude Code documentation sends VS Code users to Microsoft's marketplace, links a separate Cursor install, and points other VS Code forks to Open VSX. Only one of those registries was compromised. A trusted ID in one registry tells you nothing about the copy in another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weigh automatic updates on sensitive machines.&lt;/strong&gt; "Anyone who has their Claude Code instance set to auto-update could have consumed the malware," Gile told The Hacker News. On workstations with access to production, consider turning off automatic extension updates (in VS Code this is the &lt;code&gt;extensions.autoUpdate&lt;/code&gt; setting, so check what your fork offers) and installing updates a day or two after release. The cost is that real security fixes reach you later too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control reinstalls.&lt;/strong&gt; If you remove the extension, the documentation says you can stop the CLI from putting it back by setting &lt;code&gt;autoInstallIdeExtension&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; or &lt;code&gt;CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL=1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep developers off admin accounts.&lt;/strong&gt; In this case, the missing admin rights are what kept the tunnel from working on most Windows and macOS machines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't run an SSH server on a workstation&lt;/strong&gt; unless it needs one. Watch every &lt;code&gt;authorized_keys&lt;/code&gt; file for changes, on workstations as well as servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch outbound traffic.&lt;/strong&gt; This loader sent its data out over the network: an IP lookup service, a raw IP address on port 8099, and an SSH session to an unfamiliar host. On a machine where you know what normal traffic looks like, each of these stands out.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Watching a Windows machine with outbound-watch
&lt;/h3&gt;

&lt;p&gt;For Windows workstations, &lt;a href="https://github.com/strongthium/outbound-watch" rel="noopener noreferrer"&gt;outbound-watch&lt;/a&gt; is a small open-source program that lists every outgoing connection. For each one it shows the program, the name that was looked up, the address, the network and country, and the bytes sent and received. It keeps these as history. You write "expected lists" of where programs normally connect, and the tray icon tells you when a program connects somewhere else.&lt;/p&gt;

&lt;p&gt;Lists are made of rules, one per line, and every word on a line must match. A starting point for a developer machine might look like this, with the placeholders replaced by what you actually observe over a few normal days:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Editors: narrow to the destinations you see in normal use
process Code.exe,Cursor.exe port 443 host *.example.com
# SSH only to your own servers
process ssh.exe ip 203.0.113.0/24 port 22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With rules like these, a beacon from the editor to a bare IP address on port 8099 would be flagged as unexpected. So would an SSH session to an outside address, if the OpenSSH client carries it. Two details from the project's README matter here. First, run it as an administrator: without admin rights it misses TCP connections that open and close within a second, as well as UDP traffic and the names programs looked up. Second, it only records from the moment it starts, so it can't reconstruct October 29 on a machine where it wasn't already running. It is for catching the next incident, not for investigating this one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;From Strongthium Labs.&lt;/strong&gt; For the Linux servers your developers' workstations connect to, Strongthium Guard locks them down, reads their logs and shuts out whoever attacks them within seconds. &lt;a href="https://strongthium.com/linux-server-firewall" rel="noopener noreferrer"&gt;Strongthium Guard&lt;/a&gt;: a firewall that bans attackers by itself. Locks down your Linux servers, reads their logs and shuts out whoever attacks them - within seconds.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html" rel="noopener noreferrer"&gt;Official Claude Code Extension on Cursor Marketplace Trojanized with Persistent SSH Backdoor&lt;/a&gt; - The Hacker News&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cybersecuritynews.com/malicious-claude-code-extension-with-cursor/" rel="noopener noreferrer"&gt;Cursor Confirms Malicious Claude Code Extension With SSH Backdoor Was Available for 11 Hours&lt;/a&gt; - Cyber Security News&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/vs-code" rel="noopener noreferrer"&gt;Use Claude Code in VS Code&lt;/a&gt; - Anthropic&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code" rel="noopener noreferrer"&gt;Claude Code for VS Code - Visual Studio Marketplace&lt;/a&gt; - Microsoft&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/strongthium/outbound-watch" rel="noopener noreferrer"&gt;GitHub - strongthium/outbound-watch&lt;/a&gt; - Strongthium Labs, on GitHub&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;First published on &lt;a href="https://strongthium.com/notes/trojanized-claude-code-update-on-cursor-cleanup-and" rel="noopener noreferrer"&gt;Strongthium Lab Notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>aisecurity</category>
      <category>incidentresponse</category>
      <category>supplychain</category>
    </item>
    <item>
      <title>CyberStrikeAI and the industrialized hunt for unlocked doors</title>
      <dc:creator>Strongthium Labs</dc:creator>
      <pubDate>Tue, 27 Oct 2026 20:57:10 +0000</pubDate>
      <link>https://dev.to/strongthium/cyberstrikeai-and-the-industrialized-hunt-for-unlocked-doors-3a2h</link>
      <guid>https://dev.to/strongthium/cyberstrikeai-and-the-industrialized-hunt-for-unlocked-doors-3a2h</guid>
      <description>&lt;p&gt;Early in 2026, an attacker whom Amazon's investigators rated as only moderately skilled got into more than 600 FortiGate firewalls in over 55 countries, and did it without a single zero-day. This month, researchers found an open-source platform that had turned up on that attacker's server running 44 cooperating AI agents against small businesses and local public-sector bodies in Japan. Neither campaign needed a new vulnerability. Both went through doors that were already open: management interfaces facing the internet, weak or default passwords, credentials left in configuration files. What AI added was the ability to try those doors everywhere at once, without tiring, and in the victim's own language.&lt;/p&gt;

&lt;h2&gt;
  
  
  The FortiGate campaign: no zero-days required
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://blog.barrack.ai/cyberstrikeai-fortigate-breach/" rel="noopener noreferrer"&gt;Barrack AI's breakdown of the FortiGate breach&lt;/a&gt; brings together three separate investigations and is careful to keep their findings apart. The core facts come from Amazon Threat Intelligence: between January 11 and February 18, 2026, a Russian-speaking, financially motivated actor compromised more than 600 FortiGate devices. Amazon described the actor as having "low-to-medium baseline technical capability, significantly augmented by AI."&lt;/p&gt;

&lt;p&gt;The way in was ordinary. According to Amazon's findings as summarized there, the actor went after management ports exposed on TCP 443, 8443, 10443 and 4443 and logged in with weak passwords that had no second factor. What came after was not ordinary at all. Stolen device configurations were decrypted with AI-assisted scripts, internal networks were mapped, Active Directory credentials were pulled with DCSync, and Veeam Backup &amp;amp; Replication servers were attacked through CVE-2023-27532 and CVE-2024-40711 to get at the backup credential stores. Those stores are often an organization's last line of defense against ransomware.&lt;/p&gt;

&lt;p&gt;The link to CyberStrikeAI is narrower than some headlines suggest. Amazon's report never names the tool. Team Cymru made the connection after spotting a CyberStrikeAI banner on port 8080 of one of the IP addresses Amazon had shared, and it went on to track 21 servers running the platform between January 20 and February 26. Meanwhile the independent blog Cyber and Ramen found that the operator's most capable tooling, a custom MCP server called ARXON and a VPN scanning orchestrator called CHECKER2, was built by the attacker and is not part of CyberStrikeAI. It also reported logs of more than 2,500 FortiGate appliances &lt;em&gt;queued&lt;/em&gt; for access attempts, a different figure from Amazon's 600-plus &lt;em&gt;confirmed&lt;/em&gt; compromises. &lt;a href="https://thehackernews.com/2026/10/cyberstrikeai-uses-44-ai-agents-to.html" rel="noopener noreferrer"&gt;The Hacker News&lt;/a&gt; puts it more simply, saying CyberStrikeAI was "previously put to use" in the FortiGate campaign. The more careful reading is that the platform ran on the operator's server alongside other tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  October: 44 agents and one workflow
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.trendaisecurity.com/en/resources-insights/deep-research/not-only-artex-the-different-levels-ai-is-used-in-attacks-targeting-japan" rel="noopener noreferrer"&gt;TrendAI's analysis of three attack infrastructures targeting Japan&lt;/a&gt; was published on October 27, 2026, against the backdrop of a run of data leaks from Japanese web systems and a government alert to businesses on October 9. Its researchers rebuilt the attackers' activity from files left in open directories on servers the attackers controlled.&lt;/p&gt;

&lt;p&gt;In the first case, CyberStrikeAI drove the entire workflow: reconnaissance, finding and confirming vulnerabilities, exploitation, command and control, persistence, exfiltration, and reporting. Log entries such as "credential-search agent 8/44" showed the work split among 44 agents. The platform also produced Japanese-language forms and fake login pages. In a short period in October, at least 19 organizations, including at least 16 in Japan, were put through validation, and each got a report in the same format with its own evidence index.&lt;/p&gt;

&lt;p&gt;Two details from that case matter to anyone who reads their own logs. First, the platform deliberately throttled its traffic to each target, so the activity was hard to see from inside any single organization. Second, most of the attempts failed. For many targets, the platform's own records say "no session, no web shell, no exfiltration." Even the deepest intrusion TrendAI found started at an administration interface on a legacy web system that was open to the public and needed no login.&lt;/p&gt;

&lt;p&gt;The other two cases were run by humans, with AI as an assistant. In one, an operator used a language model for planning and tooling. That operator got into a GIS server that still had default credentials, built a full chain of control at another company running from FTP through a database and a web shell to SSH, and put backdoors back after they had been cleaned up. In the other, an experienced operator went after Cisco SD-WAN, Citrix NetScaler, F5 BIG-IP and Yamaha RTX1210 devices. The Yamaha intrusions used no product vulnerability at all, only credentials found in configuration files the operator had already obtained.&lt;/p&gt;

&lt;p&gt;The window for defenders is shrinking too. &lt;a href="https://thehackernews.com/2026/10/cyberstrikeai-uses-44-ai-agents-to.html" rel="noopener noreferrer"&gt;The Hacker News's report&lt;/a&gt; cites Microsoft's 2026 Digital Defense Report as finding that AI has cut the median time from discovering a vulnerability to weaponizing it to "well below 24 hours."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyexkghzdcvi6caxqx16w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyexkghzdcvi6caxqx16w.jpg" alt="A swarm of small automated agents fanning out across a map of server racks, each trying a different door" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the platform itself offers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/aipentest/cyberstrikeai" rel="noopener noreferrer"&gt;The CyberStrikeAI repository on GitHub&lt;/a&gt; describes a Go application with single-agent and several multi-agent modes, more than 100 security tools defined as YAML recipes, MCP integration, batch task queues, and chatbot connectors for platforms including Telegram, Slack, Discord and DingTalk. It also lists WebShell management and a built-in C2 component with listeners, encrypted beacons and task queues. The README says to use it only on systems you own or are explicitly authorized to test, and it ships a call-blocking feature with protection for government domains turned on by default. Those safeguards evidently did not stop the platform from turning up in criminal campaigns.&lt;/p&gt;

&lt;p&gt;Two practical notes. When the page was retrieved, the project sat under an &lt;code&gt;AIPentest&lt;/code&gt; organization with about 6.9k stars and 1.2k forks, while Barrack AI's March article placed it under the developer handle &lt;code&gt;Ed1s0nZ&lt;/code&gt;, and the README's quick start still clones from that account. The default configuration also listens on port 8080, the same port where Team Cymru found its banner. &lt;a href="https://blog.barrack.ai/cyberstrikeai-fortigate-breach/" rel="noopener noreferrer"&gt;Barrack AI's article&lt;/a&gt; relays Team Cymru's warning that operators may start hiding that banner, so treat fingerprinting as a bonus and not something to rely on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed, and what did not
&lt;/h2&gt;

&lt;p&gt;TrendAI sums it up in one line: "AI has increased the attackers' workforce, but the work still consists of looking for unlocked doors." Its comparison of the three cases breaks down roughly like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Changed by AI&lt;/th&gt;
&lt;th&gt;Not changed by AI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Number of targets handled in parallel&lt;/td&gt;
&lt;td&gt;Types of vulnerabilities exploited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed of attempts&lt;/td&gt;
&lt;td&gt;Entry points: exposed legacy systems, default configurations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adapting to the target's language&lt;/td&gt;
&lt;td&gt;Share of targets that end up deeply compromised&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automated record-keeping and reports&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;TrendAI also notes that AI-written attack records can be overconfident, logging actions as finished before they were tried, and that language models are known to make up vulnerability identifiers. Treat any reported success counts with caution. Those same habits make decoys and honeypots useful against automated attackers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzo4pv4azn3701w4mappp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzo4pv4azn3701w4mappp.jpg" alt="A single server behind a closed gate while automated probes wait outside, with one side door being bricked up" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for the servers you run
&lt;/h2&gt;

&lt;p&gt;Most readers do not run FortiGate appliances, but the pattern carries over directly to SSH, web control panels, database consoles and any dashboard with a login page. An AI-driven scanner does not need to be clever about your server. It only has to find the one place where you were careless, and it can check thousands of servers while you check one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Close the doors first
&lt;/h3&gt;

&lt;p&gt;TrendAI's defensive priorities start with inventory: know what faces the internet, update or isolate legacy systems, and look for exposed admin interfaces and default credentials. On a Linux host, a few minutes is enough to get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Services accepting connections on non-loopback addresses&lt;/span&gt;
ss &lt;span class="nt"&gt;-tlnp&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'NR==1 || $4 !~ /^(127\.|\[::1\])/'&lt;/span&gt;

&lt;span class="c"&gt;# Does SSH still accept passwords or direct root logins?&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;sshd &lt;span class="nt"&gt;-T&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-Ei&lt;/span&gt; &lt;span class="s1"&gt;'^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anything administrative that turns up in the first list should sit behind a VPN or an address allowlist. Passwords alone should not be enough to get in anywhere that matters. Treat configuration files and their backups as secrets, because the Yamaha case shows what one leaked file can open. If you run inference services or GPU machines, add them to the inventory: TrendAI found attackers specifically hunting for exposed AI infrastructure. Keep backup credentials separate from domain credentials, since the FortiGate operator went straight for the backups.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make probing expensive
&lt;/h3&gt;

&lt;p&gt;When automation is trying doors at scale, the time between an attacker's first failed attempt and being shut out matters. This is the layer Strongthium Guard is built for: it reads a Linux server's logs and bans whoever is attacking it within seconds, which turns password guessing and scanner sweeps into short attempts from each address instead of steady background noise. It is one layer among several. A firewall that bans attackers does not fix an exposed admin page or a reused password, and it cannot tell a stolen but valid login from your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Watch for slow, spread-out attempts
&lt;/h3&gt;

&lt;p&gt;TrendAI's fifth priority comes straight from the throttling seen in the first case: design monitoring for attempts that are infrequent and spread across many targets. Thresholds tuned only for loud bursts will miss traffic that is deliberately quiet. Stricter rules help where they make sense. An admin endpoint that only you should ever touch does not need to allow many failures before it reacts, and patterns are easier to see when you look across several servers than on one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;br&gt;
A ban stops the next attempt, not the one that already worked. If an administrative login was exposed with a weak password, assume the password is known. Rotate it, then look for new accounts, web shells and unexpected scheduled tasks. For Windows domains, Amazon's guidance as relayed by Barrack AI includes watching for DCSync activity (Event ID 4662), scheduled tasks disguised with service-like names, and unauthorized access to Veeam credential stores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The platform at the center of both stories is still publicly available. The doors these attacks used have been familiar for years. What has changed is how quickly an automated attacker can find the ones left open.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;From Strongthium Labs.&lt;/strong&gt; Strongthium Guard locks down Linux servers, reads their logs and shuts out whoever attacks them within seconds, which bears directly on the automated password guessing and probing these campaigns rely on. &lt;a href="https://strongthium.com/linux-server-firewall" rel="noopener noreferrer"&gt;Strongthium Guard&lt;/a&gt;: a firewall that bans attackers by itself. Locks down your Linux servers, reads their logs and shuts out whoever attacks them - within seconds.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://thehackernews.com/2026/10/cyberstrikeai-uses-44-ai-agents-to.html" rel="noopener noreferrer"&gt;CyberStrikeAI Uses 44 AI Agents to Automate Hacking Operations Against Japan Targets&lt;/a&gt; - The Hacker News&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.trendaisecurity.com/en/resources-insights/deep-research/not-only-artex-the-different-levels-ai-is-used-in-attacks-targeting-japan" rel="noopener noreferrer"&gt;Not Only ARTEX: The Different Levels AI is Used in Attacks Targeting Japan&lt;/a&gt; - TrendAI (Trend Micro)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/aipentest/cyberstrikeai" rel="noopener noreferrer"&gt;AIPentest/CyberStrikeAI&lt;/a&gt; - GitHub&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.barrack.ai/cyberstrikeai-fortigate-breach/" rel="noopener noreferrer"&gt;CyberStrikeAI: the AI Attack Platform Behind the 600+ FortiGate Breach&lt;/a&gt; - Barrack AI&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;First published on &lt;a href="https://strongthium.com/notes/cyberstrikeai-and-the-industrialized-hunt-for-unlocked-doors" rel="noopener noreferrer"&gt;Strongthium Lab Notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>aisecurity</category>
      <category>fortigate</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>eMudhra's eight-bit CA keys: how it happened and what to fix</title>
      <dc:creator>Strongthium Labs</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:18:45 +0000</pubDate>
      <link>https://dev.to/strongthium/emudhras-eight-bit-ca-keys-how-it-happened-and-what-to-fix-1g5n</link>
      <guid>https://dev.to/strongthium/emudhras-eight-bit-ca-keys-how-it-happened-and-what-to-fix-1g5n</guid>
      <description>&lt;p&gt;In October 2026, eight intermediate certificate authorities run by the Indian company eMudhra turned out to have private keys that were small integers. The smallest was 4. Browsers blocked them within days. Servers, containers, build pipelines and devices that keep their own trust stores take longer to fix, and that work is still going on. This article covers what was found, how a key that small could get into a trusted certificate, how the company behind it was run, and what you can do on the machines you look after.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was found
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://socradar.io/blog/emudhra-ca-key-compromise-weak-keys-risks-and-fixes/" rel="noopener noreferrer"&gt;SOCRadar's FAQ on the compromise&lt;/a&gt; says an independent researcher who signs as "Wayne" reported the weakness on October 17, 2026, to Apple, Google, Microsoft, Mozilla and eMudhra. As proof, Wayne signed a message with each of the eight private keys. Six of the intermediates issue TLS certificates (DV, OV and EV, in G3B and G3C versions). The other two sign code. Sectigo had cross-signed all eight under its AAA Certificate Services root, so each key also appears in a certificate that Sectigo issued.&lt;/p&gt;

&lt;p&gt;All eight came from a single key ceremony on April 30, 2025. That means the keys could have been recovered for about 17 months before anyone blocked them. According to SOCRadar, no malicious use had been confirmed as of October 21. Google reported that no TLS certificate chaining to the affected intermediates had been logged to Certificate Transparency (CT) before the block. That rules out attacks on clients that enforce CT. It tells you nothing about clients that don't check CT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.cloudflare.com/emudhra-certificate-compromise" rel="noopener noreferrer"&gt;Cloudflare's write-up&lt;/a&gt; says the company learned of the compromise on October 19 and patched its own services before public disclosure. Its review found no active exploitation on Cloudflare services. It also stresses that this is a failure of certificate-based authentication, not a weakness in TLS encryption.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a key can be the number 4
&lt;/h2&gt;

&lt;p&gt;On a curve like P-384, a private key is just an integer &lt;em&gt;d&lt;/em&gt; between 1 and the order of the curve's base point, which is about 384 bits long. The public key is the base point added to itself &lt;em&gt;d&lt;/em&gt; times. Every integer in that range is a valid key. The curve math does not reject &lt;em&gt;d&lt;/em&gt; = 4, and the certificate format has no field that would show it. As SOCRadar notes, the affected certificates "look structurally normal". You only see the flaw when you test the private key against the public key.&lt;/p&gt;

&lt;p&gt;All the security comes from choosing &lt;em&gt;d&lt;/em&gt; at random from that huge range, so that the only way back from the public key is a search no one can finish. A key below 256 turns that search into at most 255 tries. Anyone with the certificate can run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cryptography&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;x509&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;cryptography.hazmat.primitives.asymmetric&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ec&lt;/span&gt;

&lt;span class="n"&gt;cert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x509&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load_pem_x509_certificate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intermediate.pem&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;public_numbers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;derive_private_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SECP384R1&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;public_numbers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;private key is&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/EMudhra" rel="noopener noreferrer"&gt;Wikipedia article on eMudhra&lt;/a&gt; lists the eight keys as 4, 56, 66, 115, 155, 156, 230 and 237. It describes them as having between 3 and 8 bits of entropy. SOCRadar rounds this to "roughly eight bits". The two figures don't conflict: 4 needs three bits and 237 needs eight. Wikipedia also reports that security researcher Scott Helme recovered several keys in under a second.&lt;/p&gt;

&lt;p&gt;That explains why the keys could be broken. It doesn't explain how they got into certificates. The sources describe eMudhra's preliminary explanation at different levels of detail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SOCRadar&lt;/strong&gt; says eMudhra blamed a flaw in its key-generation ceremony script. The script created a second, weak key pair on the hardware security module. Because the two pairs had similar labels, the weak pair was used for the certificate signing requests. eMudhra also cites human error at several steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wikipedia&lt;/strong&gt; says a flaw in a "key wrap/unwrap" step produced a second, weak set of keys, and staff used them by mistake.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both say the root cause was still being investigated as of October 21. eMudhra has said it will re-check every key ceremony it has run.&lt;/p&gt;

&lt;p&gt;There was an earlier warning that was misread. SOCRadar notes that in June 2025, Mozilla's bug tracker recorded invalid certificate revocation list (CRL) signatures from the same six TLS intermediates. eMudhra said at the time that a manual process had referenced the wrong CA key, published corrected CRLs, and the bug was closed. Its 2026 account links those invalid CRLs to the same key mismatch. Put simply, signatures that didn't verify against the published certificates were treated as a paperwork error, not as a sign that the certificates held the wrong keys.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp6qb2i3q4tgmkot2qlex.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp6qb2i3q4tgmkot2qlex.jpg" alt="A key ceremony room where a technician holds a tiny, flimsy key while an identical-looking large, sturdy key sits unused in an open hardware module" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the business around it was run
&lt;/h2&gt;

&lt;p&gt;Wikipedia's account shows a company that grew mainly through India's regulated digital signature market. eMudhra was founded in 2008 as a subsidiary of 3i Infotech, licensed by India's Controller of Certifying Authorities, and listed on Indian stock exchanges in 2022. It launched its emSign certificate authority in 2018 after a WebTrust audit. Mozilla accepted four emSign roots, including emSign ECC Root CA – G3, in December 2018. Browsers had been wary of Indian CAs since the National Informatics Centre's CA issued unauthorized certificates in 2014. That made eMudhra the only Indian root CA trusted worldwide.&lt;/p&gt;

&lt;p&gt;Publicly trusted TLS was a small part of the business. Wikipedia cites ICRA's figures: enterprise software (secure access, PKI, paperless workflows and certificate lifecycle management) grew to about 80% of revenue by 2026, and international markets made up 64%. In an exchange filing, eMudhra said the affected business accounted for about 1% of revenue. It also said its Indian digital signature and eSign services ran on separate systems.&lt;/p&gt;

&lt;p&gt;The effects were not small. eMudhra's shares fell 20% on October 21 and 40% over the two days after disclosure. Indian government sites, including the Aadhaar issuer UIDAI and the income tax portal, used eMudhra certificates. Wikipedia reports that some sites, such as FSSAI, became unreachable after the revocations. CERT-In issued an advisory. The Ministry of Electronics and Information Technology set up a team to investigate and said the regulated signature services were not affected. On October 22, eMudhra announced it would leave the global SSL/TLS certificate business. Wikipedia reports that the company also called the social media scrutiny out of proportion to the division's place in the company.&lt;/p&gt;

&lt;p&gt;At the time of writing, &lt;a href="https://emudhra.com/en-in/" rel="noopener noreferrer"&gt;eMudhra's own homepage&lt;/a&gt; still lists "CLM &amp;amp; SSL/TLS Certificates" among its featured products. Its newsroom shows the October 22 exit notice and a later item saying ICRA kept the company's ratings after the incident. One way to read the record is that 1% of revenue still meant a globally trusted root, about 30,000 customer certificates, and many government websites. Readers can judge how well the controls around that business matched what it carried.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the risk remains
&lt;/h2&gt;

&lt;p&gt;Browsers have been dealt with. SOCRadar's timeline shows Chrome blocking the intermediates through a CRLSet update and Firefox through OneCRL, both on October 17, then Apple on October 19 and Microsoft on October 20. Mozilla removed emSign ECC Root CA – G3 from NSS on October 20. Chrome's removal of that root is expected to reach all devices by October 27. Cloudflare's post says browser vendors could fix this "with a flip of a switch" because they have one application to update and fast revocation channels.&lt;/p&gt;

&lt;p&gt;Servers have no such channel. API clients, backend services, containers, CI/CD runners and embedded devices often trust a bundled CA store, skip revocation checks and ignore CT. SOCRadar reports that in Scott Helme's tests, curl, Python and Node.js on Linux and macOS accepted a forged certificate issued under one of the compromised intermediates. Go programs only get the block after being rebuilt with a patched toolchain. The two code-signing CAs are also a concern on Windows systems that skip revocation checks. eMudhra says neither was ever used, but code-signing certificates aren't logged to CT, so there is no public record either way. Wikipedia also notes that mitmproxy added an option to sign with the leaked keys, so forging certificates now takes no special skill.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftulx4ltzcce1x7ubutnx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftulx4ltzcce1x7ubutnx.jpg" alt="A server rack in a dim data center where most machines show a closed padlock, while a few older machines and containers in the corner still show an open one" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning it out of your servers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Update, rebuild, test
&lt;/h3&gt;

&lt;p&gt;The order of work is the same in all the sources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Update every trust store.&lt;/strong&gt; That means the OS &lt;code&gt;ca-certificates&lt;/code&gt; package and language-level bundles. SOCRadar lists fixed versions, including Python certifi 2026.10.19, Node.js 22.23.4, 24.22.1 and 26.12.1, and webpki-roots 1.0.10. It also notes that Bun and FreeBSD fixes were still pending on October 21.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rebuild, don't just patch.&lt;/strong&gt; Recompile Go services with Go 1.27.3 or 1.26.10. Rebuild container images from patched base images. Cloudflare adds that you should check whether each application needs a reload, restart or redeploy before the change takes effect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look beneath the SDK.&lt;/strong&gt; Cloudflare points out that an API client may hand certificate checks to an HTTP library, the language runtime, the OS or a custom trust configuration. Updating the SDK alone may change nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review what you trust as a server.&lt;/strong&gt; If your origin or proxy verifies client certificates with mutual TLS, check the CA list it uses. Also find any of your own sites that still serve G3-chained certificates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test through the real path.&lt;/strong&gt; The disclosure site serves chains through the compromised intermediates. A certificate error is the result you want:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://dv-g3b-emudhra.we-have-a-problem.com/
curl https://dv-g3b-aaa-emudhra.we-have-a-problem.com/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As Cloudflare notes, a passing curl test says nothing about an application that uses a different verifier.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;br&gt;
After patching, you may see new certificate errors in logs and dashboards. Do not fix them by turning off verification. As Cloudflare puts it, that "would remove the authentication protection these updates are intended to restore." Replace the certificate or the chain instead.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Distrusting the certificates by hand with emudhra-patch
&lt;/h3&gt;

&lt;p&gt;Some hosts can't take a package update yet, and some you want closed before the next maintenance window. For these, Strongthium Labs publishes &lt;a href="https://github.com/strongthium/emudhra-security-patch" rel="noopener noreferrer"&gt;emudhra-security-patch&lt;/a&gt;, an MIT-licensed, single-file tool for Windows and Linux. It finds the eight G3B and G3C intermediates and their emSign G3 roots in the system trust stores and distrusts them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;emudhra-patch scan       &lt;span class="c"&gt;# report where each certificate is; changes nothing&lt;/span&gt;
emudhra-patch revoke     &lt;span class="c"&gt;# distrust them (root on Linux, administrator on Windows)&lt;/span&gt;
emudhra-patch restore    &lt;span class="c"&gt;# undo revoke from the backup it made&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The README describes how it works. &lt;code&gt;scan&lt;/code&gt; exits with code 2 if anything on the list is still trusted, so you can run it as a monitoring check. On Windows, it removes the certificates from the trusted stores and adds them to the machine's Disallowed store. That also blocks a root that Windows Update hasn't fetched yet. On Debian and Ubuntu, it deselects the root in &lt;code&gt;/etc/ca-certificates.conf&lt;/code&gt;. On Fedora, RHEL, Arch and openSUSE, it uses the p11-kit blocklist. Every change is backed up and listed in a manifest, and &lt;code&gt;restore&lt;/code&gt; undoes the changes in reverse order. The certificate list is a plain file, &lt;code&gt;badcerts.txt&lt;/code&gt;, matched by SHA-256 fingerprint.&lt;/p&gt;

&lt;p&gt;Some things to know before you run it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;revoke&lt;/code&gt; command distrusts certificates on your machine only. Actual revocation was done by eMudhra and Sectigo.&lt;/li&gt;
&lt;li&gt;Distrusting emSign ECC Root CA – G3 drops everything eMudhra issued under that root, which matches Mozilla's decision. To keep it, comment out its line in &lt;code&gt;badcerts.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The tool also distrusts any certificate that shares a key with a listed one, and that certificate's issuers up to the root. SOCRadar warns that removing Sectigo's AAA Certificate Services can break legitimate connections. Read the &lt;code&gt;scan&lt;/code&gt; output before you run &lt;code&gt;revoke&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It does not touch Firefox or Thunderbird stores, Java &lt;code&gt;cacerts&lt;/code&gt; unless built from the system store, NSS databases in &lt;code&gt;~/.pki/nssdb&lt;/code&gt;, containers, or runtimes that ship their own bundle. Those still need their own updates.&lt;/li&gt;
&lt;li&gt;If you download a release build, check it against the published &lt;code&gt;SHA256SUMS&lt;/code&gt;. You can also build it yourself with the .NET 10 SDK.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What to take from it
&lt;/h2&gt;

&lt;p&gt;The weakness itself was simple. The certificates were well formed and the ceremony was recorded. Still, a mixed-up key label and a misread CRL error led to six globally trusted TLS CAs, plus two code-signing CAs, whose keys anyone could guess. For people who run servers, the longer-lasting lesson is the one Cloudflare draws: a trust store can't be a static list that changes only when a package updates. Find out which verifier each of your services actually uses, make sure you can push a distrust quickly, and keep &lt;code&gt;scan&lt;/code&gt;-style checks running until every host comes back clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.cloudflare.com/emudhra-certificate-compromise" rel="noopener noreferrer"&gt;8 eMudhra certificates are compromised. Here's what you need to know&lt;/a&gt; - Cloudflare&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://socradar.io/blog/emudhra-ca-key-compromise-weak-keys-risks-and-fixes/" rel="noopener noreferrer"&gt;eMudhra CA Key Compromise: Weak Keys, Risks and Fixes&lt;/a&gt; - SOCRadar&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/EMudhra" rel="noopener noreferrer"&gt;EMudhra&lt;/a&gt; - Wikipedia&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://emudhra.com/en-in/" rel="noopener noreferrer"&gt;eMudhra | Digital Signature &amp;amp; PKI Services in India&lt;/a&gt; - eMudhra&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/strongthium/emudhra-security-patch" rel="noopener noreferrer"&gt;strongthium/emudhra-security-patch&lt;/a&gt; - Strongthium Labs on GitHub&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;First published on &lt;a href="https://strongthium.com/notes/emudhras-eight-bit-ca-keys-how-it-happened" rel="noopener noreferrer"&gt;Strongthium Lab Notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tls</category>
      <category>pki</category>
      <category>certificateauthorities</category>
      <category>vulnerabilitydisclosure</category>
    </item>
    <item>
      <title>Security roundup: October 17–23, 2026</title>
      <dc:creator>Strongthium Labs</dc:creator>
      <pubDate>Sat, 24 Oct 2026 23:38:59 +0000</pubDate>
      <link>https://dev.to/strongthium/security-roundup-october-17-23-2026-22d6</link>
      <guid>https://dev.to/strongthium/security-roundup-october-17-23-2026-22d6</guid>
      <description>&lt;p&gt;The critical vulnerabilities of the week in the server software we watch and what it runs on: those that score CVSS 7.0 or more, and those CISA says are being exploited in the wild. This week, 3 vulnerabilities.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Software&lt;/th&gt;
&lt;th&gt;Vulnerabilities&lt;/th&gt;
&lt;th&gt;Exploited&lt;/th&gt;
&lt;th&gt;Highest score&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://strongthium.com/notes/security-roundup-2026-w43#kubernetes" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;10.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://strongthium.com/notes/security-roundup-2026-w43#php" rel="noopener noreferrer"&gt;PHP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;9.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://strongthium.com/notes/security-roundup-2026-w43#windows-server" rel="noopener noreferrer"&gt;Windows Server&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;9.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Kubernetes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CVE-2026-83938
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CVSS 10.0, critical&lt;/strong&gt; · published October 22, 2026&lt;/p&gt;

&lt;p&gt;Missing authentication for critical function in Azure Kubernetes Configuration Service allows an unauthorized attacker to elevate privileges over a network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Weakness:&lt;/strong&gt; CWE-306&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector:&lt;/strong&gt; &lt;code&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read more:&lt;/strong&gt; &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-83938" rel="noopener noreferrer"&gt;NVD&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PHP
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CVE-2026-109618
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CVSS 9.8, critical&lt;/strong&gt; · published October 21, 2026&lt;/p&gt;

&lt;p&gt;PHP uses longjmp() for out-of-memory (OOM) errors to exit the current context and abort handling of the request. Some contexts may not properly account for this scenario and leave request memory in an uninitialized state before performing an allocation. The subsequent request cleanup procedure may read or branch on this memory. Multiple OOM strategies can consistently trigger this condition and lead to remote code execution (RCE).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Affected:&lt;/strong&gt; PHP from 7.3.0 before 8.2.35; PHP from 8.3.0 before 8.3.36; PHP from 8.4.0 before 8.4.27; PHP from 8.5.0 before 8.5.12&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weakness:&lt;/strong&gt; CWE-416, CWE-755, CWE-824, CWE-1325&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector:&lt;/strong&gt; &lt;code&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read more:&lt;/strong&gt; &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-109618" rel="noopener noreferrer"&gt;NVD&lt;/a&gt; · &lt;a href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener noreferrer"&gt;github.com advisory&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Windows Server
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CVE-2026-83888
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CVSS 9.8, critical&lt;/strong&gt; · published October 13, 2026&lt;/p&gt;

&lt;p&gt;Buffer over-read in Windows CD-ROM Driver allows an unauthorized attacker to elevate privileges over a network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Affected:&lt;/strong&gt; Windows Server 2012, every version; Windows Server 2012 r2; Windows Server 2016 before 10.0.14393.9612; Windows Server 2019 before 10.0.17763.9376; Windows Server 2022 before 10.0.20348.5761; Windows Server 2025 before 10.0.26100.33650&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weakness:&lt;/strong&gt; CWE-126&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector:&lt;/strong&gt; &lt;code&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read more:&lt;/strong&gt; &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-83888" rel="noopener noreferrer"&gt;NVD&lt;/a&gt; · &lt;a href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-83888" rel="noopener noreferrer"&gt;msrc.microsoft.com advisory&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;From the National Vulnerability Database (NVD), whose descriptions these are, and CISA's catalog of Known Exploited Vulnerabilities. A score is the highest the record gives, NVD's own or its source's. Software we watch: what servers commonly run, from the operating system to the database.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;First published on &lt;a href="https://strongthium.com/notes/security-roundup-2026-w43" rel="noopener noreferrer"&gt;Strongthium Lab Notes&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>securityroundup</category>
      <category>cve</category>
      <category>kubernetes</category>
      <category>php</category>
    </item>
  </channel>
</rss>
