<?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: OnaEiuspkz</title>
    <description>The latest articles on DEV Community by OnaEiuspkz (@onaeiuspkz).</description>
    <link>https://dev.to/onaeiuspkz</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%2F4127462%2F464d79fd-d761-42c0-8d3e-b8176e27b0c8.png</url>
      <title>DEV Community: OnaEiuspkz</title>
      <link>https://dev.to/onaeiuspkz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/onaeiuspkz"/>
    <language>en</language>
    <item>
      <title>Stolen OAuth Tokens Outlive Password Resets: Hardening Session Material in SaaS Estates</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 16:36:55 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/stolen-oauth-tokens-outlive-password-resets-hardening-session-material-in-saas-estates-46g0</link>
      <guid>https://dev.to/onaeiuspkz/stolen-oauth-tokens-outlive-password-resets-hardening-session-material-in-saas-estates-46g0</guid>
      <description>&lt;h1&gt;
  
  
  Stolen OAuth Tokens Outlive Password Resets: Hardening Session Material in SaaS Estates
&lt;/h1&gt;

&lt;p&gt;When an attacker steals a password, you reset it. When an attacker steals a refresh token, a password reset does not necessarily help, and many incident responders discover this at the worst possible moment. Session material has become the preferred credential in SaaS environments because it is portable, long-lived and rarely inventoried.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the reader needs this
&lt;/h2&gt;

&lt;p&gt;Modern SaaS access is a chain of tokens: an identity provider issues an access token and a refresh token, the client stores them, and downstream applications accept them without re-checking the user. If a token is exfiltrated from a browser profile, a CI secret, a logging pipeline or a compromised laptop, it can be replayed from anywhere the issuer accepts. The account owner may see nothing unusual, because the session is legitimate from the provider's perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical context: which artifacts survive what
&lt;/h2&gt;

