Skip to navigation

Threat reportThreat IntelligenceTL-2026-5980

ARTEX open-source AI pentesting framework weaponized by China-aligned and criminal actors (Storm-0940, VAPOR PANDA, Storm-3358, Crafty Falcon); leaked secrets are the primary entry vector; backdoored Docker images

highACTIVE

ARTEX (GitHub Autumn-27/ARTEX, AGPL-3.0, first seen 2026-07-26) is an open-source multi-agent LLM pentesting framework that state-aligned groups (Storm-0940, VAPOR PANDA) and criminal crews (Storm-3358, Crafty Falcon, a Korean ring) used against hundreds of organizations, with leaked secrets and weak or development credentials as the fastest way in. First disclosed .

Key facts

IdentifiersTL-2026-5980
Also known asARTEX, Autumn-27/ARTEX, ARTEX PRO, AntiFox
SeverityHIGH
First disclosed
Affected productsMicrosoft Entra ID applications / Azure Key Vault / Microsoft 365 tenants; ConnectWise ConnectWise Cloud Backup and related ConnectWise apps; Autumn-27 ARTEX (Docker images tomicdd/artex, congdonglinux/artex)
Weaknesses (CWE)CWE-798, CWE-522, CWE-532, CWE-1188
AttributionStorm-0940, VAPOR PANDA, Storm-3358, CRAFTY FALCON (medium confidence)
Nation-state nexusChina
MalwareBloodAlchemy, Storm
ToolsARTEX, Chisel, ConnectWise - S0591
MITRE ATT&CK techniquesT1059.004 Command and Scripting Interpreter: Unix Shell, T1078.004 Valid Accounts: Cloud Accounts, T1087.004 Account Discovery: Cloud Account, T1090.003 Proxy: Multi-hop Proxy, T1098.001 Account Manipulation: Additional Cloud Credentials, T1098.003 Account Manipulation: Additional Cloud Roles, T1110.003 Brute Force: Password Spraying, T1190 Exploit Public-Facing Application, T1195.002 Supply Chain Compromise: Compromise Software Supply Chain, T1199 Trusted Relationship, T1505.003 Server Software Component: Web Shell, T1518.001 Software Discovery: Security Software Discovery and 8 more in the attack flow
MotivationESPIONAGE
Target sectorsgovernment administration, defense, aerospace, energy, finance, software, telecoms, pharmacy, semi-conductors, think tanks
Target regionssouth korea, india, Southeast Asia, North America, Europe, Latin America, Middle East, japan
Detection rules9 (1 shown free)
Sources15 cited sources

Detection coverage

As of 2026-11-13, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-5980 across Splunk SPL, Microsoft KQL and Sigma, covering 27 indicator(s) of compromise. The whole corpus is readable without an account. Every threat comes with one complete detection in Splunk SPL, Microsoft KQL and Sigma, free for everyone; a free account adds daily TL Creds to unlock the rest. Paid plans add a larger daily allowance, correlation and the MCP server. Threadlinqs MCP server · View plans.

Free detection: ARTEX Backdoored Binary Spawns Root Shell (verifyCaptcha RCE) — Exploitation

Detects the /app/artex binary from the backdoored tomicdd/artex and congdonglinux/artex Docker images spawning a root shell with sh -c. The server.verifyCaptcha backdoor runs the 'captcha' JSON field of an unauthenticated POST /api/auth/login via sh -c as root before credential checks, with no C2 callback, so process lineage on the Linux host or container is the most reliable signal. Any hit means the host should be rebuilt and every stored key plus /app/jwt.key rotated.

  • Languages: Splunk SPL, Microsoft KQL, Sigma
  • ATT&CK: T1059.004, T1195.002, T1190
  • Data sources: sysmon_for_linux, linux_process_creation, defender_for_endpoint_linux
  • Severity: critical
  • Confidence: high

Splunk SPL

index=linux sourcetype="sysmon:linux" EventCode=1 (ParentImage="/app/artex" OR ParentImage="*/artex") (Image="*/sh" OR Image="*/bash" OR Image="*/dash") CommandLine="*-c *" User="root"
| stats count min(_time) as first_seen max(_time) as last_seen values(CommandLine) as commands values(ParentCommandLine) as parent_cmd by host User ParentImage Image
| eval first_seen=strftime(first_seen,"%F %T"), last_seen=strftime(last_seen,"%F %T")
| table first_seen last_seen host User ParentImage Image count commands parent_cmd

Microsoft KQL

