CUTSIGNcutting for sign — daily OSINT threat read
AI-generated verdict card, published automatically by the pipeline. Version 28, as of 2026-11-01; hype score 12. Written by a model from the stored public sources and not reviewed by a person; re-issued in place when the evidence changes (the URL stays). The detection-coverage table below is checked automatically from public sources and re-checked daily. Supersedes version 27. All cards · news: CVE-2024-47575 CVE-2024-26008 CVE-2025-61624 CVE-2024-26009

CL-STA-0954 chained FortiJump and KEV-listed CVE-2025-61624 to deploy PEERSTITCH on FortiGates

Patch now + Hunt / IRP1confidence: highP1 +2deep read +1KEV CVE-2025-61624 +3day 3 of the story +25 publishers +1five or more publishers +1primary source +1actor named +1

Unit 42 says CL-STA-0954 (UNC5820) breached a telecom MSP's FortiManager via CVE-2024-47575, then used CVE-2025-61624 to inject PEERSTITCH into miglogd and iked on managed FortiGates [S1][S5]. CISA lists CVE-2025-61624 as exploited [S3][S4]. Today: capture evidence before rebooting, run the four hunts, rotate secrets held in device configs, and apply FG-IR-26-122 or its virtual patch [S6].

Triage: CVE-2025-61624 is KEV-listed as exploited [S3][S4]. One FortiManager compromise exposed configs and keys for 500+ managed FortiGates [S1].

Unit 42's primary research describes the intrusion, and CISA's KEV listing confirms exploitation of CVE-2025-61624 [S1][S3][S4]. SecurityWeek's linked page returned unrelated content, so it corroborates nothing [S2].

Changed since version 27

What happened

Timeline

2024-10-23CVE-2024-47575 (FortiJump) listed in CISA KEV S3
2026-10-15Unit 42 publishes PEERSTITCH / CL-STA-0954 research S1
2026-10-16The Hacker News reports the campaign; Fortinet advisory FG-IR-26-122 referenced S5
2026-10-16CISA adds CVE-2025-61624 to KEV S4
2026-10-20SecurityWeek covers the campaign; linked page content could not be read S2

Detect

FortiGate auto-script objects with path traversal names · FortiOS system event / config change logs (syslog or FortiAnalyzer forward)

index=* devid=* type="event" subtype="system" (cfgpath="system.auto-script" OR msg="*auto-script*") (cfgobj="*../*" OR msg="*../*") | stats count min(_time) as first_seen max(_time) as last_seen values(action) as action values(cfgobj) as cfgobj values(msg) as msg by devname user ui

A hit means: An auto-script object with ../ in its name was created, edited or deleted. Unit 42 names ../../../../setup and ../../tmp/apache2/conf/md-acme.conf [S1]. Treat a hit as likely compromise. The actor deletes auto-scripts after use, so a delete event alone matters [S1].

Traffic, web or SSL-VPN sessions involving campaign infrastructure · FortiGate traffic, web filter and VPN event logs; proxy/egress logs

index=* (srcip IN ("23.240.77.233","47.18.167.159","45.32.41.202","198.199.122.22") OR dstip IN ("23.240.77.233","47.18.167.159","45.32.41.202","198.199.122.22") OR remip IN ("23.240.77.233","47.18.167.159","45.32.41.202","198.199.122.22") OR url="*/pM.js" OR (dstport=8085 (url="*/a.js" OR url="*/a.wasm" OR url="*/b.js" OR url="*/dd")) OR (dstport=8084 (url="*/acme/*" OR url="*/directory")) OR url="*/acme/new-acct*" OR url="*/acme/finalize/*" OR url="*/acme/order/*" OR url="*/acme/authz/*") | stats count min(_time) as first_seen max(_time) as last_seen values(dstport) as dstport values(url) as url values(action) as action values(user) as user by devname srcip dstip

A hit means: A device contacted campaign infrastructure. A fetch of pM.js from 23.240.77.233:8085 or 47.18.167.159:8085, or of a.js, a.wasm, b.js or dd on port 8085, matches the component download [S1]. Port 8084 /directory and /acme/ paths match the mod_md SSH reverse shell [S1]. Inbound SSL-VPN logins from these IPs match stolen-credential use [S1]. ACME paths alone can be benign if the peer is not a campaign IP.

Logging daemons killed, crashlogs cleared, or FortiGateCloud admin activity · FortiOS CLI audit and system event logs

