SOC Prime Bias: Critical

27 Oct 2026 13:33 UTC

Storm-0940 Broadens ARTEX Attacks to IT and Software Vendors

Author Photo
SOC Prime Team linkedin icon Follow
Storm-0940 Broadens ARTEX Attacks to IT and Software Vendors
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Summary

A China-aligned threat actor tracked as Storm-0940 is using ARTEX, an autonomous AI penetration-testing agent, to target IT and software vendors. The attacks focus on identity providers such as Okta, Entra, and Cognito to identify authentication weaknesses and gain access to customer data. The actor displays highly automated and adaptive behavior, including IP rotation and frequent user-agent changes to evade detection.

Investigation

Wiz Research identified the activity through analysis of HTTP access logs, identity provider telemetry from AWS Cognito, Entra, and Okta, and ARTEX-related artifacts. The investigation uncovered a repeatable playbook involving application mapping through source maps, authentication probing, and abuse of account recovery workflows. The campaign was linked to recent supply-chain activity and targeted multiple software sectors worldwide.

Mitigation

Defenders should enforce strong rate limiting on authentication and account recovery endpoints. Hardening identity provider configurations, particularly OAuth flows and JWT validation, is critical to reducing exposure. Organizations should also monitor for unusual spikes in access-denied events and recurring patterns associated with automated reconnaissance.

Response

When this activity is detected, security teams should immediately investigate failed login bursts and abnormal volumes of access-denied events. Correlate identity provider telemetry with web server logs to identify automated reconnaissance behavior. Apply rapid IP blocking where appropriate and monitor for follow-up attempts originating from new infrastructure or diverse user agents.

Add detection-focused response detailsClarify the campaign’s attack sequence

Attack Flow

We are still updating this part.

Detections

Suspicious Persistence Activity by Execution Of Shell Commands From Web Service Users And Groups (via auditd)

SOC Prime Team
26 Oct 2026

Suspicious User Agent Patterns (via web)

SOC Prime Team
23 Oct 2026

Possible File Inclusion Patterns (via web)

SOC Prime Team
23 Oct 2026

Possible OS Command Injections Patterns (via webserver)

SOC Prime Team
23 Oct 2026

Possible Path Traversal Pattern in URL (via webserver)

SOC Prime Team
23 Oct 2026

Possible SSH Known Hosts Discovery Attempt [Linux] (via cmdline)

SOC Prime Team
23 Oct 2026

Scripted File was Created in Suspicious Webserver Directories [Linux] (via file_event)

SOC Prime Team
23 Oct 2026

IOCs (SourceIP) to detect: ARTEX in the Wild: Storm-0940 Expands Targeting of IT and Software Vendors

SOC Prime AI Rules
23 Oct 2026

IOCs (DestinationIP) to detect: ARTEX in the Wild: Storm-0940 Expands Targeting of IT and Software Vendors

SOC Prime AI Rules
23 Oct 2026

Account Recovery Abuse Detection in Proprietary Apps [AWS Cloudtrail]

SOC Prime AI Rules
23 Oct 2026

Password Spray Attack on Corporate Okta and Entra ID [Microsoft Windows Security Event Log]

SOC Prime AI Rules
23 Oct 2026

Detection of ARTEX-Related Activities Targeting IT and Software Vendors [Webserver]

SOC Prime AI Rules
23 Oct 2026

Simulation Execution

  • Attack Narrative & Commands: The adversary is performing reconnaissance to map the target’s API surface. They begin by attempting to download the OpenAPI documentation (/swagger/?format=openapi) to identify hidden endpoints. To verify the robustness of the web server’s routing and to probe for potential “hidden” paths or configuration errors, the attacker immediately follows this with a request to a completely randomized, non-existent URI (/zzz-nonexistent-xyz123). This specific sequence is designed to match the behavioral fingerprint of the ARTEX campaign.

  • Regression Test Script:

    #!/bin/bash
    # ARTEX Simulation Script
    # Target: Localhost Web Server
    
    TARGET_URL="http://localhost"
    
    echo "[+] Starting ARTEX Reconnaissance Simulation..."
    
    # Step 1: Trigger selection1 (Accessing Swagger documentation)
    echo "[+] Attempting to access OpenAPI documentation..."
    curl -s -o /dev/null -w "%{http_code}" "$TARGET_URL/swagger/?format=openapi"
    echo -e "n[+] Selection 1 triggered."
    
    # Step 2: Trigger selection4 (Probing non-existent resource)
    # This is the 'AND' condition required by the rule
    echo "[+] Probing for non-existent resource..."
    curl -s -o /dev/null -w "%{http_code}" "$TARGET_URL/zzz-nonexistent-xyz123"
    echo -e "n[+] Selection 4 triggered."
    
    echo "[+] Simulation complete. Check SIEM for detection."
  • Cleanup Commands:

    # No persistent changes made by the simulation. 
    # If any files were created during testing, remove them:
    rm -f simulation_test_output.log