CISA has published ICS Medical Advisory ICSMA-26-295-01 covering a significant weakness in InterSystems IRIS for Health, one of the most widely deployed healthcare data platforms on the planet. IRIS for Health underpins HealthShare deployments, clinical data repositories, integration engines, and FHIR infrastructure at hospitals, health systems, and HIEs worldwide — and out of the box, it ships with TLS/SSL encryption disabled by default (CVE-2026-111594, CVSS v3 8.1).
The advisory language is blunt: successful exploitation could allow an attacker to view transmitted data and use that data to log into the device. In plain terms — if your IRIS for Health instance is moving HL7 feeds, FHIR payloads, or management traffic in cleartext, anyone with network position can read protected health information in transit and harvest the credentials needed to authenticate to the platform itself. For a system that sits at the center of clinical data exchange, that is a catastrophic default posture.
If you operate IRIS for Health 2026.2.0.221, 2026.1.0.235, or 2025.3.0.226, treat this as an immediate audit-and-remediate event, not a patching queue item.
Technical Analysis
Affected Products and Versions
| Product | Affected Versions | CVE | CVSS v3 |
|---|---|---|---|
| InterSystems IRIS for Health | 2026.2.0.221 | CVE-2026-111594 | 8.1 |
| InterSystems IRIS for Health | 2026.1.0.235 | CVE-2026-111594 | 8.1 |
| InterSystems IRIS for Health | 2025.3.0.226 | CVE-2026-111594 | 8.1 |
- Vendor: InterSystems Corporation (US-based, deployed worldwide)
- Critical infrastructure sector: Healthcare and Public Health
- Advisory: ICSMA-26-295-01
How the Vulnerability Works
This is a Cleartext Transmission of Sensitive Information (CWE-319) class weakness rooted in insecure defaults rather than a memory-corruption or injection bug. The mechanics matter for defenders:
- TLS/SSL is off by default. IRIS for Health exposes multiple network surfaces — the Superserver (default TCP 1972), the Web Gateway / Management Portal (default TCP 52773), Interoperability/HL7 listeners, ODBC/JDBC connections, and mirroring traffic. With encryption disabled by default, these sessions traverse the wire unprotected unless an administrator has explicitly configured TLS.
- Passive interception yields live credentials. Because IRIS sessions carry authentication material — including service account credentials used by interface engines, integration services, and administrative sessions — an attacker with network adjacency (compromised switch SPAN port, rogue access point, ARP poisoning, or a foothold on an adjacent VLAN) can capture usernames and passwords and replay them to authenticate to the platform.
- PHI exposure is secondary but massive. HL7 v2 messages, FHIR resources, and clinical documents flowing through IRIS interoperability productions contain diagnoses, demographics, identifiers, and results. Cleartext transmission converts a network-layer weakness into a reportable HIPAA breach at scale.
Exploitation Requirements and Status
Exploitation requires network position adjacent to the traffic path — this is not remotely exploitable from the internet in the traditional sense, which is why the vector scores 8.1 rather than critical. However, the advisory's own language confirms the practical impact: intercepted data can be used to log in to the device. At the time of publication, there is no public PoC and no confirmed in-the-wild exploitation, and CVE-2026-111594 is not listed in the CISA KEV catalog. That window will not hold indefinitely — cleartext credential capture requires zero exploit development, only packet capture tooling that every red team and every commodity threat actor already has.
The uncomfortable truth: many IRIS for Health deployments have been running cleartext since installation precisely because the default was insecure. Do not assume your environment is encrypted — verify it.
Detection & Response
Detection here is about three things: finding cleartext IRIS traffic on your network, identifying unencrypted listeners on IRIS hosts, and hunting for interception/surveillance behavior against medical VLANs.
---
title: Cleartext InterSystems IRIS Superserver or Web Traffic Detected
id: 3f8a1c92-7b4d-4e6f-a1c3-9d2e5f8b7a01
status: experimental
description: Detects network connections to InterSystems IRIS for Health default ports (Superserver 1972, Web Gateway 52773) where TLS is not in use, indicating cleartext transmission of credentials or PHI consistent with CVE-2026-111594 exposure.
references:
- https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-295-01
- https://cwe.mitre.org/data/definitions/319.html
author: Security Arsenal
date: 2026/06/15
tags:
- attack.collection
- attack.t1040
- attack.credential_access
logsource:
category: network_connection
detection:
selection_ports:
DestinationPort:
- 1972
- 52773
- 51773
filter_tls:
tls_established: true
condition: selection_ports and not filter_tls
falsepositives:
- Legacy integrations still in migration to TLS — these must be tracked as findings, not exceptions
- Loopback-only listeners (bound to 127.0.0.1) do not traverse the network and can be excluded after validation
level: high
---
title: Packet Capture or Network Sniffing Tool Executed on Clinical Network Segment
id: 8b2e4d17-6c9a-4f3b-b5e2-1a7d9c4f6e23
status: experimental
description: Detects execution of packet capture utilities capable of intercepting cleartext IRIS for Health traffic, including credential capture against unencrypted Superserver sessions.
references:
- https://attack.mitre.org/techniques/T1040/
- https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-295-01
author: Security Arsenal
date: 2026/06/15
tags:
- attack.credential_access
- attack.t1040
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith:
- '\wireshark.exe'
- '\tshark.exe'
- '\dumpcap.exe'
- '\windump.exe'
- '\tcpdump.exe'
- '\pktmon.exe'
- '\netsh.exe'
selection_cli:
CommandLine|contains:
- 'trace start'
- 'pktmon start'
- '-i any'
- 'promiscuous'
condition: selection_img and selection_cli
falsepositives:
- Network engineering troubleshooting — require change-ticket correlation before tuning out
- Approved packet brokers and NDR sensors run as services, not interactive CLI sessions
level: medium
---
title: New Administrative or Service Login to IRIS Management Portal From Unusual Source
id: 5c1f7a48-2e8b-4d9c-a3f6-8b4e1c7d2a95
status: experimental
description: Detects authentication to the IRIS for Health Management Portal or Superserver from source addresses outside the defined administrative jump-host or interface-engine allowlist — a potential indicator of replayed credentials harvested from cleartext sessions.
references:
- https://attack.mitre.org/techniques/T1078/
- https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-295-01
author: Security Arsenal
date: 2026/06/15
tags:
- attack.initial_access
- attack.t1078
logsource:
category: network_connection
detection:
selection:
DestinationPort:
- 52773
- 1972
filter_approved:
SourceIp|cidr:
- '10.10.5.0/28'
- '10.10.8.0/24'
condition: selection and not filter_approved
falsepositives:
- New interface engines or clinical applications onboarded without updating the allowlist
level: high
// Hunt for cleartext connections to IRIS for Health listeners ingested via CEF/Syslog from firewalls/NDR
// Tune ApprovedSources to your actual jump hosts, interface engines (e.g., Cloverleaf, Rhapsody, Mirth), and app servers
let IRISPorts = dynamic([1972, 52773, 51773]);
let ApprovedSources = dynamic(["10.10.5.10", "10.10.8.15", "10.10.8.16"]);
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where DestinationPort in (IRISPorts)
| where DeviceAction !in ("deny", "drop", "blocked")
| where SourceIP !in (ApprovedSources)
| summarize ConnectionCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated)
by SourceIP, DestinationIP, DestinationPort, DeviceProduct
| order by ConnectionCount desc;
// Correlate: authentication events on IRIS hosts following network exposure windows
SecurityEvent
| where TimeGenerated > ago(7d)
| where EventID == 4624 and LogonType in (3, 10)
| where IpAddress !in (ApprovedSources)
| summarize LogonCount = count() by Computer, Account, IpAddress, LogonType
| order by LogonCount desc;
-- Inventory IRIS for Health hosts for unencrypted listeners on default ports
-- Run against IRIS server endpoints to validate whether Superserver/Web Gateway
-- are exposed without TLS and which processes hold the sockets
SELECT Pid, Name, LocalAddress, LocalPort, RemoteAddress, RemotePort, Status
FROM netstat()
WHERE LocalPort in (1972, 52773, 51773)
AND Status =~ 'LISTEN'
-- Identify the owning binaries to confirm IRIS processes (irisdb/ISCAgent on Linux, irisdb.exe on Windows)
SELECT Pid, Name, Exe, CommandLine, Username
FROM pslist()
WHERE Name =~ 'iris|ISCAgent|cache'
# Audit IRIS for Health TLS posture and report findings - run on IRIS Windows hosts
# Validates listening ports, checks TLS configuration registry keys, and flags exposure
$irisPorts = @(1972, 52773, 51773)
$report = @()
Write-Host "=== InterSystems IRIS for Health TLS Exposure Audit ===" -ForegroundColor Cyan
# 1. Enumerate listening IRIS ports and owning processes
foreach ($port in $irisPorts) {
$listeners = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue
foreach ($l in $listeners) {
$proc = Get-Process -Id $l.OwningProcess -ErrorAction SilentlyContinue
$bindScope = if ($l.LocalAddress -in @('0.0.0.0','::')) { 'EXPOSED-ALL-INTERFACES' } else { "Bound to $($l.LocalAddress)" }
$report += [PSCustomObject]@{
Port = $port
Process = $proc.ProcessName
PID = $l.OwningProcess
Binding = $bindScope
Finding = if ($bindScope -eq 'EXPOSED-ALL-INTERFACES') { 'REVIEW: cleartext listener reachable network-wide' } else { 'Bound locally - lower risk' }
}
}
}
# 2. Check for IRIS instance configuration - query iris list for installed instances
$irisCmd = Get-Command iris -ErrorAction SilentlyContinue
if ($irisCmd) {
Write-Host "`nInstalled IRIS instances:" -ForegroundColor Yellow
iris list 2>$null
Write-Host "`nACTION: For each instance, verify %SuperServer and Web Gateway TLS settings via:"
Write-Host " Management Portal > System Administration > Security > SSL/TLS Configurations"
Write-Host " Confirm 'Enabled' = Yes for %SuperServer/TLS and all Web Server connections use HTTPS`n"
} else {
Write-Host "IRIS CLI not found on this host - verify manually on IRIS servers." -ForegroundColor Yellow
}
# 3. Export findings
$report | Format-Table -AutoSize
$report | Export-Csv -Path "C:\IRIS_TLS_Audit_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
Write-Host "Report exported. Any EXPOSED-ALL-INTERFACES finding on a production IRIS host without TLS enabled is a CVE-2026-111594 exposure." -ForegroundColor Red
#!/bin/bash
# Audit IRIS for Health listeners and TLS posture on Linux IRIS hosts
# Run as root or with sudo on each IRIS server
echo "=== IRIS for Health Cleartext Exposure Audit (CVE-2026-111594) ==="
echo "--- [1] Listening IRIS ports (1972 Superserver, 52773 Web Gateway, 51773) ---"
ss -tlnp | grep -E ':(1972|52773|51773)' || echo "No IRIS listeners found on this host"
echo ""
echo "--- [2] IRIS instances installed ---"
iris list 2>/dev/null || /usr/bin/iris list 2>/dev/null || echo "iris CLI not in PATH - check /usr/irissys/bin"
echo ""
echo "--- [3] Check for cleartext captures in flight (evidence of sniffing on this host) ---"
ps aux | grep -E 'tcpdump|tshark|wireshark|dumpcap' | grep -v grep || echo "No capture tools running"
echo ""
echo "--- [4] Verify TLS is enforced: inspect IRIS SSL configurations ---"
echo "Run inside iris session: iris session <INSTANCE>"
echo "Then execute:"
echo ' Do ##class(Security.SSLConfigs).List()'
echo "Confirm the Superserver and Web Gateway reference an enabled TLS configuration."
echo ""
echo "--- [5] Restrict Management Portal to admin subnet via host firewall (interim control) ---"
echo "Example: iptables -A INPUT -p tcp --dport 52773 -s 10.10.5.0/28 -j ACCEPT"
echo " iptables -A INPUT -p tcp --dport 52773 -j DROP"
echo ""
echo "REMEDIATION: Enable TLS on Superserver, Web Gateway, and all interoperability"
echo "listeners per InterSystems advisory ICSMA-26-295-01. Never expose 52773 or 1972"
echo "to untrusted segments without TLS enforced."
Remediation
The fix for CVE-2026-111594 is not a binary patch — it is a configuration posture correction that every IRIS for Health operator must perform and validate. Execute in this order:
- Inventory and verify immediately. Identify every IRIS for Health instance on versions 2026.2.0.221, 2026.1.0.235, and 2025.3.0.226 (and do not ignore older supported versions — the same insecure default exists elsewhere). For each instance, confirm TLS status on: the Superserver (port 1972), the Web Gateway / Management Portal (52773), mirroring traffic between failover members, and every Interoperability production listener (HL7 MLLP, HTTP/SOAP services, FTP adapters).
- Enable TLS on all network-facing services. Configure and enable SSL/TLS configurations in the Management Portal (System Administration → Security → SSL/TLS Configurations), bind the Superserver to TLS, and force HTTPS on the Web Gateway. Deploy certificates from your enterprise PKI or a trusted CA — self-signed certs in clinical integration paths create brittle workarounds that get disabled.
- Rotate credentials that may have transited cleartext. Any account — service accounts for interface engines, integration credentials,
_SYSTEMand administrative accounts — that authenticated over an unencrypted session must be considered compromised. Rotate them, prioritizing high-privilege accounts and any credentials shared across systems (a HIPAA reportable event may already have occurred; engage your privacy officer). - Segment and restrict as compensating controls. Until TLS is fully deployed: restrict Management Portal access to jump hosts via host firewall and network ACLs, isolate IRIS Superserver traffic to approved interface-engine subnets, and place IRIS servers behind NDR/IDS sensors watching ports 1972/52773.
- Rotate integration endpoints to encrypted alternatives. MLLP over TLS, HTTPS-based FHIR endpoints, and SFTP replace their cleartext counterparts. Coordinate with downstream systems — interface engines (Rhapsody, Cloverleaf, Mirth, corepoint) will need matching configuration changes.
- Follow the official advisory. Apply vendor guidance from ICSMA-26-295-01 and contact InterSystems Worldwide Response Center (WRC) for version-specific hardening guidance. Per CISA's standard ICS advisory posture, organizations should report suspected exploitation to CISA's 24/7 Operations Center.
- Document for HIPAA. Cleartext PHI transmission is a Security Rule violation (45 CFR §164.312(e) — transmission security). Your remediation record, risk assessment, and credential-rotation evidence belong in your compliance file; if interception is suspected, breach-notification analysis under §164.400 is mandatory.
The broader lesson for healthcare security programs: insecure defaults are vulnerabilities, and vendor-shipped cleartext configurations in clinical data platforms represent systemic risk across the entire sector. Add TLS-posture validation to your IRIS baseline configuration audit, your change-control gates, and your annual penetration test scope.
Related Resources
Security Arsenal Healthcare Cybersecurity AlertMonitor Platform Book a SOC Assessment healthcare Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.