Back to Intelligence

Project CAV3RN Google Apps Script C2 Framework + JFrog Artifactory CVE-2026-42016/42018/82329 Exploitation: OTX Pulse Analysis — Enterprise Detection Pack

SA
Security Arsenal Team
September 13, 2026
12 min read

Two distinct but equally urgent threat streams surfaced in this OTX batch, and together they sketch the current state of targeted intrusion tradecraft: stealthy, modular espionage tooling abusing legitimate cloud infrastructure, and rapid weaponization of supply-chain-adjacent developer platforms.

Stream 1 — Project CAV3RN (espionage, Israel-targeted). Two consecutive OTX pulses document an evolving modular espionage framework operating against entities in Israel. CAV3RN's standout innovation is its C2 channel selection logic: the implant issues DNS queries and uses the A-record responses themselves as a decision oracle, dynamically choosing per-transaction between direct HTTPS to attacker infrastructure (api.studiotikva.com) and a relay through Google Apps Script — a legitimate Google service that blends into normal enterprise traffic and defeats domain-reputation blocking. The framework is fully modular (GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll), includes a local broker component for intra-host coordination, and uses DNS infrastructure to validate and rotate Google Apps Script deployment IDs, giving operators resilient, burnable C2. The objective is classic espionage: persistent, low-visibility access and data theft from Israeli organizations.

Stream 2 — JFrog Artifactory in-the-wild exploitation (criminal/opportunistic, global). Attackers are actively chaining three critical Artifactory flaws: CVE-2026-42018 (exposes internal anonymous-user tokens), CVE-2026-42016 (privilege escalation via insufficient token validation), and CVE-2026-82329 (unauthenticated access leading to administrative compromise via Groovy plugin abuse). The end state observed is full administrative control of artifact repositories with deployment of a Rust-based backdoor — meaning poisoned build artifacts, CI/CD compromise, and downstream software supply-chain risk. This is exactly the class of target where one breach cascades into hundreds.

Operational takeaway: CAV3RN requires behavioral detection (you cannot block Google), while Artifactory requires emergency patching plus artifact-integrity review. Both are detailed below with detection content.


Threat Actor / Malware Profile

Project CAV3RN — Modular Espionage Framework

AttributeDetail
AttributionUnknown state-aligned operator; targeting pattern (Israel-focused espionage) suggests nation-state tasking
DeliveryNot fully disclosed in pulse; consistent with spear-phishing / staged loader delivery of the modular payload set
ArchitectureModular DLL framework: GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll
C2 ProtocolDNS A-record responses act as a per-transaction channel selector: direct HTTPS to api.studiotikva.com or Google Apps Script relay
C2 ResilienceDNS-driven validation and rotation of Google Apps Script deployment IDs; operators can burn and re-issue relay endpoints without recompiling implants
Local ComponentA broker module coordinates inter-module communication on-host, limiting each module's network exposure
Anti-AnalysisAbuse of Google infrastructure (reputation laundering), DNS-as-control-plane (evades HTTP inspection), modular loading (no single full-capability binary on disk)
ObjectiveLong-dwell espionage against Israeli entities

Why Google Apps Script C2 matters: traffic to script.google.com / script.googleusercontent.com is ubiquitous in enterprises that use Google Workspace. Blocking is not viable; detection must pivot on which process is talking to Google, how often, and whether the process has any legitimate reason to do so.

Artifactory Exploitation Chain — Rust Backdoor Deployment

StageMechanism
Initial AccessCVE-2026-82329 — unauthenticated path to administrative functionality via Groovy plugin abuse
Token TheftCVE-2026-42018 — internal anonymous-user tokens exposed
Privilege EscalationCVE-2026-42016 — insufficient token validation allows escalation to admin
Post-ExploitationRust-based backdoor deployed; observed source IPs include 146.19.216.120, 105.188.75.16, 176.88.121.152
ObjectiveRepository control, artifact tampering, CI/CD persistence, supply-chain staging

IOC Analysis

