<?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: jeffrey</title>
    <description>The latest articles on DEV Community by jeffrey (@jeffreyciend).</description>
    <link>https://dev.to/jeffreyciend</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%2F4127405%2F7e2bf268-0802-463b-808c-ea62a8f1cb9c.jpeg</url>
      <title>DEV Community: jeffrey</title>
      <link>https://dev.to/jeffreyciend</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeffreyciend"/>
    <language>en</language>
    <item>
      <title>mySCADA myPRO Manager: Two Missing-Authorization Flaws in an ICS Management Platform</title>
      <dc:creator>jeffrey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 09:25:14 +0000</pubDate>
      <link>https://dev.to/jeffreyciend/myscada-mypro-manager-two-missing-authorization-flaws-in-an-ics-management-platform-37ka</link>
      <guid>https://dev.to/jeffreyciend/myscada-mypro-manager-two-missing-authorization-flaws-in-an-ics-management-platform-37ka</guid>
      <description>&lt;h1&gt;
  
  
  mySCADA myPRO Manager: Two Missing-Authorization Flaws in an ICS Management Platform
&lt;/h1&gt;

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

&lt;p&gt;CISA published an advisory covering two authorization weaknesses in mySCADA myPRO Manager, an HMI/SCADA management component from mySCADA Technologies. The more serious issue, CVE-2026-73807, carries a CVSS v3 score of 9.8. The second, CVE-2026-82567, is rated 6.3.&lt;br&gt;
Both are described as missing-authorization defects. Neither requires the attacker to hold credentials, and neither has been linked to confirmed exploitation at the time of disclosure. Patches are available in version 2.2.&lt;/p&gt;

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

&lt;p&gt;CVE-2026-73807 sits in the myPRO Manager command API. The advisory states that this API "does not properly enforce authentication for privileged functions." In practice, an endpoint that should reject unauthenticated callers accepts them, and the caller reaches management operations that are meant to be restricted.&lt;br&gt;
CVE-2026-82567 affects the notification gateway. That component exposes an HTTP endpoint used to dispatch SMS messages through an attached GSM modem, and the endpoint does not verify who is calling it. A network request carrying a message payload is enough to trigger a send.&lt;br&gt;
Exploitation requires network reachability to the affected interface. An attacker who can route packets to the command API or the notification gateway does not need a session, a token, or a valid account.&lt;/p&gt;

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

&lt;p&gt;Reaching the command API gives an attacker access to privileged management functions. On an industrial control deployment, that can mean altering configuration, disrupting process visibility, or interfering with the operator's ability to control equipment.&lt;br&gt;
The notification gateway adds a second, less obvious consequence. Because the SMS path runs through a physical GSM modem, an attacker can use the appliance to send messages that appear to originate from the operator's own infrastructure. That is useful for social engineering against staff who trust messages from the plant's monitoring system, and it can generate carrier charges on the operator's account.&lt;/p&gt;

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

&lt;p&gt;mySCADA myPRO Manager version 2.1 and earlier is affected. mySCADA Technologies resolved both defects in version 2.2. The advisory does not describe a configuration that avoids the flaws; the affected code paths are part of the product's normal management and alerting functions.&lt;/p&gt;

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

&lt;p&gt;A ZoomEye query for &lt;code&gt;title="mySCADA"&lt;/code&gt; returned 651 matching assets on 2026-09-16. That figure counts systems whose page title matches the product string. It does not establish that any of them run a vulnerable version or expose the affected endpoints to the internet, so it should be read as an indicator of how widely the product is deployed on reachable networks rather than a count of confirmed vulnerable hosts.&lt;/p&gt;

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

