Skip to content

Response, New York. Noah Park: Check Point Patches Actively Exploited Management Server Path Traversal. Detection, Dallas. Ava Okello: Report Finds Nearly Half of Deployed Detections Need Attention Before SOCs Can Trust Them.

SOCtember

Always First. Fast SOC News.

Wiz Threat Update graphic headed ARTEX in the Wild: Storm-0940 Expands Targeting of IT and Software Vendors, drawn as a newspaper page on a blue background.
Graphic: Wiz Research, ARTEX in the Wild threat update header, Oct 22, 2026 (fair use).

Detection

Wiz Says the ARTEX AI Agent Linked to Storm-0940 Is Now Working Through Software Vendors, Reading Their Source Maps, Forging Unsigned Tokens and Spraying Okta and Entra at One Attempt a Second

Wiz Research says an actor overlapping with China-aligned Storm-0940 used the autonomous ARTEX penetration-testing agent against multiple IT and software vendors throughout October, probing Okta, Entra and Amazon Cognito and hunting for a way into the vendors' customer data. The log lines it leaves behind, five IP addresses and the detections that already catch it.

Ava Okello, DetectionLondon5 min read

LONDON - The AI agent that Microsoft says a China-aligned group used to break into cloud tenants downstream of ConnectWise has been turned on the software industry more broadly, Wiz Research reported Thursday, and it leaves a distinctive trail in web and identity logs.

Wiz researchers Sapir Federovsky and Rami McCarthy wrote that throughout October 2026 they tracked an actor using tooling associated with ARTEX, an autonomous penetration-testing agent, against multiple IT and software vendors. The activity focused on Okta, Microsoft Entra ID and Amazon Cognito, and on Microsoft 365 integrations, with repeated attempts to find authentication bypasses, enumerate APIs and reach the vendors' customer data. Wiz said its observations overlap with Microsoft's Oct. 21 report on Storm-0940, which Microsoft describes as China-state aligned and responsible for the ConnectWise supply chain compromise, and that the same infrastructure, tooling and patterns were aimed at the sector as a whole.

A Chinese developer published ARTEX on GitHub in July 2026, Wiz said, and it won Baidu's "Agent+" red team challenge in September. An operator supplies a target and an objective; a planner agent picks each next step and worker agents run tools such as nmap, curl and Impacket. The developer made the tool closed-source on Oct. 8, by which point the code had more than 12,000 forks.

Read the app first, then call its private routes

Across every instance Wiz observed, the agent's first move was to read the application itself, within minutes of first contact: JavaScript source maps, config.json, env.js and Swagger or OpenAPI documents. Soon after, it called internal API routes by name, routes that appear only in the source maps it had just downloaded. It checked which usernames existed and hammered password-reset endpoints. Where self-registration was open it signed up with a throwaway mailbox, confirmed the account and immediately asked for another company's data.

Wiz code blocks from HTTP access logs showing requests for a JavaScript source map, config.json, env.js and Swagger, username validation and password reset token calls, and a disposable-mailbox sign-up followed by requests for company 1's logins and an admin redirect link.
Screenshot: Wiz Research, ARTEX requests recorded in HTTP access logs, Oct 22, 2026 (fair use).

Before every fuzzing run it requested a path that should not exist, GET /zzz-nonexistent-xyz123, to learn what a baseline not-found response looked like. That request is a cheap, high-signal string to search for.

Forged tokens and a metronome spray

Against Microsoft OAuth flows the agent injected fabricated authorization codes and malformed state values into callback endpoints and sent a JSON Web Token whose header decodes to alg none and whose body claims the email test@test.com. Wiz said the agent hit more than 60 variations of SSO routes with that payload in two minutes. On Cognito, the same recovery abuse appeared as InitiateAuth, ForgotPassword and ResendConfirmationCode events, alongside SignUp calls, from clients such as boto and python-urllib.

Wiz code block showing a Microsoft OAuth callback request with a fabricated code and an invalid state parameter, and an SSO request carrying an unsigned JWT that decodes to alg none and email test@test.com.
Screenshot: Wiz Research, forged OAuth callback and unsigned JWT requests, Oct 22, 2026 (fair use).

The password spray hit both Entra and Okta. Each burst got its own user-agent string, the median gap between attempts was one second, bursts lasted 20 to 60 minutes, targets were mostly software engineers and some users saw more than a dozen attempts. Some sessions ran 24 to 30 hours; blocked addresses were replaced within minutes, and when a login page began rate-limiting, the agent moved to another endpoint on the same host. Wiz counted more than 15 user-agent strings, from Python clients and curl to self-describing ones such as ReconProbe/1.0.

"While a human attacker is bound by time constraints and fatigue, an autonomous agent does not give up," the researchers wrote. "It simply continues to iterate until it finds a single weak point." Microsoft said on Oct. 21 that in multiple Storm-0940 intrusions the time from initial targeting to privileged access was less than 3 hours.

Wiz Indicators of Compromise table listing IP addresses 104.194.150.21, 144.172.64.60, 144.172.64.99 and 144.172.64.128, which Microsoft attributes to Storm-0940, and 167.88.172.97, followed by user agents including curl/7.88.1, Python-urllib/3.12 and several truncated Chrome strings.
Screenshot: Wiz Research, ARTEX indicators of compromise, Oct 22, 2026 (fair use).

What detection teams should do now

  • Search web and API gateway logs for 104.194.150.21, 144.172.64.60, 144.172.64.99, 144.172.64.128 and 167.88.172.97. Microsoft attributes the three 144.172.64.x addresses to Storm-0940.
  • Alert when one client fetches .js.map files, config.json, env.js or Swagger documents and then calls internal API routes within minutes, and when anything requests /zzz-nonexistent-xyz123.
  • Flag any SSO, JWT or OAuth callback request carrying a token with alg none, and bursts of requests across many /sso and /jwt route variants.
  • Watch Cognito for clusters of InitiateAuth, ForgotPassword, ResendConfirmationCode and SignUp from programmatic user agents, and proprietary apps for repeated reset-token and username-validation calls.
  • Tune spray detection for steady one-second cadence and per-burst user agents. Wiz says existing rules already catch it, naming Numerous Failed Login Attempts To Multiple Users Followed By A Successful Login To Admin User, Potential Password Spray Attack From Single IP, Okta Users Password Spray and Unusual Mass Access Denied Activity.
  • Test tenant isolation in your own product: a fresh account created with a disposable mailbox should get a 403 on another customer's identifiers. Wiz cautions that many of the listed user agents are not unique to this actor and will be noisy on their own.

Sources:


Ava Okello covers detection engineering, EDR telemetry and SOC hunting for SOCtember from London.

Related stories

Detection desk