DeviceProcessEvents
| where Timestamp > ago(24h)
| where InitiatingProcessFileName =~ "artex" or InitiatingProcessFolderPath endswith "/app/artex"
| where FileName in~ ("sh", "bash", "dash")
| where ProcessCommandLine has " -c"
| where AccountName =~ "root"
| project Timestamp, DeviceName, AccountName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, FileName, ProcessCommandLine
| order by Timestamp desc

Sigma

title: ARTEX Backdoored Binary Spawns Root Shell via verifyCaptcha
id: 3b8f2c14-6a9d-4e71-b5c3-0d7e91a4f201
status: experimental
description: Detects the /app/artex binary from the backdoored tomicdd/artex and congdonglinux/artex Docker images spawning a root shell with sh -c, the behaviour of the server.verifyCaptcha backdoor triggered by an unauthenticated POST to /api/auth/login.
references:
  - https://badbyte.io/artex-backdoor-docker-image/
  - https://www.stepsecurity.io/blog/artex-ai-pentesting-tool-attackers-leaked-secrets
author: Threadlinqs Team
date: 2026-11-13
tags:
  - attack.execution
  - attack.t1059.004
  - attack.initial-access
  - attack.t1195.002
  - attack.t1190
logsource:
  category: process_creation
  product: linux
detection:
  selection_parent:
    ParentImage|endswith: '/artex'
  selection_child:
    Image|endswith:
      - '/sh'
      - '/bash'
      - '/dash'
    CommandLine|contains: ' -c '
    User: 'root'
  condition: selection_parent and selection_child
falsepositives:
  - Authorised red-team use of an unmodified ARTEX whose shell tool legitimately launches sh -c
  - Container health checks that run through the ARTEX entrypoint
level: high

Known false positives:

  • Authorised red-team engagements running ARTEX whose agent shell tool legitimately spawns sh -c
  • Container entrypoint or health-check scripts launched by an unmodified ARTEX build

Tuning notes: Allow-list known authorised ARTEX hosts by host name. For fidelity, pair with Docker image inventory alerts for tomicdd/artex, congdonglinux/artex and the sha256 d5070f52262effe216b840711343bff8f2787f39208d887d8dfd9c673f8d1573. If your Linux telemetry is auditd rather than Sysmon for Linux, map exe=/app/artex and the execve of sh -c to the same fields.

8 more detection rules (Splunk SPL, Microsoft KQL, Sigma) · unlock with TL Creds. Sign up free to unlock the detection rules or query them with the Threadlinqs MCP server (Purple)
  • Entra ID Service Principal Wrong or Expired Secret Followed by Success (Leaked Secret Validation) · unlock with TL Creds
  • Azure Key Vault Bulk Secret Reads After Credential Compromise (ARTEX) · unlock with TL Creds
  • Chisel and SoftEther Tunnel Tooling Execution (VAPOR PANDA Post-Exploitation) · unlock with TL Creds
  • ARTEX Operator HTTP User Agents and Known Operator IPs in Web Logs · unlock with TL Creds
  • BLOODALCHEMY DLL Sideloading via Renamed GameHook svchost.exe (VAPOR PANDA) · unlock with TL Creds
  • Server Contacting AI Model APIs Without Business Justification (ARTEX Operator Host) · unlock with TL Creds
  • ARTEX Entra ID Privilege Escalation Chain — App Credential Added Then Admin Role Assigned · unlock with TL Creds
  • ARTEX Operator, BLOODALCHEMY C2 and Storm-0940 Infrastructure Network Contact · unlock with TL Creds

Indicators of compromise

As of 2026-11-13, Threadlinqs Intelligence tracks 27 indicators of compromise for TL-2026-5980.

Sample indicators (3 of 27)

  • IP address: 91.92.240[.]238
  • Domain: nginxmysql[.]com
  • File hash: d5070f52262effe216b840711343bff8f2787f39208d887d8dfd9c673f8d1573

Defanged, TLP:CLEAR. Full set of 27 indicators: unlock with TL Creds.

27 indicators of compromise · unlock with TL Creds. Compare plans

Community OSINT corroboration

4 of this threat's indicators have also been reported by the open-source security community. Community sightings are unverified and are kept separate from Threadlinqs' curated indicators. Indicator values, reporters and campaign linkage are available to authenticated Red-tier users.

Technical analysis

Backdoored Docker images (tomicdd/artex, congdonglinux/artex) were distributed to ARTEX operators until Docker removed them on 2026-11-05.