&lt;p&gt;Upgrade myPRO Manager to version 2.2. That is the only action that removes the flaws.&lt;br&gt;
Where the upgrade cannot be applied immediately, restrict who can reach the command API and the notification gateway. Place both behind a firewall or an access-controlled segment, and do not expose them to untrusted networks. If the SMS gateway is not needed, disable it. Review logs for unauthenticated calls to management endpoints and for outbound SMS activity that no operator initiated.&lt;br&gt;
After upgrading, confirm the running version in the product interface rather than relying on the installer having completed.&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>MikroTik RouterOS CVE-2026-67277: A Defender's Detection and Response Playbook</title>
      <dc:creator>jeffrey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 08:25:46 +0000</pubDate>
      <link>https://dev.to/jeffreyciend/mikrotik-routeros-cve-2026-67277-a-defenders-detection-and-response-playbook-2mij</link>
      <guid>https://dev.to/jeffreyciend/mikrotik-routeros-cve-2026-67277-a-defenders-detection-and-response-playbook-2mij</guid>
      <description>&lt;h1&gt;
  
  
  MikroTik RouterOS CVE-2026-67277: A Defender's Detection and Response Playbook
&lt;/h1&gt;

&lt;p&gt;By the time a vendor advisory reaches your inbox, the exploitation window may already be open. CERT Polska observed attacks against MikroTik RouterOS beginning 2026-09-02, three days before it published its warning on 2026-09-05. For defenders running RouterOS at the network edge, the useful question is not whether the flaw is serious. It is what to look for, in what order, and what to do when you find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you are defending against
&lt;/h2&gt;

&lt;p&gt;CVE-2026-67277 is a CWE-306 missing-authentication flaw in RouterOS, reachable through the SSH management service. It is exploited as the opening move of a chain called MikroTrick, completed by CVE-2026-86060, a CWE-88 argument-delimiter neutralization flaw. Together they grant an unauthenticated attacker full administrator control of an internet-exposed device. CISA added CVE-2026-67277 to the Known Exploited Vulnerabilities catalog on 2026-09-10, which makes it a remediation priority for federal agencies and a sensible one for everyone else.&lt;/p&gt;

&lt;p&gt;The reason this matters more than a typical edge-device bug is position. A RouterOS box is frequently the boundary between a private network and the internet. Compromise of that box is compromise of the boundary: routing, DNS, firewall policy, and the traffic itself all pass through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detection: the indicators that matter
&lt;/h2&gt;

&lt;p&gt;CERT Polska and follow-on reporting identify specific artifacts of exploitation. Treat these as leads, not proof, and correlate them against your own logs.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SSH logins as the username &lt;code&gt;-2&lt;/code&gt;. A username of &lt;code&gt;-2&lt;/code&gt; is not a normal account. SSH log entries showing that name are a reported indicator of the MikroTrick chain. Search authentication logs for it directly.&lt;/li&gt;
&lt;li&gt;An unexpected privileged account named &lt;code&gt;ops&lt;/code&gt;. Investigators have reported an account by that name created during intrusions. Enumerate RouterOS users and compare against your known inventory.&lt;/li&gt;
&lt;li&gt;Scheduled scripts and configuration you did not author. Attackers use router scripting to persist. Review &lt;code&gt;/system script&lt;/code&gt; and &lt;code&gt;/system scheduler&lt;/code&gt; entries for anything unfamiliar.&lt;/li&gt;
&lt;li&gt;Outbound connections to reported infrastructure. Source addresses &lt;code&gt;82.192.72.4&lt;/code&gt; and &lt;code&gt;103.102.31.18&lt;/code&gt; have been associated with the activity. They are historical indicators, not a complete blocklist.&lt;/li&gt;
&lt;li&gt;The Flagged self-check. Recent RouterOS builds run a startup integrity check and mark a device as Flagged when they find known tampering. A Flagged device should be treated as compromised.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Response: patching is step one, not the whole job
&lt;/h2&gt;

&lt;p&gt;The fixed builds are RouterOS 6.49.21, 7.23.4, and 7.24.2. Upgrade to the build that matches your branch: 6.x long-term to 6.49.21 or later, 7.x long-term to 7.23.4 or later, and stable to 7.24.2 or later. Firmware is available from MikroTik's download page.&lt;/p&gt;