index=* devid=* (msg="*killall*miglogd*" OR msg="*killall*syslogd*" OR msg="*crashlog clear*" OR user="FortiGateCloud") | stats count min(_time) as first_seen max(_time) as last_seen values(msg) as msg values(ui) as ui by devname user

A hit means: Someone stopped logging or cleared crash logs, matching the actor's log tampering [S1]. An admin named FortiGateCloud pulling running configs matches the FortiManager impersonation [S1]. Also check each device's syslog stream for gaps. A successful kill produces silence, not events.

Rogue Virtual FortiGate registration on FortiManager · FortiManager event / device management logs

index=* ("FMG-VMTM23017412" OR ("Virtual FortiGate" AND "localhost") OR ".tm") devid=* | stats count min(_time) as first_seen max(_time) as last_seen values(msg) as msg by devname
FROM logs-* | WHERE observer.serial_number IS NOT NULL AND (message LIKE "*FMG-VMTM23017412*" OR (message LIKE "*Virtual FortiGate*" AND message LIKE "*localhost*") OR message LIKE "*.tm*") | STATS count = COUNT(*), first_seen = MIN(@timestamp), last_seen = MAX(@timestamp), msg = VALUES(message) BY observer.name

A hit means: The rogue Virtual FortiGate (localhost, serial FMG-VMTM23017412) appears, or a .tm archive is referenced [S1]. Treat that FortiManager and every device it manages as in scope. Absence does not clear you, because the actor may use other serials. The bare .tm term is noisy, so confirm by context.

Verify

Scope

Affected

Only if

Not affected if

None stated by the sources.

Fixed in: See Fortinet FG-IR-26-122 [S6]. The provided material does not state fixed versions.

Enumerate

Contain

Eradicate

Recover

Re-enter the loop when

Debrief

Detection coverage — checked automatically

CategorySourceStatus
VendorImpacted vendor / CERT advisorypublished — primary source among the thread's sources: https://unit42.paloaltonetworks.com/fortimanager-cve-2024-47575-peerstitch-malware/
GovernmentCISA KEV · CVE-2024-26009nothing found — not in the catalog
GovernmentCISA KEV · CVE-2024-47575published — listed 2024-10-23, federal due 2024-11-13
GovernmentCISA KEV · CVE-2025-61624published — listed 2026-10-16, federal due 2026-10-19
ReferenceNVD · CVE-2024-26009check failed — The operation was aborted due to timeout
ReferenceNVD · CVE-2024-47575check failed — The operation was aborted due to timeout
ReferenceNVD · CVE-2025-61624check failed — The operation was aborted due to timeout
VM scannersQualys · CVE-2024-26009nothing found — no ThreatPROTECT or Security Blog post names it; the QID knowledge base needs a login
VM scannersQualys · CVE-2024-47575published — ThreatPROTECT: CISA Added Fortinet FortiManager Vulnerability to its Known Exploitable Vulnerabilities Catalog (CVE-2024-47575)
VM scannersQualys · CVE-2025-61624nothing found — no ThreatPROTECT or Security Blog post names it; the QID knowledge base needs a login
VM scannersRapid7 · CVE-2024-26009published — InsightVM coverage stated
VM scannersRapid7 · CVE-2024-47575published — InsightVM coverage stated · 1 Metasploit module (not linked)
VM scannersRapid7 · CVE-2025-61624published — InsightVM coverage stated
VM scannersTenable · CVE-2024-26009published — 1 plugin: 249169 Fortinet Fortigate Weak authentication - FGFM protocol (FG-IR-24-042)
VM scannersTenable · CVE-2024-47575published — 1 plugin: 209559 Fortinet FortiManager Missing Authentication (FG-IR-24-423)
VM scannersTenable · CVE-2025-61624published — 1 plugin: 306463 Fortinet Fortigate Path Traversal in CLI (FG-IR-26-122)
EDR / endpoint VMCrowdStrike blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMMicrosoft Security blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMSentinelOne blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMSentinelOne Labsnothing found — no post names it among the feed's 10 newest items
WAF / edgeAkamai blognothing found — no post names it among the feed's 1185 newest items
WAF / edgeCloudflare WAF managed-ruleset changelognothing found — no post names it among the feed's 139 newest items
Cloud / containerWiz blognothing found — no post names it among the feed's 720 newest items
Linux distro errataDebian tracker · CVE-2024-26009published — tracker entry
Linux distro errataDebian tracker · CVE-2024-47575published — tracker entry
Linux distro errataDebian tracker · CVE-2025-61624published — tracker entry
Linux distro errataRed Hat · CVE-2024-26009nothing found — no Red Hat entry
Linux distro errataRed Hat · CVE-2024-47575nothing found — no Red Hat entry
Linux distro errataRed Hat · CVE-2025-61624nothing found — no Red Hat entry
IDS / researchCisco Talos blognothing found — no post names it among the feed's 15 newest items
IDS / researchEmerging Threats open · CVE-2024-26009nothing found — no open rule names it (exploit, web_server, web_specific_apps sets)
IDS / researchEmerging Threats open · CVE-2024-47575published — 5 Suricata rules: sid 2057690, 2057691, 2057692, 2057693, 2057694
IDS / researchEmerging Threats open · CVE-2025-61624nothing found — no open rule names it (exploit, web_server, web_specific_apps sets)
Detection contentElastic detection rulesnothing found — no rule file names PEERSTITCH / CVE-2024-47575 / CVE-2025-61624
Detection contentElastic Security Labsnothing found — no post names it among the feed's 102 newest items
Detection contentSigmaHQ rulesnothing found — no rule file names PEERSTITCH / CVE-2024-47575 / CVE-2025-61624
Detection contentSplunk ESCUnothing found — no rule file names PEERSTITCH / CVE-2024-47575 / CVE-2025-61624
CommunityNuclei template · CVE-2024-26009nothing found — no template under http/cves
CommunityNuclei template · CVE-2024-47575nothing found — no template under http/cves
CommunityNuclei template · CVE-2025-61624nothing found — no template under http/cves
MSSP / IR firmsArctic Wolf blognothing found — no post names it among the feed's 10 newest items
MSSP / IR firmsHuntress blognothing found — no post names it among the feed's 755 newest items
MSSP / IR firmsRapid7 blognothing found — no post names it among the feed's 20 newest items
MSSP / IR firmsSophos threat researchnothing found — no post names it among the feed's 15 newest items
ResearchUnit 42published — Unit 42 Uncovers PEERSTITCH, a Stealthy FortiGate Implant