&lt;p&gt;Different credential artifacts have different lifetimes and different remediation paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Access tokens&lt;/strong&gt; are typically short-lived, often under an hour. Revoking them is time-bounded and mostly automatic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refresh tokens&lt;/strong&gt; are the durable artifact. They can be valid for days or months, and they are what allows an attacker to mint new access tokens after the original expires.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session cookies&lt;/strong&gt; for browser-based single sign-on can persist for weeks if the provider allows long sessions, and they may be bound to nothing more than a cookie value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service account keys and client secrets&lt;/strong&gt; never expire unless someone rotates them, and they are frequently pasted into CI variables, wikis and chat messages.
The critical asymmetry is that password reset invalidates a password, not necessarily a token. Providers differ in whether a password change revokes existing refresh tokens, and in whether an administrator can enumerate and revoke sessions for a user.
## A concrete failure chain
This chain is a composition of publicly documented token-theft patterns, presented as a reasoning model rather than a specific incident report.&lt;/li&gt;
&lt;li&gt;An attacker obtains a refresh token, through infostealer malware on an employee laptop, a misconfigured log that captured an authorization header, or a leaked CI secret.&lt;/li&gt;
&lt;li&gt;The attacker exchanges the refresh token for a new access token from the legitimate identity provider.&lt;/li&gt;
&lt;li&gt;No password is used, so no password-based anomaly detection fires.&lt;/li&gt;
&lt;li&gt;The attacker enumerates the SaaS estate using the token: mail, file storage, source control, depending on granted scopes.&lt;/li&gt;
&lt;li&gt;The victim detects the intrusion and resets the password. The refresh token remains valid, so the attacker continues.
The window between detection and actual containment is where the damage accumulates, and it is determined by whether the responder knows to revoke tokens rather than just credentials.
## Defensive implications
&lt;strong&gt;Know your revocation surface.&lt;/strong&gt; Before an incident, document for each identity provider whether an administrator can list active sessions and revoke refresh tokens, and whether a password change does so automatically. This is a five-minute question with a multi-day answer during an incident.
&lt;strong&gt;Bind tokens to something.&lt;/strong&gt; Token binding, sender-constrained tokens such as DPoP, or certificate-bound tokens make a stolen token useless without the corresponding key. Where the provider supports it, this converts token theft from a full account compromise into a failed request.
&lt;strong&gt;Shorten refresh token lifetime and rotate.&lt;/strong&gt; Rotation with reuse detection means a stolen token that is used after the legitimate client refreshes it triggers an alert and invalidates the family.
&lt;strong&gt;Inventory non-human credentials.&lt;/strong&gt; Service account keys and client secrets should have owners, expiry dates and a rotation schedule. An unrotated key is a permanent credential.
&lt;strong&gt;Detect replay, not just login.&lt;/strong&gt; Alert on the same refresh token being used from two geographies, on token exchanges from unexpected user agents, and on first-time access to sensitive scopes. Login-based detection misses this entirely.
&lt;strong&gt;Reduce scope by default.&lt;/strong&gt; A token that can read mail and write files is worth more to an attacker than one that can only read a calendar. Request the narrowest scope the integration needs.
## Limits of this analysis
Token binding requires client support and is not universally available. Rotation can break poorly written integrations that assume a refresh token is permanent, so it must be tested. Session revocation tooling varies widely between providers, and in some cases the only reliable containment is to disable the account and re-enroll the user. These constraints are the reason token hygiene is an architectural problem rather than a checkbox.
## References&lt;/li&gt;
&lt;li&gt;OAuth 2.0 Security Best Current Practice (RFC 9700): &lt;a href="https://www.rfc-editor.org/rfc/rfc9700.html" rel="noopener noreferrer"&gt;https://www.rfc-editor.org/rfc/rfc9700.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OAuth 2.0 Demonstrating Proof of Possession (DPoP), RFC 9449: &lt;a href="https://www.rfc-editor.org/rfc/rfc9449.html" rel="noopener noreferrer"&gt;https://www.rfc-editor.org/rfc/rfc9449.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OAuth 2.0 Token Revocation, RFC 7009: &lt;a href="https://www.rfc-editor.org/rfc/rfc7009.html" rel="noopener noreferrer"&gt;https://www.rfc-editor.org/rfc/rfc7009.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MITRE ATT&amp;amp;CK, Steal Application Access Token (T1528): &lt;a href="https://attack.mitre.org/techniques/T1528/" rel="noopener noreferrer"&gt;https://attack.mitre.org/techniques/T1528/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>identity</category>
      <category>oauth</category>
      <category>saassecurity</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>Binding to 0.0.0.0: the design decision behind CVE-2026-87827</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 16:30:35 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/binding-to-0000-the-design-decision-behind-cve-2026-87827-162p</link>
      <guid>https://dev.to/onaeiuspkz/binding-to-0000-the-design-decision-behind-cve-2026-87827-162p</guid>
      <description>&lt;h1&gt;
  
  
  Binding to 0.0.0.0: the design decision behind CVE-2026-87827
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Vulnerability overview
&lt;/h2&gt;

&lt;p&gt;CVE-2026-87827 is a 10.0-rated command execution flaw in KGUARD DVR firmware, reported by Netlab 360. What makes it worth studying beyond its severity score is how small the root cause is. The vulnerable service was written to accept commands from anyone, and it was configured to accept them on every network interface. Both choices are common in embedded firmware, and together they turn a convenience feature into a remotely exploitable backdoor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism and exploitation conditions
&lt;/h2&gt;

&lt;p&gt;The service in question listens on a network port, binds to 0.0.0.0, and executes the commands it receives without authentication. Netlab 360's advisory states it can "remotely execute system commands without authentication." Binding to 0.0.0.0 means the socket is not limited to the loopback interface or to a single internal address, so any host that can route packets to the device can reach the service.&lt;br&gt;
Exploitation is therefore a matter of network access. No credentials are involved, and no user interaction is required. The researchers withheld the port number to make automated exploitation harder. Firmware released after 2017 changes the bind address to 127.0.0.1, which is the same service restricted to local callers. That one-line change is the entire fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impact
&lt;/h2&gt;

&lt;p&gt;An attacker with command execution on a DVR can install persistent malware, pivot to other hosts on the same network, or add the device to a denial-of-service botnet. The last outcome has already occurred. Mirai_ptea (Rimasuta) and Mirai_aurora incorporated the exploit, and some RapperBot variants reused it in 2026. Because DVRs are rarely patched and rarely monitored, a compromised unit can remain in a botnet for years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Affected products and scope
&lt;/h2&gt;