&lt;p&gt;On a device that shows any of the indicators above, upgrading alone is not a clean bill of health. An attacker who held administrator rights could have left accounts, scripts, or configuration changes that survive a firmware update. The defensible sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Preserve evidence. Capture configuration, logs, and a support file before changing anything, so the incident can be scoped.&lt;/li&gt;
&lt;li&gt;Isolate. Move the device off the untrusted path or restrict its management access while you work.&lt;/li&gt;
&lt;li&gt;Rebuild. For a confirmed compromise, factory reset or reinstall and apply a known-good configuration rather than editing the live one.&lt;/li&gt;
&lt;li&gt;Rotate everything the device could have seen. Credentials, VPN keys, and any secrets stored in or passing through the router should be considered exposed.&lt;/li&gt;
&lt;li&gt;Re-audit after rebuild. Confirm no unknown accounts or scripts remain before returning the device to service.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Reducing the attack surface going forward
&lt;/h2&gt;

&lt;p&gt;The single most effective structural control is not exposing SSH management to the internet. Where remote administration is genuinely required, restrict it to trusted source addresses, place it on a dedicated management network, and prefer a VPN or jump host over a publicly reachable listener.&lt;/p&gt;

&lt;p&gt;Two habits follow from this incident. First, keep edge devices on a patch cadence; a router that is never updated is a router that is never fixed. Second, monitor the management plane. Authentication logs, account inventories, and scheduled-task listings are cheap to collect and are exactly where this class of intrusion shows up.&lt;/p&gt;

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

&lt;p&gt;A ZoomEye search for &lt;code&gt;app="RouterOS"&lt;/code&gt; returned 2,854,024 matching assets on 2026-09-16. This is the population of fingerprint-matching devices, not a count of confirmed-vulnerable or internet-exposed ones, but it shows how much surface an opportunistic scanner can reach. A CVE-specific query, &lt;code&gt;vul.cve="CVE-2026-67277"&lt;/code&gt;, returned zero indexed assets at the same time, which is typical for a fresh disclosure.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;CISA, CISA Adds Two Known Exploited Vulnerabilities to Catalog, 2026-09-10: &lt;a href="https://www.cisa.gov/news-events/alerts/2026/09/10/cisa-adds-two-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;https://www.cisa.gov/news-events/alerts/2026/09/10/cisa-adds-two-known-exploited-vulnerabilities-catalog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CERT Polska, Vulnerabilities in MikroTik RouterOS actively exploited: &lt;a href="https://cert.pl/en/posts/2026/09/vulnerabilities-in-mikrotik-routeros-actively-exploited/" rel="noopener noreferrer"&gt;https://cert.pl/en/posts/2026/09/vulnerabilities-in-mikrotik-routeros-actively-exploited/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MikroTik RouterOS downloads: &lt;a href="https://mikrotik.com/download" rel="noopener noreferrer"&gt;https://mikrotik.com/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NVD record for CVE-2026-67277: &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-67277" rel="noopener noreferrer"&gt;https://nvd.nist.gov/vuln/detail/CVE-2026-67277&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>vulnerability</category>
      <category>mikrotik</category>
      <category>routeros</category>
    </item>
    <item>
      <title>Finding the Workflow Orchestrators: ZoomEye Exposure Data for Kestra After CVE-2026-49869</title>
      <dc:creator>jeffrey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:48:39 +0000</pubDate>
      <link>https://dev.to/jeffreyciend/finding-the-workflow-orchestrators-zoomeye-exposure-data-for-kestra-after-cve-2026-49869-4j41</link>
      <guid>https://dev.to/jeffreyciend/finding-the-workflow-orchestrators-zoomeye-exposure-data-for-kestra-after-cve-2026-49869-4j41</guid>
      <description>&lt;h1&gt;
  
  
  Finding the Workflow Orchestrators: ZoomEye Exposure Data for Kestra After CVE-2026-49869
&lt;/h1&gt;

