<?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: Gary Austin</title>
    <description>The latest articles on DEV Community by Gary Austin (@biggthecreator).</description>
    <link>https://dev.to/biggthecreator</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%2F4026638%2Fcca25cda-68c5-450b-a07b-dd50e72d8f0e.png</url>
      <title>DEV Community: Gary Austin</title>
      <link>https://dev.to/biggthecreator</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/biggthecreator"/>
    <language>en</language>
    <item>
      <title>It Compiles. Nobody Asked If It Was Safe: The One-Afternoon Review for an AI-Built App</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 30 Sep 2026 14:07:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/it-compiles-nobody-asked-if-it-was-safe-the-one-afternoon-review-for-an-ai-built-app-42kg</link>
      <guid>https://dev.to/biggthecreator/it-compiles-nobody-asked-if-it-was-safe-the-one-afternoon-review-for-an-ai-built-app-42kg</guid>
      <description>&lt;h1&gt;
  
  
  It compiles. Nobody asked if it was safe: the one-afternoon review for an AI-built app
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;In Veracode's 2026 testing, AI-generated code compiled almost every time and passed security checks about half the time — with no security prompting, on raw models. Two public cases — a scan of Lovable's showcase in 2025 and Wiz's Moltbook disclosure in 2026 — show one shape a failure can take: a key that is meant to be public, and a server-side rule that was missing or wrong. Here is the mechanism, what the record actually establishes, what it does not, and the afternoon that checks for it.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Somebody on your side of the table shipped an app this quarter that no security person ever read. A client intake portal. A technician's internal tool. A dashboard built in an afternoon with an AI coding assistant and a login page that made it feel finished.&lt;/p&gt;

&lt;p&gt;It works. I believe you. That is not the question any more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working is the easy part now
&lt;/h2&gt;

&lt;p&gt;Veracode's &lt;em&gt;2026 GenAI Code Security Report&lt;/em&gt; (press release, July 28, 2026) tracks code generated by more than 100 models. By Veracode's numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the code compiles at a &lt;strong&gt;near-universal ~100%&lt;/strong&gt; syntax pass rate;&lt;/li&gt;
&lt;li&gt;it passes Veracode's security tests &lt;strong&gt;56% of the time on average&lt;/strong&gt; — "virtually unchanged" from their previous report;&lt;/li&gt;
&lt;li&gt;the best model on their summer leaderboard still &lt;strong&gt;failed nearly one security task in three&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two conditions ride with those numbers and they matter: the tests used &lt;strong&gt;no security-specific prompting&lt;/strong&gt;, and they ran against &lt;strong&gt;raw models&lt;/strong&gt; — not agents, not tools with guardrails, not code a human reviewed. Veracode says so explicitly.&lt;/p&gt;

&lt;p&gt;So the honest reading is not "AI code is insecure." It is narrower and more useful: &lt;strong&gt;code that nobody asked about security, and nobody reviewed, passes security checks about half the time.&lt;/strong&gt; Our read: that describes a lot of the apps quietly going live inside small businesses right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  The key is supposed to be public
&lt;/h2&gt;

&lt;p&gt;Many of these apps put their data in a hosted database — Supabase is a common one — and the browser talks to it directly. To do that, the page carries a key.&lt;/p&gt;

&lt;p&gt;Here is the part people get backwards: &lt;strong&gt;that key is supposed to be public.&lt;/strong&gt; A publishable (or "anon") key is designed to sit in the browser. Anyone can read it. That is fine, because the key is not the lock.&lt;/p&gt;

&lt;p&gt;The lock is a rule on the database itself — in Supabase, a &lt;strong&gt;Row Level Security&lt;/strong&gt; policy — that says &lt;em&gt;this user can read these rows, and only these&lt;/em&gt;. When the rule exists and is right, the public key is harmless. When the rule is missing or wrong, the public key opens the whole table, for anyone, without logging in. And nothing on the screen looks any different.&lt;/p&gt;

&lt;p&gt;That is the entire mechanism behind both cases below.&lt;/p&gt;

&lt;h2&gt;
  
  
  170 of 1,645: the showcase scan
&lt;/h2&gt;

&lt;p&gt;In March 2025, Matt Palmer — who works in developer relations at &lt;strong&gt;Replit&lt;/strong&gt;, which builds a competing AI app builder; read the finding with that in mind, and read his method yourself — found a Lovable-built site that would hand over its whole &lt;code&gt;users&lt;/code&gt; table when a request was edited to ask for everything. So he and a colleague checked the rest.&lt;/p&gt;

&lt;p&gt;Lovable keeps a showcase page of launched projects. Their script visited the homepages of &lt;strong&gt;1,645&lt;/strong&gt; projects listed there, captured each request to the database, and re-issued it asking for everything. Per Palmer's published statement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;170 projects (about 10.3%)&lt;/strong&gt; returned data with inadequate Row Level Security;&lt;/li&gt;
&lt;li&gt;across &lt;strong&gt;303 endpoints&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;exposing things like emails, phone numbers, subscription and payment details, and developer API keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;He is careful about the method, and so are we: the script &lt;strong&gt;only analysed homepages&lt;/strong&gt;. It never logged in and never crawled deeper. Our read: that count is a floor, not a ceiling.&lt;/p&gt;

&lt;p&gt;It was published as &lt;strong&gt;CVE-2025-48757&lt;/strong&gt; on May 29, 2025. Palmer also writes (as of May 2025) that Lovable's later "security scan" checked &lt;em&gt;that&lt;/em&gt; an RLS policy existed, not &lt;em&gt;whether it was correct&lt;/em&gt;. That is his assessment — but hold onto the underlying point, because it comes back below.&lt;/p&gt;

&lt;h2&gt;
  
  
  One setting: Wiz and Moltbook
&lt;/h2&gt;

&lt;p&gt;In January 2026, Moltbook — a social network for AI agents that had just gone viral, and whose founder said publicly he had vibe-coded it — got a visit from Wiz researchers who, in their words, were "simply browsing like normal users."&lt;/p&gt;

&lt;p&gt;Within minutes they found a Supabase key in the site's client-side JavaScript. Wiz is precise here: it was a &lt;strong&gt;publishable&lt;/strong&gt; key, and exposing one "does not automatically indicate a security failure." The failure was behind it — no Row Level Security. Per Wiz's write-up (Gal Nagli, February 2, 2026), that key gave unauthenticated &lt;strong&gt;read and write&lt;/strong&gt; access to the production database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.5 million&lt;/strong&gt; API authentication tokens;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;35,000&lt;/strong&gt; email addresses;&lt;/li&gt;
&lt;li&gt;private messages between agents, some containing plaintext third-party API keys;&lt;/li&gt;
&lt;li&gt;and the ability to &lt;strong&gt;edit live posts&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moltbook secured it &lt;strong&gt;within hours&lt;/strong&gt; of Wiz's report, over several rounds of fixes, and Wiz deleted the data it had accessed. This was a &lt;strong&gt;research disclosure&lt;/strong&gt;, not an attack report. (Wiz notes that researcher Jameson O'Reilly independently found the same misconfiguration.) Wiz's own summary is the line worth keeping: the issue "ultimately traced back to a single Supabase configuration setting."&lt;/p&gt;

&lt;h2&gt;
  
  
  The button is hidden. The route is not.
&lt;/h2&gt;

&lt;p&gt;Neither case is new in kind. OWASP's Top 10:2025 keeps &lt;strong&gt;Broken Access Control at #1&lt;/strong&gt;; in OWASP's contributed test data, every application tested had some form of it. And OWASP states the principle plainly: access control is only effective when implemented in &lt;strong&gt;trusted server-side code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One of OWASP's own example scenarios is an app that keeps its access checks in the front end — JavaScript that stops you navigating to the admin page — while the admin URL itself still answers a direct request. The attacker never clicks the button. They call the route.&lt;/p&gt;

&lt;p&gt;Our read: this is the pattern an assistant ships most easily, because it builds exactly what was asked for: a page, a hidden button, a redirect for non-admins. It all looks right in a demo. Nothing in the demo asked the server to refuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we do not know
&lt;/h2&gt;

&lt;p&gt;It is worth being honest about the edges of the record.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;We do not know how many AI-built apps your clients are running today.&lt;/strong&gt; If you do not know either, that is finding number one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We do not know how many of those 170 are still open.&lt;/strong&gt; Palmer's scan is from March 2025.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We do not know how representative either case is.&lt;/strong&gt; One was a showcase of one builder's apps; the other was one viral app. Neither is a census.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What does hold across both: a rule that &lt;em&gt;exists&lt;/em&gt; is not a rule that &lt;em&gt;works&lt;/em&gt;, and the only way to know which one you have is to try it — from the outside, as somebody who should not get in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The afternoon
&lt;/h2&gt;

&lt;p&gt;One app. The one a real person can sign into today. Put whoever built it in the room.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE PRE-LAUNCH AFTERNOON — ONE APP
1  PICK     one app a real person can sign into.
2  SECRETS  search the BUILT front end (view source,
            network tab, build output) — not the repo —
            for keys. Publishable key: fine.
            Service / admin key: remove it,
            redeploy, rotate, treat as exposed.
3  ROWS     for every table the browser can reach,
            confirm the row rule EXISTS, then prove it
            WORKS with two test accounts: B's record
            as A, and with no session; read AND
            write. You should get nothing back.
4  ROUTES   call the admin API directly as an
            ordinary user. Expect a refusal (401/
            403/404) or empty result, never data.
5  HOW      every PASS gets a How-verified line, a date
            and a named human.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5 is the one that turns an afternoon into evidence. "The assistant said it did" is not a how. "Called &lt;code&gt;/api/users/2&lt;/code&gt; as user 1, got 403, 2026-09-29, J. Smith" is.&lt;/p&gt;