&lt;p&gt;The vulnerable firmware dates from 2016. Affected models include D1004NR, D1008NR, D1016NR, D1104, D1108NR, D1116NR, and the D99xx variants. Netlab 360 estimated at least 3,000 exposed devices still online, a figure based on its own reachability scanning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure context
&lt;/h2&gt;

&lt;p&gt;ZoomEye returned 864,518 assets for &lt;code&gt;app="KGUARD DVR"&lt;/code&gt; on 2026-09-16. The count reflects devices whose fingerprint matches the product, not devices confirmed to run vulnerable firmware or to expose the affected port. It is a measure of deployment scale on reachable networks. The distance between that number and Netlab's 3,000 estimate suggests that most reachable units already run firmware with the loopback binding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remediation and mitigations
&lt;/h2&gt;

&lt;p&gt;Apply firmware released after 2017, which binds the service to 127.0.0.1 and removes remote reachability. If no update exists for a given model, block inbound access to the management port at the network edge and segment the recorder away from critical systems. Outbound monitoring remains useful, since a device that has joined a botnet will begin connecting to command-and-control infrastructure that a healthy DVR never contacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CVE-2026-87827 (CVSS 10): KGUARD DVR Fully Compromised, SecurityOnline.info, &lt;a href="https://securityonline.info/cve-2026-87827-kguard-dvr-mirai/" rel="noopener noreferrer"&gt;https://securityonline.info/cve-2026-87827-kguard-dvr-mirai/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Netlab 360 advisory on the KGUARD DVR command execution flaw, &lt;a href="https://blog.netlab.360.com/" rel="noopener noreferrer"&gt;https://blog.netlab.360.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZoomEye search: app="KGUARD DVR", &lt;a href="https://www.zoomeye.ai/searchResult?q=YXBwPSJLR1VBUkQgRFZSIg%3D%3D" rel="noopener noreferrer"&gt;https://www.zoomeye.ai/searchResult?q=YXBwPSJLR1VBUkQgRFZSIg%3D%3D&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vulnerability</category>
      <category>iot</category>
      <category>kguard</category>
      <category>cve202687827</category>
    </item>
    <item>
      <title>mySCADA myPRO Manager: Two Missing-Authorization Flaws in an ICS Management Platform (Operational View)</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 09:25:16 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/myscada-mypro-manager-two-missing-authorization-flaws-in-an-ics-management-platform-operational-i0d</link>
      <guid>https://dev.to/onaeiuspkz/myscada-mypro-manager-two-missing-authorization-flaws-in-an-ics-management-platform-operational-i0d</guid>
      <description>&lt;h1&gt;
  
  
  Unauthenticated SMS and Privileged API Access in mySCADA myPRO Manager
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Vulnerability overview
&lt;/h2&gt;

&lt;p&gt;Two authorization defects in mySCADA myPRO Manager were disclosed in a CISA advisory: CVE-2026-73807 at CVSS 9.8 and CVE-2026-82567 at CVSS 6.3. Both are missing-authorization issues in a platform that operators use to manage industrial processes. mySCADA Technologies shipped fixes in version 2.2, and no exploitation has been confirmed publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism and exploitation conditions
&lt;/h2&gt;

&lt;p&gt;The two flaws share a root cause but sit in different components, which matters for defenders because blocking one does not block the other.&lt;br&gt;
CVE-2026-73807 is in the command API. The advisory says the API "does not properly enforce authentication for privileged functions," meaning the authorization check that should gate management operations is absent or ineffective. An unauthenticated caller with network access reaches those operations directly.&lt;br&gt;
CVE-2026-82567 is in the notification gateway. The gateway publishes an HTTP endpoint for sending SMS through a GSM modem, and that endpoint accepts requests without an authentication check. A crafted request with a message payload causes the modem to transmit.&lt;br&gt;
Neither flaw needs a prior foothold. The attacker needs a route to the service, nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impact
&lt;/h2&gt;

&lt;p&gt;The command API flaw is the more damaging of the two. Privileged management functions on a SCADA platform control what operators can see and change, so unauthenticated access to them lets an attacker alter system state or blind the people responsible for running the plant.&lt;br&gt;
The SMS flaw is narrower but has a practical use. Messages sent through the plant's own modem inherit the credibility of the operator's infrastructure. An attacker can push convincing text to maintenance staff or on-call engineers, and the operator pays for the traffic. In environments where SMS is still the alerting channel, that is a meaningful path for follow-on attacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Affected products and scope
&lt;/h2&gt;