&lt;p&gt;CVE-2026-49869 is an authentication bypass in Kestra OSS that escalates to unauthenticated remote code execution, rated Critical at CVSS 3.1 10.0 and added to CISA's Known Exploited Vulnerabilities catalog on 2026-09-02. The flaw is a path-suffix check in the &lt;code&gt;AuthenticationFilter&lt;/code&gt;: any request path ending in &lt;code&gt;/configs&lt;/code&gt; skipped Basic Authentication, and because &lt;code&gt;configs&lt;/code&gt; can appear as a caller-controlled resource identifier in other API routes, protected endpoints could be reached without credentials. Kestra ships script execution plugins by default, so an anonymous caller who can create and trigger a workflow can run commands inside the worker.&lt;br&gt;
For defenders, the practical question is where these orchestrators live and how many are reachable. That is a measurement question, and it comes with an important caveat about how search engines fingerprint this product.&lt;/p&gt;

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

&lt;p&gt;Two ZoomEye queries were run on 2026-09-16 with scope &lt;code&gt;all&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;app="Kestra"&lt;/code&gt; returned 119 matching assets.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;title="Kestra"&lt;/code&gt; returned 231 matching assets.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;app="Kestra OSS"&lt;/code&gt; returned 0, which indicates that this string is not a valid product fingerprint in the index rather than that no assets exist.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vul.cve="CVE-2026-49869"&lt;/code&gt; returned 0, which reflects CVE indexing lag and is not evidence of patching.
The two positive queries measure the same product through different signals. An &lt;code&gt;app&lt;/code&gt; fingerprint matches the application as identified by the scanner; a &lt;code&gt;title&lt;/code&gt; match looks at the HTML title of the page. The title count is higher here, which is common for products whose login or landing pages carry a recognizable title while the application fingerprint is narrower. Neither number should be treated as the definitive population of exposed Kestra instances, and neither should be summed with the other — they overlap.
## Reading the numbers honestly
These counts describe assets that ZoomEye can identify as Kestra from the public internet. They do not tell you:&lt;/li&gt;
&lt;li&gt;which version each instance runs;&lt;/li&gt;
&lt;li&gt;whether the instance is reachable beyond the scanned port;&lt;/li&gt;
&lt;li&gt;whether the instance sits behind an additional authentication layer that would stop the bypass before it reaches the application filter;&lt;/li&gt;
&lt;li&gt;whether any instance has already been accessed.
The affected versions are Kestra OSS up to and including 1.3.20, with CVE data also expressed as &lt;code&gt;&amp;lt; 1.0.45&lt;/code&gt; and &lt;code&gt;&amp;gt;= 1.1.0, &amp;lt; 1.3.21&lt;/code&gt;. Fixed releases are 1.0.45 and 1.3.21. A public fingerprint tells you the product is there; only the owner can tell you the version and the configuration.
## Why this product class is worth measuring
A workflow orchestrator is not a passive web application. Kestra's documented role is to define and schedule workflows, run shell, Python, and Node.js tasks, connect to databases, cloud services, message systems, and internal APIs, and store flow configuration, variables, and run logs. That is the point of the product, and it is also why an authentication bypass here is more than an information-disclosure issue.
The exploitation chain is short. An anonymous caller creates a workflow through a route that satisfies the suffix check, triggers it, and the platform executes the script task. No separate command-injection vulnerability is needed; the orchestrator's legitimate execution capability becomes the attacker's primitive. The vendor's fix normalizes the path and matches the public configuration endpoint exactly as &lt;code&gt;/api/v1/configs&lt;/code&gt;, and adds regression tests confirming that other paths ending in &lt;code&gt;/configs&lt;/code&gt; return &lt;code&gt;401 Unauthorized&lt;/code&gt;.
## From count to action
For an organization running Kestra, the useful sequence is:&lt;/li&gt;
&lt;li&gt;Cross-check the public fingerprint counts against your own inventory. Orchestrators are often deployed by platform or data teams and may not be in the central asset register.&lt;/li&gt;
&lt;li&gt;Determine which instances are reachable from untrusted networks. Even an instance that is not directly internet-facing can be exploited by an attacker who has already reached the office, development, or cluster network, so internal exposure counts too.&lt;/li&gt;
&lt;li&gt;Upgrade to 1.0.45, 1.3.21, or a later supported release.&lt;/li&gt;
&lt;li&gt;Until the upgrade lands, restrict the Kestra API at the network layer to trusted administrative entry points and enforce authentication at the upstream proxy rather than relying on the application filter.&lt;/li&gt;
&lt;li&gt;Investigate rather than only scan. Look for unexpected flows, unfamiliar executions, key-value changes, deleted logs, and script tasks from unknown sources. If the worker could reach cloud metadata endpoints, database credentials, or internal APIs, include credential rotation in the response.&lt;/li&gt;
&lt;li&gt;Be careful about the blast radius claim. Root inside the worker container is not automatically root on the host; escaping the container depends on mounts, capabilities, exposed sockets, service accounts, and runtime configuration. CISA confirming exploitation does not mean every internet-facing instance was compromised.
## What the measurement establishes
The headline for Kestra is not a large number. Roughly one to two hundred publicly fingerprinted instances is a small population compared with consumer-facing products, and that is itself a useful finding: this is a component that tends to be deployed on internal networks and behind access controls, which is where it belongs. The value of the exposure query is the check against your own records — confirming whether any instance you own has a public fingerprint at all, and whether the network controls you assume are in place actually are.
Where a platform can execute code and reach credentials, the exposure count is a prompt to verify configuration, not a substitute for it.
## References&lt;/li&gt;
&lt;li&gt;ZoomEye exposure query &lt;code&gt;app="Kestra"&lt;/code&gt;, scope &lt;code&gt;all&lt;/code&gt;, count 119, collected 2026-09-16.&lt;/li&gt;
&lt;li&gt;ZoomEye exposure query &lt;code&gt;title="Kestra"&lt;/code&gt;, scope &lt;code&gt;all&lt;/code&gt;, count 231, collected 2026-09-16.&lt;/li&gt;
&lt;li&gt;ZoomEye query &lt;code&gt;vul.cve="CVE-2026-49869"&lt;/code&gt;, count 0, collected 2026-09-16.&lt;/li&gt;
&lt;li&gt;Kestra GitHub Security Advisory GHSA-5vc5-wxxq-3fjx (CVE-2026-49869), including fix commit 2475839.&lt;/li&gt;
&lt;li&gt;CISA, "CISA Adds Seven Known Exploited Vulnerabilities to Catalog," 2026-09-02.&lt;/li&gt;
&lt;li&gt;CVE-2026-49869 record, CVSS 3.1 vector &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;/ul&gt;

