Thermo Fisher Torrent Suite Path Traversal Exposure
An authenticated intruder is exploiting a path traversal vulnerability (CVE-2026-107777) in Thermo Fisher Torrent Suite Software to exfiltrate sensitive configuration and system files from healthcare servers.
Based on research by CISA 2026-10-16 9 steps · 4 queries T1090.003 T1133 T1190 T1566
Brief
Vulnerability Context
CISA published advisory ICSMA-26-288-01 detailing a path traversal vulnerability in Thermo Fisher Torrent Suite Software. This software manages sensitive genomic and medical data, making it a high-value target for intruders. The vulnerability, tracked as CVE-2026-107777, allows an authenticated user to access files outside the intended web directory. This hunt provides a structured method to identify vulnerable servers and determine if exploitation occurred.
How the Hunt Flows
The hunt starts by narrowing the scope to relevant assets. The first query uses software inventory data to list every host running Torrent Suite version 5.18 or lower. This prevents the hunt from processing data for patched or irrelevant systems. Next, the hunt baselines authentication activity. Because this vulnerability requires a valid account, the hunt identifies rare successful sign-ins to the vulnerable servers. An analyst looks for accounts logging in from unusual geographies or during non-business hours, as these often precede exploitation. The third phase examines HTTP activity for behavioral indicators. The query searches for dot-dot-slash sequences in URL paths. The hunt specifically flags requests that return a 200 OK status, which suggests the server processed the traversal attempt successfully. The final phase confirms the breach by monitoring file system access. It identifies the web service account—such as apache or nginx—reading sensitive files from a predefined list. When a web process reads /etc/passwd or a .env file, it confirms the adversary successfully bypassed the web root.
Beyond Simple Detection
This is structured as a hunt because simple alerts on traversal strings often produce excessive false positives from vulnerability scanners or administrative scripts. By correlating the software version with rare authentication and the actual file-read event on the host, the hunt provides the context needed to confirm a compromise. It transforms a high-volume signal into a high-fidelity investigation.
Blind Spots and Limitations
This hunt relies on comprehensive HTTP logging. If the environment does not capture full URL strings, unsuccessful traversal probes remain invisible. Additionally, the hunt does not address the initial access vector. If an attacker acquired credentials through phishing, that activity occurs on surfaces like email or proxy logs which this hunt does not include.
How to Run the Hunt
This hunt exists as an open hunt.md playbook. You can import this file into Huntbase or any runtime that supports the hunt.md format. The playbook automates the pivots between inventory, authentication, and file behavior, allowing an analyst to reach a verdict quickly.
Steps
-
Inventory vulnerable Torrent Suite installations
Query · scopingIdentify hosts running Thermo Fisher Torrent Suite Software version 5.18 or lower to narrow the hunt scope.
reads hb_software_inventorysqlSELECT device_hostname, package_name, package_version, install_path FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%torrent suite%' AND package_version < '5.2'What a hit looks like. A list of hosts running versions prior to 5.2. Silence means no vulnerable software is installed or the inventory is out of date.
-
Rare authentication on Torrent servers
Query · baselineIdentify anomalous authenticated access, as the vulnerability requires a valid account for exploitation.
reads hb_auth_signinsqlSELECT actor_user_name, device_hostname, src_location_country, src_endpoint_ip, COUNT(*) AS login_count, MIN(time) AS first_login, MAX(time) AS last_login FROM hb_auth_signin WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND status_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, device_hostname, src_location_country, src_endpoint_ip HAVING login_count < 5 ORDER BY login_count ASCWhat a hit looks like. Accounts with very few successful logins to the targeted servers. In healthcare systems, even a single login from an unusual geography is more significant than the raw count.
-
HTTP path traversal attempts
Query · detection candidateFind HTTP requests containing dot-dot-slash sequences that attempt to break out of the web root.
reads hb_http_activitysqlSELECT device_hostname, src_endpoint_ip, url_full, status_code, user_agent, time FROM hb_http_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND (instr(LOWER(url_full), '../') > 0 OR instr(LOWER(url_full), '..\') > 0) AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. HTTP requests targeting the Torrent Suite servers that include traversal characters. Requests returning a 200 OK status are highly suspicious as they indicate successful processing.
-
Sensitive file reads by web service
Query · enrichmentConfirm successful traversal by identifying the web service account reading files from the sensitive files list.
reads hb_file_activitysqlSELECT device_hostname, actor_user_name, process_name, file_path, time FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND (instr(LOWER(actor_user_name), 'www') > 0 OR instr(LOWER(actor_user_name), 'apache') > 0 OR instr(LOWER(actor_user_name), 'nginx') > 0 OR instr(LOWER(process_name), 'torrent') > 0) AND instr(',' || '{{sensitive_files}}' || ',', ',' || LOWER(file_path) || ',') > 0 AND activity_id = 2 AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. The web service account or Torrent process reading files that should not be accessible via the application. This confirms successful arbitrary file disclosure.
-
Analyze exposure and activity
Agent triageAssess whether vulnerable hosts show evidence of path traversal exploitation.
-
Route on verdict
DecisionDirect the hunt to remediation review if active exploitation is identified.
-
Remediation and access review
Analyst taskInstructions for the analyst to coordinate patching and audit accounts.
-
Close out
Analyst taskFinalize the hunt when no active exploitation is observed.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Exploitation of CVE-2026-107777 T1190 |
Yes | inventory-vulnerable-torrent-suite, http-path-traversal-activity |
| Arbitrary File Read T1190 |
Yes | web-service-file-reads |
| Access via Remote Services T1133 |
Yes | rare-auth-on-torrent-servers |
| Phishing for Credentials T1566 |
Not visible | No email or messaging telemetry is provided in the available surfaces. |
Blind spots
- Needs hb_http_activity (full access logs). Unsuccessful traversal probes or probes targeting cached data would not be seen without complete HTTP telemetry. It would answer whether path traversal attempts occurred without triggering file system events.
- Needs email_activity or proxy_logs. The hunt begins at the authentication stage; the precursor phishing activity is invisible to the provided surfaces. It would answer how the initial credentials for the authenticated traversal were acquired.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | List of hostnames running Torrent Suite Software; leave empty to search the whole estate. |
sensitive_files | list[path] | /etc/passwd, /etc/shadow, /etc/hosts, c:\windows\win.ini, c:\windows\system32\drivers\etc\hosts, web.config, .env | Sensitive files an attacker might target; provided defaults are lowercase for exact matching. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Identity / sign-in telemetry | identity | identity |
| Web server / proxy logs | siem | network |
Source
---
analysis: This hunt correlates software versions (inventory) with authenticated access
anomalies (prevalence) and multi-surface behavior (HTTP traversal and file reads)
to distinguish exploitation from benign administrative activity.
blind_spots:
- id: missing-web-logs
question: whether path traversal attempts occurred without triggering file system
events
requires: hb_http_activity (full access logs)
risk: Unsuccessful traversal probes or probes targeting cached data would not be
seen without complete HTTP telemetry.
stage: path-traversal-exploitation
- id: phishing-telemetry-gap
question: how the initial credentials for the authenticated traversal were acquired
requires: email_activity or proxy_logs
risk: The hunt begins at the authentication stage; the precursor phishing activity
is invisible to the provided surfaces.
stage: initial-access-phishing
coverage:
- stage: path-traversal-exploitation
status: covered
steps:
- inventory-vulnerable-torrent-suite
- http-path-traversal-activity
- stage: unauthorized-file-disclosure
status: covered
steps:
- web-service-file-reads
- stage: external-remote-service-access
status: covered
steps:
- rare-auth-on-torrent-servers
- blind_spot: phishing-telemetry-gap
reason: No email or messaging telemetry is provided in the available surfaces.
stage: initial-access-phishing
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: Torrent Servers manage sensitive genomic and healthcare data. File
disclosure via path traversal leads to significant regulatory violations and breach
of privacy. Verifying exploitation status is critical for patient data safety.
methodology: model-assisted
trigger: intel-report
hypothesis: An authenticated intruder is exploiting a path traversal vulnerability
(CVE-2026-107777) in Thermo Fisher Torrent Suite Software to exfiltrate sensitive
configuration and system files from healthcare servers.
labels:
- hunt
- attack.t1190
- attack.t1133
- attack.t1090.003
- attack.t1566
- collection
- initial access
name: Thermo Fisher Torrent Suite Path Traversal Exposure
parameters:
lookback_days:
default: '14'
description: Days of history to examine.
type: number
scope_hosts:
default: []
description: List of hostnames running Torrent Suite Software; leave empty to
search the whole estate.
type: list[host]
sensitive_files:
default:
- /etc/passwd
- /etc/shadow
- /etc/hosts
- c:\windows\win.ini
- c:\windows\system32\drivers\etc\hosts
- web.config
- .env
description: Sensitive files an attacker might target; provided defaults are lowercase
for exact matching.
type: list[path]
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-01
gates:
- dry-run
- lint
model: hb_google/gemini-3-flash-preview
rationale: Focus on servers running Torrent Suite Software. Prioritize internet-exposed
servers or those accessible via VPN, as authenticated traversal is the primary risk.
references:
- name: CISA Advisory ICSMA-26-288-01
url: https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-288-01
related:
- hunt: credential-harvesting-phishing-analysis
reason: Phishing detection requires email and network proxy surfaces not focused
on in this vulnerability-centric hunt.
relation: out-of-scope-alternative
scenario:
stages:
- name: Phishing for Credentials
observables:
- Links in unsolicited email messages
- Attachments in unsolicited email messages
- Social engineering lures
slug: initial-access-phishing
tactic: initial-access
techniques:
- T1566
- name: Access via Remote Services
observables:
- VPN connection attempts
- Successful authenticated logins to remote access gateways
slug: external-remote-service-access
tactic: initial-access
techniques:
- T1133
- name: Exploitation of CVE-2026-107777
observables:
- Torrent Suite Software version <= 5.18
- HTTP requests with dot-dot-slash (../) sequences in the URL path or query
- Targeting Thermo Fisher Torrent Suite Server
slug: path-traversal-exploitation
tactic: initial-access
techniques:
- T1190
- name: Arbitrary File Read
observables:
- Web service account accessing system files (e.g., /etc/passwd)
- Web service account accessing configuration files outside the web root
- Reads of arbitrary files on the Torrent Server
slug: unauthorized-file-disclosure
tactic: collection
techniques:
- T1190
summary: Authenticated attackers exploit a path traversal vulnerability (CVE-2026-107777)
in Thermo Fisher Torrent Suite Software versions 5.18 and earlier to read arbitrary
files accessible to the web service account. Access is typically gained through
stolen credentials via phishing or by leveraging external remote services like
VPNs.
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
identity:
category: identity
name: Identity / sign-in telemetry
telemetry:
- identity
web:
category: siem
name: Web server / proxy logs
telemetry:
- network
tlp: clear
type: investigation
---
# Thermo Fisher Torrent Suite Path Traversal Exposure
This hunt identifies servers running vulnerable versions (<= 5.18) of Thermo Fisher Torrent Suite Software and examines them for exploitation. It first scopes the estate using software inventory data, then baselines user authentication to identify rare or anomalous access. Finally, it searches for behavioral indicators: HTTP requests containing traversal sequences and the web service account reading files in sensitive system paths. This multi-surface approach ensures that even if web logs are missing or traversal characters are obfuscated, the downstream file access behavior is captured.
## inventory-vulnerable-torrent-suite
<!-- Inventory vulnerable Torrent Suite installations -->
Identify hosts running Thermo Fisher Torrent Suite Software version 5.18 or lower to narrow the hunt scope.
```sqlite target=endpoint role=scoping
~~~yaml
expected: A list of hosts running versions prior to 5.2. Silence means no vulnerable
software is installed or the inventory is out of date.
reads:
- device_hostname
- package_name
- package_version
- install_path
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 FROM hb_software_inventory WHERE LOWER(package_name) LIKE '%torrent suite%' AND package_version < '5.2'
```
## rare-auth-on-torrent-servers
<!-- Rare authentication on Torrent servers -->
Identify anomalous authenticated access, as the vulnerability requires a valid account for exploitation.
```sqlite target=identity role=baseline params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: Accounts with very few successful logins to the targeted servers. In healthcare
systems, even a single login from an unusual geography is more significant than
the raw count.
prevalence:
by: device_hostname
key:
- actor_user_name
rare_below: 5
reads:
- actor_user_name
- device_hostname
- src_location_country
- src_endpoint_ip
- status_id
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT actor_user_name, device_hostname, src_location_country, src_endpoint_ip, COUNT(*) AS login_count, MIN(time) AS first_login, MAX(time) AS last_login FROM hb_auth_signin WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND status_id = 1 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, device_hostname, src_location_country, src_endpoint_ip HAVING login_count < 5 ORDER BY login_count ASC
```
## http-path-traversal-activity
<!-- HTTP path traversal attempts -->
Find HTTP requests containing dot-dot-slash sequences that attempt to break out of the web root.
```sqlite target=web role=detection-candidate params=(scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
expected: HTTP requests targeting the Torrent Suite servers that include traversal
characters. Requests returning a 200 OK status are highly suspicious as they indicate
successful processing.
reads:
- device_hostname
- src_endpoint_ip
- url_full
- status_code
- user_agent
- time
silence: not_evidence_of_absence
source: hb_http_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, src_endpoint_ip, url_full, status_code, user_agent, time FROM hb_http_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND (instr(LOWER(url_full), '../') > 0 OR instr(LOWER(url_full), '..\') > 0) AND time >= datetime('now', '-{{lookback_days}} days')
```
## web-service-file-reads
<!-- Sensitive file reads by web service -->
Confirm successful traversal by identifying the web service account reading files from the sensitive files list.
```sqlite target=endpoint role=enrichment params=(scope_hosts=scope_hosts, lookback_days=lookback_days, sensitive_files=sensitive_files)
~~~yaml
expected: The web service account or Torrent process reading files that should not
be accessible via the application. This confirms successful arbitrary file disclosure.
reads:
- device_hostname
- actor_user_name
- process_name
- file_path
- activity_id
- time
silence: not_evidence_of_absence
source: hb_file_activity
verified: dry-run
verified_at: '2026-10-16'
~~~
SELECT device_hostname, actor_user_name, process_name, file_path, time FROM hb_file_activity WHERE (('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0)) AND (instr(LOWER(actor_user_name), 'www') > 0 OR instr(LOWER(actor_user_name), 'apache') > 0 OR instr(LOWER(actor_user_name), 'nginx') > 0 OR instr(LOWER(process_name), 'torrent') > 0) AND instr(',' || '{{sensitive_files}}' || ',', ',' || LOWER(file_path) || ',') > 0 AND activity_id = 2 AND time >= datetime('now', '-{{lookback_days}} days')
```
## triage-exposure
<!-- Analyze exposure and activity -->
```agent target=hunter
cite: required
context:
- inventory-vulnerable-torrent-suite
- rare-auth-on-torrent-servers
- http-path-traversal-activity
- web-service-file-reads
max_iterations: 5
objective: Review the authentication trends, HTTP requests, and file access events
to determine if any Thermo Fisher Torrent Suite Servers have been exploited via
CVE-2026-107777.
success_criteria: A verdict per host citing specific rows that indicate software version,
rare login activity, and specific file or HTTP indicators.
tools:
- endpoint
- identity
- web
```
## route-on-verdict
<!-- Route on verdict -->
if~: "the triage-exposure verdict indicates successful traversal attempts (HTTP 200) or sensitive file reads by a web service account" (confidence: high, judge=hunter)
then: → remediation-review
indeterminate: → remediation-review
unavailable: → remediation-review (blind_spot: missing-web-logs)
else: → close-out
## remediation-review
<!-- Remediation and access review -->
```manual target=analyst
1. Prioritize updating all Thermo Fisher Torrent Suite Software to version 5.22 or later. 2. Audit the logins identified in the rare authentication step; rotate credentials for any account that shows unusual activity or geographic anomalies. 3. Audit file system permissions to ensure the web service account cannot read sensitive system directories like /etc.
```
→ end
## close-out
<!-- Close out -->
```manual target=analyst
Document the vulnerable hosts found in the scoping step and ensure they are scheduled for patching. Confirm that no active traversal strings or sensitive file reads were detected during the lookback period.
```
→ 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, then reviewed by a person.