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
| Attribute | Detail |
|---|---|
| Attribution | Unknown state-aligned operator; targeting pattern (Israel-focused espionage) suggests nation-state tasking |
| Delivery | Not fully disclosed in pulse; consistent with spear-phishing / staged loader delivery of the modular payload set |
| Architecture | Modular DLL framework: GoogleService.dll, CommunicationUxTheme.dll, net.dll, rnp.dll, texture.dll |
| C2 Protocol | DNS A-record responses act as a per-transaction channel selector: direct HTTPS to api.studiotikva.com or Google Apps Script relay |
| C2 Resilience | DNS-driven validation and rotation of Google Apps Script deployment IDs; operators can burn and re-issue relay endpoints without recompiling implants |
| Local Component | A broker module coordinates inter-module communication on-host, limiting each module's network exposure |
| Anti-Analysis | Abuse of Google infrastructure (reputation laundering), DNS-as-control-plane (evades HTTP inspection), modular loading (no single full-capability binary on disk) |
| Objective | Long-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
| Stage | Mechanism |
|---|---|
| Initial Access | CVE-2026-82329 — unauthenticated path to administrative functionality via Groovy plugin abuse |
| Token Theft | CVE-2026-42018 — internal anonymous-user tokens exposed |
| Privilege Escalation | CVE-2026-42016 — insufficient token validation allows escalation to admin |
| Post-Exploitation | Rust-based backdoor deployed; observed source IPs include 146.19.216.120, 105.188.75.16, 176.88.121.152 |
| Objective | Repository 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. Thens1/ns2entries 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/checkandhttps://api.studiotikva.com/ac. The/api/v1/update/checkpath 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:
- Push domains/IPs to DNS sinkhole, EDR network block lists, and proxy/egress filters immediately.
- Push file hashes into EDR block/retro-hunt and email/DLP detonation lookups.
- Do not block Google Apps Script domains. Instead, build an allowlist of processes sanctioned to reach
script.google.com/script.googleusercontent.comand alert on everything else. - 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.
- 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
---
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
// 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
<#
.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.comand all subdomains at DNS sinkhole, proxy, and EDR network controls; block attacker IPs146.19.216.120,105.188.75.16,176.88.121.152at 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.