Back to Intelligence

CISA KEV Flash: 10 CVEs Added — Ivanti Connect Secure & PHP Under Active Exploitation

SA
Security Arsenal Team
November 1, 2026
23 min read

The CISA Known Exploited Vulnerabilities (KEV) catalog added 10 new CVEs between October 26-30, 2026, signaling confirmed active exploitation in the wild across a broad attack surface: VPN gateways, web application runtimes, firewall appliances, e-commerce platforms, and the Linux kernel itself. This wave disproportionately impacts edge infrastructure and internet-facing services — precisely the targets favored by ransomware affiliates and nation-state initial access brokers.

Federal Civilian Executive Branch (FCEB) agencies are now bound by remediation deadlines under Binding Operational Directive 22-01. Enterprise organizations should treat these additions as CRITICAL priority.


Active Exploitation Intelligence

CVE-2026-118527 — Ivanti Connect Secure (Added 2026-10-30)

Vulnerability Type: Generation of Predictable Numbers or Identifiers (CWE-340)

Exploitation Method: Remote authenticated attackers can exploit predictable identifier generation to potentially bypass session controls, hijack sessions, or predict cryptographic tokens. In the context of Ivanti Connect Secure — a VPN gateway that sits at the network perimeter — this vulnerability could enable session fixation attacks or allow authenticated users to escalate privileges by predicting internal identifiers.

Threat Context: Ivanti Connect Secure has been one of the most heavily targeted VPN products since the 2023-2024 exploitation waves by UNC5221 and other China-nexus threat actors. CISA's addition of new ICS vulnerabilities indicates continued adversary focus on this platform.

CVSS Score: Pending full disclosure; Ivanti has historically assigned 7.5-9.8 to similar ICS vulnerabilities.

PoC Status: No public proof-of-concept confirmed at time of KEV addition.

CISA Required Action: Apply vendor patches immediately. Federal agencies have a binding remediation deadline — historically 21 days from KEV addition for non-internet-facing systems, 7 days for internet-facing.


CVE-2026-111357 — Ivanti Connect Secure (Added 2026-10-30)

Vulnerability Type: Missing Authentication for Critical Function (CWE-306)

Exploitation Method: Local authenticated attackers can invoke critical functions that lack proper authentication checks. While this requires existing access, it enables privilege escalation or unauthorized configuration changes. When chained with other vulnerabilities (such as predictable identifiers), this becomes part of a full compromise chain.

Threat Context: Missing authentication vulnerabilities in VPN appliances are prized by ransomware operators for maintaining persistence and establishing secondary access paths.

CVSS Score: Expected 6.5-8.0 (local attack vector reduces base score but chaining potential increases real-world risk).

PoC Status: No public PoC confirmed.

CISA Required Action: Apply vendor mitigations immediately. Review access logs for indicators of unauthorized function invocation.


CVE-2026-97229 — GitLab CE/EE (Added 2026-10-29)

Vulnerability Type: Integer Overflow or Wraparound (CWE-190)

Exploitation Method: Unauthenticated users can trigger integer overflow conditions, potentially leading to buffer corruption, denial of service, or — in worst-case scenarios — remote code execution. GitLab instances are high-value targets because they contain source code, CI/CD credentials, and deployment pipelines.

Threat Context: GitLab vulnerabilities have been exploited by multiple threat groups for supply chain attacks and initial access. A compromised GitLab instance provides lateral movement opportunities into development and production environments.

CVSS Score: Expected 7.5-9.8 given unauthenticated attack vector and potential for code execution.

PoC Status: Monitor GitLab security advisories and security researcher publications for PoC emergence.

CISA Required Action: Upgrade to patched GitLab versions immediately. Review CI/CD pipeline configurations and rotate exposed credentials.


CVE-2026-76418 — Cisco Secure Firewall ASA/FTD (Added 2026-10-29)

Vulnerability Type: Unchecked Return Value to NULL Pointer Dereference (CWE-252/CWE-476)

Exploitation Method: Attackers can trigger NULL pointer dereference conditions, causing denial of service on affected firewall appliances. While primarily a DoS vulnerability, service disruption on perimeter firewalls creates security gaps and can be used as a smokescreen for other attack activities.

Threat Context: Cisco ASA/FTD firewalls are ubiquitous in enterprise environments. Adversaries have historically chained DoS conditions with other vulnerabilities or exploited the resulting operational chaos to mask intrusion activities.

CVSS Score: Expected 5.9-7.5 (DoS-focused but on critical infrastructure).

PoC Status: Monitor Cisco PSIRT advisories.

CISA Required Action: Apply Cisco security updates. Implement redundant firewall configurations to maintain availability during patching.


CVE-2026-41709 — Broadcom VMware ESX (Added 2026-10-28)

Vulnerability Type: Insufficient Logging (CWE-778)

Exploitation Method: Malicious actors with administrative access can perform certain operations without generating adequate audit logs. This is an anti-forensics vulnerability — it doesn't grant access, but it allows attackers who have already gained admin privileges to operate without detection.