Indicator types present across these pulses:

  • Domains/hostnames (CAV3RN): studiotikva.com, api.studiotikva.com, ns1.studiotikva.com, ns2.studiotikva.com. The ns1/ns2 entries indicate attacker-operated authoritative DNS — this is the control plane for the A-record channel-selection logic. DNS telemetry against these nameservers is as valuable as HTTP telemetry against the API host.
  • URLs (CAV3RN): https://api.studiotikva.com/api/v1/update/check and https://api.studiotikva.com/ac. The /api/v1/update/check path mimics legitimate software-update telemetry — watch for this URI pattern even where the domain has rotated.
  • File hashes (both campaigns): MD5/SHA1 values for CAV3RN modules (904784c9943d019da332bea2cd03996f, f9156d42410c8a5429dec43329bd72e0) and the Artifactory Rust backdoor (ac6c52632fcf8b072be3b1c5bc076fdd, 513a907b69edffc3cb77a494da395178d21ef9bd). Treat hashes as retro-hunt material; modular frameworks recompile frequently.
  • IPv4 (Artifactory attackers): 146.19.216.120, 105.188.75.16, 176.88.121.152 — scanner/exploit origin infrastructure. Check WAF, reverse-proxy, and Artifactory access logs for these, then pivot on any authenticated session that followed.
  • CVEs: CVE-2026-42016, CVE-2026-42018, CVE-2026-82329 — feed directly into vulnerability-management prioritization.

Operationalization guidance for SOC teams:

  1. Push domains/IPs to DNS sinkhole, EDR network block lists, and proxy/egress filters immediately.
  2. Push file hashes into EDR block/retro-hunt and email/DLP detonation lookups.
  3. Do not block Google Apps Script domains. Instead, build an allowlist of processes sanctioned to reach script.google.com/script.googleusercontent.com and alert on everything else.
  4. Decode CAV3RN DNS behavior by capturing full DNS query/response pairs (Zeek, Suricata, or Windows DNS Analytical logs) and alerting on queries to attacker nameservers or TXT/A-response patterns correlated with subsequent Google-bound HTTPS within seconds.
  5. For Artifactory: grep access logs for Groovy plugin endpoints and token creation events around the attacker IPs; diff repository artifacts against known-good hashes.

Detection Engineering

YAML
---
title: Project CAV3RN Module Load or DNS-Selected C2 Activity
id: 7f3a1c2e-9cav-4d31-8b21-cav3rn000001
status: experimental
description: Detects loading of Project CAV3RN espionage framework modules (GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll) or network/DNS activity toward known CAV3RN C2 infrastructure including attacker nameservers used for A-record channel selection.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/09/13
logsource:
  category: image_load
  product: windows
detection:
  selection_modules:
    ImageLoaded|endswith:
      - '\GoogleService.dll'
      - '\CommunicationUxTheme.dll'
      - '\net.dll'
      - '\rnp.dll'
      - '\texture.dll'
  condition: selection_modules
falsepositives:
  - Rare; net.dll and texture.dll may collide with legitimate software - validate signer and path
level: high
tags:
  - attack.command_and_control
  - attack.t1071.004
  - attack.t1573
  - attack.t1029
---
title: Project CAV3RN DNS C2 Channel Selection and C2 Beacon
id: 7f3a1c2e-9cav-4d31-8b21-cav3rn000002
status: experimental
description: Detects DNS queries or network connections to Project CAV3RN C2 domains and nameservers. CAV3RN uses DNS A-record responses to select between direct HTTPS and Google Apps Script relay per transaction.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/09/13
logsource:
  category: dns
  product: windows
detection:
  selection_dns:
    query|contains:
      - 'studiotikva.com'
      - 'api.studiotikva.com'
      - 'ns1.studiotikva.com'
      - 'ns2.studiotikva.com'
  condition: selection_dns
falsepositives:
  - Threat researchers validating infrastructure
level: critical
tags:
  - attack.command_and_control
  - attack.t1071.004
  - attack.t1568