ARTEX is a multi-agent AI penetration-testing framework (Go server, Next.js console, PostgreSQL, typically deployed with Docker Compose; v0.3.15 analyzed). The console and API listen on port 8787 and the supplied Compose file exposes it on all interfaces. A planner agent coordinates worker agents (three per task by default) that drive tools such as nmap, a shell and an HTTP client, plus chat and retest agents. The operator supplies the LLM; attackers mostly used DeepSeek models through resellers. Scope controls (.gov/.edu blocked, approval for risky actions) are soft; CERT-EU found no hard technical enforcement. The developer took the project closed-source and removed the repository on 2026-10-08 after more than 12,000 forks existed; forks and copies persist.

The tool was adopted by multiple unrelated actors. Microsoft attributes Storm-0940 (China state-aligned, active since 2021) ARTEX operations from early September 2026, including a cross-tenant password spray (2026-10-10 to 10-14, 151,000+ failed sign-ins against 327 accounts in eight organizations, from 144.172.64.99) and the ConnectWise Cloud Backup supply-chain compromise, after which stolen multi-tenant application credentials were used for sign-ins against 2,250+ tenants, with privileged cloud access in under three hours in some cases (Graph reconnaissance, app credential additions, self-assigned Global Administrator, bulk Key Vault secret reads). Wiz observed related behavior against IT and software vendors: source map and OpenAPI harvesting, fabricated OAuth callbacks, unsigned alg:none JWT tests against 60+ SSO routes, password spraying of Entra ID and Okta, and AWS Cognito abuse. CrowdStrike tracks VAPOR PANDA (China-linked) running an 11-day campaign from 2026-10-17 against 200+ organizations in 14 countries (post-exploitation confirmed at nine), mostly government, defense, telecom and pharma, using exposed SAML and XXE flaws, stolen VPN configurations, web shells, Chisel/SoftEther tunnels and the BLOODALCHEMY backdoor; operators tasked agents to find Windows hosts without the CrowdStrike Falcon sensor, and one intrusion consumed about 1.4 billion input tokens. Storm-3358 (Cambodia-based, criminal) targets Southeast Asian financial firms; Crafty Falcon (CERT-In CIAD-2026-0058) targets Indian lenders, fintechs and exchanges via internet-facing test/staging systems and shared credentials; a Korean ring (7 suspects, 90+ organizations, 8.2 million records, 38 ransom demands) was arrested by Seoul police on 2026-10-15. Google Threat Intelligence lists PentAGI, HexStrike and Cairn as similar frameworks.