Threat Context: Insufficient logging vulnerabilities are force multipliers for persistent threat actors. VMware ESXi hypervisors host entire virtual machine infrastructures; adversaries who can operate silently on hypervisors have effectively compromised entire data centers.

CVSS Score: Expected 4.0-6.0 (requires admin access but enables stealthy persistence).

PoC Status: N/A — this is a defensive gap rather than an exploit vector.

CISA Required Action: Apply VMware patches. Implement external logging and monitoring for hypervisor activities. Review existing logs for gaps that may indicate historical exploitation.


CVE-2026-46300 — Linux Kernel (Added 2026-10-28)

Vulnerability Type: Missing Initialization of Variable (CWE-457)

Exploitation Method: Local attackers can exploit uninitialized variable conditions to modify page-cache-backed memory, potentially achieving privilege escalation or arbitrary code execution in kernel context. Linux kernel vulnerabilities affect virtually every Linux-based system including servers, containers, and embedded devices.

Threat Context: Kernel-level vulnerabilities provide the ultimate prize for attackers: complete system compromise. Ransomware operators and APT groups actively seek kernel LPE (Local Privilege Escalation) vulnerabilities to escalate from initial footholds to root access.

CVSS Score: Expected 7.0-8.0 (local vector but kernel-level impact).

PoC Status: Kernel vulnerability PoCs typically emerge rapidly after disclosure. Monitor security mailing lists and exploit databases.

CISA Required Action: Apply kernel updates from your distribution vendor immediately. Prioritize internet-facing and multi-tenant systems.


CVE-2026-48356 — Adobe Commerce/Magento (Added 2026-10-27)

Vulnerability Type: Unrestricted Upload of File with Dangerous Type (CWE-434)

Exploitation Method: Attackers can upload malicious files (web shells, malware) to e-commerce platforms, achieving arbitrary code execution. Adobe Commerce/Magento powers hundreds of thousands of e-commerce sites globally, handling payment card data and customer PII.

Threat Context: Magecart-style attacks and e-commerce platform exploitation are perennial threats. File upload vulnerabilities in e-commerce platforms lead directly to payment skimming, data theft, and site defacement.

CVSS Score: Expected 8.0-9.8 (unauthenticated file upload leading to RCE).

PoC Status: Monitor Adobe security advisories. File upload vulnerabilities typically see rapid PoC development.

CISA Required Action: Apply Adobe Commerce/Magento security patches immediately. Audit web roots for unauthorized files. Review upload directories for suspicious content.


CVE-2026-111497 — Google Brotli (Added 2026-10-27)

Vulnerability Type: Unchecked Return Value (CWE-252)

Exploitation Method: Remote unauthenticated attackers can corrupt adjacent decoder state through unchecked return values in the Brotli compression library. Brotli is used extensively in web browsers, servers, and content delivery networks for HTTP compression.

Threat Context: Library vulnerabilities like this have massive blast radius — Brotli is embedded in Chrome, Firefox, nginx, Apache, CDNs, and countless applications. Exploitation could enable denial of service or potentially more severe memory corruption attacks.

CVSS Score: Expected 7.5-9.0 (remote unauthenticated vector affecting ubiquitous library).

PoC Status: Monitor Google security advisories and OSS-Fuzz disclosures.

CISA Required Action: Update all applications and systems using Brotli library. This may require patching multiple independent products.


CVE-2026-109618 — PHP (Added 2026-10-26)

Vulnerability Type: Out-of-Memory Corruption

Exploitation Method: Unauthenticated remote code execution through memory corruption in PHP. Given that PHP powers approximately 77% of websites with known server-side programming languages, this vulnerability has catastrophic exposure potential.

Threat Context: Unauthenticated RCE in PHP is among the most severe vulnerability classes for web-facing infrastructure. Ransomware operators and initial access brokers actively scan for PHP vulnerabilities within hours of disclosure.

CVSS Score: Expected 9.0-10.0 (unauthenticated RCE).

PoC Status: CRITICAL — expect PoC emergence within days if not already public.

CISA Required Action: Emergency patching required. Apply PHP security updates immediately. Consider temporary WAF rules to block exploitation attempts.


CVE-2026-109619 — PHP (Added 2026-10-26)

Vulnerability Type: Stale Internal Request-State

Exploitation Method: Unauthenticated remote code execution through stale request-state handling in PHP. This vulnerability class can enable request smuggling, cache poisoning, or direct code execution depending on implementation specifics.

Threat Context: Like CVE-2026-109618, this represents unauthenticated RCE against the most widely deployed server-side language. The paired disclosure of two PHP RCE vulnerabilities suggests coordinated research or related root causes.

CVSS Score: Expected 9.0-10.0 (unauthenticated RCE).

PoC Status: CRITICAL — monitor for immediate PoC emergence.