---
title: Non-Browser Process Beaconing to Google Apps Script - Possible CAV3RN Relay C2
id: 7f3a1c2e-9cav-4d31-8b21-cav3rn000003
status: experimental
description: Detects non-browser, non-Google processes initiating HTTPS connections to Google Apps Script endpoints. CAV3RN relays C2 traffic through Google Apps Script to evade domain-reputation controls.
author: Security Arsenal Threat Intelligence
references:
  - https://securelist.com/project-cav3rn-continues/120991/
date: 2026/09/13
logsource:
  category: network_connection
  product: windows
detection:
  selection_dest:
    DestinationHostname|endswith:
      - 'script.google.com'
      - 'script.googleusercontent.com'
  filter_browsers:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
      - '\firefox.exe'
      - '\brave.exe'
      - '\GoogleDriveFS.exe'
      - '\GoogleUpdater.exe'
  condition: selection_dest and not filter_browsers
falsepositives:
  - Internal automation or RPA tooling using Apps Script webhooks
  - Google Workspace sync utilities
level: high
tags:
  - attack.command_and_control
  - attack.t1102
  - attack.t1071.001
---
title: JFrog Artifactory Exploitation - Suspicious Child Process or Groovy Execution
id: 8a4b2d3f-art1-4e42-9c32-artifactory01
status: experimental
description: Detects the Artifactory Java process spawning shells, script interpreters, or download cradles consistent with in-the-wild exploitation of CVE-2026-42016, CVE-2026-42018, and CVE-2026-82329 leading to Groovy plugin abuse and Rust backdoor deployment.
author: Security Arsenal Threat Intelligence
references:
  - https://www.wiz.io/blog/artifactory-under-attack-in-the-wild-exploitation-of-cve-2026-42016-cve-2026-4201
date: 2026/09/13
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\java.exe'
      - '\artifactory.exe'
    ParentCommandLine|contains:
      - 'artifactory'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\certutil.exe'
      - '\curl.exe'
      - '\bitsadmin.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Artifactory user plugins executing legitimate build hooks - baseline per server
level: critical
tags:
  - attack.execution
  - attack.t1059
  - attack.t1190
  - attack.t1505.003
KQL — Microsoft Sentinel / Defender
// Project CAV3RN + Artifactory exploitation hunt — Microsoft Sentinel / Defender XDR
// Part 1: CAV3RN C2 infrastructure contact (direct HTTPS or attacker DNS control plane)
let Cav3rnIoCs = dynamic(["studiotikva.com", "api.studiotikva.com", "ns1.studiotikva.com", "ns2.studiotikva.com"]);
let C2Hits = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteUrl has_any (Cav3rnIoCs)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort, ActionType;
// Part 2: Suspicious non-browser processes reaching Google Apps Script (CAV3RN relay channel)
let AppsScriptRelay = DeviceNetworkEvents
| where TimeGenerated > ago(14d)
| where RemoteUrl has_any ("script.google.com", "script.googleusercontent.com")
| where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "firefox.exe", "brave.exe", "GoogleDriveFS.exe", "GoogleUpdater.exe", "googledrivesync.exe")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, RemoteUrl, RemoteIP;
// Part 3: CAV3RN module loads observed in process command lines / file events
let ModuleLoads = DeviceImageLoadEvents
| where TimeGenerated > ago(14d)
| where FileName in~ ("GoogleService.dll", "CommunicationUxTheme.dll", "rnp.dll", "texture.dll")
   or (FileName =~ "net.dll" and FolderPath !has_any ("dotnet", "Microsoft.NET", "Windows\\Microsoft.NET"))
| project TimeGenerated, DeviceName, FileName, FolderPath, SHA256, InitiatingProcessFileName;
// Part 4: Artifactory exploitation - attacker IPs and suspicious Java-spawned processes
let AttackerIPs = dynamic(["146.19.216.120", "105.188.75.16", "176.88.121.152"]);
let ArtifactoryNet = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteIP has_any (AttackerIPs)
| project TimeGenerated, DeviceName, LocalPort, RemoteIP, InitiatingProcessFileName;
let ArtifactoryProc = DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName =~ "java.exe" or InitiatingProcessCommandLine has "artifactory"
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "sh", "bash", "curl.exe", "certutil.exe", "wscript.exe", "cscript.exe", "bitsadmin.exe", "rundll32.exe")
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, AccountName;
union C2Hits, AppsScriptRelay, ModuleLoads, ArtifactoryNet, ArtifactoryProc
| sort by TimeGenerated desc
PowerShell
<#
.SYNOPSIS
  Project CAV3RN + Artifactory exploitation IOC hunt — Security Arsenal