&lt;p&gt;All mySCADA myPRO Manager installations at version 2.1 or earlier are affected. Version 2.2 contains the fix. The advisory does not identify a deployment mode that avoids the vulnerable code paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure context
&lt;/h2&gt;

&lt;p&gt;ZoomEye reported 651 assets matching &lt;code&gt;title="mySCADA"&lt;/code&gt; on 2026-09-16. This is a product-deployment signal, not a vulnerability count: the query matches the product's page title and says nothing about version or endpoint exposure. Treat it as a rough measure of how much of this product sits on reachable networks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remediation and mitigations
&lt;/h2&gt;

&lt;p&gt;Move to version 2.2. If that is not possible in the current maintenance window, cut off network access to both the command API and the notification gateway. Segment the management interface so only trusted administrative hosts can reach it, and disable the SMS gateway when the site does not depend on it.&lt;br&gt;
Watch for unauthenticated requests to management endpoints and for SMS traffic that no operator triggered. Both are visible in normal logging if the logs are retained.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SecurityOnline, "Critical mySCADA myPRO Manager Vulnerabilities Patched": &lt;a href="https://securityonline.info/myscada-mypro-manager-vulnerabilities/" rel="noopener noreferrer"&gt;https://securityonline.info/myscada-mypro-manager-vulnerabilities/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CISA ICS advisories: &lt;a href="https://www.cisa.gov/news-events/ics-advisories" rel="noopener noreferrer"&gt;https://www.cisa.gov/news-events/ics-advisories&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZoomEye query &lt;code&gt;title="mySCADA"&lt;/code&gt;, executed 2026-09-16: &lt;a href="https://www.zoomeye.ai/searchResult?q=dGl0bGU9Im15U0NBREEi" rel="noopener noreferrer"&gt;https://www.zoomeye.ai/searchResult?q=dGl0bGU9Im15U0NBREEi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vulnerability</category>
      <category>ics</category>
      <category>myscada</category>
      <category>cve202673807</category>
    </item>
    <item>
      <title>CVE-2026-48710 (BadHost): How a Malformed Host Header Bypasses Starlette Path Authorization</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 08:26:40 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/cve-2026-48710-badhost-how-a-malformed-host-header-bypasses-starlette-path-authorization-2nfk</link>
      <guid>https://dev.to/onaeiuspkz/cve-2026-48710-badhost-how-a-malformed-host-header-bypasses-starlette-path-authorization-2nfk</guid>
      <description>&lt;h1&gt;
  
  
  CVE-2026-48710 (BadHost): How a Malformed Host Header Bypasses Starlette Path Authorization
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Vulnerability overview
&lt;/h2&gt;

&lt;p&gt;CVE-2026-48710, tracked publicly as &lt;strong&gt;BadHost&lt;/strong&gt; and catalogued by X41 D-Sec as X41-2026-002, is an authentication bypass in the Starlette ASGI framework. The flaw is CWE-444, inconsistent interpretation of HTTP requests. Starlette maintainers published a GitHub security advisory with a CVSS v3.1 base score of 6.5 (Medium), vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N. X41 D-Sec rated the practical risk higher, at 7.0, and argued that the score understates impact in AI tooling deployments. On 2026-09-02 CISA added CVE-2026-48710 to its Known Exploited Vulnerabilities catalog, citing evidence of active exploitation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mechanism and exploitation conditions
&lt;/h2&gt;