CISA Required Action: Emergency patching required. Update PHP immediately. Implement WAF mitigations as interim protection.


Affected Organizations Assessment

Exposure by Product Category

Product CategoryTypical DeploymentExposure Scale
Ivanti Connect SecureVPN gateway, network perimeter~30,000+ organizations globally
PHPWeb servers, CMS platforms, applications~77% of websites with server-side code
GitLab CE/EESource code management, CI/CD~100,000+ self-managed instances
Cisco ASA/FTDNetwork firewalls, perimeter defense~1 million+ appliances globally
VMware ESXHypervisors, data center infrastructure~400,000+ customers, millions of hosts
Linux KernelServers, containers, embedded devicesBillions of devices
Adobe Commerce/MagentoE-commerce platforms~250,000+ online stores
Google BrotliCompression library (embedded)Virtually all modern web infrastructure

Sector Risk Analysis

Highest Risk Sectors:

  1. Financial Services — Heavy Ivanti, Cisco, and VMware deployment. Ransomware targets with high payment likelihood.

  2. Healthcare — Legacy system prevalence, often delayed patching windows. PHP-based patient portals and administrative systems.

  3. E-commerce/Retail — Adobe Commerce/Magento direct exposure. Payment card data at risk from Magecart-style attacks.

  4. Technology/SaaS — GitLab CI/CD pipeline exposure. Supply chain attack potential.

  5. Government/Defense — All products widely deployed. APT targeting likelihood highest in this sector.

  6. Managed Service Providers — Aggregate risk from client environments. Ransomware operators specifically target MSPs for downstream access.

Patch Adoption Realities

Historical patch adoption data suggests:

  • Internet-facing VPN/Firewall: 60-80% patched within 30 days (high urgency awareness)
  • Web Application Platforms (PHP, Magento): 40-60% patched within 30 days (version sprawl challenges)
  • Development Infrastructure (GitLab): 50-70% patched within 30 days (downtime concerns)
  • Linux Kernel: 30-50% patched within 30 days (reboot requirements, compatibility testing)
  • Embedded Libraries (Brotli): 20-40% patched within 90 days (dependency chain complexity)

This means significant vulnerable populations will persist for weeks to months. Threat actors know this and will continue scanning and exploitation campaigns.


Detection Engineering

Sigma Rules

YAML
---
title: Ivanti Connect Secure Suspicious Authentication Activity
description: Detects potential exploitation of CVE-2026-118527 (predictable identifiers) and CVE-2026-111357 (missing authentication) through anomalous authentication patterns
author: Security Arsenal Detection Engineering
date: 2026/10/30
status: experimental
logsource:
    product: ivanti
    service: connect_secure
    category: authentication
detection:
    selection_session_anomaly:
        event_type:
            - 'session_created'
            - 'session_hijack_attempt'
            - 'token_validation_failed'
        source_ip|contains:
            - '/8'
            - '/16'
    selection_auth_bypass:
        event_type: 'authentication_success'
        auth_method: 'unknown'
        user_agent|contains:
            - 'python'
            - 'curl'
            - 'wget'
            - 'go-http'
    selection_critical_function:
        event_type: 'admin_function_invoked'
        auth_context: 'local'
        function_name|contains:
            - 'config'
            - 'user'
            - 'system'
    condition: 1 of selection_*
falsepositives:
    - Legitimate administrative API automation
    - Vulnerability scanners (verify source)
level: high
tags:
    - attack.initial_access
    - attack.t1078
    - attack.t1190
    - cve.2026.118527
    - cve.2026.111357
---
title: PHP Remote Code Execution Attempt - CVE-2026-109618 and CVE-2026-109619
description: Detects potential exploitation attempts against PHP out-of-memory corruption and stale request-state vulnerabilities
author: Security Arsenal Detection Engineering
date: 2026/10/30
status: experimental
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection_memory_corruption:
        request_method: 'POST'
        request_body|contains:
            - 'memory_limit'
            - 'zend_mm'
            - '\\x00\\x00\\x00'
        response_code: '500'
    selection_request_smuggling:
        request_headers|contains:
            - 'Transfer-Encoding: chunked'
            - 'Content-Length:'
        request_uri|contains:
            - '%0d%0a'
            - '%0D%0A'
    selection_rce_indicators:
        request_uri|contains:
            - 'eval('
            - 'system('
            - 'exec('
            - 'shell_exec('
            - 'passthru('
            - 'base64_decode'
        response_code: '200'
    selection_error_pattern:
        error_log|contains:
            - 'Segmentation fault'
            - 'memory corruption'
            - 'zend_mm_heap corrupted'
            - 'double free'
    condition: 1 of selection_*
falsepositives:
    - Legitimate PHP debugging activities
    - Security scanning tools
level: critical
tags:
    - attack.initial_access
    - attack.t1190
    - attack.execution
    - attack.t1059
    - cve.2026.109618
    - cve.2026.109619