Checked automatically 2026-11-11 21:13Z from public sources: 15 published, 27 nothing found, 0 not machine-checkable, 3 failed. "Nothing found" means the public source answered and had nothing, as of that moment; a feed covers only its newest posts. Re-checked daily.

What a person would still look up (5)
Vulnerability scannersCheck whether your scanner detects CVE-2025-61624 and CVE-2024-47575 on FortiOS, FortiPAM, FortiProxy, FortiSwitchManager and FortiManager, with authenticated version checks.
NGFW / IPSCheck whether your IPS vendor publishes signatures for CVE-2024-47575 FGFM exploitation and whether they are enabled in front of FortiManager.
SIEMCheck that FortiGate and FortiManager event, config-change and VPN logs reach the SIEM, and that a missing-source alert exists for each device.
Threat intel platformCheck that the campaign IPs, URLs and SHA-256 hashes from Unit 42 are loaded and pushed to blocking controls.
Forensics toolingCheck whether you can run the Unit 42 YARA rule and collect process memory from FortiGate appliances, or need vendor support.

Exposure queries — generated automatically

Where each CVE comes from: CVE-2024-26009 — PEERSTITCH: memory-resident ARM64 FortiGate implant after FortiManager CVE-2024-47575 compromise; CVE-2024-47575 — PEERSTITCH: memory-resident ARM64 FortiGate implant after FortiManager CVE-2024-47575 compromise; CVE-2025-61624 — PEERSTITCH: memory-resident ARM64 FortiGate implant after FortiManager CVE-2024-47575 compromise. A product row answers "is the software from that story reachable from the internet", not "is this card about that software".

shodan · cve · CVE-2024-47575

vuln:CVE-2024-47575

open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.

0match this spelling on Shodan · 2026-11-11 — Shodan has tagged no banner with this CVE yet; its tagging follows its own version fingerprinting, not the advisory▬ 0 on 2026-10-31 (+0) · 0 on 2026-11-10 (+0)

shodan · cve · CVE-2025-61624

vuln:CVE-2025-61624

open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.

0match this spelling on Shodan · 2026-11-11 — Shodan has tagged no banner with this CVE yet; its tagging follows its own version fingerprinting, not the advisory▬ 0 on 2026-10-31 (+0) · 0 on 2026-11-10 (+0)