.DESCRIPTION
  Checks a Windows host for CAV3RN module artifacts, malicious file hashes,
  DNS cache residue for CAV3RN C2 domains, connections to Artifactory attacker
  IPs, and suspicious processes talking to Google Apps Script.
#>

$ErrorActionPreference = 'SilentlyContinue'
$report = @()

Write-Host "=== Security Arsenal IOC Hunt: CAV3RN / Artifactory ===" -ForegroundColor Cyan

# --- 1. CAV3RN module file search (common staging paths) ---
$modules = @('GoogleService.dll','CommunicationUxTheme.dll','rnp.dll','texture.dll')
$paths   = @("$env:ProgramData", "$env:AppData", "$env:LocalAppData", "$env:Temp", 'C:\Users\Public')
foreach ($p in $paths) {
    foreach ($m in $modules) {
        Get-ChildItem -Path $p -Recurse -Filter $m -File -ErrorAction SilentlyContinue | ForEach-Object {
            $h = (Get-FileHash $_.FullName -Algorithm MD5).Hash
            $report += [PSCustomObject]@{Check='CAV3RN Module'; Finding=$_.FullName; MD5=$h}
        }
    }
}
# net.dll is name-collidable with .NET — flag only outside framework dirs
Get-ChildItem -Path "$env:AppData","$env:LocalAppData","$env:Temp",'C:\Users\Public' -Recurse -Filter 'net.dll' -File -ErrorAction SilentlyContinue | ForEach-Object {
    $report += [PSCustomObject]@{Check='CAV3RN Module (net.dll, suspicious path)'; Finding=$_.FullName; MD5=((Get-FileHash $_.FullName -Algorithm MD5).Hash)}
}

# --- 2. Known malicious hashes (CAV3RN modules + Artifactory Rust backdoor) ---
$badHashes = @(
    '904784c9943d019da332bea2cd03996f',
    'f9156d42410c8a5429dec43329bd72e0',
    'ac6c52632fcf8b072be3b1c5bc076fdd'
)
foreach ($f in $report) {
    if ($badHashes -contains $f.MD5.ToLower()) {
        Write-Host "[CRITICAL] Known-bad hash match: $($f.Finding)" -ForegroundColor Red
    }
}

# --- 3. DNS cache residue for CAV3RN C2 ---
$c2 = @('studiotikva.com','api.studiotikva.com','ns1.studiotikva.com','ns2.studiotikva.com')
$dns = Get-DnsClientCache | Where-Object { $e=$_.Entry; ($c2 | Where-Object { $e -like "*$_*" }) }
if ($dns) {
    $dns | ForEach-Object { $report += [PSCustomObject]@{Check='DNS Cache - CAV3RN C2'; Finding="$($_.Entry) -> $($_.Data)"; MD5=''} }
    Write-Host "[ALERT] DNS cache contains CAV3RN C2 entries" -ForegroundColor Red
}

# --- 4. Active/historical connections to Artifactory attacker IPs ---
$attackerIPs = @('146.19.216.120','105.188.75.16','176.88.121.152')
Get-NetTCPConnection | Where-Object { $attackerIPs -contains $_.RemoteAddress } | ForEach-Object {
    $proc = (Get-Process -Id $_.OwningProcess).ProcessName
    $report += [PSCustomObject]@{Check='Connection - Artifactory attacker IP'; Finding="$($_.RemoteAddress):$($_.RemotePort) [$proc] State=$($_.State)"; MD5=''}
    Write-Host "[ALERT] Connection to attacker IP $($_.RemoteAddress) by $proc" -ForegroundColor Red
}