---
title: Adobe Commerce Magento File Upload Exploitation - CVE-2026-48356
description: Detects malicious file upload attempts and web shell deployment on Adobe Commerce/Magento platforms
author: Security Arsenal Detection Engineering
date: 2026/10/30
status: experimental
logsource:
    category: webserver
    product: adobe
    service: commerce
detection:
    selection_upload_attempt:
        request_method: 'POST'
        request_uri|contains:
            - '/admin/'
            - '/api/'
            - '/media/'
            - '/pub/'
            - '/downloader/'
        request_body|contains:
            - 'filename='
            - '.php'
            - '.phtml'
            - '.php3'
            - '.php4'
            - '.php5'
            - '.pht'
    selection_webshell_deployment:
        file_path|contains:
            - '/pub/media/'
            - '/var/'
            - '/app/'
        file_extension:
            - '.php'
            - '.phtml'
        file_content|contains:
            - 'eval('
            - 'base64_decode('
            - 'shell_exec('
            - '$_POST'
            - '$_GET'
            - '$_REQUEST'
    condition: selection_upload_attempt or selection_webshell_deployment
falsepositives:
    - Legitimate theme/extension uploads (verify source and hash)
    - Development activities in staging environments
level: critical
tags:
    - attack.initial_access
    - attack.t1190
    - attack.persistence
    - attack.t1505.003
    - cve.2026.48356

KQL Hunt Query (Microsoft Sentinel)

KQL — Microsoft Sentinel / Defender
// Security Arsenal — CISA KEV Active Exploitation Hunt
// Targets: CVE-2026-118527, CVE-2026-111357, CVE-2026-109618, CVE-2026-109619, CVE-2026-48356
// Timeframe: Last 7 days (adjust as needed)

let LookbackPeriod = 7d;
let HighRiskPorts = dynamic([443, 8443, 4443, 10443]);
let SuspiciousUserAgents = dynamic(["python", "curl", "wget", "go-http-client", "nikto", "sqlmap", "nuclei", "masscan"]);
let WebShellIndicators = dynamic(["eval(", "base64_decode(", "shell_exec(", "passthru(", "system(", "$_POST[", "$_GET[", "$_REQUEST["]);
let PHPExploitPaths = dynamic(["/index.php", "/api/", "/graphql", "/rest/", "/admin/", "/pub/", "/downloader/", "/media/"]);

// Hunt 1: Ivanti Connect Secure exploitation indicators
let IvantiExploitation = union isfuzzy=true
    (CommonSecurityLog
    | where TimeGenerated > ago(LookbackPeriod)
    | where DeviceVendor =~ "Ivanti" or DeviceProduct contains "Connect Secure"
    | where Activity contains "auth" or Activity contains "session"
    | where Message contains "predictable" or Message contains "bypass" or Message contains "unauthorized"
    | extend ExploitIndicator = "Ivanti Auth Anomaly"
    | project TimeGenerated, SourceIP, DestinationIP, Activity, Message, ExploitIndicator),
    (Syslog
    | where TimeGenerated > ago(LookbackPeriod)
    | where SyslogMessage contains "ivanti" or SyslogMessage contains "connect_secure"
    | where SyslogMessage contains "session" and (SyslogMessage contains "invalid" or SyslogMessage contains "hijack")
    | extend ExploitIndicator = "Ivanti Session Anomaly"
    | project TimeGenerated, Computer, SyslogMessage, ExploitIndicator);

// Hunt 2: PHP RCE exploitation attempts
let PHPExploitation = W3CIISLog
    | where TimeGenerated > ago(LookbackPeriod)
    | where csMethod == "POST" or csMethod == "PUT"
    | where csUserAgent has_any (SuspiciousUserAgents)
       or csUriStem has_any (PHPExploitPaths)
    | where scStatus in (200, 500, 502)
    | extend ExploitIndicator = case(
        scStatus == 500, "PHP Memory Corruption Attempt",
        csUserAgent has_any (SuspiciousUserAgents), "Suspicious Scanner Activity",
        "Potential PHP Exploitation"
    )
    | project TimeGenerated, sIP, cIP, csUriStem, csMethod, scStatus, csUserAgent, ExploitIndicator;

// Hunt 3: Magento/Adobe Commerce file upload exploitation
let MagentoExploitation = union isfuzzy=true
    (W3CIISLog
    | where TimeGenerated > ago(LookbackPeriod)
    | where csUriStem contains "/admin" or csUriStem contains "/downloader" or csUriStem contains "/api"
    | where csMethod == "POST"
    | where csUriQuery has_any (WebShellIndicators) or csUserAgent has_any (SuspiciousUserAgents)
    | extend ExploitIndicator = "Magento Upload Exploitation"
    | project TimeGenerated, sIP, cIP, csUriStem, csMethod, csUriQuery, ExploitIndicator),
    (AzureDiagnostics
    | where TimeGenerated > ago(LookbackPeriod)
    | where requestUri_s contains "magento" or requestUri_s contains "/pub/media"
    | where httpMethod_s == "POST"
    | where httpStatus_d in (200, 201)
    | extend ExploitIndicator = "Magento Suspicious Upload"
    | project TimeGenerated, clientIp_s, requestUri_s, httpMethod_s, httpStatus_d, ExploitIndicator);

