Like leaving the keys in the forklift ignition with the warehouse door wide open — except the forklift runs as SYSTEM
CVE-2026-25550 affects Seagull Software BarTender 2010 (through 10.1 R4), 2016 (through R9), and 2019 (through R10). The vulnerable component is BtSystem.Service.exe, which exposes a .NET Remoting TCP channel on port 7375 bound to all interfaces. The endpoint — named BarTenderSystem (2016) or DataServiceSingleton (2019) — is registered as an unauthenticated singleton using BinaryServerFormatterSinkProvider with TypeFilterLevel.Full. This combination allows an unauthenticated attacker to exploit .NET Remoting unmarshalling to read/write arbitrary files via WebClient, coerce NTLMv2 authentication via UNC paths, or achieve full remote code execution through deserialization gadget chains (ysoserial.net TypeConfuseDelegate). The service runs as NT AUTHORITY\SYSTEM, so successful exploitation yields complete host control.
The vendor CVSS of 9.8 CRITICAL is technically accurate for the raw vulnerability mechanics — unauthenticated, no user interaction, full CIA impact. However, it overstates real-world risk for most enterprises. BarTender is label-printing software deployed on internal print servers in manufacturing, logistics, and healthcare environments. TCP 7375 is almost never internet-facing; Shodan and Censys show no meaningful internet exposure footprint. The realistic attack scenario requires an adversary already positioned on the internal network. That said, once inside, exploitation is trivial — public tooling exists (ExploitRemotingService, ysoserial.net, RemotingClient_MBRO.exe), no credentials are needed, and you land as SYSTEM on a server that often holds database connection strings to ERP/WMS backends. The vendor severity is directionally correct but deserves a one-notch downgrade to HIGH given the internal-only realistic exposure.
5 steps from start to impact.
Gain internal network access
- Internal network access to the subnet hosting the BarTender server
- TCP connectivity to port 7375 on the target host
- Requires prior compromise — the attacker is already past the perimeter
- Network segmentation may isolate OT/print-server VLANs from general user segments
- Host-based firewalls may block inbound 7375 (though BarTender's installer often opens it)
Enumerate the .NET Remoting endpoint
ExploitRemotingService by James Forshaw (tyranid) can probe the endpoint to enumerate registered objects. The endpoint names are well-documented: BarTenderSystem for 2016, DataServiceSingleton for 2019.- TCP 7375 is open and responding
- Target runs an affected BarTender version (2010/2016/2019)
- Port scanning may trigger IDS/NDR alerts
- BarTender 2021+ binds to localhost only, narrowing the target set
Send malicious deserialization payload
ysoserial.net to generate a TypeConfuseDelegate or similar BinaryFormatter gadget chain, the attacker sends the serialized payload via ExploitRemotingService to the unauthenticated endpoint. Because TypeFilterLevel is set to Full, arbitrary types are deserialized without restriction. No credentials, tokens, or session cookies are required.- Windows attacker workstation with .NET Framework (tools are .NET-native)
- Knowledge of the endpoint name (publicly documented)
- Defender EDR on the BarTender host may detect ysoserial gadget patterns at the process-creation level
- Application-layer inspection of .NET Remoting traffic is rare but possible
BtSystem.Service.exe (e.g., cmd.exe, powershell.exe). Sysmon Event ID 1 process creation with unusual parent. Carbon Black, CrowdStrike, and SentinelOne have detections for ysoserial gadget chains.Execute as NT AUTHORITY\SYSTEM
BtSystem.Service.exe, which runs as NT AUTHORITY\SYSTEM. The attacker now has unrestricted local access: credential dumping (LSASS), lateral movement, persistence via scheduled tasks or services, and access to any database connection strings stored in BarTender configuration files.- Successful deserialization in step 3
- EDR should detect post-exploitation behaviors (credential dumping, lateral movement)
- Credential Guard / LSA protection can limit LSASS harvesting on modern Windows
Pivot to ERP/database backends (optional)
- BarTender server has stored database credentials
- Network allows lateral movement from the print-server segment
- Properly segmented OT networks block this pivot
- Database credentials may use Windows Integrated Auth limited to the machine account
- PAM solutions may rotate or vault these credentials
Test-NetConnection -ComputerName <bartender-host> -Port 7375 from a non-authorized host.BtSystem.Service.exe, especially cmd.exe, powershell.exe, certutil.exe, or any unsigned binary. This does not prevent exploitation but provides near-real-time detection of post-exploitation activity. Deploy immediately as a detection layer while awaiting patching.- WAF or reverse proxy — the .NET Remoting protocol on TCP 7375 is a raw binary TCP channel, not HTTP. Web application firewalls cannot inspect or filter this traffic.
- Disabling the BtSystem.Service.exe service — this is the core BarTender system service. Stopping it breaks all label printing functionality, making it operationally unacceptable as a mitigation.
- Windows Defender Application Control (WDAC) / AppLocker — these control which executables can run but do not prevent deserialization within an already-allowed process (
BtSystem.Service.exeitself is a legitimate signed binary).
The supporting signals.
| In-the-Wild Exploitation | No known exploitation. Not listed in CISA KEV. No GreyNoise or Shadowserver tags observed. No ransomware campaign associations reported as of September 2026. |
|---|---|
| Proof-of-Concept | Public PoC available. Researchers Victor A. Morales and Jan Rodriguez (GM Sectec) published a detailed Gist with working exploitation steps using RemotingClient_MBRO.exe (derived from Code-White's .NET Remoting research), ExploitRemotingService (tyranid/ExploitRemotingService), and ysoserial.net. Not indexed on pocindex.io at time of review. |
| EPSS | 0.01424 (1.42%) — places this in roughly the 56th percentile. Moderate probability of exploitation in the next 30 days, reflecting the niche install base but trivial exploitation mechanics. |
| KEV Status | Not listed. No CISA KEV entry as of 2026-09-30. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8. Network-accessible, no auth, no interaction, full CIA impact. Vendor also published CVSS 4.0 score of 9.3. The AV:N is technically correct (binds 0.0.0.0) but overstates internet reachability. |
| Affected Versions | BarTender 2010 ≤ 10.1 R4, 2016 ≤ R9, 2019 ≤ R10. Note: BarTender 2021 R1+ bound the service to localhost, eliminating the remote vector (but introduced CVE-2026-25551 for local privilege escalation). |
| Fixed Version | BarTender 12.1 (released August 14, 2026). BarTender 12.0.1 partially addresses the issue. Full remediation requires 12.1. |
| Internet Exposure | Negligible. No significant Shodan/Censys/FOFA results for TCP 7375 or .NET Remoting BarTender banners. BarTender is internal label-printing infrastructure — not designed or typically deployed internet-facing. |
| Install Base | Seagull Software claims 250,000+ organizations use BarTender globally, primarily in manufacturing, logistics, healthcare, and retail for barcode/label printing. However, the vulnerable 2010/2016/2019 versions represent the legacy tail — many have migrated to 2021+ or 12.x. |
| Researcher / Disclosure | Discovered by Victor A. Morales and Jan A. Rodriguez of GM Sectec, Corp. Coordinated disclosure published June 3-4, 2026. VulnCheck published a parallel advisory. |
Sources.
- GM Sectec Researcher Disclosure (VAMorales Gist)
- VulnCheck Advisory - BarTender Unauthenticated RCE
- CyberStrike CVE Detail
- ExploitRemotingService - James Forshaw (tyranid)
- Code White - .NET Remoting Revisited
- TheHackerWire - BarTender .NET Remoting RCE
- OpenCVE - CVE-2026-25550
- Seagull Software BarTender Official Site
Why this verdict
- Internal-network prerequisite: TCP 7375 has zero meaningful internet exposure. Exploitation requires the attacker to already be positioned inside the corporate network, implying a prior compromise stage. This compounding prerequisite drops the realistic severity below CRITICAL.
- Trivial exploitation once positioned: Despite the network prerequisite, once inside, exploitation is zero-click, zero-auth, and fully tooled with public PoC code (
ExploitRemotingService,ysoserial.net,RemotingClient_MBRO.exe). The endpoint names are documented. This keeps the verdict firmly at HIGH, not MEDIUM. - SYSTEM-level impact with database pivot potential: The service runs as
NT AUTHORITY\SYSTEM. BarTender Enterprise servers store database connection strings to ERP/WMS backends (SAP, Oracle, MSSQL). Compromise yields not just host control but potential access to production data stores. - Role multiplier: BarTender is NOT a canonical high-value-role component (not an IdP, hypervisor, CI/CD, or backup system). Its primary role is line-of-business label printing. However, in its *typical* deployment (dedicated print server on manufacturing/warehouse floor), it often sits on less-segmented networks with OT adjacency and holds database credentials. The blast radius is host-level with potential pivot to database tier — significant but not fleet-scale or identity-scale. This keeps the floor at HIGH but does not elevate to CRITICAL.
- No active exploitation or KEV listing: EPSS at 1.42% and no KEV listing confirm this is not currently being weaponized at scale. The niche install base further limits attacker ROI compared to broadly deployed software.
- Legacy version tail: Only BarTender 2010, 2016, and 2019 are affected. BarTender 2021+ bound the endpoint to localhost, eliminating the remote vector. Organizations still running these versions likely have other patch-debt issues compounding the risk.
Why not higher?
CRITICAL would require either internet-facing exposure (absent here) or a canonical high-value-role deployment where the blast radius is fleet-scale or identity-scale. BarTender is label-printing software — compromise of a print server is operationally painful but does not directly yield domain takeover, fleet compromise, or supply-chain pivot. The internal-network prerequisite adds a real friction barrier that compounds with the niche install base.
Why not lower?
MEDIUM would understate the risk. Once an attacker has internal network access (a given in most breach scenarios), exploitation is completely unauthenticated, requires no user interaction, uses publicly available tooling, and lands a SYSTEM shell. The server's database integration means the blast radius extends beyond the host. Any vulnerability that gives unauthenticated SYSTEM-level RCE with public tooling from the internal network stays at HIGH minimum.
Crowdsourced verification payload.
Run this script on each suspected BarTender host as a local administrator. It checks whether BtSystem.Service.exe is running, whether TCP 7375 is listening on non-localhost interfaces, and whether the installed BarTender version falls within the vulnerable range. Example: .\Check-CVE-2026-25550.ps1
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Check-CVE-2026-25550.ps1 - Detect vulnerable BarTender .NET Remoting exposure
.DESCRIPTION
Checks for BtSystem.Service.exe listening on TCP 7375 on non-localhost
interfaces and verifies BarTender version against affected ranges.
Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN
#>
$exitCode = 2
$status = "UNKNOWN"
try {
# Check if BtSystem.Service.exe is running
$svc = Get-Process -Name "BtSystem.Service" -ErrorAction SilentlyContinue
if (-not $svc) {
Write-Host "[INFO] BtSystem.Service.exe is not running on this host."
Write-Host "UNKNOWN - BarTender service not detected"
exit 2
}
# Check TCP 7375 listeners
$listeners = Get-NetTCPConnection -LocalPort 7375 -State Listen -ErrorAction SilentlyContinue
$externalListener = $listeners | Where-Object {
$_.LocalAddress -ne "127.0.0.1" -and $_.LocalAddress -ne "::1"
}
# Get BarTender version from the executable
$btPath = $svc.Path
if (-not $btPath) {
$btPath = (Get-WmiObject Win32_Process -Filter "Name='BtSystem.Service.exe'").ExecutablePath
}
$version = $null
if ($btPath -and (Test-Path $btPath)) {
$fileInfo = Get-Item $btPath
$version = $fileInfo.VersionInfo.ProductVersion
Write-Host "[INFO] BarTender version detected: $version"
Write-Host "[INFO] Path: $btPath"
}
# Check registry for version info as fallback
if (-not $version) {
$regPaths = @(
"HKLM:\SOFTWARE\Seagull Scientific\BarTender",
"HKLM:\SOFTWARE\WOW6432Node\Seagull Scientific\BarTender"
)
foreach ($rp in $regPaths) {
if (Test-Path $rp) {
$version = (Get-ItemProperty $rp -ErrorAction SilentlyContinue).Version
if ($version) {
Write-Host "[INFO] BarTender version from registry: $version"
break
}
}
}
}
# Determine vulnerability status
if ($externalListener) {
Write-Host "[ALERT] TCP 7375 is listening on non-localhost: $($externalListener.LocalAddress -join ', ')"
Write-Host "[ALERT] .NET Remoting endpoint is network-accessible without authentication."
$status = "VULNERABLE"
$exitCode = 1
} elseif ($listeners) {
Write-Host "[INFO] TCP 7375 is listening on localhost only (2021+ behavior)."
Write-Host "[INFO] Remote exploitation vector is NOT present (CVE-2026-25550 not applicable)."
Write-Host "[INFO] Check CVE-2026-25551 for local privilege escalation if version < 12.1."
$status = "PATCHED"
$exitCode = 0
} else {
Write-Host "[INFO] TCP 7375 is not listening."
$status = "PATCHED"
$exitCode = 0
}
} catch {
Write-Host "[ERROR] $_"
$status = "UNKNOWN"
$exitCode = 2
}
Write-Host ""
Write-Host "Result: $status"
exit $exitCode