Last week, PHP shipped emergency fixes for two pre-authentication remote code execution flaws — vulnerabilities that had existed quietly since 2004. By Wednesday, Palo Alto Networks confirmed that every supported version of PAN-OS and Panorama was affected, with no fix available. Cisco was reviewing 18 products and 13 cloud services. Fortinet was reviewing eleven. The NSA, NCSC, and CERT-EU told operators to take unpatched systems offline. Cloudflare's CEO watched exploit attempts jump from thousands to millions within hours.
People are calling it Black October. If you run infrastructure for a living, you spent the week answering the same question from your CIO, your clients, or your board: "Are we exposed?"
And here's the uncomfortable part. For most IT teams, an honest answer took days — not because patching is slow, but because nobody could say with confidence what they actually have. Which firewalls run which PAN-OS build. Which servers are missing which KB. Which machines "received" the update in WSUS but never rebooted, meaning the fix is installed but not actually active.
That's the real lesson of Black October, and it isn't about AI finding the bugs. Patching is no longer the bottleneck. Knowing where to patch is.
Why "Are We Exposed?" Breaks Most IT Teams
1. Your inventory is a spreadsheet, and it was last touched in March
When the PAN-OS advisory dropped, MSP techs everywhere did the same dance: open the per-client inventory spreadsheet, filter for "firewall," realize half the rows are stale, SSH into devices to check firmware versions manually, and pray the client didn't swap hardware since the last site visit. With 20, 30, 50 clients, that's days of work — while exploit attempts scale from thousands to millions in hours.
It's the same inside enterprise IT. Ask five techs for a list of machines running PHP — suddenly urgent when a 2004-era pre-auth RCE gets an emergency fix — and you'll get five different answers, because PHP hides in web servers, management interfaces, IP cameras, building management systems, and vendor appliances nobody remembers buying.
2. "Deployed" does not mean "patched"
This is the one that burns people. Your WSUS or Intune report says 100% compliant. But:
- 40 servers show the KB as installed but pending reboot — still exploitable until that reboot happens
- 12 machines failed the deployment silently last month, and nobody reads the failure report
- 7 laptops were offline during the maintenance window and have fallen out of every report since
A patch program without reboot tracking and failure follow-up is security theater. Compliant on paper, exposed in production.
3. Your tools don't share one source of truth
The typical stack: an RMM that only sees devices running its agent — whether that's ConnectWise, Ninja, or anything else — a standalone network monitor that sees switches and firewalls over SNMP but knows nothing about patch state, a separate helpdesk with no asset context, and patch reports living in a fourth tool. To answer "are we exposed?" you have to manually reconcile four systems that were never designed to talk to each other.
And the disconnect runs both ways. When a device reboots itself at 2am to complete an update, your monitoring tool pages you with a bare "host down" alert — no context, no link to the patch job. By 8am, users are ticketing the "outage," helpdesk has no idea what happened, and a tech burns an hour investigating something a patch integration would have explained in one line.
4. What this actually costs
- Response time: Two to three days to produce an exposure list across the estate, versus the hours in which attackers ramp from thousands to millions of exploit attempts
- Ticket volume: Every unexplained 2am reboot becomes a morning of duplicate "the server is down" tickets
- Compliance and insurance: Auditors and cyber insurance questionnaires now ask for patch SLA evidence you can't produce because the data lives in four places
- People: Your best engineers spend emergency week copy-pasting spreadsheets instead of solving hard problems. That's how burnout happens — not from hard work, but from pointless work.
How AlertMonitor Turns Patch Chaos Into a 10-Minute Answer
AlertMonitor was built on the premise that patch state, monitoring, helpdesk, and device inventory have to live in the same platform. Here's what that changes when the next Black October hits:
Real-time patch status for every managed Windows device. One dashboard shows which machines are missing updates, which have failed patches, and which are pending a reboot — live, not last month's CSV export. When an advisory drops, you filter your fleet by the missing KB and have an exposure list in minutes. For MSPs, that filter runs across every client from a single NOC dashboard.
Staged, scheduled, reversible deployments. Push to a pilot group first — lab, then IT, then finance, then servers — with maintenance windows per department or device group. If a patch breaks something, roll it back. Failed deployments don't disappear into a report nobody reads; they sit on the patch dashboard until they're resolved.
Patch-aware alerting. Because patching is integrated with monitoring, a device that reboots at 2am after an update fires an alert with full context — this device rebooted following patch job X, here's the service status. Not a mystery outage discovered by users at 8am. That alone kills an entire class of false-positive pages and duplicate tickets.
One inventory, four jobs. Servers, workstations, firewalls, switches, printers — every device lives in the same platform as its patch state, its monitoring metrics, and its open tickets. The board question stops being a three-day research project and becomes a filtered view plus an export.
The workflow, compared
The old fragmented way:
- Advisory drops; someone forwards the vendor email
- Pull spreadsheets per site or client; find half are stale
- RDP or SSH into devices to verify versions manually
- Push updates with one tool; verify with another; reconcile by hand
- Get paged at 2am with no context; users report the "outage" at 8am
- Send a status email two days later, full of caveats
The AlertMonitor way:
- Advisory drops; open the patch dashboard
- Filter devices missing the KB or pending reboot — across all clients if you're an MSP
- Build a device group; stage the deployment with maintenance windows
- Watch failures and pending reboots in real time; roll back if needed
- Confirm compliance, export the report, and close the loop knowing zero reboots went unexplained
That's the difference between answering "are we exposed?" in minutes versus days.
What You Can Do Today
Regardless of your tooling, run these checks this week. They map directly onto the questions Black October raised.
1. Audit pending reboots — your most dangerous blind spot
"Installed but not active" is the state that defeats every patch report. Find every server sitting in it:
$servers = Get-Content .\servers.txt
Invoke-Command -ComputerName $servers -ScriptBlock {
[PSCustomObject]@{
Computer = $env:COMPUTERNAME
CBSRebootPending = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
WURebootPending = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
PendingFileRename = $null -ne (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Name PendingFileRenameOperations -ErrorAction SilentlyContinue)
LastBoot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
}
} | Sort-Object { $_.CBSRebootPending -or $_.WURebootPending -or $_.PendingFileRename } -Descending |
Format-Table -AutoSize
Every True in that output is a machine where one or more fixes are installed but protecting nothing. In AlertMonitor, these devices already appear on the patch dashboard flagged as pending reboot, grouped and ready for a maintenance window.
2. Answer "are we missing KB-X?" across the fleet
When the next advisory drops, don't wait for a vendor console:
$kb = 'KB5044284' # replace with the KB from the advisory
$servers = Get-Content .\servers.txt
Invoke-Command -ComputerName $servers -ScriptBlock {
param($kb)
$fix = Get-HotFix -Id $kb -ErrorAction SilentlyContinue
[PSCustomObject]@{
Computer = $env:COMPUTERNAME
Status = if ($fix) { 'Patched' } else { 'MISSING' }
InstalledOn = $fix.InstalledOn
}
} -ArgumentList $kb | Export-Csv .\kb_compliance_report.csv -NoTypeInformation
One caveat a sysadmin will appreciate: Get-HotFix doesn't surface every servicing-stack and cumulative-update state, so treat it as a fast first pass. For an authoritative, continuous answer you need patch state collected per device all the time — which is exactly what AlertMonitor's patch module does.
3. List what's actually missing on a machine
For a one-off audit before you trust any existing report:
$session = New-Object -ComObject Microsoft.Update.Session
$searcher = $session.CreateUpdateSearcher()
$result = $searcher.Search("IsInstalled=0 and IsHidden=0")
$result.Updates | Select-Object Title,
@{n='KB'; e={ $_.KBArticleIDs -join ',' }} |
Format-Table -AutoSize
4. Check the Linux boxes hiding PHP
The PHP emergency fixes weren't just a Windows problem. Verify what's actually running:
# Which PHP version is live on this host?
php -v | head -1
# Debian/Ubuntu: installed PHP packages and versions
dpkg -l | grep -E '^ii\s+php' | awk '{print $2, $3}'
# RHEL-family
rpm -qa | grep -i php
If that shows a version your distro hasn't fixed yet, that host belongs on your exposure list today — and in your patch schedule this week.
5. Wire patch status into alerting and reporting
The scripts above give you a snapshot. The gap they can't close is time — by the time you run them, the data is already aging. In AlertMonitor, patch status is collected continuously, so:
- Devices entering the pending reboot state are flagged immediately, not when you remember to check
- A failed deployment surfaces on the dashboard — you never discover a failed patch in an audit
- A 2am update-triggered reboot generates an alert with the patch job attached, so helpdesk sees context instead of a mystery
- Compliance evidence for audits and insurance questionnaires is an export, not a project
The Board Will Ask Again. Be Ready.
Black October wasn't a one-off. AI-assisted research is finding more bugs faster, and vendors are shipping emergency fixes on Tuesday that attackers are exploiting by Thursday. The organizations that came through the week well weren't the ones with the fastest patch pipelines — they were the ones who could answer "are we exposed?" in minutes, because they always knew what they had.
That's an inventory and patch-visibility problem, and it's solvable from the same console you already open every morning. If your answer today involves spreadsheets, tribal knowledge, and crossing your fingers — that's the gap to close before the next Tuesday.
Related Resources
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.