J4Care dcm4che Vulnerability Exposure
An adversary is exploiting unauthenticated REST services or malformed JPEG parsing in dcm4chee-arc-light to delete medical records or cause a denial-of-service condition on exposed healthcare assets.
Based on research by CISA 2026-10-16 8 steps · 3 queries T1190 T1485 T1565
Brief
Risk to Medical Imaging Infrastructure
CISA recently published an advisory, CISA Advisory: J4Care dcm4che (https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-288-02), regarding vulnerabilities in the dcm4chee-arc-light imaging system. These flaws allow unauthenticated attackers to manipulate storage status or trigger denial-of-service conditions via malformed JPEG files. Because these systems handle sensitive patient data, unauthorized file deletion (CVE-2026-97851) poses a direct risk to clinical operations and data integrity.
Scoping Vulnerable Assets
The hunt begins by identifying every host running the affected software. The first query searches the software inventory for packages containing dcm4chee with a version matching the vulnerable 5.35.1 release. This scoping phase ensures that subsequent, more intensive behavioral queries focus only on the relevant attack surface within the clinical network.
Baselining REST API Activity
Once we identify vulnerable hosts, the hunt examines HTTP activity for rare or anomalous requests to storage services. We target the storage status-change REST endpoints, which do not require authentication in the vulnerable versions. The query stacks these requests by path, query parameters, and source IP. We look for rare interactions (seen on three or fewer hosts) that suggest an external actor is manipulating the storage state of medical images.
Corroborating File Impact
The third phase pivots to the file system to verify if REST API calls resulted in data loss. We monitor for file deletions or modifications involving the dcm4chee process and files with the .dcm extension or paths containing DICOM data. By correlating a rare REST API call with a physical file deletion on the same host, an analyst can confirm successful exploitation rather than just exposure.
Blind Spots
This hunt has two primary limitations. First, if the environment lacks HTTP telemetry or if the web server does not log specific REST paths, an adversary could delete records without leaving a trace in the network logs. Second, we cannot directly identify the malformed JPEG exploit from metadata alone. Identifying the resulting denial-of-service requires deep packet inspection of the HTTP body or granular CPU metrics that distinguish application hangs from normal high-load processing.
Running the Hunt
This playbook is available in the open hunt.md format. You can import it into Huntbase or any hunt.md-aware runtime to execute the queries across your estate. The hunt is designed for periodic execution to ensure any new deployments of vulnerable software are identified and monitored for anomalous management activity.
Steps
-
Identify vulnerable imaging systems
Query · scopingLocate hosts running the specific version of dcm4chee-arc-light identified in the CISA advisory.
reads hb_software_inventorysqlSELECT device_hostname, package_name, package_version, install_path, vendor_name FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%dcm4chee%' AND package_version = '{{affected_version}}'What a hit looks like. A list of hostnames and paths where the vulnerable software is installed. Silence indicates no hosts are running the target version.
-
Rare REST API access to storage services
Query · baselineStack-count HTTP requests to the storage status-change service to identify unauthorized or anomalous management activity.
reads hb_http_activitysqlSELECT url_path, url_query, src_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, COUNT(*) AS request_count FROM hb_http_activity WHERE (LOWER(url_path) LIKE '%/storage/status%' OR LOWER(url_path) LIKE '%/dcm4chee-arc/%') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) GROUP BY url_path, url_query, src_endpoint_ip HAVING host_count <= 3 ORDER BY host_count ASC, request_count DESCWhat a hit looks like. Anomalous REST API calls targeting storage deletion or status change states from unexpected source IPs. Rare requests suggest unauthorized manipulation.
-
DICOM file deletions and overwrites
Query · enrichmentCorroborate REST API activity by identifying actual file system deletions of medical imaging data on the scoped hosts.
reads hb_file_activitysqlSELECT device_hostname, process_name, file_path, activity_name, time FROM hb_file_activity WHERE activity_id IN (4, 3) AND (LOWER(file_path) LIKE '%.dcm' OR LOWER(file_path) LIKE '%/dicom/%') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)What a hit looks like. Rows indicating that the dcm4chee process or a related scheduler deleted or updated .dcm files on disk. Large-scale deletions on exposed hosts are high-confidence signals of exploitation.
-
Analyze exposed host behavior
Agent triageAnalyze whether the vulnerable hosts show a pattern of unauthorized REST manipulation followed by actual file impact.
-
Route based on analysis
DecisionDirect the analyst to either an immediate remediation review if exploitation is suspected or a standard close-out if the systems are simply vulnerable.
-
Remediation and vulnerability review
Analyst taskExecute emergency patching and audit medical data integrity.
-
Standard close-out
Analyst taskDocument the absence of exploitation while noting the vulnerability status.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Identification of Vulnerable Imaging Systems T1190 |
Yes | identify-vulnerable-imaging-systems |
| Unauthorized REST API Access T1190 |
Yes | rare-rest-api-access |
| Exploitation of JPEG Parser T1190 |
Not visible | The JPEG parser vulnerability involves malicious payloads in the HTTP body, which hb_http_activity does not capture. |
| Medical Data Destruction and Forgery T1485 · T1565 |
Yes | dicom-file-deletions |
| Infinite Loop Denial of Service T1498 |
Not visible | Process activity surfaces lack the granular CPU utilization metrics needed to distinguish an infinite loop from normal high-load processing. |
Blind spots
- Needs hb_http_activity or web server access logs. An adversary could delete records without a trace in the HTTP surface, leaving only file-level evidence. It would answer whether unauthorized REST calls were made if logging is disabled or the proxy does not log the specific dcm4che path.
- Needs Deep packet inspection or full HTTP body logging. The DoS component of the advisory cannot be directly proven from metadata alone; we only see the high CPU aftermath or app hang. It would answer whether a specially crafted JPEG was sent to trigger the parser loop.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
affected_version | string | 5.35.1 | Vulnerable version of dcm4chee-arc-light. |
lookback_days | number | 14 | Days of history to examine for behavior. |
scope_hosts | list[host] | — | Hosts identified as vulnerable; leave empty to hunt across the entire estate. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Web server / proxy logs | siem | network |
Source
---
analysis: A single detection rule might alert on a specific CVE string, but this hunt
correlates the presence of the vulnerable software with rare management behavior
and the subsequent physical deletion of DICOM files, providing the context an analyst
needs to confirm impact.
blind_spots:
- id: missing-http-telemetry
question: whether unauthorized REST calls were made if logging is disabled or the
proxy does not log the specific dcm4che path
requires: hb_http_activity or web server access logs
risk: An adversary could delete records without a trace in the HTTP surface, leaving
only file-level evidence.
stage: unauthorized-rest-api-manipulation
- id: http-body-payloads
question: whether a specially crafted JPEG was sent to trigger the parser loop
requires: Deep packet inspection or full HTTP body logging
risk: The DoS component of the advisory cannot be directly proven from metadata
alone; we only see the high CPU aftermath or app hang.
stage: malformed-jpeg-parsing
coverage:
- stage: vulnerability-exposure-and-discovery
status: covered
steps:
- identify-vulnerable-imaging-systems
- stage: unauthorized-rest-api-manipulation
status: covered
steps:
- rare-rest-api-access
- blind_spot: http-body-payloads
reason: The JPEG parser vulnerability involves malicious payloads in the HTTP body,
which hb_http_activity does not capture.
stage: malformed-jpeg-parsing
status: not_visible
- stage: data-destruction-and-manipulation
status: covered
steps:
- dicom-file-deletions
- reason: Process activity surfaces lack the granular CPU utilization metrics needed
to distinguish an infinite loop from normal high-load processing.
stage: application-denial-of-service
status: not_visible
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: Medical imaging infrastructure is a critical asset. Exposure to unauthenticated
data destruction vulnerabilities represents a severe risk to patient care and
regulatory compliance.
methodology: model-assisted
trigger: intel-report
hypothesis: An adversary is exploiting unauthenticated REST services or malformed
JPEG parsing in dcm4chee-arc-light to delete medical records or cause a denial-of-service
condition on exposed healthcare assets.
labels:
- hunt
- attack.t1190
- attack.t1485
- attack.t1565
- impact
- initial access
name: J4Care dcm4che Vulnerability Exposure
parameters:
affected_version:
default: 5.35.1
description: Vulnerable version of dcm4chee-arc-light.
type: string
lookback_days:
default: '14'
description: Days of history to examine for behavior.
type: number
scope_hosts:
default: []
description: Hosts identified as vulnerable; leave empty to hunt across the entire
estate.
type: list[host]
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-288-02
gates:
- dry-run
- lint
- critic
model: hb_google/gemini-3-flash-preview
rationale: The hunt should initially focus on systems identified as internet-facing
or located in clinical networks. Use the software inventory to narrow the behavior
queries to only affected assets.
references:
- name: 'CISA Advisory: J4Care dcm4che'
url: https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-288-02
related:
- hunt: dicom-protocol-exploitation
reason: This hunt focuses on the REST/HTTP management interface vulnerabilities,
not the binary DICOM protocol itself.
relation: out-of-scope-alternative
scenario:
stages:
- name: Identification of Vulnerable Imaging Systems
observables:
- J4Care dcm4chee-arc-light version 5.35.1
- dcm4che-arc-light software installation
- Publicly exposed medical imaging interfaces on port 80 or 443
slug: vulnerability-exposure-and-discovery
tactic: initial-access
techniques:
- T1190
- name: Unauthorized REST API Access
observables:
- HTTP requests to storage status-change REST service
- DICOM instance location records changed to deletion-related states
- REST parameters set to TO_DELETE state
slug: unauthorized-rest-api-manipulation
tactic: initial-access
techniques:
- T1190
- name: Exploitation of JPEG Parser
observables:
- Truncated JPEG streams sent to the application
- Specially crafted JPEG payloads targeting JPEGParser
slug: malformed-jpeg-parsing
tactic: initial-access
techniques:
- T1190
- name: Medical Data Destruction and Forgery
observables:
- PurgeStorageScheduler deleting DICOM objects from storage
- DICOM instance records remaining in database without corresponding files
- Injection of forged medical studies
- Reassignment of patient records in the database
- Overwriting of medical files on disk
slug: data-destruction-and-manipulation
tactic: impact
techniques:
- T1485
- T1565
- name: Infinite Loop Denial of Service
observables:
- High CPU utilization by dcm4chee-arc-light processes
- JPEGParser entering infinite loop states
- Application unresponsiveness or denial-of-service reports
slug: application-denial-of-service
tactic: impact
techniques:
- T1498
summary: Attackers can exploit multiple vulnerabilities in J4Care dcm4chee-arc-light
medical imaging systems, including missing authorization in REST services and
infinite loops in image parsing. Successful exploitation allows for the unauthorized
deletion of medical images, disclosure of patient records, and the creation of
denial-of-service conditions through resource exhaustion.
severity: high
targets:
analyst:
name: Tier-2 analyst
role: analyst
endpoint:
category: endpoint
name: Endpoint telemetry (hb_ surfaces)
telemetry:
- endpoint
hunter:
agent: true
name: Hunt agent
web:
category: siem
name: Web server / proxy logs
telemetry:
- network
tlp: clear
type: investigation
---
# J4Care dcm4che Vulnerability Exposure
This hunt identifies medical imaging systems running vulnerable versions of J4Care dcm4chee-arc-light and looks for signs of exploitation. It focuses on unauthorized use of the storage status-change REST service (CVE-2026-97851) and evidence of DICOM file manipulation or deletion. Because these vulnerabilities allow for data destruction and forgery without authentication, the hunt baselines REST activity to identify rare or unauthorized interactions.
## identify-vulnerable-imaging-systems
<!-- Identify vulnerable imaging systems -->
Locate hosts running the specific version of dcm4chee-arc-light identified in the CISA advisory.
```sqlite target=endpoint role=scoping params=(affected_version=affected_version)
~~~yaml
expected: A list of hostnames and paths where the vulnerable software is installed.
Silence indicates no hosts are running the target version.
reads:
- device_hostname
- package_name
- package_version
- install_path
- vendor_name
silence: not_evidence_of_absence
source: hb_software_inventory
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, package_name, package_version, install_path, vendor_name FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%dcm4chee%' AND package_version = '{{affected_version}}'
```
## rare-rest-api-access
<!-- Rare REST API access to storage services -->
Stack-count HTTP requests to the storage status-change service to identify unauthorized or anomalous management activity.
```sqlite target=web role=baseline params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: Anomalous REST API calls targeting storage deletion or status change states
from unexpected source IPs. Rare requests suggest unauthorized manipulation.
prevalence:
by: device_hostname
key:
- url_path
- url_query
- src_endpoint_ip
rare_below: 3
reads:
- url_path
- url_query
- src_endpoint_ip
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT url_path, url_query, src_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, COUNT(*) AS request_count FROM hb_http_activity WHERE (LOWER(url_path) LIKE '%/storage/status%' OR LOWER(url_path) LIKE '%/dcm4chee-arc/%') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) GROUP BY url_path, url_query, src_endpoint_ip HAVING host_count <= 3 ORDER BY host_count ASC, request_count DESC
```
## dicom-file-deletions
<!-- DICOM file deletions and overwrites -->
Corroborate REST API activity by identifying actual file system deletions of medical imaging data on the scoped hosts.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
expected: Rows indicating that the dcm4chee process or a related scheduler deleted
or updated .dcm files on disk. Large-scale deletions on exposed hosts are high-confidence
signals of exploitation.
reads:
- device_hostname
- process_name
- file_path
- activity_name
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, process_name, file_path, activity_name, time FROM hb_file_activity WHERE activity_id IN (4, 3) AND (LOWER(file_path) LIKE '%.dcm' OR LOWER(file_path) LIKE '%/dicom/%') AND time >= datetime('now', '-{{lookback_days}} days') AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)
```
## analyze-exposure
<!-- Analyze exposed host behavior -->
```agent target=hunter
cite: required
context:
- identify-vulnerable-imaging-systems
- rare-rest-api-access
- dicom-file-deletions
max_iterations: 3
objective: Determine if any host running vulnerable J4Care software shows unauthorized
REST API interactions that correlate with DICOM file deletions or updates.
success_criteria: A host-by-host assessment citing specific HTTP requests and corresponding
file activity.
tools:
- endpoint
- web
```
## route-findings
<!-- Route based on analysis -->
if~: "The analysis shows unauthorized REST interactions paired with file deletions on at least one vulnerable host." (confidence: medium, judge=hunter)
then: → remediation-review
indeterminate: → remediation-review
unavailable: → remediation-review (blind_spot: missing-http-telemetry)
else: → standard-close-out
## remediation-review
<!-- Remediation and vulnerability review -->
```manual target=analyst
Upgrade all dcm4chee-arc-light installations to version 5.35.2 or later. Review DICOM storage for missing objects where database records still exist. Check logs for the TO_DELETE parameter in REST calls.
```
→ end
## standard-close-out
<!-- Standard close-out -->
```manual target=analyst
Record the identified vulnerable versions. Schedule a standard maintenance window for patching. Monitor for new alerts on these systems.
```
→ end
Run it
Take this hunt into your environment.
Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.
Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, critic, then reviewed by a person.