</description>
      <category>zoomeye</category>
      <category>exposure</category>
      <category>kestra</category>
      <category>workfloworchestration</category>
    </item>
    <item>
      <title>Why I Started Writing</title>
      <dc:creator>jeffrey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 06:48:52 +0000</pubDate>
      <link>https://dev.to/jeffreyciend/why-i-started-writing-3i74</link>
      <guid>https://dev.to/jeffreyciend/why-i-started-writing-3i74</guid>
      <description>&lt;h1&gt;
  
  
  Why I Started Writing as a Developer
&lt;/h1&gt;

&lt;p&gt;For a long time, I thought writing about code was just for "experts." I'd solve a tricky bug, celebrate quietly, and move on — until I realized how much I was forgetting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The turning point
&lt;/h2&gt;

&lt;p&gt;A few months ago, I ran into the exact same bug I had fixed six months earlier. I had no notes, no record of the solution, and no choice but to debug it all over again. That's when I decided to start writing things down.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I hope to do here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Document the problems I solve, big and small&lt;/li&gt;
&lt;li&gt;Share the tools and patterns that actually save me time&lt;/li&gt;
&lt;li&gt;Learn from the comments and feedback of other developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing isn't about being perfect. It's about leaving a trail of breadcrumbs — for future me, and hopefully for someone else too.&lt;/p&gt;

&lt;p&gt;Looking forward to the journey. Feel free to say hi!&lt;/p&gt;

</description>
      <category>learning</category>
      <category>productivity</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
