<?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>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;

</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>