&lt;p&gt;Starlette reconstructs &lt;code&gt;request.url&lt;/code&gt; from the ASGI &lt;code&gt;scope&lt;/code&gt; dictionary. Before version 1.0.1, that reconstruction concatenated the client-supplied &lt;code&gt;Host&lt;/code&gt; header with the request path and re-parsed the result as a URL, without validating the &lt;code&gt;Host&lt;/code&gt; value against RFC 9112 or RFC 3986. When the &lt;code&gt;Host&lt;/code&gt; header contains URI delimiters such as &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;?&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, backslash, or a space, the re-parsed URL shifts the path boundary.&lt;br&gt;
The result is a disagreement between two path sources inside one request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The router dispatches on &lt;code&gt;scope["path"]&lt;/code&gt;, the raw request-target path.&lt;/li&gt;
&lt;li&gt;Middleware that reads &lt;code&gt;request.url.path&lt;/code&gt; sees the value produced by the polluted reconstruction.
A request for &lt;code&gt;/admin&lt;/code&gt; sent with &lt;code&gt;Host: example.com/public?x=&lt;/code&gt; is routed to &lt;code&gt;/admin&lt;/code&gt;, but &lt;code&gt;request.url.path&lt;/code&gt; evaluates to &lt;code&gt;/public&lt;/code&gt;. Any authorization middleware that decides on &lt;code&gt;request.url.path&lt;/code&gt; — a path-prefix allowlist, for example — evaluates the attacker-influenced value while the router serves the real, protected endpoint.
Exploitation requires a specific combination, not merely the presence of Starlette:&lt;/li&gt;
&lt;li&gt;The application must rely on &lt;code&gt;request.url&lt;/code&gt; or &lt;code&gt;request.url.path&lt;/code&gt; for a security decision, most commonly a path-prefix allowlist or a public-path bypass list.&lt;/li&gt;
&lt;li&gt;No reverse proxy, CDN, or API gateway in front of the application may already reject or normalize malformed &lt;code&gt;Host&lt;/code&gt; values.&lt;/li&gt;
&lt;li&gt;The application server must be reachable with an attacker-controlled &lt;code&gt;Host&lt;/code&gt; header.
Endpoints protected by FastAPI &lt;code&gt;Depends()&lt;/code&gt; or &lt;code&gt;Security()&lt;/code&gt; dependencies, or by business-layer permission checks, are not bypassed by path pollution alone, because those checks bind to the endpoint rather than to a reconstructed URL.
## Impact
Successful exploitation yields unauthenticated access to endpoints the application intended to protect. X41 D-Sec demonstrated the transition from a &lt;code&gt;403 Forbidden&lt;/code&gt; response to &lt;code&gt;200 OK&lt;/code&gt; after adding a single character to the &lt;code&gt;Host&lt;/code&gt; header. Because the bypass is a precondition rather than a terminal action, severity depends on what the reachable endpoint does. X41 D-Sec found multiple open-source projects whose security checks depend on the reconstructed URL, and warned that the flaw can chain from authentication bypass into server-side request forgery and, in some deployments, remote code execution.
The LiteLLM case shows the chain concretely. Horizon3.ai reported that CVE-2026-48710 removes the authentication requirement from CVE-2026-42271, a command injection in LiteLLM's MCP test endpoints. Chained, the two flaws permit unauthenticated remote code execution on the LiteLLM host, exposing model provider credentials, proxy-stored API keys, and connected AI infrastructure. Horizon3.ai assessed the combined chain at CVSS 10.0.
## Affected products and scope&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starlette&lt;/strong&gt;: versions from 0.8.3 up to and including 1.0.0 are affected. Version 1.0.1 is the fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Downstream frameworks&lt;/strong&gt;: FastAPI depends on Starlette, so applications built on FastAPI inherit the flaw unless the underlying Starlette version is patched. vLLM, Text Generation Inference, LiteLLM, and many MCP server implementations sit on this stack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiteLLM&lt;/strong&gt;: versions 1.74.2 through 1.83.6 ship the vulnerable MCP debug endpoints; 1.83.7 fixes the command injection but not the framework-level bypass. Version 1.84.0 or later addresses both.
Scope follows code behaviour, not installation. An application that never imports Starlette directly can still be affected through a transitive dependency, and GitHub lists more than 400,000 dependent projects. Conversely, a Starlette application that never makes a security decision on &lt;code&gt;request.url.path&lt;/code&gt; is not exploitable through this specific mechanism.
## Exposure context
A ZoomEye query for &lt;code&gt;http.body="Starlette"&lt;/code&gt; returned 1,249 matching assets at the time of writing. A narrower query combining &lt;code&gt;http.header.server="uvicorn"&lt;/code&gt; with &lt;code&gt;http.body="Starlette"&lt;/code&gt; returned 437 assets, and &lt;code&gt;title="Starlette"&lt;/code&gt; returned 252. A CVE-specific query for &lt;code&gt;vul.cve="CVE-2026-48710"&lt;/code&gt; returned 0, which reflects indexing coverage rather than absence of affected systems. These counts describe assets whose responses contain Starlette-related strings; they do not confirm that any specific host runs an affected version or exposes a bypassable authorization path, and they are not a count of confirmed vulnerable systems.
## Remediation and mitigations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade Starlette to 1.0.1 or later.&lt;/strong&gt; This is the direct fix. The patch validates the &lt;code&gt;Host&lt;/code&gt; header against a hostname pattern and falls back to the socket-level server address when the value is malformed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Patch the full dependency tree, not just the top layer.&lt;/strong&gt; Upgrading FastAPI alone does not necessarily raise the Starlette version. Inspect the resolved dependency tree and pin Starlette explicitly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update LiteLLM to 1.84.0 or later&lt;/strong&gt; if it is deployed, and treat the MCP test endpoints as sensitive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop using &lt;code&gt;request.url.path&lt;/code&gt; for authorization.&lt;/strong&gt; The advisory recommends binding checks to endpoints through Starlette &lt;code&gt;requires()&lt;/code&gt; or FastAPI &lt;code&gt;Depends()&lt;/code&gt; and &lt;code&gt;Security()&lt;/code&gt;. Audit the codebase for &lt;code&gt;request.url.path&lt;/code&gt; and &lt;code&gt;str(request.url)&lt;/code&gt; used in access decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter malformed &lt;code&gt;Host&lt;/code&gt; headers at the edge.&lt;/strong&gt; A reverse proxy, ingress controller, or WAF configured with a host allowlist that rejects &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;?&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;@&lt;/code&gt;, backslash, and space blocks the attack before it reaches the application. This is a mitigation, not a substitute for patching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate exposure.&lt;/strong&gt; X41 D-Sec published an online scanner at badhost.org, along with Semgrep rules and CodeQL queries, to identify affected code paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate credentials if compromise is suspected.&lt;/strong&gt; For AI gateways, that includes model provider keys and any tokens stored by the gateway.
## References&lt;/li&gt;
&lt;li&gt;CISA, "CISA Adds Seven Known Exploited Vulnerabilities to Catalog," 2026-09-02: &lt;a href="https://www.cisa.gov/news-events/alerts/2026/09/02/cisa-adds-seven-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;https://www.cisa.gov/news-events/alerts/2026/09/02/cisa-adds-seven-known-exploited-vulnerabilities-catalog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;X41 D-Sec, BadHost advisory (X41-2026-002) and badhost.org scanner&lt;/li&gt;
&lt;li&gt;Starlette GitHub security advisory for CVE-2026-48710, fixed in 1.0.1&lt;/li&gt;
&lt;li&gt;Horizon3.ai analysis of the CVE-2026-48710 and CVE-2026-42271 chain&lt;/li&gt;
&lt;li&gt;InfoQ, "BadHost vulnerability puts AI agents, evaluators and LLM gateways at risk"&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>vulnerability</category>
      <category>starlette</category>
      <category>fastapi</category>
    </item>
    <item>
      <title>The Advisory That Was Not a Patch: Reading AA26-231A and the AI-Assisted Reconnaissance of Siemens S7 PLCs</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:48:27 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/the-advisory-that-was-not-a-patch-reading-aa26-231a-and-the-ai-assisted-reconnaissance-of-siemens-pdn</link>
      <guid>https://dev.to/onaeiuspkz/the-advisory-that-was-not-a-patch-reading-aa26-231a-and-the-ai-assisted-reconnaissance-of-siemens-pdn</guid>
      <description>&lt;h1&gt;
  
  
  The Advisory That Was Not a Patch: Reading AA26-231A and the AI-Assisted Reconnaissance of Siemens S7 PLCs