# --- 5. Processes with live connections to Google Apps Script (CAV3RN relay) ---
Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' } | ForEach-Object {
    $ip = $_.RemoteAddress
    $rdns = (Resolve-DnsName -Name $ip -Reverse -ErrorAction SilentlyContinue).NameHost
    if ($rdns -match 'googleusercontent|google') {
        $p = Get-Process -Id $_.OwningProcess
        if ($p.ProcessName -notmatch '^(chrome|msedge|firefox|brave|GoogleDriveFS|googledrivesync)$') {
            $report += [PSCustomObject]@{Check='Non-browser -> Google (possible Apps Script C2)'; Finding="$($p.ProcessName) ($($p.Path)) -> $ip ($rdns)"; MD5=''}
        }
    }
}

# --- 6. Persistence sweep: Run keys & recent scheduled tasks referencing staging paths ---
$runKeys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run','HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
foreach ($k in $runKeys) {
    Get-ItemProperty $k | Get-Member -MemberType NoteProperty | ForEach-Object {
        $v = (Get-ItemProperty $k).($_.Name)
        if ($v -match 'ProgramData|AppData|Public|rundll32|regsvr32') {
            $report += [PSCustomObject]@{Check='Persistence - Run key'; Finding="$k\$($_.Name) = $v"; MD5=''}
        }
    }
}
Get-ScheduledTask | Where-Object { $_.Actions.Execute -match 'rundll32|regsvr32|powershell' -and $_.Actions.Arguments -match 'AppData|ProgramData|Public' } | ForEach-Object {
    $report += [PSCustomObject]@{Check='Persistence - Scheduled Task'; Finding="$($_.TaskName): $($_.Actions.Execute) $($_.Actions.Arguments)"; MD5=''}
}

# --- Output ---
if ($report.Count -eq 0) {
    Write-Host "[OK] No CAV3RN/Artifactory indicators found on $env:COMPUTERNAME" -ForegroundColor Green
} else {
    $report | Format-Table -AutoSize
    $report | Export-Csv -Path ".\ioc_hunt_$env:COMPUTERNAME.csv" -NoTypeInformation
    Write-Host "Report written to .\ioc_hunt_$env:COMPUTERNAME.csv" -ForegroundColor Yellow
}

Response Priorities

Immediate (0–4 hours)

  • Block studiotikva.com and all subdomains at DNS sinkhole, proxy, and EDR network controls; block attacker IPs 146.19.216.120, 105.188.75.16, 176.88.121.152 at the perimeter.
  • Push all pulse file hashes into EDR block lists and run retro-hunts across the fleet.
  • Deploy the Sigma and KQL content above; specifically baseline which processes legitimately reach script.google.com — everything else is an alert.
  • If you run JFrog Artifactory: treat as emergency change. Patch CVE-2026-42016 / 42018 / 82329 now; if patching is delayed, isolate the instance from the internet and disable Groovy plugin execution.

24 hours

  • Artifactory operators: audit access logs for the attacker IPs and for anonymous-token usage patterns (CVE-2026-42018); rotate all access tokens, API keys, and service credentials stored in or transiting Artifactory — assume token material was exposed.
  • Review artifact integrity: diff deployed artifacts against known-good hashes/signatures for the past 90 days to detect poisoning before the Rust backdoor was identified.
  • For any host with CAV3RN hits: capture memory before remediation (the modular broker component may only exist in memory), isolate, and reset credentials used on that host.
  • Verify identity integrity on any endpoint that communicated with C2 — espionage frameworks routinely stage credential theft for lateral movement.

1 week

  • Implement egress process-allowlisting for high-value cloud surfaces (Google Apps Script, Azure Functions, Cloudflare Workers) — "can't block, must attribute" is the new normal for C2.
  • Deploy full-pair DNS logging (query + response) so A-record-driven channel selection like CAV3RN's is observable; forward to your SIEM with passive-DNS correlation.
  • Architecturally segment CI/CD infrastructure: artifact repositories should never be internet-facing without an authenticating reverse proxy, and signing enforcement (e.g., Sigstore/cosign verification at deploy time) should be mandatory so tampered artifacts cannot ship.
  • Run tabletop: supply-chain compromise scenario — artifact poisoning to production deploy — and validate rollback speed.

Related Resources

Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.