// Hunt 4: Linux Kernel exploitation precursor activity
let KernelExploitation = Syslog
    | where TimeGenerated > ago(LookbackPeriod)
    | where Facility == "kern"
    | where SyslogMessage contains "BUG" or SyslogMessage contains "WARNING" or SyslogMessage contains "Oops"
    | where SyslogMessage contains "page" or SyslogMessage contains "memory" or SyslogMessage contains "uninitialized"
    | extend ExploitIndicator = "Kernel Memory Anomaly"
    | project TimeGenerated, Computer, Facility, SeverityLevel, SyslogMessage, ExploitIndicator;

// Hunt 5: Network perimeter exploitation (Cisco ASA/FTD DoS indicators)
let NetworkExploitation = CommonSecurityLog
    | where TimeGenerated > ago(LookbackPeriod)
    | where DeviceVendor =~ "Cisco"
    | where DeviceProduct contains "ASA" or DeviceProduct contains "FTD"
    | where Activity contains "deny" or Activity contains "drop" or Activity contains "restart"
    | summarize ConnectionCount = count(), UniqueSources = dcount(SourceIP) by DestinationIP, DestinationPort, bin(TimeGenerated, 5m)
    | where ConnectionCount > 1000 or UniqueSources > 100
    | extend ExploitIndicator = "Potential DoS Against Firewall"
    | project TimeGenerated, DestinationIP, DestinationPort, ConnectionCount, UniqueSources, ExploitIndicator;

// Combine all hunts
union isfuzzy=true IvantiExploitation, PHPExploitation, MagentoExploitation, KernelExploitation, NetworkExploitation
| sort by TimeGenerated desc
| summarize count() by ExploitIndicator, bin(TimeGenerated, 1h)
| render timechart

Remediation & Inventory Script

PowerShell
<#
.SYNOPSIS
    Security Arsenal — CISA KEV Wave 2026-10-26 to 2026-10-30 Inventory & Remediation Script

.DESCRIPTION
    Scans the environment for systems potentially vulnerable to the 10 newly added CISA KEV CVEs.
    Checks for Ivanti Connect Secure, PHP, GitLab, Adobe Commerce/Magento, Cisco ASA indicators,
    VMware ESXi, Linux kernel versions, and Brotli library presence.

.PARAMETER OutputPath
    Path for the vulnerability assessment report (default: .\KEV_Assessment_Report.html)

.PARAMETER Credential
    PSCredential for remote system queries

.EXAMPLE
    .\Invoke-KEVAssessment.ps1 -OutputPath "C:\Reports\KEV_Report.html"

.NOTES
    Author: Security Arsenal Detection Engineering
    Date: 2026-10-30
    Version: 1.0
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory=$false)]
    [string]$OutputPath = ".\KEV_Assessment_Report.html",

    [Parameter(Mandatory=$false)]
    [PSCredential]$Credential
)

$ErrorActionPreference = "Continue"
$ReportData = @()

Write-Host "==============================================" -ForegroundColor Cyan
Write-Host "  Security Arsenal — CISA KEV Assessment Tool" -ForegroundColor Cyan
Write-Host "  Wave: 2026-10-26 to 2026-10-30" -ForegroundColor Cyan
Write-Host "==============================================" -ForegroundColor Cyan
Write-Host ""

# Function to check PHP version
function Test-PHPVulnerability {
    Write-Host "[*] Checking for PHP installations..." -ForegroundColor Yellow

    $PHPPaths = @(
        "C:\php\php.exe",
        "C:\Program Files\PHP\php.exe",
        "C:\inetpub\wwwroot\php\php.exe",
        "/usr/bin/php",
        "/usr/local/bin/php"
    )

    $results = @()
    foreach ($path in $PHPPaths) {
        if (Test-Path $path) {
            try {
                $version = & $path -v 2>$null | Select-Object -First 1
                $versionMatch = [regex]::Match($version, 'PHP (\d+\.\d+\.\d+)')
                if ($versionMatch.Success) {
                    $phpVersion = $versionMatch.Groups[1].Value
                    $results += [PSCustomObject]@{
                        Product = "PHP"
                        Path = $path
                        Version = $phpVersion
                        CVEs = "CVE-2026-109618, CVE-2026-109619"
                        Risk = "CRITICAL"
                        Action = "Update to latest PHP security release immediately"
                    }
                    Write-Host "  [!] Found PHP $phpVersion at $path" -ForegroundColor Red
                }
            } catch {
                Write-Verbose "Error checking PHP at $path : $_"
            }
        }
    }
    return $results
}