&lt;/h1&gt;

&lt;p&gt;On 2026-08-19, five U.S. federal agencies published a joint advisory warning that threat actors were conducting reconnaissance against Siemens S7 series programmable logic controllers. The detail that made headlines was the use of AI-generated exploitation scripts. The detail that matters more for defenders is that no new vulnerability was disclosed at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the advisory actually says
&lt;/h2&gt;

&lt;p&gt;Joint Cybersecurity Advisory AA26-231A was issued by the NSA, CISA, the FBI, the Department of Energy, and the Environmental Protection Agency. It describes actors using internet scanning services to locate internet-exposed or poorly protected PLCs running outdated software, then employing AI-generated exploitation scripts that incorporate the open-source snap7.dll and python-snap7 libraries while masquerading as legitimate monitoring tools.&lt;br&gt;
Those scripts provide read and write access to PLC memory, configuration data, and ladder logic over the S7comm protocol, typically on TCP port 102. The advisory names the affected families broadly: all CPU variants of the S7-200, S7-300 (including 314, 315, and 317), S7-400, S7-1200 (CPU 1211C, 1212C, 1214C, 1215C, and 1217C), and S7-1500 series, including F-series safety controllers.&lt;br&gt;
The agencies assess the activity as persistent reconnaissance intended to develop capabilities and prepare for potential operational effects. Sectors identified as most targeted are critical manufacturing, energy, water and wastewater, chemical, food and agriculture, and commercial facilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that is easy to misread
&lt;/h2&gt;

