Someone left the loading-dock door unlocked and the forklift keys in the ignition — any passerby can drive straight into the warehouse
CVE-2025-4632 is a path-traversal-to-RCE in Samsung MagicINFO 9 Server, the Windows-based CMS that manages Samsung digital signage fleets. The /MagicInfo/servlet/SWUpdateFileUploader endpoint accepts file uploads with zero authentication and fails to sanitize ../ sequences in the submitted filename, letting a remote attacker write an arbitrary file — typically a JSP webshell — anywhere on the filesystem. Because the Apache Tomcat service hosting MagicINFO runs as NT AUTHORITY\SYSTEM, the webshell inherits full OS-level privileges. All versions prior to 21.1052 are affected, including 21.1050 which was supposed to fix the predecessor flaw CVE-2024-7399. The bug is, in fact, a patch bypass — Samsung's August 2024 fix was incomplete, and SSD Disclosure dropped a working PoC on April 30, 2025, with active exploitation following within days.
Samsung's CRITICAL / 9.8 rating is entirely accurate and, if anything, undersells the operational reality. The CVSS vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H perfectly describes what happens: an unauthenticated network call, no complexity, no user interaction, full confidentiality/integrity/availability impact. There is a Metasploit module rated *Excellent* (repeatable, crash-safe), five-plus public GitHub PoCs, a Nuclei detection template, and confirmed in-the-wild exploitation deploying Mirai botnet payloads. CISA added it to the KEV catalog on May 22, 2025, with a federal remediation deadline of June 12, 2025. Censys counted 1,101 exposed instances; Shodan showed roughly 5,000. The gap between disclosure and weaponization was measured in *hours*, not weeks.
5 steps from start to impact.
Discover MagicINFO instance
/MagicInfo web path and default page titles. Approximately 1,100–5,000 instances are internet-facing globally.- Target runs Samsung MagicINFO 9 Server on a reachable network
- Instance must be network-reachable to the attacker — internal-only deployments require prior access
CVE-2025-4632.yaml (projectdiscovery/nuclei-templates). Shodan dork: http.title:"MagicInfo". Censys query available in their advisory.Send malicious file upload with path traversal
/MagicInfo/servlet/SWUpdateFileUploader, embedding directory-traversal sequences (../) in the filename parameter. No credentials, cookies, or session tokens are required — the servlet has no authentication gate. The traversal escapes the intended upload directory and targets the Tomcat webroot or any other writable path. Metasploit module exploit/windows/http/magicinfo_traversal automates this end-to-end.- Network access to port 7001 or 7002
- No WAF or input-validation layer blocking traversal sequences
- A properly configured WAF blocking
../in multipart uploads would stop this — but MagicINFO deployments rarely sit behind one
../ or ..\ in multipart form data filenames. IDS signatures for known exploit traffic patterns (Snort/Suricata SIDs available).JSP webshell written to Tomcat webroot
webapps directory. Because the Tomcat process runs as NT AUTHORITY\SYSTEM, the file is written with SYSTEM ownership. The webshell is now accessible at a predictable URL path (e.g., /MagicInfo/<shell>.jsp). The attacker can use a one-liner shell or a full-featured tool like Godzilla/Behinder.- Successful path traversal from step 2
- Tomcat webroot is writable (default)
- Application allowlisting (e.g., AppLocker, WDAC) could block unauthorized JSP execution, but this is rarely configured for Tomcat directories
.jsp file creation under the MagicINFO install path.Remote code execution as SYSTEM
srvany.exe and services.exe (service-wrapper persistence), and system reconnaissance commands on compromised hosts. Mirai botnet variants have been deployed via this chain.- Webshell successfully written and accessible
- EDR with behavioral detection should flag cmd.exe/powershell.exe child processes from Tomcat — but only if EDR is deployed on the signage management server
java.exe → cmd.exe or powershell.exe process chains. Huntress and Arctic Wolf both published detection guidance.Lateral movement and persistence
- Host is domain-joined or has cached domain credentials
- Attacker chooses to pivot rather than just botnet the host
- Credential Guard, LSASS protection, and network segmentation limit lateral movement
- MagicINFO servers in isolated VLANs cannot reach high-value targets
The supporting signals.
| In-the-Wild Exploitation | Confirmed active. Huntress documented three incidents with post-exploitation activity (payload downloads, recon commands). Mirai botnet variants deployed. Arctic Wolf observed exploitation starting early May 2025. |
|---|---|
| PoC Availability | Widely available. SSD Disclosure published the original PoC on April 30, 2025. Metasploit module exploit/windows/http/magicinfo_traversal (Excellent rank, by Michael Heinzl). 5+ GitHub PoCs. Nuclei detection template at projectdiscovery/nuclei-templates. |
| EPSS | 0.24295 (97.7th percentile) — top ~2.3% of all CVEs by exploitation probability. Consistent with active exploitation and public tooling. |
| KEV Status | Listed May 22, 2025. CISA due date for federal agencies: June 12, 2025. BOD 22-01 applies. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-accessible, no authentication, no user interaction, no complexity. Every impact metric maxed. This is the canonical "spray the internet" vector. |
| Affected Versions | Samsung MagicINFO 9 Server all versions before 21.1052, including 21.1050.0 (which was the intended fix for CVE-2024-7399 and was itself bypassed). Also affects MagicINFO v8 installations. |
| Fixed Version | 21.1052.0 (released May 14, 2025). Note: upgrading requires staging through 21.1050.0 first, then applying 21.1052. Huntress confirmed 21.1052 resolves the issue. |
| Exposure Data | Censys: 1,101 exposed instances (59 of 116 version-enumerable were still vulnerable). Shodan: ~5,000 publicly accessible MagicINFO servers globally. Default ports TCP 7001/7002. |
| Disclosure Timeline | CVE-2024-7399 patched Aug 2024 → SSD Disclosure PoC bypass Apr 30, 2025 → Huntress discloses May 9 → Samsung patches (21.1052) May 14 → CISA KEV May 22, 2025. |
| Credited Researchers | SSD Disclosure (original PoC), Huntress (patch bypass confirmation and incident response), Arctic Wolf (exploitation telemetry), Michael Heinzl (Metasploit module). |
Sources.
- Arctic Wolf — Samsung MagicINFO 9 CVE-2025-4632 Follow-Up
- The Hacker News — Samsung Patches CVE-2025-4632 (Mirai Botnet)
- Censys Advisory — CVE-2025-4632 Exposure Data
- Huntress — Rapid Response: Samsung MagicINFO 9 Server Flaw
- Rapid7 — Metasploit Module: MagicINFO Path Traversal
- CISA KEV Catalog
- Nuclei Template — CVE-2025-4632
- SecurityAffairs — CISA Adds Samsung MagicINFO 9 to KEV
Why this verdict
- Zero friction on the attack path: The entire chain from network access to SYSTEM-level RCE is a single unauthenticated HTTP POST. No credentials, no user interaction, no race conditions, no memory corruption — just a file upload with
../in the name. The Metasploit module is rated Excellent (repeatable, crash-safe). This is as close to point-and-click domain entry as it gets. - Active mass exploitation confirmed: CISA KEV-listed, Mirai botnet deployment observed, Huntress documented three separate real-world incidents with post-exploitation activity including payload staging and reconnaissance. Exploitation began within days of PoC release on April 30, 2025.
- SYSTEM-level execution context eliminates privilege escalation step: The Tomcat service runs as NT AUTHORITY\SYSTEM by default. There is no privilege escalation required — the initial foothold IS full host compromise. This removes an entire link from the typical attack chain.
- Patch bypass compounds the risk: CVE-2025-4632 bypasses the fix for CVE-2024-7399 (patched August 2024). Organizations that believed they were patched at 21.1050 are still vulnerable. This means the actual vulnerable population is larger than naive patch-status queries would suggest.
- Role multiplier: MagicINFO 9 Server is a digital signage CMS — not a canonical high-value component (not an IdP, hypervisor, CA, or network edge). However, it is deployed as a domain-joined Windows server in most enterprise environments. SYSTEM-level compromise of a domain-joined host yields machine account credentials and cached domain credentials, enabling lateral movement to domain controllers. In enterprises with flat networks, this is a direct path from signage server to domain admin. The blast radius is host → domain for >50% of real deployments. While this means the high-value-role floor is HIGH (not CRITICAL by component definition), the zero-friction chain, active exploitation, and public Metasploit module push the verdict above the floor to CRITICAL.
- Internet exposure is non-trivial: 1,100–5,000 instances are internet-facing per Censys/Shodan. For a niche product, this represents a significant fraction of the installed base being directly reachable by any attacker on the internet.
Why not higher?
The score is already at the CVSS ceiling of 9.8. There is no higher severity bucket than CRITICAL. The only theoretical gap is that Scope is Unchanged (the vuln doesn't directly break out of a VM or cross a trust boundary beyond the host), but since execution is as SYSTEM on a domain-joined host, the practical impact is equivalent.
Why not lower?
Downgrading would require identifying meaningful friction in the attack chain, and there is none for internet-facing instances. The chain is unauthenticated, single-request, crash-safe, and automated via Metasploit. Active exploitation is confirmed and KEV-listed. The only population narrowing is that MagicINFO is a niche product — but for organizations that run it, the risk is maximal. The deployment-role floor is HIGH based on domain-joined server compromise potential, and every other factor (exploitation maturity, tooling, zero friction) pushes above that floor.
../, ..\, and URL-encoded variants in multipart form-data filenames targeting /MagicInfo/servlet/SWUpdateFileUploader. This is a defense-in-depth measure, not a substitute for patching. Deploy within 3 days per noisgate mitigation SLA..jsp, .jspx, or .war file creation under the MagicINFO Tomcat webapps directory. This does not prevent exploitation but ensures rapid detection and response. Deploy within 3 days.- Upstream authentication proxies (e.g., SSO/reverse proxy auth) — The vulnerable servlet
/MagicInfo/servlet/SWUpdateFileUploaderis designed to be unauthenticated for device firmware updates. Adding auth at a proxy layer may break legitimate signage device communication without actually blocking a determined attacker who can craft requests directly. - Antivirus signature scanning on uploaded files — The attacker controls the JSP payload content and can trivially obfuscate it to evade signature-based AV. The vulnerability is the *path traversal write*, not the file content.
- Rate limiting — A single HTTP request is sufficient for exploitation. Rate limiting provides zero value against this attack.
Crowdsourced verification payload.
Run this script on the MagicINFO server host as a local administrator. Invoke with: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2025-4632.ps1. No arguments required. The script checks the installed MagicINFO version via registry and reports VULNERABLE, PATCHED, or UNKNOWN.
#Requires -RunAsAdministrator
<#
Check-CVE-2025-4632.ps1
Checks whether the local Samsung MagicINFO 9 Server installation
is vulnerable to CVE-2025-4632 (path traversal → RCE).
Fixed version: 21.1052.0
Exit codes: 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN
#>
$ErrorActionPreference = 'Stop'
$fixedVersion = [version]'21.1052.0'
# Registry paths where MagicINFO stores version info
$regPaths = @(
'HKLM:\SOFTWARE\Samsung\MagicInfo-i\Server\Premium',
'HKLM:\SOFTWARE\Samsung\MagicInfo\Server',
'HKLM:\SOFTWARE\WOW6432Node\Samsung\MagicInfo-i\Server\Premium'
)
$installedVersion = $null
foreach ($rp in $regPaths) {
if (Test-Path $rp) {
try {
$props = Get-ItemProperty -Path $rp -ErrorAction SilentlyContinue
$verString = $props.Version
if (-not $verString) { $verString = $props.ProductVersion }
if (-not $verString) { $verString = $props.DisplayVersion }
if ($verString) {
# Normalize: strip any leading 'v' or trailing text
$verString = ($verString -replace '[^0-9.]', '').Trim('.')
$installedVersion = [version]$verString
Write-Host "[*] Found MagicINFO at registry key: $rp"
Write-Host "[*] Installed version: $installedVersion"
break
}
} catch {
continue
}
}
}
# Fallback: check Uninstall keys
if (-not $installedVersion) {
$uninstallPaths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
foreach ($up in $uninstallPaths) {
$entries = Get-ItemProperty -Path $up -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -like '*MagicINFO*' -or $_.DisplayName -like '*MagicInfo*' }
if ($entries) {
$entry = $entries | Select-Object -First 1
$verString = $entry.DisplayVersion
if ($verString) {
$verString = ($verString -replace '[^0-9.]', '').Trim('.')
$installedVersion = [version]$verString
Write-Host "[*] Found MagicINFO via Uninstall key"
Write-Host "[*] Installed version: $installedVersion"
break
}
}
}
}
# Also check for the Tomcat service as a secondary indicator
$tomcatService = Get-Service -Name '*MagicInfo*' -ErrorAction SilentlyContinue
if (-not $installedVersion) {
if ($tomcatService) {
Write-Host "[!] MagicINFO service detected but version could not be determined."
Write-Host "UNKNOWN"
exit 2
} else {
Write-Host "[*] Samsung MagicINFO 9 Server does not appear to be installed on this host."
Write-Host "UNKNOWN"
exit 2
}
}
if ($installedVersion -lt $fixedVersion) {
Write-Host "`n[!!!] CVE-2025-4632: VULNERABLE"
Write-Host "Installed version $installedVersion is below the fixed version $fixedVersion."
Write-Host "Immediate patching required — this CVE is actively exploited (KEV-listed)."
Write-Host "VULNERABLE"
exit 1
} else {
Write-Host "`n[+] CVE-2025-4632: PATCHED"
Write-Host "Installed version $installedVersion meets or exceeds the fixed version $fixedVersion."
Write-Host "PATCHED"
exit 0
}