# Function to check for Magento/Adobe Commerce
function Test-MagentoVulnerability {
    Write-Host "[*] Checking for Adobe Commerce/Magento installations..." -ForegroundColor Yellow

    $MagentoPaths = @(
        "C:\inetpub\wwwroot\magento",
        "C:\inetpub\wwwroot\app\etc\env.php",
        "/var/www/html/magento",
        "/var/www/html/app/etc/env.php",
        "/srv/magento"
    )

    $results = @()
    foreach ($path in $MagentoPaths) {
        if (Test-Path $path) {
            $version = "Unknown"
            $composerPath = Join-Path (Split-Path $path -Parent) "composer.json"
            if (Test-Path $composerPath) {
                try {
                    $composer = Get-Content $composerPath | ConvertFrom-Json
                    if ($composer.version) { $version = $composer.version }
                } catch { }
            }
            $results += [PSCustomObject]@{
                Product = "Adobe Commerce/Magento"
                Path = $path
                Version = $version
                CVEs = "CVE-2026-48356"
                Risk = "CRITICAL"
                Action = "Apply Adobe security patch immediately; audit upload directories"
            }
            Write-Host "  [!] Found Magento installation at $path" -ForegroundColor Red
        }
    }
    return $results
}

# Function to check for GitLab
function Test-GitLabVulnerability {
    Write-Host "[*] Checking for GitLab installations..." -ForegroundColor Yellow

    $results = @()

    # Check for GitLab service
    $gitlabService = Get-Service -Name "gitlab*" -ErrorAction SilentlyContinue
    if ($gitlabService) {
        $results += [PSCustomObject]@{
            Product = "GitLab"
            Path = "Service: $($gitlabService.Name)"
            Version = "Unknown - check GitLab admin panel"
            CVEs = "CVE-2026-97229"
            Risk = "HIGH"
            Action = "Update GitLab to latest security release"
        }
        Write-Host "  [!] Found GitLab service: $($gitlabService.Name)" -ForegroundColor Red
    }

    # Check common GitLab paths
    $GitLabPaths = @("/opt/gitlab", "/etc/gitlab", "C:\GitLab")
    foreach ($path in $GitLabPaths) {
        if (Test-Path $path) {
            $results += [PSCustomObject]@{
                Product = "GitLab"
                Path = $path
                Version = "Unknown - check /opt/gitlab/version-manifest.txt"
                CVEs = "CVE-2026-97229"
                Risk = "HIGH"
                Action = "Update GitLab to latest security release"
            }
            Write-Host "  [!] Found GitLab installation at $path" -ForegroundColor Red
        }
    }
    return $results
}

# Function to check for Ivanti Connect Secure
function Test-IvantiVulnerability {
    Write-Host "[*] Checking for Ivanti Connect Secure indicators..." -ForegroundColor Yellow

    $results = @()

    # Check for Ivanti registry keys
    $IvantiRegPaths = @(
        "HKLM:\SOFTWARE\Ivanti",
        "HKLM:\SOFTWARE\Pulse Secure",
        "HKLM:\SOFTWARE\WOW6432Node\Ivanti"
    )

    foreach ($regPath in $IvantiRegPaths) {
        if (Test-Path $regPath) {
            $results += [PSCustomObject]@{
                Product = "Ivanti Connect Secure"
                Path = $regPath
                Version = "Check ICS admin console"
                CVEs = "CVE-2026-118527, CVE-2026-111357"
                Risk = "CRITICAL"
                Action = "Apply Ivanti security update immediately"
            }
            Write-Host "  [!] Found Ivanti registry presence at $regPath" -ForegroundColor Red
        }
    }
    return $results
}

# Function to check Linux kernel version (if running on Linux/WSL)
function Test-KernelVulnerability {
    Write-Host "[*] Checking kernel version..." -ForegroundColor Yellow

    $results = @()

    if ($IsLinux -or $IsMacOS) {
        try {
            $kernelVersion = uname -r
            $results += [PSCustomObject]@{
                Product = "Linux Kernel"
                Path = "N/A"
                Version = $kernelVersion
                CVEs = "CVE-2026-46300"
                Risk = "HIGH"
                Action = "Update kernel via distribution package manager"
            }
            Write-Host "  [!] Linux Kernel version: $kernelVersion" -ForegroundColor Yellow
            Write-Host "      Check with your distribution for patched kernel availability" -ForegroundColor Yellow
        } catch { }
    } else {
        Write-Host "  [-] Windows system - kernel check not applicable" -ForegroundColor Gray
    }
    return $results
}