&lt;p&gt;Siemens responded that AA26-231A does not describe a new vulnerability in the S7 series. The company characterized the advisory as identifying ways to exploit misconfigurations that its own guidance already addresses, and pointed customers to ProductCERT advisory SSB-104599 for current software, protected networks, strong passwords, and model-specific documentation.&lt;br&gt;
This is an important distinction, and it cuts against the instinct to wait for a patch. There is no single update that eliminates the threat described in AA26-231A. The advisory explicitly refers to "known vulnerabilities, misconfigurations, and other weaknesses" rather than a shared defect across the product line. Operators who respond by searching for a missing firmware release will not find one, and the time spent searching is time not spent reducing exposure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI-generated scripts change the calculus
&lt;/h2&gt;

&lt;p&gt;The advisory frames AI as an evolution in threat actor capability rather than an autonomous attacker. Target identification, confirmation of intent, and the issuance of physical process commands remain human decisions. What changes is the cost and speed of building a working tool.&lt;br&gt;
Historically, developing a reliable PLC interaction tool required three overlapping skill sets: industrial protocol knowledge, exploit development, and familiarity with the specific process environment. That combination is scarce, and the resulting development timelines were measured in weeks. An actor who can supply device model, firmware version, and open port information to a language model and receive a working snap7-based Python script has compressed that timeline substantially and removed the need for one of the three skill sets.&lt;br&gt;
The scripts' disguise as legitimate monitoring software compounds the problem. Signature-based detection depends on distinguishing malicious tooling from benign tooling. When the malicious tool speaks the same protocol, uses the same library, and issues the same read operations as an authorized monitoring application, behavioral baselines become more important than signatures.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the reconnaissance pattern implies
&lt;/h2&gt;

&lt;p&gt;The advisory describes the activity as reconnaissance and capability development rather than immediate disruption. That framing is consistent with an actor mapping an environment before deciding how to use it. Read and write access to ladder logic is not a subtle capability. An actor who can modify control logic can alter process behavior, and the advisory lists potential consequences including process disruption, safety incidents, equipment damage, data compromise, and cascading effects.&lt;br&gt;
The advisory also notes that the targeting activity is broader than Siemens devices and that all PLC owners and operators should apply relevant mitigations. No specific CVE identifiers or indicators of compromise are listed, which means detection cannot rely on matching a published IOC list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exposure context
&lt;/h2&gt;

&lt;p&gt;ZoomEye indexes 173 assets matching the &lt;code&gt;app="Siemens S7"&lt;/code&gt; fingerprint and 10,160 matching &lt;code&gt;app="Siemens SIMATIC"&lt;/code&gt;. A broader query for &lt;code&gt;port="102"&lt;/code&gt; returns 161,764 assets, and &lt;code&gt;device="plc"&lt;/code&gt; returns 95,395.&lt;br&gt;
These numbers require careful reading. The port 102 count describes services reachable on the S7comm-associated port, not confirmed Siemens controllers, and not confirmed vulnerable devices. The &lt;code&gt;device="plc"&lt;/code&gt; count spans all vendors. The product-fingerprint counts describe indexed product assets, not confirmed exploitable instances. What the figures do establish is that the relevant protocol surface is large enough that exposure reduction is a meaningful control rather than a theoretical one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defensive implications
&lt;/h2&gt;