&lt;p&gt;Two ground rules. Run this &lt;strong&gt;only on apps you own or are authorized to test&lt;/strong&gt;. And if a check returns data that should not have been readable, treat it as a potential exposure — follow your incident-response plan and bring in counsel and your insurer; notification duties are a legal question, not a checklist one.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The free kit:&lt;/strong&gt; &lt;em&gt;The Vibe-Coded App Pre-Launch Kit&lt;/em&gt; (Gatorbyte #015) is this afternoon on paper — 26 controls in six groups, the five things the login page probably forgot, a legal and trust pass, a review-only prompt for the assistant that built the app, and a pre-launch register with a How-verified column. Runs offline as a portable Windows app; no account, nothing phones home. Free to use inside your organization and with your clients, including in paid engagements.&lt;br&gt;
→ &lt;a href="https://thesecuritygator.gumroad.com/l/gb015-vibe-coded-app-prelaunch-kit" rel="noopener noreferrer"&gt;https://thesecuritygator.gumroad.com/l/gb015-vibe-coded-app-prelaunch-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The kit supports secure-development, pre-release review and audit-preparation workflows — a practical starting point to review and adapt for your organization; not legal, compliance, or audit advice, and not a substitute for a penetration test or an application security assessment. The Security Gator is not affiliated with Veracode, Wiz, OWASP, Replit, Lovable or Moltbook.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Veracode, &lt;em&gt;2026 GenAI Code Security Report&lt;/em&gt; — press release, July 28, 2026: &lt;a href="https://www.businesswire.com/news/home/20260728207685/en/" rel="noopener noreferrer"&gt;https://www.businesswire.com/news/home/20260728207685/en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Matt Palmer, &lt;em&gt;Statement on CVE-2025-48757&lt;/em&gt;, May 29, 2025: &lt;a href="https://mattpalmer.io/posts/2025/05/statement-on-CVE-2025-48757/" rel="noopener noreferrer"&gt;https://mattpalmer.io/posts/2025/05/statement-on-CVE-2025-48757/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Wiz Research (Gal Nagli), &lt;em&gt;Hacking Moltbook&lt;/em&gt;, February 2, 2026: &lt;a href="https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys" rel="noopener noreferrer"&gt;https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP Top 10:2025, A01 Broken Access Control: &lt;a href="https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/" rel="noopener noreferrer"&gt;https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>supabase</category>
      <category>ai</category>
    </item>
    <item>
      <title>Twenty Got Three Days, Eight Got Fourteen: CISA's KEV Due Date Is the Free Sort Key Nobody Reads</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 23 Sep 2026 14:07:01 +0000</pubDate>
      <link>https://dev.to/biggthecreator/twenty-got-three-days-eight-got-fourteen-cisas-kev-due-date-is-the-free-sort-key-nobody-reads-169i</link>
      <guid>https://dev.to/biggthecreator/twenty-got-three-days-eight-got-fourteen-cisas-kev-due-date-is-the-free-sort-key-nobody-reads-169i</guid>
      <description>&lt;h1&gt;
  
  
  Twenty got three days. Eight got fourteen. Your patch queue's sort key was already free — and it's a date.
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;CISA's Known Exploited Vulnerabilities catalog publishes no CVSS score. Not for any entry, not ever. What it publishes is a &lt;code&gt;dueDate&lt;/code&gt; — one per flaw — and in the first half of September 2026 that single field sorted twenty-eight CVEs into two piles with nothing in between. All ten security and remote-management products landed in the short pile. Here is how to read the field, why a Cisco-rated 10.0 and an Acronis-rated 7.8 drew the same deadline, and the one-afternoon inventory that turns it into a queue.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I pulled the catalog on September 18, 2026. It is a public JSON file — no account, no vendor, no scanner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;catalogVersion&lt;/code&gt; &lt;strong&gt;2026.09.18&lt;/strong&gt; · &lt;code&gt;dateReleased&lt;/code&gt; &lt;strong&gt;2026-09-18T13:49:41.7236Z&lt;/strong&gt; · &lt;strong&gt;1,715&lt;/strong&gt; entries in the catalog · &lt;strong&gt;28&lt;/strong&gt; of them added since September 1.&lt;/p&gt;

&lt;p&gt;Open one entry: CVE ID, vendor, product, vulnerability name, &lt;code&gt;dateAdded&lt;/code&gt;, &lt;code&gt;dueDate&lt;/code&gt;, &lt;code&gt;knownRansomwareCampaignUse&lt;/code&gt;, CWEs, a required action, notes.&lt;/p&gt;

&lt;p&gt;Now notice the absence. &lt;strong&gt;There is no CVSS field.&lt;/strong&gt; CISA publishes no severity score in KEV — not a base score, not a vector, nothing. Every CVSS number you have seen sitting next to a KEV entry came from a vendor or from NVD, and somebody else put it there.&lt;/p&gt;

&lt;p&gt;What CISA publishes instead is a date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Twenty got three days. Eight got fourteen. There is no middle.
&lt;/h2&gt;

&lt;p&gt;Subtract &lt;code&gt;dateAdded&lt;/code&gt; from &lt;code&gt;dueDate&lt;/code&gt; across September's twenty-eight entries and the month falls into exactly two buckets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three days — 20 CVEs.&lt;/strong&gt; Linux Kernel ×2 (CVE-2025-39964, CVE-2026-53266) · Google Pixel (CVE-2026-58704) · Cisco Identity Services Engine (CVE-2026-76460) · Acronis Backup (CVE-2026-87886) · Cisco Secure Email Gateway (CVE-2026-76461) · ConnectWise ScreenConnect (CVE-2026-84869) · GitLab CE/EE (CVE-2026-85706) · MikroTik RouterOS ×2 (CVE-2026-86060, CVE-2026-67277) · Citrix NetScaler (CVE-2026-19490) · Fortinet Multiple Products (CVE-2025-25249) · Cisco Secure Firewall Management Center (CVE-2026-20079) · Adobe Commerce and Magento (CVE-2026-75650) · N-able N-central (CVE-2026-86218) · Kestra OSS (CVE-2026-49869) · JFrog Artifactory (CVE-2026-82329) · Sangoma Switchvox (CVE-2026-9586) · SonicWall SMA1000 ×2 (CVE-2026-83548, CVE-2026-83549)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fourteen days — 8 CVEs.&lt;/strong&gt; JFrog Artifactory ×2 (CVE-2026-42016, CVE-2026-42018) · Google Chromium V8 ×2 (CVE-2026-87491, CVE-2026-85046) · Microsoft Windows ×2 (CVE-2026-81963, CVE-2026-85880) · BerriAI LiteLLM (CVE-2026-59822) · Kludex Starlette (CVE-2026-48710)&lt;/p&gt;

&lt;p&gt;20 + 8 = 28. No sevens, no twenty-ones, no thirties. Two values and a hard edge between them, which is what a decision looks like once it lands in a data structure. Somebody read each entry and put it in a pile.&lt;/p&gt;

&lt;p&gt;One more fact about all twenty-eight, because it is the field people reach for when they want to feel urgency: every September entry carries &lt;code&gt;knownRansomwareCampaignUse: "Unknown"&lt;/code&gt;. The scary column is blank on the whole month. The date still says three days on twenty of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part, before you take this anywhere
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;BOD 26-04 deadlines are compulsory for Federal Civilian Executive Branch agencies only.&lt;/strong&gt; They do not bind your company, your MSP, or your clients. Not a little, not implicitly, not "as a best practice." That distinction gets flattened constantly, usually by someone with something to sell — and the flattened version is worthless anyway: "patch within three days or you're non-compliant" describes no obligation a private company actually has. Binding for federal civilian agencies; free for everyone else to copy. Copy the signal, not a claim of compliance.&lt;/p&gt;

&lt;p&gt;The field comes from &lt;strong&gt;BOD 26-04, &lt;em&gt;Prioritizing Security Updates Based on Risk&lt;/em&gt;, issued June 10, 2026&lt;/strong&gt;, which sets remediation urgency from exposure, KEV status, exploit automation and technical impact. You do not have to adopt the directive to use its output: the &lt;code&gt;dueDate&lt;/code&gt; is that four-variable model already run, already published, already free, shipping in the same file as the CVE ID.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ten — and what they have in common
&lt;/h2&gt;

&lt;p&gt;Ten of September's twenty-eight are security or remote-management products, defined tightly enough to be auditable: &lt;strong&gt;products whose purpose is to secure, authenticate, protect, back up, or remotely manage other systems.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;CVE&lt;/th&gt;
&lt;th&gt;Added&lt;/th&gt;
&lt;th&gt;Due&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Cisco Identity Services Engine&lt;/td&gt;
&lt;td&gt;CVE-2026-76460&lt;/td&gt;
&lt;td&gt;09-16&lt;/td&gt;
&lt;td&gt;09-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Acronis Backup&lt;/td&gt;
&lt;td&gt;CVE-2026-87886&lt;/td&gt;
&lt;td&gt;09-16&lt;/td&gt;
&lt;td&gt;09-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Cisco Secure Email Gateway&lt;/td&gt;
&lt;td&gt;CVE-2026-76461&lt;/td&gt;
&lt;td&gt;09-14&lt;/td&gt;
&lt;td&gt;09-17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;ConnectWise ScreenConnect&lt;/td&gt;
&lt;td&gt;CVE-2026-84869&lt;/td&gt;
&lt;td&gt;09-11&lt;/td&gt;
&lt;td&gt;09-14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Citrix NetScaler&lt;/td&gt;
&lt;td&gt;CVE-2026-19490&lt;/td&gt;
&lt;td&gt;09-09&lt;/td&gt;
&lt;td&gt;09-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Fortinet (Multiple Products)&lt;/td&gt;
&lt;td&gt;CVE-2025-25249&lt;/td&gt;
&lt;td&gt;09-09&lt;/td&gt;
&lt;td&gt;09-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Cisco Secure Firewall Management Center&lt;/td&gt;
&lt;td&gt;CVE-2026-20079&lt;/td&gt;
&lt;td&gt;09-09&lt;/td&gt;
&lt;td&gt;09-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;N-able N-central&lt;/td&gt;
&lt;td&gt;CVE-2026-86218&lt;/td&gt;
&lt;td&gt;09-08&lt;/td&gt;
&lt;td&gt;09-11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;SonicWall SMA1000 Appliances&lt;/td&gt;
&lt;td&gt;CVE-2026-83548&lt;/td&gt;
&lt;td&gt;09-02&lt;/td&gt;
&lt;td&gt;09-05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;SonicWall SMA1000 Appliances&lt;/td&gt;
&lt;td&gt;CVE-2026-83549&lt;/td&gt;
&lt;td&gt;09-02&lt;/td&gt;
&lt;td&gt;09-05&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every one: three days. Not one of them got fourteen.&lt;/p&gt;

&lt;p&gt;State the boundary out loud, because a category you cannot audit is a statistic you cannot trust. MikroTik RouterOS appears twice in the three-day pile and is &lt;strong&gt;excluded&lt;/strong&gt; here as general networking rather than security tooling; count it in and the number is twelve. The claim is ten, under that definition, checkable against the feed in about a minute.&lt;/p&gt;

&lt;p&gt;Then read the list again and notice what it is. That is not a software inventory. It is an org chart of a security program — the box that decides who gets on the network, the box that filters the mail, the box that manages the firewall, the box that holds the backups, and the two boxes that reach every machine you own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contrast one: Cisco's 10.0 and Acronis's 7.8 drew the same three days
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cisco Identity Services Engine, CVE-2026-76460.&lt;/strong&gt; Added September 16, due September 19, CWE-648 &lt;em&gt;Incorrect Use of Privileged APIs&lt;/em&gt;. &lt;strong&gt;Cisco's own advisory scores it 10.0&lt;/strong&gt; — Cisco's number; CISA publishes no CVSS score in KEV. It was a zero-day, and Cisco PSIRT states it is aware of active exploitation. A remote, &lt;strong&gt;unauthenticated&lt;/strong&gt; attacker bypasses authentication with crafted requests to an API endpoint that does not apply sufficient authentication controls, and successful exploitation can execute commands with &lt;strong&gt;root&lt;/strong&gt; privileges — which includes hiding or deleting the indicators that anyone was ever there. It affects Cisco ISE and ISE-PIC &lt;strong&gt;regardless of device configuration&lt;/strong&gt;. Fixed in 3.5 Patch 4, 3.4 Patch 7, 3.3 Patch 12, 3.2 Patch 11 and 3.1 Patch 12.&lt;/p&gt;

&lt;p&gt;That is the appliance that decides who is allowed onto the network. Root on it means the system of record for who got in becomes a system the intruder controls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Acronis Backup, CVE-2026-87886.&lt;/strong&gt; Added the same day, due the same day. CWE-276 &lt;em&gt;Incorrect Default Permissions&lt;/em&gt;. &lt;strong&gt;Acronis rates it 7.8&lt;/strong&gt; — Acronis's number, again not CISA's. Acronis describes it as a &lt;strong&gt;local&lt;/strong&gt; privilege escalation from insecure file permissions, requiring an attacker to already hold authenticated, low-privileged local access to the Linux server. It affects the Acronis Backup plugin for cPanel &amp;amp; WHM (Linux) before build 1.9.3.1021, the extension for Plesk (Linux) before 1.8.11.638, and the plugin for DirectAdmin (Linux) before 1.2.3.238. Acronis confirmed exploitation observed in the wild against the cPanel &amp;amp; WHM plugin.&lt;/p&gt;

&lt;p&gt;So: Cisco's 10.0 — remote, unauthenticated, root. And Acronis's 7.8 — local, foothold required first. A 2.2-point spread, two entirely different threat models, and the same deadline to the day.&lt;/p&gt;

&lt;p&gt;The scores are not wrong. They answer a different question. Severity asks &lt;em&gt;what could happen&lt;/em&gt;; the deadline asks &lt;em&gt;whether somebody is doing it&lt;/em&gt;. One of those is a continuum two databases can argue about. The other is a yes or a no, and it changes when you wake up tomorrow. Only one is a sort key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contrast two: the browser waited, the backup plugin did not
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Google Chromium V8 out-of-bounds write, CVE-2026-87491&lt;/strong&gt;, added September 9 — &lt;strong&gt;fourteen days&lt;/strong&gt;. The rendering engine on effectively every desktop you own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Acronis Backup local privilege escalation, CVE-2026-87886&lt;/strong&gt;, added September 16 — &lt;strong&gt;three days&lt;/strong&gt;. A plugin on a control panel, needing an attacker already authenticated on the box.&lt;/p&gt;

&lt;p&gt;Rank those two by instinct and most people invert them. Instinct ranks blast radius. The field ranks evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The MSP item: two management platforms, three days apart
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;N-able N-central, CVE-2026-86218&lt;/strong&gt; — added September 8, due September 11, CWE-96 &lt;em&gt;Static Code Injection&lt;/em&gt;. We took that one apart last week; here it is the second data point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ConnectWise ScreenConnect, CVE-2026-84869&lt;/strong&gt; — added September 11, due September 14, CWE-269 &lt;em&gt;Improper Privilege Management&lt;/em&gt; plus CWE-862 &lt;em&gt;Missing Authorization&lt;/em&gt;. It affects the ScreenConnect client &lt;strong&gt;prior to 26.6.5&lt;/strong&gt;: missing authorization controls allow file transfer and execution through an &lt;strong&gt;active remote session without host confirmation&lt;/strong&gt;. &lt;strong&gt;Huntress&lt;/strong&gt; reported it exploited in the wild &lt;strong&gt;since August 20, 2026&lt;/strong&gt; — roughly three weeks before it reached the catalog. The behaviour Huntress reported was &lt;strong&gt;worm-like&lt;/strong&gt;: a modified ScreenConnect instance deployed four VBScript files for persistence and propagation to other ScreenConnect clients. The fix is &lt;strong&gt;26.6.5 or later&lt;/strong&gt;; ConnectWise's interim mitigation is to &lt;strong&gt;disable TransferFiles permissions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I have deliberately not quoted a CVSS figure for either. The week's argument is that the date outranks the score, and the paragraph is stronger without a number in it.&lt;/p&gt;

&lt;p&gt;Two remote-management platforms, three days apart, both in the three-day pile. If you run one, that console reaches every endpoint in your book of business — row one on the asset list, not a footnote under "tools." If you buy from someone who runs one: which management platforms reach your estate, are they internet-facing, and when were they last patched? Ask in writing. Keep the answer with a date on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mail gateway, and what a zero-day looks like in the record
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cisco Secure Email Gateway, CVE-2026-76461&lt;/strong&gt; — added September 14, due September 17, CWE-89 &lt;em&gt;SQL Injection&lt;/em&gt;. Cisco's advisory published on &lt;strong&gt;September 14, the same day CISA added it to KEV.&lt;/strong&gt; That is what "exploited before disclosure" looks like read off a timeline instead of a press release: the vendor's first public word and the catalog entry land together, because the exploitation came first and the paperwork caught up.&lt;/p&gt;

&lt;p&gt;Unauthenticated, no user interaction. A &lt;strong&gt;crafted email passing through the gateway&lt;/strong&gt; carries SQL statements, and exploitation can reach &lt;strong&gt;root command execution&lt;/strong&gt; on the underlying OS. Affects AsyncOS 16.5, 16.0, and 15.5 and earlier, on-premises physical and virtual appliances. Fixed in AsyncOS 15.5.5-0141, 16.0.4-3021 and 16.5.0-780. &lt;strong&gt;No workaround&lt;/strong&gt; — meaning the mitigation column on your tracker reads "upgrade" and nothing else, which is worth knowing before the maintenance-window conversation rather than during it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to read the due date yourself
&lt;/h2&gt;

&lt;p&gt;Three fields do all the work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;product      → what you search on. NOT the score.
dateAdded    → the day CISA published the entry.
dueDate      → the deadline it carries.

dueDate − dateAdded = CISA's urgency verdict, as an integer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All three are free and account-free: the &lt;strong&gt;JSON feed&lt;/strong&gt; above; a &lt;strong&gt;CSV&lt;/strong&gt; at the same path with a &lt;code&gt;.csv&lt;/code&gt; extension, if you would rather open it in a spreadsheet; and the browsable catalog at &lt;code&gt;cisa.gov/known-exploited-vulnerabilities-catalog&lt;/code&gt;. Pull the file, filter entries on &lt;code&gt;product&lt;/code&gt; against the names on your own list, and for every hit subtract. A 3 means CISA set a three-day remediation window; a 14 means fourteen. Both are in the catalog because exploitation was observed — the integer is urgency, not evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search by product, never by score.&lt;/strong&gt; Most teams get this backwards, and it is the difference between a five-minute answer and an afternoon reconciling severity numbers two databases disagree about. You are not asking "how bad is this CVE." You are asking "is anything I own in this file, and what integer did it get." Product name in, integer out — and read the version &lt;strong&gt;off the host&lt;/strong&gt;, not off the management dashboard, because dashboards report what they were last told and appliances get rebooted, restored and half-upgraded.&lt;/p&gt;

&lt;h2&gt;
  
  
  The list you have to build first, because you probably don't have it
&lt;/h2&gt;

&lt;p&gt;You cannot filter a feed against a list you never wrote down, and the list this month demands is the one almost nobody has — not the servers, not the laptops, but &lt;strong&gt;the tools doing the protecting&lt;/strong&gt;, including the vendor consoles you neither host nor patch.&lt;/p&gt;

&lt;p&gt;Those tools sit in a structural blind spot, and it is the same one every time: excluded from the vulnerability scan because they &lt;em&gt;are&lt;/em&gt; the security stack, patched on the vendor's cadence rather than yours, owned by "whoever set it up," and frequently the only boxes in the building with no named human on them. That is precisely the population that went ten-for-ten into the three-day pile this month.&lt;/p&gt;

&lt;p&gt;So the afternoon runs in three passes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Enumerate the security and management stack.&lt;/strong&gt; One row per product: vendor, product, version &lt;em&gt;read off the host&lt;/em&gt;, where it is reachable from, and a named human — not a team, not a mailbox, not someone who left.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter the KEV feed on &lt;code&gt;product&lt;/code&gt;&lt;/strong&gt; for every name on that list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For every hit, record &lt;code&gt;dateAdded&lt;/code&gt;, &lt;code&gt;dueDate&lt;/code&gt; and the integer between them&lt;/strong&gt; — then inherit the integer as your own priority order. Federal civilian agencies are bound by that date; you are voluntarily copying homework somebody published for free. Where no fix exists yet, write the actual mitigation in the row: restrict source addresses, take the interface off the internet, disable the feature. "Waiting on the vendor" is a status, not a control.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The artifact is the point
&lt;/h2&gt;

&lt;p&gt;The rule carries over from every review in this series: &lt;strong&gt;every claim gets a number and a date.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"We're on top of patching" is a mood. Something shaped like &lt;em&gt;"23 security and management products inventoried Sep 18; 4 matched KEV by product; 3 patched, 1 mitigated by source restriction pending vendor fix; versions read off-host; owner named on every row; next pass Dec 18"&lt;/em&gt; is an artifact — and it is the shape of answer that cyber-insurance applications and client security questionnaires keep asking for.&lt;/p&gt;

&lt;p&gt;The re-ranking itself costs nothing. It is a change of sort order, not a change of budget, which makes it the cheapest item on any security roadmap this quarter.&lt;/p&gt;

&lt;p&gt;The severity number is a judgement two authorities can disagree about. The due date is CISA's verdict on whether the thing is currently being used against people: published in a free file, updated as new exploitation is confirmed, expressed as an integer you can subtract in your head.&lt;/p&gt;

&lt;p&gt;The sort key was already free. And it's a date.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The kit is free.&lt;/strong&gt; The Security Stack Kit (Gatorbyte #014) is this afternoon on paper: the inventory of the tools doing the protecting, the version-read-off-host column, the KEV cross-check by product, the &lt;code&gt;dateAdded&lt;/code&gt; / &lt;code&gt;dueDate&lt;/code&gt; / days-between fields, and the named-owner column that makes a row survive triage. It supports vulnerability-management and audit-preparation workflows — a practical starting point to review and adapt for your organization; not legal, compliance, or audit advice. Kits are free to use inside your organization and with your clients, including in paid engagements — &lt;a href="https://thesecuritygator.gumroad.com/l/gb014-security-stack-kit" rel="noopener noreferrer"&gt;thesecuritygator.gumroad.com/l/gb014-security-stack-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CISA Binding Operational Directive deadlines are compulsory only for the Federal Civilian Executive Branch agencies BOD 26-04 names. Nothing here creates an obligation on a private organization, and nothing here substitutes for managed security, penetration testing, or incident-response services.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA KEV catalog&lt;/a&gt; · &lt;a href="https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json" rel="noopener noreferrer"&gt;KEV JSON feed, catalogVersion 2026.09.18, read 2026-09-18&lt;/a&gt; · CISA KEV addition alerts, 2026-09-02, 09-09, 09-14 and 09-16 · Cisco security advisories for CVE-2026-76460 and CVE-2026-76461 · ConnectWise advisory for CVE-2026-84869 · Acronis advisory for CVE-2026-87886 · &lt;a href="https://www.cisa.gov/news-events/directives/bod-26-04-prioritizing-security-updates-based-risk" rel="noopener noreferrer"&gt;CISA BOD 26-04 — "Prioritizing Security Updates Based on Risk"&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A note on the scores, because it is the article's premise: the KEV catalog contains no CVSS field. The 10.0 is Cisco's, from Cisco's own advisory; the 7.8 is Acronis's. Trade coverage carries CVSS figures for the Cisco Secure Email Gateway and ConnectWise ScreenConnect flaws too — omitted here on purpose, because a piece arguing that the date outranks the score should not lean on the score. No figure here is CISA's. CISA publishes none.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>sysadmin</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Nobody Broke In. They Signed In: The One-Afternoon Login-Surface Review</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Thu, 10 Sep 2026 14:07:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/nobody-broke-in-they-signed-in-the-one-afternoon-login-surface-review-3mj3</link>
      <guid>https://dev.to/biggthecreator/nobody-broke-in-they-signed-in-the-one-afternoon-login-surface-review-3mj3</guid>
      <description>&lt;h1&gt;
  
  
  Nobody Broke In. They Signed In: The One-Afternoon Login-Surface Review
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;The instructive intrusions of the season share a shape: the authentication failed, not the firewall. Here's the afternoon review that counts every door your organization exposes — and turns the count into a signed record.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The pattern with no forced entry in it
&lt;/h2&gt;

&lt;p&gt;Read this month's actively-exploited list with one question in mind — &lt;em&gt;what actually failed?&lt;/em&gt; — and a theme emerges. A screen-sharing service that authenticated a network attacker without valid credentials. A collaboration platform whose security feature could be walked past after a public proof-of-concept dropped. A management console, weeks earlier, whose login could be skipped entirely via an alternate path. And in the same season, a seven-figure dump of contact records — name, email, address, phone — whose main criminal application is making the next call to a help desk sound exactly like the user it claims to be.&lt;/p&gt;

&lt;p&gt;No malware had to beat your EDR in any of those stories. The doors did what they were configured to do. The configuration was the finding.&lt;/p&gt;

&lt;p&gt;Which leads to an uncomfortable reframe: your perimeter is not a firewall diagram. It's the set of every internet-reachable place that accepts a credential for your organization — or for each client, if you're the MSP. And in most shops, that set has never been written down.&lt;/p&gt;

&lt;h2&gt;
  
  
  You can't lock a door you haven't counted
&lt;/h2&gt;

&lt;p&gt;The review starts with an inventory, because every later question is per-door. Twelve categories jog the memory:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity provider / SSO&lt;/strong&gt; — the front desk itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email &amp;amp; webmail&lt;/strong&gt; — including the legacy paths (OWA, ActiveSync, basic auth)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VPN portals &amp;amp; remote-access gateways&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firewall / network-gear admin interfaces&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RMM &amp;amp; remote-support tooling&lt;/strong&gt; — last week's master key cabinet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypervisor &amp;amp; infrastructure management&lt;/strong&gt; — vCenter, iLO/iDRAC, cloud consoles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File / intranet / collaboration platforms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS admin consoles&lt;/strong&gt; — PSA, billing, backup, the password manager&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote desktop &amp;amp; screen sharing&lt;/strong&gt; — RDP, VNC, OS-native sharing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break-glass &amp;amp; emergency accounts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service accounts &amp;amp; API keys&lt;/strong&gt; — doors with no human attached&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The help desk's reset procedure&lt;/strong&gt; — a door that answers to a voice&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One row per door: what it is, who uses it, what it accepts, who owns it, when it was last checked. If producing that table takes more than an afternoon, that fact is itself the first finding.&lt;/p&gt;

&lt;h2&gt;
  
  
  "We have MFA" is a per-door claim
&lt;/h2&gt;

&lt;p&gt;Here's where last week's management-plane review and this week's shake hands. The five console questions asked &lt;em&gt;is MFA enforced on the console itself&lt;/em&gt; — because a console with local accounts is indifferent to how good your identity provider's MFA is. This week generalizes it. For every row in the inventory, mark exactly one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ON THE DOOR&lt;/strong&gt; — the service itself enforces a second factor, local accounts included.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UPSTREAM&lt;/strong&gt; — MFA lives at the IdP; anything the door authenticates locally walks past it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NOWHERE&lt;/strong&gt; — a password alone opens it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then two follow-ups per door: &lt;em&gt;can any account skip it?&lt;/em&gt; (service accounts, legacy protocols, app passwords) and &lt;em&gt;does this door hold accounts the IdP has never heard of?&lt;/em&gt; The org-level sentence "we have MFA" aggregates away exactly the information an attacker cares about. The matrix exists to de-aggregate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The side doors
&lt;/h2&gt;

&lt;p&gt;Most gaps the matrix finds fall into a short, familiar list — the paths that skip the second factor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Legacy mail protocols still answering basic auth&lt;/li&gt;
&lt;li&gt;App passwords and long-lived tokens that outlive their owner's MFA&lt;/li&gt;
&lt;li&gt;Vendor and default accounts that shipped with a product and still resolve&lt;/li&gt;
&lt;li&gt;Break-glass accounts with no compensating alert on use&lt;/li&gt;
&lt;li&gt;Admin interfaces exposed to the whole internet where an allowlist would do&lt;/li&gt;
&lt;li&gt;API keys embedded in scripts older than the last rotation&lt;/li&gt;
&lt;li&gt;The MFA exception that was "temporary" two migrations ago&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Close what you can in the afternoon. For what you can't, write down the reason and an owner — an accepted risk with a name and a date is a decision; the same gap undocumented is just exposure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The human door
&lt;/h2&gt;

&lt;p&gt;The password reset flow is an internet-reachable authentication endpoint. It runs on a human, under social pressure, and its verification data — the things a caller is asked to prove — is precisely what large contact-data dumps put in criminals' hands. So the script is short and strict: never authenticate on knowledge alone; call back on the number already on file, never the one the caller offers; verify through a second channel the account owner controls; allow no urgency exceptions, because manufactured urgency &lt;em&gt;is&lt;/em&gt; the technique; and log every reset — who asked, how verified, who approved, when.&lt;/p&gt;

&lt;p&gt;Five lines, printable. It converts the softest login you own into one of the most defensible — and the log converts it into evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The record is the deliverable
&lt;/h2&gt;

&lt;p&gt;Same rule as restore week and console week: every claim gets a number and a date. The afternoon ends with one page: doors enumerated, MFA state per door, paths closed, exceptions accepted (with owners), script deployed, next check booked. "Twenty-two doors, MFA enforced on nineteen, three legacy paths closed, Aug 27, J.R., re-check November" is an artifact — the kind cyber-insurance applications and client questionnaires increasingly expect. "We're pretty locked down" is a mood.&lt;/p&gt;

&lt;h2&gt;
  
  
  The whole thing, packaged free
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Login Surface Kit&lt;/strong&gt; (Gatorbyte #010) bundles the review: the 12-category inventory worksheet, the MFA coverage matrix, the legacy-path kill list, the help-desk verification script, and the evidence log — free: &lt;strong&gt;&lt;a href="https://thesecuritygator.gumroad.com/l/gb010-login-surface-kit" rel="noopener noreferrer"&gt;thesecuritygator.gumroad.com/l/gb010-login-surface-kit&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One afternoon. Twelve categories. One signed page either way it lands. Because a door you haven't counted is a door you can't lock.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a review format, not managed security services — and not legal, compliance, or audit advice. Authentication capabilities vary by product and license; verify against your vendor's current documentation. If a review turns up evidence of compromise, follow your incident-response plan.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>sysadmin</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Same Attack, Two Companies. One Never Responded: The One-Afternoon Alert Coverage Review</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 09 Sep 2026 14:07:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/same-attack-two-companies-one-never-responded-the-one-afternoon-alert-coverage-review-4h9c</link>
      <guid>https://dev.to/biggthecreator/same-attack-two-companies-one-never-responded-the-one-afternoon-alert-coverage-review-4h9c</guid>
      <description>&lt;h1&gt;
  
  
  Same attack, two companies. One never responded.
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;CISA ran the same red team playbook against two organizations at the same time and published both outcomes. One SOC quarantined the machines. The other received the alerts and never responded — and the reason it didn't is the cheapest problem in this whole story to fix.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;In August, CISA published something unusual: the results of two red team assessments run at the same time, against two different critical-infrastructure organizations, using similar tradecraft. Advisory AA26-237A, titled &lt;em&gt;"A Tale of Two SOCs."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is unusual because it is the experiment nobody gets to run on themselves. Same attackers, same playbook, same week, two environments — and the results printed side by side.&lt;/p&gt;

&lt;p&gt;Both organizations were compromised at domain level. In both, the red team reached sensitive business systems and cloud resources. So the interesting variable is not whether the attack worked. It worked twice.&lt;/p&gt;

&lt;p&gt;The interesting variable is what happened in the minutes after.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one that worked
&lt;/h2&gt;

&lt;p&gt;Organization B, a water and wastewater entity, was phished. Three users clicked, and the red team landed on three workstations.&lt;/p&gt;

&lt;p&gt;The SOC caught the payload on each one. Every execution generated a medium-severity alert; staff quarantined the workstation, analyzed it, and reimaged it before putting it back online. Three times. Command-and-control never held.&lt;/p&gt;

&lt;p&gt;Then something worth noticing happened. Because the defenders removed that initial foothold, the red team could not proceed — so the engagement was restructured. Organization B's own trusted agents — IT staff who knew about the assessment — executed a red-team-provided payload on a designated internal host tied to a standard, non-administrative account, replicating the access the team &lt;em&gt;would&lt;/em&gt; have had if they hadn't been thrown out.&lt;/p&gt;

&lt;p&gt;Assume-breach is a standard phase of these assessments, so this isn't a trophy on its own. What it does tell you is the direction the pressure ran. The team didn't move to assume-breach on schedule; they moved to it because containment worked.&lt;/p&gt;

&lt;p&gt;Later, when the red team reached a bastion host in the OT DMZ, that host blocked outbound connections and the payload execution triggered an alert. Staff quarantined it. When the team logged into the Azure portal with a compromised account, an automated alert fired and staff blocked the account.&lt;/p&gt;

&lt;p&gt;None of that is exotic. It is ordinary tooling, plus somebody reading the output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one that didn't
&lt;/h2&gt;

&lt;p&gt;Organization A, in government services, did not respond.&lt;/p&gt;

&lt;p&gt;Not to the phishing. Not to the privilege escalation — a default Machine Account Quota and a misconfigured AD CS certificate template. Not to credentials sitting in cleartext, or static cloud access keys set never to expire. At one point the red team used an over-permissioned application to review SOC staff email, specifically to see whether staff were aware of the compromise. The SOC never responded.&lt;/p&gt;

&lt;p&gt;Here is the part that should change how you think about your own program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The alerts fired.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The advisory is explicit: the SOC received medium- and low-severity EDR alerts related to red team activity "but did not respond to them." Thousands of false positive alerts corresponding to normal business operations — many at &lt;em&gt;higher&lt;/em&gt; severity — obscured the real ones.&lt;/p&gt;

&lt;p&gt;That is not a detection failure. The tools detected it. It is a response failure, and it has a completely different fix, at a completely different price.&lt;/p&gt;

&lt;h2&gt;
  
  
  The detail worth an afternoon
&lt;/h2&gt;

&lt;p&gt;One alert in that environment was real, and a human looked at it.&lt;/p&gt;

&lt;p&gt;Red team members observed defenders' chat about an alert on an SCCM server. The defenders tried to determine who owned that system, what it did, and how it was normally used. They could not. The SOC eventually flagged it a false positive.&lt;/p&gt;

&lt;p&gt;Read that again slowly. The detection worked. The alert was true. It died in triage because the asset inventory could not name a person.&lt;/p&gt;

&lt;p&gt;Which means your CMDB is doing detection work, whether or not anyone staffed it that way. An alert arrives carrying a hostname. Whether it survives the next four minutes depends entirely on whether someone can attach meaning to that hostname at two in the morning.&lt;/p&gt;

&lt;p&gt;CISA also found Organization A running multiple SOCs and multiple EDR products whose staff neither communicated with each other nor had visibility into each other's detection tools — and SOC staff and system owners did not communicate either. More consoles is not more coverage. Each additional console is another place a signal can arrive and stop.&lt;/p&gt;

&lt;p&gt;The advisory's closing line is blunt, and worth quoting exactly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Detection tools are only as effective as the people, processes, and procedures supporting them."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  It is not one unlucky organization
&lt;/h2&gt;

&lt;p&gt;You could read all of that as a story about one badly-run SOC. The numbers say otherwise.&lt;/p&gt;

&lt;p&gt;The Blue Report 2026, published in August by Picus Labs, measured more than 338 million attack simulations run in real production environments. Two of its scores matter here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logging: 58%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alerting: 14%&lt;/strong&gt; — flat year over year&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fewer than one simulated attack in seven produced an alert at all.&lt;/p&gt;

&lt;p&gt;Worth naming the obvious: Picus sells breach-and-attack-simulation tooling, and a report finding that untested detection underperforms is a report that sells more testing. Read it as vendor research. It is still worth citing, because the methodology is stated, the sample is enormous, and the finding is independently corroborated by a government advisory with nothing to sell — one describing a SOC that received real alerts and did not act on them.&lt;/p&gt;

&lt;p&gt;Put the two numbers side by side, because the gap is the entire argument. More than half the telemetry is arriving. The event gets written down. What almost never happens is a rule that reads it and routes it to a human.&lt;/p&gt;

&lt;p&gt;That is not a collection problem, and it will not be fixed by more retention or a bigger ingest bill. It is a detection-engineering problem. One of those costs money. The other starts with an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  The afternoon
&lt;/h2&gt;

&lt;p&gt;Five events. Not fifty.&lt;/p&gt;

&lt;p&gt;Fifty detections is a project, a budget line, and a thing you never start. Five is an afternoon. Pick five you would be embarrassed to miss, and leave the rest for next quarter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new global or domain administrator&lt;/li&gt;
&lt;li&gt;A log source going dark&lt;/li&gt;
&lt;li&gt;An impossible-travel or anomalous-location login&lt;/li&gt;
&lt;li&gt;A mass export or bulk download&lt;/li&gt;
&lt;li&gt;A new mailbox forwarding or inbox rule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick by consequence, not by ease of detection. The temptation is to choose the five you already know alert — which measures your confidence, not your coverage.&lt;/p&gt;

&lt;p&gt;Then, for each one, three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Is it logged?&lt;/strong&gt; Usually yes. Name the source and the retention window, not just "yes."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does it raise an alert?&lt;/strong&gt; Now you're guessing. A rule in a vendor template is not a rule that is enabled and scoped to your tenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who receives it, at 2am?&lt;/strong&gt; This is the one that decides everything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Question three is where most programs quietly die. "Does it alert" is answerable on paper. "Who receives it at 2am" is answerable only by looking, and the answer is startlingly often a distribution list with one person on it who left, or a channel nobody has opened since the integration was built.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then stop guessing
&lt;/h2&gt;

&lt;p&gt;Everything above is still paperwork. This part isn't.&lt;/p&gt;

&lt;p&gt;Generate the event. Get approval, work inside a change window, and tell the people who would otherwise page out that it's you. Create a throwaway administrator. Trigger a deliberate bulk download. Add a test forwarding rule.&lt;/p&gt;

&lt;p&gt;Then watch three places: the console that should show it, the channel that should carry it, and the human who should receive it. Record the wall-clock deltas — trigger to alert, alert to acknowledgement. Those numbers are the deliverable.&lt;/p&gt;

&lt;p&gt;And record the silences. An event that produced nothing is the most valuable row on the page, because it converts "would we catch that?" from an assumption into a finding — one you made on your own schedule instead of during an incident.&lt;/p&gt;

&lt;p&gt;Then remove what you created, and log the removal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The artifact is the point
&lt;/h2&gt;

&lt;p&gt;The rule carries over from every review in this series: &lt;strong&gt;every claim gets a number and a date.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"We'd catch that" is a mood. Something shaped like &lt;em&gt;"five events tested Sep 10; three alerted within four minutes; one alerted to a dead channel; one produced nothing — two tickets filed, retest Sep 24"&lt;/em&gt; is an artifact. It is also the exact thing that answers an assessor asking whether your monitoring is real or aspirational, and the kind of evidence assessors and insurers increasingly ask about.&lt;/p&gt;

&lt;p&gt;Fix the routing before you fix the rule, incidentally. An alert nobody receives and an alert that doesn't exist cost precisely the same during an incident, and the routing is usually the cheaper repair.&lt;/p&gt;

&lt;p&gt;Both organizations in that advisory had tools. Both had logs. One of them knew what it would see.&lt;/p&gt;

&lt;p&gt;Your logging is probably fine. Your alerting is the open question.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The worksheets are free.&lt;/strong&gt; The Alert Coverage Kit (Gatorbyte #012) is a self-contained offline HTML file — the five-event picker, the three-question test, the generate-and-watch protocol, a coverage log with time columns, the asset-ownership check, and an evidence register — plus CSV and Excel export of every worksheet. No account required — &lt;a href="https://thesecuritygator.gumroad.com/l/gb012-alert-coverage-kit" rel="noopener noreferrer"&gt;thesecuritygator.gumroad.com/l/gb012-alert-coverage-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a review format and a practical starting point to adapt for your organization. It supports detection-coverage documentation and audit-preparation workflows; it is not legal, compliance, or audit advice, and not a substitute for managed security or incident-response services. Generating test events changes state in a live environment — get approval and work inside a change window.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa26-237a" rel="noopener noreferrer"&gt;CISA AA26-237A — "A Tale of Two SOCs"&lt;/a&gt; · &lt;a href="https://www.cisa.gov/news-events/alerts/2026/09/02/cisa-adds-seven-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA KEV alert, Sep 2&lt;/a&gt; · &lt;a href="https://www.helpnetsecurity.com/2026/08/12/picus-security-blue-report-2026/" rel="noopener noreferrer"&gt;Blue Report 2026, Picus Labs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>sysadmin</category>
      <category>devops</category>
    </item>
    <item>
      <title>They Left in March. Their Account Didn't: The One-Afternoon Offboarding Review</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 02 Sep 2026 14:07:01 +0000</pubDate>
      <link>https://dev.to/biggthecreator/they-left-in-march-their-account-didnt-the-one-afternoon-offboarding-review-1b7c</link>
      <guid>https://dev.to/biggthecreator/they-left-in-march-their-account-didnt-the-one-afternoon-offboarding-review-1b7c</guid>
      <description>&lt;h1&gt;
  
  
  They Left in March. Their Account Didn't: The One-Afternoon Offboarding Review
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Last week CISA added vulnerabilities from 2015 to the actively-exploited catalog. The mechanism that keeps an eleven-year-old bug exploitable is the same one that keeps a departed employee's API token alive — and here's the afternoon review that finds it.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Decay, with a date stamp on it
&lt;/h2&gt;

&lt;p&gt;On August 26, 2026, the Known Exploited Vulnerabilities catalog picked up four entries worth reading twice: CVE-2015-3246 and CVE-2015-5287, both Red Hat, both from 2015; CVE-2019-1068, a SQL Server remote code execution; and CVE-2021-23758, a deserialization flaw in Ajax.NET Professional. Entries land in that catalog on evidence of &lt;em&gt;active exploitation&lt;/em&gt;. Somebody is still exploiting a bug that turned eleven years old.&lt;/p&gt;

&lt;p&gt;The catalog doesn't say why. But the simplest explanation for an eleven-year-old bug still being exploited is that it is still running somewhere, on a host nobody owns, that nobody has deliberately logged into since the person who built it left.&lt;/p&gt;

&lt;p&gt;Five days later the same catalog added two PaperCut NG/MF flaws, one of which is described in its own entry as &lt;em&gt;Missing Authentication for Critical Function&lt;/em&gt; — on a print management server, the archetypal thing an MSP installs once in year one and never revisits. And in between, on August 27, an ownCloud improper-authentication bug from &lt;strong&gt;2023&lt;/strong&gt; was added with a three-day federal remediation deadline.&lt;/p&gt;

&lt;p&gt;Read together, those look less like three patching stories than one ownership story. The risk factor is not &lt;em&gt;unpatched&lt;/em&gt;; unpatched is a symptom. The risk factor is &lt;strong&gt;unowned&lt;/strong&gt; — and access decays exactly the same way, only more quietly, because an orphaned account never throws an alert.&lt;/p&gt;

&lt;h2&gt;
  
  
  HR closes a person. Security has to close identities.
&lt;/h2&gt;

&lt;p&gt;Offboarding gets filed as an HR event, and that framing is why it quietly fails. HR closes a &lt;em&gt;person&lt;/em&gt;. Access lives as &lt;em&gt;identities&lt;/em&gt;, and the mapping is one-to-many.&lt;/p&gt;

&lt;p&gt;The directory account is the one identity that reliably has a human's name attached and a process pointed at it. It gets disabled on day one, and it is what everyone points to when you ask whether offboarding works. Underneath it sits everything that was created ad hoc, is owned by nobody in particular, and has no lifecycle tied to employment at all.&lt;/p&gt;

&lt;p&gt;So the process reports success while most of the surface is untouched.&lt;/p&gt;

&lt;h2&gt;
  
  
  The six-month rule
&lt;/h2&gt;

&lt;p&gt;Before the hunt, one decision determines whether this review measures anything: &lt;strong&gt;who you audit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reviewing last week's leaver tells you almost nothing. The ticket is still open, the manager remembers, someone is still copied on the thread. Of course it looks clean — you are measuring your attention, not your process.&lt;/p&gt;

&lt;p&gt;Pull five people who left &lt;strong&gt;six months ago or longer&lt;/strong&gt;, or five contractors whose engagement ended that long back. That tells you what your process produces once attention has moved on, which is the only condition it will actually operate under for the rest of its life.&lt;/p&gt;

&lt;p&gt;It is the same logic as testing a restore instead of trusting a green backup job. The green light describes an intention. The restored file describes reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ten places access hides
&lt;/h2&gt;

&lt;p&gt;One row per identity, not per person. A single departure usually produces several:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Directory / SSO account&lt;/strong&gt; — the easy one, and the one that flatters the process&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local accounts on appliances&lt;/strong&gt; — firewall, hypervisor, NAS, print server, switch; tied to no directory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared credentials in the team vault&lt;/strong&gt; — four people know it, so rotating it means telling four people, so it never gets rotated&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service accounts&lt;/strong&gt; — nobody offboards one, because nobody thinks of it as a person; yet it carries their naming convention and their permissions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API tokens and app passwords&lt;/strong&gt; — they outlive the human because the token appears in no list anyone reads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MFA enrolments on personal devices&lt;/strong&gt; — the account is disabled, the phone is still a registered authenticator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor and support portals&lt;/strong&gt; — they are still the registered contact, so resets and license changes still route to them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client tenants and delegated access&lt;/strong&gt; — MSP-specific, and the highest blast radius on the list&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repos, CI, and deploy keys&lt;/strong&gt; — org membership and personal access tokens both outlive employment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mailbox rules and forwarding&lt;/strong&gt; — survives the mailbox being converted to shared, and quietly keeps delivering&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your hunt produces one row per person, you have found the checklist, not the access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify in the system, not on the checklist
&lt;/h2&gt;

&lt;p&gt;This is the step most reviews skip, and skipping it makes the other steps decorative.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A completed offboarding checklist is a claim. The system's actual user list is evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On a first pass those two usually disagree — and when they do, the checklist is what's wrong. It recorded an intention formed at the moment of ticking, and nothing re-validated it afterwards. A user list pulled today is a statement about now.&lt;/p&gt;

&lt;p&gt;The failure modes are mundane, which is exactly why they persist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The account was disabled but never removed from its security groups, so a re-enable for a mailbox restore silently returns full access.&lt;/li&gt;
&lt;li&gt;The human was revoked and the token they generated wasn't, because the token isn't attached to them anywhere a person looks.&lt;/li&gt;
&lt;li&gt;The shared vault entry was never rotated, because rotating it is a conversation with four people.&lt;/li&gt;
&lt;li&gt;Two admins each assumed the other one did it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these require carelessness. They require a process that stops at &lt;em&gt;ticked&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The artifact is the point
&lt;/h2&gt;

&lt;p&gt;The review is just how you produce the record. The record is what survives.&lt;/p&gt;

&lt;p&gt;Log what you revoked, from where, on what date, verified how, and checked by whom — and fill it as you go, because retro-filling is how dates stop being true. Then write the per-departure summary: systems checked, identities found, how many were still active, when they were closed, and what process gap let it happen.&lt;/p&gt;

&lt;p&gt;That last field matters more than it looks. What you found is a gap in the runbook, not in one person's file. Patching the record leaves the next departure exactly where this one was.&lt;/p&gt;

&lt;p&gt;The rule carries over from every review in this series: &lt;strong&gt;every claim gets a number and a date.&lt;/strong&gt; "We offboard people properly" is a mood. Something shaped like "five departures reviewed, 31 identities found across 9 systems, 6 still active, all revoked, Sep 4, verified by J.R." is an artifact — and it is the one an assessor asks for when they want to know whether your access-control process is real or aspirational.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you find something
&lt;/h2&gt;

&lt;p&gt;Preserve before you act — screenshots, exports, timestamps — and if there is any sign the access was &lt;em&gt;used&lt;/em&gt; after the person left, stop and follow your incident-response plan. A worksheet is not one. Engage counsel and your insurer per your policy's terms before external communications.&lt;/p&gt;

&lt;p&gt;And a clean review is still a deliverable. Identities counted, nothing still open, dated and signed, filed. An identity nobody owns goes on the risk register with one owner and one fix-by date, not in a drawer.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The worksheets are free.&lt;/strong&gt; The Offboarding Evidence Kit is a self-contained offline HTML file — identity hunt across all ten categories, verification pass, revocation log, per-departure review record, evidence register — plus CSV and Excel copies of the three registers. No account required — &lt;a href="https://thesecuritygator.gumroad.com/l/gb011-offboarding-evidence-kit" rel="noopener noreferrer"&gt;thesecuritygator.gumroad.com/l/gb011-offboarding-evidence-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a review format and a practical starting point to adapt for your organization. It supports access-review and audit-preparation workflows; it is not legal, compliance, or audit advice, and not a substitute for managed security or incident-response services. Account and token lifecycle behaviour varies by product and license — verify against your vendor's current documentation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA KEV catalog&lt;/a&gt; · &lt;a href="https://www.cisa.gov/news-events/alerts/2026/08/26/cisa-adds-six-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;KEV alert, Aug 26&lt;/a&gt; · &lt;a href="https://www.cisa.gov/news-events/alerts/2026/08/27/cisa-adds-three-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;KEV alert, Aug 27&lt;/a&gt; · &lt;a href="https://www.cisa.gov/news-events/alerts/2026/08/31/cisa-adds-two-known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;KEV alert, Aug 31&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>sysadmin</category>
      <category>career</category>
    </item>
    <item>
      <title>They Didn't Break In. They Logged In: The Two-Hour Management-Plane Review</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 19 Aug 2026 14:07:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/they-didnt-break-in-they-logged-in-the-two-hour-management-plane-review-50f0</link>
      <guid>https://dev.to/biggthecreator/they-didnt-break-in-they-logged-in-the-two-hour-management-plane-review-50f0</guid>
      <description>&lt;h1&gt;
  
  
  They Didn't Break In. They Logged In: The Two-Hour Management-Plane Review
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;One console in your stack can reach every machine you manage. This month an attacker demonstrated exactly what that means — without deploying a single piece of malware. Here's the two-hour review that turns that lesson into a signed record.&lt;/em&gt;&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%2Fb2d0yd1qn2eic5ka6aul.png" 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%2Fb2d0yd1qn2eic5ka6aul.png" alt="The intrusion with no malware in it" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The intrusion with no malware in it
&lt;/h2&gt;

&lt;p&gt;The most instructive incident reporting of the month describes an attack with no phishing email, no dropper, no encrypted payload. An authentication bypass in a widely deployed remote monitoring and management (RMM) platform gave the attacker administrative access to the management console — and from that point they never needed an exploit again. They used the product's own remote-control feature, the same one technicians use every day, to reach managed endpoints and leave persistence behind. In at least one confirmed case, the session ran under a default support account that ships with the product.&lt;/p&gt;

&lt;p&gt;Read that chain again from your tooling's point of view. The endpoint agent saw a legitimate remote-support session. The firewall saw a signed, widely used tunneling utility connecting to a well-known service. The audit log saw a support account supporting. Every control was working correctly. They were answering questions nobody had asked.&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%2F6psq7gfhqdtibcx4ewid.png" 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%2F6psq7gfhqdtibcx4ewid.png" alt="Why the management plane is a different asset class" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the management plane is a different asset class
&lt;/h2&gt;

&lt;p&gt;Compromise an endpoint and an attacker owns an endpoint. Compromise the management plane and they own every endpoint it manages — and if you're an MSP, that's not one company, that's your entire book, through one console that lives on the internet because it has to.&lt;/p&gt;

&lt;p&gt;A workstation is a room. Your RMM is the master key cabinet. That asymmetry is why the console deserves harder questions than any other server you run — questions that outrank every feature comparison on the next renewal call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does the console share an identity system with your domain?&lt;/strong&gt; Shared identity means one takeover becomes two.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is MFA enforced on the console itself&lt;/strong&gt; — not just on the technician's email account?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can any technician open remote control on any endpoint at any hour&lt;/strong&gt;, or is that scoped and scheduled?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the management server have unrestricted outbound access?&lt;/strong&gt; A server that can tunnel anywhere can beacon anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is there one session record an administrator of that same server cannot quietly edit?&lt;/strong&gt; If the intruder is admin on the console, the console's log belongs to them too.&lt;/li&gt;
&lt;/ol&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%2F3s6cdgo0v2vj641nd8hs.png" 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%2F3s6cdgo0v2vj641nd8hs.png" alt="Patched is not fixed" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Patched is not fixed
&lt;/h2&gt;

&lt;p&gt;Here's the detail worth tattooing on the inside of the ticket queue: the flaw being actively exploited exists because the patch for an earlier vulnerability was incomplete. The first fix shipped; the underlying path stayed open; a second CVE was issued for the same way in — and the second one is what attackers are using. A population of teams did everything right, applied the update, closed the ticket, and remained exposed.&lt;/p&gt;

&lt;p&gt;So verify patches the way you'd verify a restore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check the version on the host itself.&lt;/strong&gt; The console reporting on itself is a claim; the host is the fact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check every instance&lt;/strong&gt;, not the one you remember.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the vendor documents the closed path, re-test the path&lt;/strong&gt; rather than trusting the version string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-read the advisory a week later.&lt;/strong&gt; Incomplete fixes are usually discovered after the first patching wave, not before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then write it down: version confirmed, instances checked, date, who, what test. "We're patched" is a mood. That log is an artifact — the same artifact cyber-insurance applications and client security questionnaires keep asking for.&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%2Fzfxjqggzldhjpvzrrwwp.png" 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%2Fzfxjqggzldhjpvzrrwwp.png" alt="The four tells (context, not tooling)" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The four tells (context, not tooling)
&lt;/h2&gt;

&lt;p&gt;What actually separates an attacker from a technician when the tool, the account, and the feature are all legitimate? Context. Four kinds of it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. HOUR    — a support session at 3 AM on a Sunday
2. SOURCE  — a consumer-VPN exit node, not your office or corporate VPN
3. IDENTITY— a default account name nobody on your team actually uses
4. SHAPE   — connect → enumerate → disconnect
             (reconnaissance looks nothing like support)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;None of these are alerts in most shops today. All four are answerable this week, from logs you already collect.&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%2Fjt8zpmypmehqwuese8z9.png" 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%2Fjt8zpmypmehqwuese8z9.png" alt="Hunt backwards, then write it down" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hunt backwards, then write it down
&lt;/h2&gt;

&lt;p&gt;Because this class of flaw tends to be exploited before it's catalogued, forward-looking controls are half the job. The other half is a 90-day retro-hunt: pull remote-session history and read it against the four tells; look for tunneling utilities registered as services on machines with no business running them; look for executables in user document folders wearing system file names; search for persistence no ticket explains. You're not looking for a hit — you're building the ability to say you looked, and what you found. A clean hunt, dated and signed, is still a deliverable.&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%2Ftyhk9tj9ykv2n3z7fayk.png" 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%2Ftyhk9tj9ykv2n3z7fayk.png" alt="The whole thing, packaged free" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The whole thing, packaged free
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Management Plane Kit&lt;/strong&gt; (Gatorbyte #009) bundles the review: the five-question hardening checklist, the patch verification log template, the four tells as a starting detection list, and the 90-day retro-hunt worksheet — free: &lt;strong&gt;&lt;a href="https://thesecuritygator.gumroad.com/l/gb009-management-plane-kit" rel="noopener noreferrer"&gt;thesecuritygator.gumroad.com/l/gb009-management-plane-kit&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two hours. Five questions. One signed page either way it lands. Because a control you can't evidence is a control you're only assuming you have.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is an exercise and review format, not managed security services — and not legal, compliance, or audit advice. Vendor advisories change; verify version guidance against the current advisory before acting. If you find evidence of compromise, follow your incident-response plan.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>sysadmin</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Your Backups Are a Hypothesis: The 45-Minute Restore Test</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Sun, 16 Aug 2026 09:15:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/your-backups-are-a-hypothesis-the-45-minute-restore-test-34o9</link>
      <guid>https://dev.to/biggthecreator/your-backups-are-a-hypothesis-the-45-minute-restore-test-34o9</guid>
      <description>&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%2Fn6sg8uye1ijjpi2yzv66.png" 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%2Fn6sg8uye1ijjpi2yzv66.png" alt="The green checkmark problem" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The green checkmark problem
&lt;/h2&gt;

&lt;p&gt;Every MSP dashboard has one: the backup column, green for months. Green feels like safety. But a green job proves exactly one thing — the job ran. It does not prove the data comes back, how long that takes, whether the increment you'll need survived the retention policy, or whether anyone alive can find the decryption key at 2 AM.&lt;/p&gt;

&lt;p&gt;Two weeks ago this series argued that an incident response plan that's never been exercised is a hypothesis. Backups are the same species of hypothesis, with quieter failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rotated credentials.&lt;/strong&gt; The backup service account changed; jobs kept "succeeding" against a subset of targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corrupt increments.&lt;/strong&gt; The chain is only as good as its weakest link, and nothing verifies links like a restore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention surprises.&lt;/strong&gt; The copy you need is from 9 days ago; retention keeps 7.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key-inside-the-vault.&lt;/strong&gt; The decryption key or console password is documented… inside a system that's now encrypted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope drift.&lt;/strong&gt; The new file share, the new VM, the migrated mailbox — added to production, never added to the job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of these is invisible on a green dashboard, and every one of them is found in one of two moments: a scheduled drill on a Tuesday afternoon, or the worst hour of your year.&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%2F2q67n024868zcyprzbp2.png" 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%2F2q67n024868zcyprzbp2.png" alt="The drill" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The drill
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE 45-MINUTE RESTORE TEST  (roles: an operator + a scribe. That's the team.)

0:00  Pick the target BEFORE you feel ready: one production system that
      would hurt Monday morning — file server, finance share, the PSA/RMM
      database. Not the easy one. The one that matters.

0:05  Restore last night's copy to an ISOLATED target: a spare VM, an empty
      VLAN, a cloud sandbox. NEVER over production. No internet egress
      required — isolation is the point.

0:35  Verify like a USER, not an admin: open three files, run one report,
      log in with a real non-admin account. "It boots" is not "it works."

0:40  Write four numbers: minutes to restore · GB restored · items verified
      · today's date. The scribe signs the page.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That signed page is the deliverable. Everything else — the war stories, the "huh, interesting" moments, the ticket you'll open about the service account — is bonus.&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%2Fgac5szsgax2rs70f8y63.png" 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%2Fgac5szsgax2rs70f8y63.png" alt="The one rule" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The one rule
&lt;/h2&gt;

&lt;p&gt;Borrowed from the tabletop drill and repointed: &lt;strong&gt;every claim gets a number and a date.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Restores work fine" is a mood. "47 minutes, 212 GB, three files opened and readable, August 11, signed by the scribe" is evidence — the kind cyber-insurance applications and enterprise security questionnaires are explicitly asking for when they say &lt;em&gt;tested recovery&lt;/em&gt; and &lt;em&gt;documented RTO&lt;/em&gt;. You're not doing extra work to satisfy the questionnaire; the drill's natural output &lt;em&gt;is&lt;/em&gt; the answer.&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%2F79nqqzjepk3zncppvhr8.png" 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%2F79nqqzjepk3zncppvhr8.png" alt="The math you can finally do" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The math you can finally do
&lt;/h2&gt;

&lt;p&gt;Recovery time estimates usually divide a known number by a guess:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Real downtime ≈ (data that must come back) ÷ (restore throughput)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every team knows the first number. Almost nobody has &lt;em&gt;measured&lt;/em&gt; the second — and the difference between an assumed and a measured throughput is the difference between promising "a few hours" and delivering a long weekend. After one timed drill, your RTO conversations use a measurement. Guessing is over.&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%2Fgo54m2g8kuh7iekk4odp.png" 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%2Fgo54m2g8kuh7iekk4odp.png" alt="The trap: your backups are the first target" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The trap: your backups are the first target
&lt;/h2&gt;

&lt;p&gt;Ransomware crews have told reporters for years that backup infrastructure is their first stop — delete or encrypt the recovery path, then detonate. Recent KEV traffic makes the architectural point for them: Veeam's advisory for CVE-2026-44963 describes a critical RCE on &lt;em&gt;domain-joined&lt;/em&gt; backup servers, reachable by any authenticated domain user. One stolen domain account, and the vault is another room on the sinking ship.&lt;/p&gt;

&lt;p&gt;So alongside the restore drill, three architecture questions worth an hour:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Credential separation.&lt;/strong&gt; Does the backup console share credentials (or auth domain) with production? It shouldn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An undeletable copy.&lt;/strong&gt; Does at least one copy live where a domain admin &lt;em&gt;cannot&lt;/em&gt; delete it — immutable object storage or genuinely offline?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Console-loss drill.&lt;/strong&gt; If the console died tonight, who could still reach a copy, and by what path?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The commonly used rule of thumb is 3-2-1-1-0: three copies, two media, one offsite, one offline or immutable, zero errors on verification. The last digit is the one everyone skips — and it's the only one that involves actually restoring. Treat it as a starting point to adapt, not a certification to claim.&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%2Fkfqqllrftaqbglhovjf1.png" 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%2Fkfqqllrftaqbglhovjf1.png" alt="When the test fails" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When the test fails
&lt;/h2&gt;

&lt;p&gt;A restore test that fails is a &lt;em&gt;successful test&lt;/em&gt; — it located a real gap for the price of 45 minutes. Run the tabletop rule on it: the gap gets an owner and a date, and the failed log page stays in the file next to the eventual passing one. The paper trail from red to green is itself evidence of a functioning program. The only failed test is the one never run.&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%2Fic7vh8qn65io6peyrbhi.png" 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%2Fic7vh8qn65io6peyrbhi.png" alt="Make it a rhythm" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it a rhythm
&lt;/h2&gt;

&lt;p&gt;One drill is a data point; a rhythm is a program. Rotate targets quarterly — file server this quarter, the PSA database next, a full VM the one after. Fifteen minutes of scheduling covers a year: four calendar invites, each with an operator, a scribe, and a target named in advance. Booked beats intended.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a review format and a practical starting point to adapt for your organization. It supports backup- and recovery-evidence documentation and audit-preparation workflows; it is not legal, compliance, or audit advice, and not a substitute for managed security or incident-response services. Restore behaviour varies by backup product and license — verify against your vendor's current documentation and rehearse inside a change window.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>backup</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Local-first GRC: why I'm building a compliance workbench that doesn't phone home</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Tue, 28 Jul 2026 09:27:58 +0000</pubDate>
      <link>https://dev.to/biggthecreator/local-first-grc-why-im-building-a-compliance-workbench-that-doesnt-phone-home-2ec8</link>
      <guid>https://dev.to/biggthecreator/local-first-grc-why-im-building-a-compliance-workbench-that-doesnt-phone-home-2ec8</guid>
      <description>&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%2Ftupc15fpraz9yrv71vyi.png" 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%2Ftupc15fpraz9yrv71vyi.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm Gary — The Security Gator. I build a GRC command deck for vCISOs, MSPs, and consultants who are tired of renting access to their own compliance data.&lt;/p&gt;

&lt;p&gt;The premise is simple: most compliance platforms are SaaS. Your control assessments, your risk scores, your client evidence — all of it lives on someone else's servers, behind a subscription that never ends. Stop paying, lose access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bet: own it, don't rent it
&lt;/h2&gt;

&lt;p&gt;AxiomLens is a NIST CSF 2.0 workbench that runs entirely on your machine — SQLite under the hood, a local GUI on top, one-time license. After activation it's strictly offline.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;CaaS / SaaS&lt;/th&gt;
&lt;th&gt;AxiomLens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Your data lives&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On their servers&lt;/td&gt;
&lt;td&gt;In a SQLite file you own&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Log in to their cloud, every session&lt;/td&gt;
&lt;td&gt;Activate once, then fully offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost shape&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Subscription, forever&lt;/td&gt;
&lt;td&gt;One-time license&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When you stop paying&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Locked out&lt;/td&gt;
&lt;td&gt;Nothing happens — it's yours&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;axiomlens status &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"controls_total"&lt;/span&gt;: 106,
  &lt;span class="s2"&gt;"in_scope"&lt;/span&gt;: 100,
  &lt;span class="s2"&gt;"coverage"&lt;/span&gt;: &lt;span class="s2"&gt;"computed locally"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Coverage math, scored risk, board-ready reports, client hand-off docs — computed on your machine, owned outright. It supports compliance documentation and audit preparation; it's not a substitute for legal, compliance, or audit advice — and I'm careful to never claim otherwise. That honesty is part of the pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'll write about here
&lt;/h2&gt;

&lt;p&gt;The build, in public: SQLite schema decisions for framework crosswalks, packaging Python into a single exe with Nuitka, deterministic report generation instead of LLM roulette, and the general weirdness of shipping desktop software in a SaaS world.&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%2Fbfyzgizob4bbykounq0o.png" 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%2Fbfyzgizob4bbykounq0o.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The free stuff — field guides, a governance tool, starter kits — lives on &lt;a href="https://www.thesecuritygator.com/#gatorbytes" rel="noopener noreferrer"&gt;the Gatorbyte Free Shelf&lt;/a&gt;.&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%2Fkh92c0wzjwt48lqj6js9.png" 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%2Fkh92c0wzjwt48lqj6js9.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything else: &lt;a href="https://www.thesecuritygator.com" rel="noopener noreferrer"&gt;thesecuritygator.com&lt;/a&gt; · &lt;a href="https://thesecuritygator.beehiiv.com" rel="noopener noreferrer"&gt;Bayou Bytes newsletter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>compliance</category>
      <category>buildinpublic</category>
      <category>indiehacker</category>
    </item>
  </channel>
</rss>