# Function to check for Brotli library
function Test-BrotliVulnerability {
    Write-Host "[*] Checking for Brotli library presence..." -ForegroundColor Yellow

    $results = @()

    # Common Brotli locations
    $BrotliPaths = @(
        "C:\Windows\System32\brotli*.dll",
        "/usr/lib/libbrotli*",
        "/usr/local/lib/libbrotli*"
    )

    foreach ($path in $BrotliPaths) {
        $found = Get-Item $path -ErrorAction SilentlyContinue
        if ($found) {
            foreach ($file in $found) {
                $results += [PSCustomObject]@{
                    Product = "Google Brotli Library"
                    Path = $file.FullName
                    Version = "Check application dependencies"
                    CVEs = "CVE-2026-111497"
                    Risk = "MEDIUM"
                    Action = "Update applications using Brotli; check vendor advisories"
                }
                Write-Host "  [!] Found Brotli library: $($file.FullName)" -ForegroundColor Yellow
            }
        }
    }
    return $results
}

# Function to check VMware ESXi (requires PowerCLI)
function Test-VMwareVulnerability {
    Write-Host "[*] Checking for VMware ESXi connectivity (requires PowerCLI)..." -ForegroundColor Yellow

    $results = @()

    if (Get-Module -ListAvailable -Name VMware.PowerCLI) {
        Write-Host "  [*] PowerCLI detected. Connect manually to check ESXi hosts." -ForegroundColor Cyan
        Write-Host "      Run: Connect-VIServer -Server <vCenter> then check host versions" -ForegroundColor Cyan
        $results += [PSCustomObject]@{
            Product = "VMware ESXi"
            Path = "PowerCLI Available"
            Version = "Connect to vCenter to enumerate"
            CVEs = "CVE-2026-41709"
            Risk = "MEDIUM"
            Action = "Apply VMware patches; review logging configurations"
        }
    } else {
        Write-Host "  [-] PowerCLI not installed - skipping VMware check" -ForegroundColor Gray
    }
    return $results
}

# Execute all checks
Write-Host ""
Write-Host "Starting vulnerability assessment..." -ForegroundColor Green
Write-Host ""

$ReportData += Test-PHPVulnerability
$ReportData += Test-MagentoVulnerability
$ReportData += Test-GitLabVulnerability
$ReportData += Test-IvantiVulnerability
$ReportData += Test-KernelVulnerability
$ReportData += Test-BrotliVulnerability
$ReportData += Test-VMwareVulnerability

# Generate summary
Write-Host ""
Write-Host "==============================================" -ForegroundColor Cyan
Write-Host "  ASSESSMENT SUMMARY" -ForegroundColor Cyan
Write-Host "==============================================" -ForegroundColor Cyan

if ($ReportData.Count -eq 0) {
    Write-Host "[+] No vulnerable products detected on this system." -ForegroundColor Green
} else {
    $criticalCount = ($ReportData | Where-Object { $_.Risk -eq "CRITICAL" }).Count
    $highCount = ($ReportData | Where-Object { $_.Risk -eq "HIGH" }).Count
    $mediumCount = ($ReportData | Where-Object { $_.Risk -eq "MEDIUM" }).Count

    Write-Host "[!] CRITICAL Risk Items: $criticalCount" -ForegroundColor Red
    Write-Host "[!] HIGH Risk Items: $highCount" -ForegroundColor Yellow
    Write-Host "[!] MEDIUM Risk Items: $mediumCount" -ForegroundColor Magenta
}