Leaked secrets are the fastest route: agents search public GitHub for target names plus terms like 'secret', find Entra ID application client secrets, then reach storage keys, connection strings, Kubernetes credentials and Key Vault contents (one case went from GitHub search to Key Vault theft in five minutes; 200+ client secrets were validated in about three minutes). Weak development credentials on internet-facing staging/internal tools are the second route (WorkOS incident, where a researcher's agent escaped its test scope). Separately, BadByte documented a backdoored build: a GitHub fork (commit a4f4d38) changed the Compose image to tomicdd/artex, whose /app/artex binary adds server.verifyCaptcha, executing a 'captcha' JSON field via sh -c as root on unauthenticated POST /api/auth/login before credential checks. It has no C2 callback; any host that ran it should be rebuilt and all stored keys and the JWT signing key rotated.

Detection relies on behavior rather than static indicators: request bursts of 1-14 requests about one second apart followed by 25-31 second pauses, Entra ID errors AADSTS7000215 (wrong client secret) and AADSTS7000222 (expired client secret) followed by a success, one IP signing in as many applications, canary inputs (evil.com, test@example.com), write-then-delete storage tests, exposed port 8787 consoles titled ARTEX, and servers calling AI model APIs without business reason. No CVEs are associated with this activity; the source reports no software-vulnerability exploitation in several cases.

MITRE ATT&CK techniques by tactic:

Execution

T1059.004 Command and Scripting Interpreter: Unix Shell; T1651 Cloud Administration Command

Initial Access

T1078.004 Valid Accounts: Cloud Accounts; T1190 Exploit Public-Facing Application; T1195.002 Supply Chain Compromise: Compromise Software Supply Chain; T1199 Trusted Relationship

Discovery

T1087.004 Account Discovery: Cloud Account; T1518.001 Software Discovery: Security Software Discovery

Command and Control

T1090.003 Proxy: Multi-hop Proxy

Persistence

T1098.001 Account Manipulation: Additional Cloud Credentials; T1098.003 Account Manipulation: Additional Cloud Roles; T1505.003 Server Software Component: Web Shell

Credential Access

T1110.003 Brute Force: Password Spraying; T1528 Steal Application Access Token; T1552.001 Unsecured Credentials: Credentials In Files; T1555.006 Credentials from Password Stores: Cloud Secrets Management Stores; T1606.002 Forge Web Credentials: SAML Tokens

Defense Evasion

T1574.001 Hijack Execution Flow: DLL

Resource Development

T1588.007 Obtain Capabilities: Artificial Intelligence

Reconnaissance

T1593.003 Search Open Websites/Domains: Code Repositories

Remediation

Patches

  • No CVE or vendor patch applies; review ConnectWise advisory for Cloud Backup credential rotation guidance

Immediate actions

  • Scan repositories, forks and full git history for secrets; enable GitHub secret scanning and push protection
  • Rotate every secret ever committed or printed to a log; deleting the commit is not sufficient
  • Hunt web, proxy and API gateway logs for the listed user agents, IPs, JA4 fingerprints and the burst/pause request rhythm
  • Review Entra ID service principal sign-ins for AADSTS7000215 and AADSTS7000222; treat a failure followed by a success as urgent
  • If ARTEX was installed from tomicdd/artex or congdonglinux/artex, rebuild the host and rotate AI provider keys, database password, webhook/SMTP/proxy credentials and /app/jwt.key

Workarounds

  • Bind ARTEX console port 8787 to localhost and use VPN or SSH tunnel; complete admin setup before accepting outside connections
  • Enforce engagement scope with network controls rather than the tool's soft scope settings

Longer-term hardening

  • Replace stored CI cloud keys with OIDC short-lived tokens; set PAT expiry and prefer fine-grained tokens
  • Move Entra ID applications from client secrets to managed identities or certificates
  • Audit internet-facing internal, test and staging systems; never accept default, development or shared credentials, and do not share credentials between test and production
  • Remove OpenAPI specs, source maps and config files with tokens from internet-facing apps; rate-limit and bot-protect registration, password reset and verification endpoints
  • Alert on servers calling AI model APIs without business justification and on first use of a cloud key from a new IP

Affected and fixed versions

  • Microsoft — Entra ID applications / Azure Key Vault / Microsoft 365 tenants
    Vulnerable versions: Applications using long-lived client secrets or exposed credentials
  • ConnectWise — ConnectWise Cloud Backup and related ConnectWise apps
    Vulnerable versions: Multi-tenant app credentials compromised (see ConnectWise advisory)
  • Autumn-27 — ARTEX (Docker images tomicdd/artex, congdonglinux/artex)
    Vulnerable versions: Backdoored /app/artex build v0.3.16-0.20261008134550-5c0dbd4bec94+dirty
    Fixed in: Images removed from Docker Hub 2026-11-05; rebuild from known-good source

Timeline

  • ARTEX (Autumn-27/ARTEX, AGPL-3.0) first appears on GitHub.
  • Early September: Storm-0940 begins ARTEX-driven operations per Microsoft; a South Korean criminal ring and Google-observed activity began in August.
  • CrowdStrike links ARTEX to attacks on South Korean financial institutions.
  • Developer announces ARTEX is closed-source and removes the repository after 12,000+ forks exist; a backdoored copy appears that evening (Docker Hub account tomicdd created 18:50 UTC).
  • Storm-0940 cross-tenant password spray from locked-ioc-15 begins (through 2026-10-14): 151,000+ failed sign-ins against 327 accounts in eight organizations.
  • Seoul police arrest the leader of a Korean ARTEX-using ring (7 suspects, 90+ organizations, 8.2 million records, 38 ransom demands); ConnectWise compromise reports surface.
  • VAPOR PANDA begins an 11-day ARTEX campaign against 200+ organizations in 14 countries; post-exploitation confirmed at nine.
  • Microsoft attributes the ConnectWise Cloud Backup supply-chain compromise to Storm-0940 using ARTEX; sign-ins attempted against 2,250+ tenants.
  • Backdoored ARTEX image deployed on 15 hosts in locked-ioc-9 (09:25-09:38 UTC).
  • BadByte details the backdoored Docker image; CERT-In warns about Crafty Falcon; Censys counts 1,465 exposed consoles.
  • Docker removes tomicdd/artex and congdonglinux/artex; Microsoft reports AI agents hunting GitHub for exposed secrets.
  • Microsoft reports Cambodia-based Storm-3358 using ARTEX against Southeast Asian financial firms; WorkOS names the researcher in its October 30 incident.
  • StepSecurity publishes its analysis of ARTEX adoption and leaked-secret exploitation.

Sources cited

More from Storm-0940

Drafted by the Threadlinqs research pipeline from 15 sources; published ; last updated —.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

// threat_feed
$ sort --newest
Showing all threats

Live intelligence console

Threat level

Latest Threats