shodan · cve · CVE-2024-26009

vuln:CVE-2024-26009

open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.

0match this spelling on Shodan · 2026-11-11 — Shodan has tagged no banner with this CVE yet; its tagging follows its own version fingerprinting, not the advisory▬ 0 on 2026-11-02 (+0) · 0 on 2026-11-10 (+0)

shodan · alias · card

http.title:"FortiManager"

open · Banner spelling suggested by the model from the card text (login page title of the FortiManager web console, the product breached as initial access); counted against Shodan before it was shown.

2,497services internet-wide on Shodan · 2026-11-11▼ 2,515 on 2026-11-01 (-18 -1%) · 2,506 on 2026-11-10 (-9 -0%)

shodan · alias · card

http.title:"FortiProxy"

open · Banner spelling suggested by the model from the card text (web console title of FortiProxy, listed as affected by CVE-2025-61624); counted against Shodan before it was shown.

784services internet-wide on Shodan · 2026-11-11▲ 763 on 2026-11-01 (+21 +3%) · 786 on 2026-11-10 (-2 -0%)

shodan · alias · card

http.title:"FortiGate"

open · Banner spelling suggested by the model from the card text (login page title of FortiOS devices, the managed FortiGates named in the card); counted against Shodan before it was shown.

410,407services internet-wide on Shodan · 2026-11-11

Internet-wide count, trend

QueryFirstLatestChange
vuln:CVE-2024-260080 2026-10-310 2026-11-01+0 over 2 days
vuln:CVE-2024-475750 2026-10-310 2026-11-11+0 over 12 days
vuln:CVE-2025-616240 2026-10-310 2026-11-11+0 over 12 days
product:"Fortiproxy"0 2026-10-310 2026-11-10+0 over 11 days
product:"Fortimanager"0 2026-10-310 2026-11-10+0 over 11 days
product:"Fortimanager Cloud"0 2026-10-310 2026-11-10+0 over 11 days
product:"Fortiswitchmanager"0 2026-10-310 2026-11-10+0 over 11 days
cpe:"cpe:/a:fortinet:fortiproxy"0 2026-10-310 2026-11-10+0 over 11 days
cpe:"cpe:/a:fortinet:fortimanager"0 2026-10-310 2026-11-10+0 over 11 days
cpe:"cpe:/a:fortinet:fortimanager_cloud"0 2026-10-310 2026-11-10+0 over 11 days
cpe:"cpe:/a:fortinet:fortiswitchmanager"0 2026-10-310 2026-11-10+0 over 11 days
http.title:"FortiProxy"763 2026-11-01784 2026-11-11+21 (+3%) over 11 days
http.title:"FortiManager"2,515 2026-11-012,497 2026-11-11-18 (-1%) over 11 days
vuln:CVE-2024-260090 2026-11-020 2026-11-11+0 over 10 days

Shodan's count of matching services on the whole internet, one point a day; the scope (your ranges) is never part of it. A count moves with Shodan's crawl as much as with patching, so read the direction, not the digit.

NVD has not published CPE configurations for these CVEs yet, so only the CVE query is exact; the product queries use the name the campaign gives (FortiOS, FortiManager) and are replaced by NVD's spelling at the daily re-check once it names the software.

Also tried under the name the card uses, nothing matched on Shodan: product:"FortiOS", http.component:"FortiOS", product:"FortiManager", http.component:"FortiManager", host.services: (software.product = "FortiOS"), host.services: (software.product = "FortiManager").

Banner spellings: a model read 5 from the NVD names and this card's text (former and marketing names, console titles); 3 matched something on Shodan and are shown above, the rest were dropped.

Scope every query in your own tool, never in a shared document: Shodan `net:<your_ranges>`, `org:"<your_org>"` or `hostname:<your_domain>` (or a Shodan Monitor network alert, which applies the scope for you); Censys `host.ip: <your_ranges>` or `host.dns.names: <your_domain>`. Then compare the banner version with the affected range. Generated automatically 2026-11-11 21:13Z from the CVE ids and NVD's CPE configurations, each Shodan query counted against Shodan itself; re-built daily with the coverage check.

Open questions

Sources

Public OSINT only. AI-generated by the pipeline; structure follows the DAIR model from Dynamic Incident Response (Joshua Wright). Published automatically; a dismissed draft unpublishes it.

One mail per new card, after you confirm by link; an unsubscribe link in every mail. The address is used for nothing else.