# Generate HTML report
$htmlReport = @"
<!DOCTYPE html>
<html>
<head>
    <title>CISA KEV Assessment Report</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; }
        h1 { color: #333; }
        table { border-collapse: collapse; width: 100%; margin-top: 20px; }
        th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }
        th { background-color: #4a5568; color: white; }
        .critical { background-color: #fed7d7; }
        .high { background-color: #feebc8; }
        .medium { background-color: #fefcbf; }
        .timestamp { color: #666; font-size: 0.9em; }
    </style>
</head>
<body>
    <h1>CISA KEV Vulnerability Assessment Report</h1>
    <p class="timestamp">Generated: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss UTC')</p>
    <p>Assessment for CISA KEV additions: 2026-10-26 to 2026-10-30</p>
    <table>
        <tr>
            <th>Product</th>
            <th>Path/Location</th>
            <th>Version</th>
            <th>CVEs</th>
            <th>Risk</th>
            <th>Recommended Action</th>
        </tr>
"@

foreach ($item in $ReportData) {
    $rowClass = switch ($item.Risk) {
        "CRITICAL" { "critical" }
        "HIGH" { "high" }
        "MEDIUM" { "medium" }
        default { "" }
    }
    $htmlReport += "<tr class='$rowClass'><td>$($item.Product)</td><td>$($item.Path)</td><td>$($item.Version)</td><td>$($item.CVEs)</td><td>$($item.Risk)</td><td>$($item.Action)</td></tr>`n"
}

$htmlReport += @"
    </table>
    <p><em>Report generated by Security Arsenal KEV Assessment Tool</em></p>
</body>
</html>
"@

$htmlReport | Out-File -FilePath $OutputPath -Encoding UTF8
Write-Host ""
Write-Host "[+] Report saved to: $OutputPath" -ForegroundColor Green
Write-Host ""
Write-Host "REMEDIATION PRIORITIES:" -ForegroundColor Cyan
Write-Host "1. PHP (CVE-2026-109618, CVE-2026-109619) - Unauthenticated RCE - PATCH IMMEDIATELY" -ForegroundColor Red
Write-Host "2. Adobe Commerce/Magento (CVE-2026-48356) - Unrestricted File Upload - PATCH IMMEDIATELY" -ForegroundColor Red
Write-Host "3. Ivanti Connect Secure (CVE-2026-118527, CVE-2026-111357) - Apply vendor patches" -ForegroundColor Yellow
Write-Host "4. GitLab (CVE-2026-97229) - Update to latest release" -ForegroundColor Yellow
Write-Host "5. Linux Kernel (CVE-2026-46300) - Apply distribution updates" -ForegroundColor Yellow
"@

### Validation Commands

After applying patches, validate remediation with these commands:

**PHP Version Check:**
```bash
php -v
# Verify version is at or above patched release from PHP security advisory

Magento Security Patch Check:

Bash / Shell
# Check applied patches
cd /var/www/html/magento
bin/magento setup:upgrade
bin/magento setup:di:compile
# Review var/log/system.log for errors

Ivanti Connect Secure:

Bash / Shell
# Log into ICS admin console
# Navigate to: System > Status > Software Version
# Verify version matches patched release in Ivanti advisory

GitLab Version Check:

Bash / Shell
sudo gitlab-rake gitlab:env:info
# Verify version matches patched release from GitLab security advisory

Linux Kernel Version:

Bash / Shell
uname -r
# Compare against distribution security advisory for patched kernel version

Patch & Remediation Priorities

Priority 1: IMMEDIATE (Within 24 Hours)

CVEProductActionAdvisory
CVE-2026-109618PHPApply emergency security patchPHP Security Advisories
CVE-2026-109619PHPApply emergency security patchPHP Security Advisories
CVE-2026-48356Adobe Commerce/MagentoApply APSB26-XX security updateAdobe Security Bulletin

Priority 2: URGENT (Within 72 Hours)

CVEProductActionAdvisory
CVE-2026-118527Ivanti Connect SecureApply ICS security updateIvanti Security Advisories
CVE-2026-111357Ivanti Connect SecureApply ICS security updateIvanti Security Advisories
CVE-2026-97229GitLab CE/EEUpgrade to patched versionGitLab Security Releases

Priority 3: HIGH (Within 7 Days)

CVEProductActionAdvisory
CVE-2026-76418Cisco ASA/FTDApply Cisco software updateCisco Security Advisories
CVE-2026-46300Linux KernelApply distribution kernel updateCheck your distribution (RHEL, Ubuntu, SUSE, etc.)
CVE-2026-111497Google BrotliUpdate dependent applicationsBrotli GitHub

Priority 4: STANDARD (Within 14 Days)

CVEProductActionAdvisory
CVE-2026-41709VMware ESXiApply VMware security patchVMware Security Advisories

Workarounds & Interim Mitigations

PHP (CVE-2026-109618, CVE-2026-109619):

  • Implement WAF rules to block suspicious POST payloads
  • Disable unnecessary PHP extensions
  • Implement rate limiting on PHP endpoints
  • Consider temporary restriction to known-good IP ranges

Adobe Commerce/Magento (CVE-2026-48356):

  • Disable file upload functionality if not business-critical
  • Implement strict file type validation at WAF level
  • Move upload directories outside web root
  • Enable real-time file integrity monitoring

Ivanti Connect Secure (CVE-2026-118527, CVE-2026-111357):

  • Enable enhanced logging and monitoring
  • Implement network segmentation around ICS appliances
  • Review and restrict administrative access
  • Monitor for session anomalies

Cisco ASA/FTD (CVE-2026-76418):

  • Implement redundant firewall configurations
  • Enable aggressive logging and alerting
  • Monitor for service disruption indicators

CISA Compliance Deadlines

Under Binding Operational Directive 22-01, Federal Civilian Executive Branch (FCEB) agencies must remediate KEV-listed vulnerabilities:

  • Internet-facing systems: 7 days from KEV addition
  • Non-internet-facing systems: 21 days from KEV addition

For this wave:

  • CVEs added 2026-10-26: Remediation due 2026-11-02 (internet-facing) / 2026-11-16 (internal)
  • CVEs added 2026-10-27: Remediation due 2026-11-03 (internet-facing) / 2026-11-17 (internal)
  • CVEs added 2026-10-28: Remediation due 2026-11-04 (internet-facing) / 2026-11-18 (internal)
  • CVEs added 2026-10-29: Remediation due 2026-11-05 (internet-facing) / 2026-11-19 (internal)
  • CVEs added 2026-10-30: Remediation due 2026-11-06 (internet-facing) / 2026-11-20 (internal)

Enterprise organizations should adopt these deadlines as best practice.


Related Resources

Security Arsenal Penetration Testing Managed SOC & MDR AlertMonitor Platform From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.