&lt;p&gt;The advisory's mitigations follow from its framing. Because the root cause is exposure and configuration rather than a code defect, the effective responses are structural.&lt;br&gt;
Network segmentation is the primary control. A PLC that cannot be reached from the internet cannot be scanned by an internet scanning service. Where remote access is operationally required, it should terminate at a controlled intermediary rather than at the controller.&lt;br&gt;
Firmware currency remains relevant even without a single fixing patch, because the advisory refers to known vulnerabilities that are exploitable when devices are exposed or insufficiently segmented. Siemens ProductCERT provides firmware updates addressing known issues.&lt;br&gt;
Authentication hygiene matters because default and weak credentials lower the effort required after exposure is established. Strong passwords and model-specific hardening guidance address this directly.&lt;br&gt;
Monitoring for anomalous S7comm activity provides a detection path that does not depend on IOCs, which the advisory does not supply. Unusual read patterns, unexpected write operations to ladder logic, and connections from unfamiliar sources are the observable signals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits of this analysis
&lt;/h2&gt;

&lt;p&gt;Two limits deserve emphasis. First, the advisory lists no CVE identifiers and no IOCs, so any specific detection rule presented as derived from AA26-231A would be an extrapolation rather than a citation. Second, the ZoomEye counts above describe protocol and product exposure, not confirmed compromise or confirmed vulnerability. They indicate where to look, not what has happened.&lt;br&gt;
The broader lesson is about how to read an advisory that is not a patch announcement. AA26-231A documents a change in attacker capability applied against a long-standing exposure problem. The response it calls for is configuration and architecture work, and that work does not have a release date.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;NSA, CISA, FBI, DOE, EPA — Joint Cybersecurity Advisory AA26-231A, 2026-08-19&lt;/li&gt;
&lt;li&gt;Siemens ProductCERT advisory SSB-104599&lt;/li&gt;
&lt;li&gt;National Vulnerability Database — &lt;a href="https://nvd.nist.gov/" rel="noopener noreferrer"&gt;https://nvd.nist.gov/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ZoomEye, &lt;code&gt;app="Siemens S7"&lt;/code&gt; — 173 assets; &lt;code&gt;app="Siemens SIMATIC"&lt;/code&gt; — 10,160 assets; &lt;code&gt;port="102"&lt;/code&gt; — 161,764 assets; &lt;code&gt;device="plc"&lt;/code&gt; — 95,395 assets; collected 2026-09-16&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>ics</category>
      <category>otsecurity</category>
      <category>siemens</category>
    </item>
    <item>
      <title>How I Understand Modern AI as a Developer</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:05:56 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/how-i-understand-modern-ai-as-a-developer-1al1</link>
      <guid>https://dev.to/onaeiuspkz/how-i-understand-modern-ai-as-a-developer-1al1</guid>
      <description>&lt;p&gt;Nowadays AI is everywhere in software development, yet many people misunderstand its real capability.&lt;/p&gt;

&lt;p&gt;AI is not a magic solution that can solve every problem automatically. It works best as a powerful assistant. It helps write boilerplate code, explain complex concepts and speed up debugging work. However, human judgment is still essential. We need to verify outputs, fix logical flaws and fit generated results into actual business requirements.&lt;/p&gt;

&lt;p&gt;For developers, the key is learning to collaborate with AI instead of fully relying on it. Mastering prompt skills and critical thinking will bring more value than blindly trusting generated answers.&lt;/p&gt;

&lt;p&gt;AI extends our ability, but human experience still leads the final decision‑making.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>developer</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>My First Technical Note on DEV.to</title>
      <dc:creator>OnaEiuspkz</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:04:58 +0000</pubDate>
      <link>https://dev.to/onaeiuspkz/my-first-technical-note-on-devto-5g0n</link>
      <guid>https://dev.to/onaeiuspkz/my-first-technical-note-on-devto-5g0n</guid>
      <description>&lt;p&gt;Hello DEV community!&lt;/p&gt;

&lt;p&gt;This is my first published article. As a software developer, I keep learning new technologies and building small side projects in my free time.&lt;/p&gt;

&lt;p&gt;I will record real‑world development issues, practical tips and learning thoughts in future posts. I hope to get feedback and inspiration from fellow developers here.&lt;/p&gt;

&lt;p&gt;Looking forward to communicating and growing together with you all. Thank you for reading.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
