Compromised npm Package Delivered Coruna-Like iOS Exploit Framework

· Original article ↗

Summary

Researchers traced malicious art-template npm versions 4.13.5 and 4.13.6 to a Safari-focused framework targeting iOS 11–17.2. It resembles Coruna, but analysis of the final exploit payload is ongoing.

Key points

  • The compromised art-template package was taken over after its original maintainer transferred control; versions 4.13.5 and 4.13.6 injected remote scripts into browser builds.
  • The injected scripts redirected visitors to a watering hole that loaded an obfuscated framework targeting Safari on iOS 11.0–17.2; it rejected iOS 17.3 and later.
  • The framework fingerprinted devices and anti-automation signals, selected version-specific remote modules, and beaconed victims’ public IP addresses and device versions to a C2 server.
  • Researchers found strong technical overlap with the Coruna delivery framework, including version targeting, content-addressed module URLs, and obfuscation methods.
  • The final exploit payload and additional exploit-kit components were not confirmed; the article says analysis is ongoing. Attribution to UNC6691 remains unconfirmed.
  • Recommended defenses include blocking the listed malicious domains, searching for campaign indicators in network logs, and restricting third-party scripts on managed iOS devices.

Article Details

Attack Vectors
  • According to original author aui, an unknown actor acquired art-template under the pretense of maintaining the project, released versions containing external scripts, and deleted related issue reports.
  • art-template 4.13.3 concealed a remote-script loader with String.fromCharCode encoding. Versions 4.13.5 and 4.13.6 appended plaintext browser-side loaders to lib/template-web.js, exposing users of downstream applications to attacker-controlled JavaScript.
  • The injected scripts redirected browsers to a watering-hole page hosting an iOS exploit qualification and staging framework.
  • The framework selected remote modules using browser, operating-system version, CPU architecture, and WebAssembly runtime checks. Payload URLs were derived from a session key and module identifiers.
  • Socket assessed the framework as an instance or close derivative of Coruna with high confidence. Actual exploitation and the terminal payload's behavior remained unconfirmed.
Defensive Notes
  • The source recommends blocking the C2 domain at DNS and proxy layers and blocking or alerting on the watering-hole domain family and its subdomains.
  • Alert on a public-IP lookup followed within two seconds by a POST to an unrecognized API endpoint.
  • Hunt proxy and DLP logs for the beacon tracking string CHMK6IG08F42496C22.
  • The source recommends searching web proxy logs for cecd08aa6ff548c2 and matching the published content-addressed module paths.
  • Treat JavaScript requests from the reported watering-hole domain to Safari iOS clients as suspicious.
  • For iOS-heavy organizations, the source recommends MDM restrictions on third-party scripts from unmanaged domains and enforcing Safe Browsing on managed devices.
  • Do not replay the implant in a browser-connected JavaScript environment: it retrieves live remote modules at runtime.
  • The sample disables payload selection at iOS 17.3 and later. Static analysis of the qualification framework alone does not confirm successful exploitation.
  • The source reports retrieving all 14 remote modules, but analysis of their terminal actions and correspondence to previously reported Coruna components remained ongoing.

Indicators of compromise

TypeIndicatorContext
DOMAINcfww[.]shopDomain family the source recommends blocking because it hosts suspicious delivery infrastructure.
DOMAINl1ewsu3yjkqeroy[.]xyzC2 domain receiving victim public-IP and device-version beacons.
DOMAINutaq[.]cfww[.]shopWatering-hole origin hosting the implant and remote payload modules.
DOMAINv3[.]jiathis[.]comSupply-chain injection origin hosting the maliciously injected remote scripts.
MD56e79ae622b7ef30f31fdbcc2dc65339eMD5 of the exploit delivery framework entry point.
SHA114669ca3b1519ba2a8f40be287f646d4d7593eb0SHA-1 content identifier for the implant's bundled fingerprinting and capability engine.
SHA1171a7da1934de9e0efb9c1645f4575f88e482873Remote module content identifier for the desktop WebKit cryptographic getter.
SHA129b874a9a6cc9fa9d487b31144e130827bf941bbRemote module content identifier for the wF8NpI cryptographic getter.
SHA1477db22c8e27d5a7bd72ca8e4bc502bdca6d0abaRemote module content identifier for shared cryptographic initialization.
SHA157620206d62079baad0e57e6d9ec93120c0f5247SHA-1 content identifier for the implant's bundled 64-bit mathematics module.
SHA157cb8c6431c5efe203f5bfa5a1a83f705cb350b8Remote module content identifier for the iOS 16.2–16.5 WASM loader.
SHA17d8f5bae97f37aa318bccd652bf0c1dc38fd8396Remote module content identifier for the iOS 11.0–15.1 WASM loader.
SHA17f809f320823063b55f26ba0d29cf197e2e333a8Remote module content identifier for the WASM-verified final action.
SHA18064d4e0322f069b3dba13e7957ff0ca7dab7984SHA-1 of the exploit delivery framework entry point.
SHA191b278ddb2aec817b10c1535e0963da74f9b8eebRemote module content identifier for the non-Safari WebKit cryptographic getter.
SHA19db8a84aa7caa5665f522873f49293e8eebccd5cRemote module content identifier for the LJ1EuL cryptographic getter.
SHA1b586c88246144bc7975ad4e27ec6d62716bf34eaRemote module content identifier for the fallback cryptographic getter.
SHA1ba712ef6c1bf20758e69ab945d2cdfd51e53dcd8Remote module content identifier for the WASM ABI sub-module.
SHA1c03c6f666a04dd77cfe56cda4da77a131cbb8f1cRemote module content identifier for the primary final action.
SHA1d11d34e4d96a4c0539e441d861c5783db8a1c6e9Remote module content identifier for the iOS 15.6–16.1 WASM loader.
SHA1e3b6ba10484875fabaed84076774a54b87752b8aRemote module content identifier for the primary iOS 16.6–17.2 WASM loader.
SHA1ea3da0cfb0a5bdb8c440dd4a963f94cbd39d9e44Remote module content identifier for the iOS 15.2–15.5 WASM loader.
SHA256080da430f7e3a38d7cad59887df30d9ac40e70d203c7aa5f5afaf0cafcb73e5fRetrieved file-content hash of the iOS 11.0–15.1 WASM loader.
SHA2562c4a5a49a84f55db0dd5554f7a9e055dbb0eae3782986726c6dcfab84ecd6dc5Retrieved file-content hash of the iOS 16.2–16.5 WASM loader.
SHA2562cfa14b2cd1f3fd51406cf1ac49c761a5c26ce3994e97de7f1ca469d85248a52Retrieved file-content hash of the WASM-verified final-action module.
SHA256329ae1401819da4f87e3726b7e2707afcaf62d1219c4256c828df36af0a8784aRetrieved file-content hash of the LJ1EuL cryptographic getter.
SHA256473f182b8cbbdb5b4b29b7ad875014d66f1691ed2e770c633b559d97243895a7Retrieved file-content hash of the wF8NpI cryptographic getter.
SHA256593548d714f6d48acb886d42bf576d8fd6b1ddae6f888dda0719671a53463663Retrieved file-content hash of the iOS 15.6–16.1 WASM loader.
SHA2565c0ebd86d2e8ae2087c0a4def4e0364a0cfb85c7e0a753fc96dca55b6c303432Retrieved file-content hash of the WASM ABI sub-module.
SHA256675a40df5f517f8f0cd99f74c5468f56d1d8f05003e997477a2af3bc7b0105a9Retrieved file-content hash of the fallback cryptographic getter.
SHA2567b8436669563e7d317c219b26432bdaab70e39061ea2c1c70fcc201f2c19c470Retrieved file-content hash of the desktop WebKit cryptographic getter.
SHA256b0b29b6148c4b0dbd77d33f821ca01e2d7a711988b854285a2606dcc53894abeRetrieved file-content hash of the iOS 15.2–15.5 WASM loader.
SHA256de1a07d8978725eaa6da5658e373e88264ac90515750201bfbe17947d5a9e788Retrieved file-content hash of the non-Safari WebKit cryptographic getter.
SHA256eaab0874332777ad8a03a292bcd608a3358547f9f16ab551d34eef35d5cd539eRetrieved file-content hash of the primary iOS 16.6–17.2 WASM loader.
SHA256ebcc76dcd5ef596e732321a8d16eb2dee525c5d9a68c700b7885648c13c65a57Retrieved file-content hash of the primary final-action module.
SHA256f31bdd069fe7966ae11be1f78ee5dd44445938856dd1df12379e0e84a6851f5cSHA-256 of the exploit delivery framework entry point 49554fde7424c31c.js.
SHA256feb9442c39619d7bb3ff29de8e1d4bebceb1b24f8c0a63da2f2b30a1023dc94fRetrieved file-content hash of the shared cryptographic initialization module.
URLhxxps[:]//l1ewsu3yjkqeroy[.]xyz/api/ip-sync/syncC2 endpoint receiving victim public-IP and device-version beacons.
URLhxxps[:]//utaq[.]cfww[.]shop/17480ecc0120292fb6b8b19f2fa134385dcfd0fd[.]jsRemote desktop WebKit cryptographic getter module URL.
URLhxxps[:]//utaq[.]cfww[.]shop/3bc0f6865c0476c0a98a76cb9924d6b3972df591[.]jsRemote fallback cryptographic getter module URL.
URLhxxps[:]//utaq[.]cfww[.]shop/3fd66b32c44150acff3dcb80f86c759574148ed5[.]jsRemote cryptographic getter module URL for the LJ1EuL path.
URLhxxps[:]//utaq[.]cfww[.]shop/46ecd515ac9e99ef0603063db39303a0fd849632[.]jsRemote WASM loader URL selected for iOS 15.2–15.5.
URLhxxps[:]//utaq[.]cfww[.]shop/4a75f0551eba446b4fa35127024a84b71d9688d6[.]jsRemote cryptographic getter module URL for the wF8NpI path.
URLhxxps[:]//utaq[.]cfww[.]shop/5ff38f5342bb3c931bc504d6fa3523d0c8865b93[.]jsRemote WASM loader URL selected for iOS 11.0–15.1.
URLhxxps[:]//utaq[.]cfww[.]shop/6beef463953ff422511395b79735ec990bed65f4[.]jsPrimary remote WASM loader URL selected for iOS 16.6–17.2.
URLhxxps[:]//utaq[.]cfww[.]shop/8835419f53fa3b270c8928d53f012d4c28b29ea4[.]jsRemote final-action module URL for the WASM-verified path; terminal behavior remained under investigation.
URLhxxps[:]//utaq[.]cfww[.]shop/8c4451cf1258f9a8d6a8af27864f111fd69a0e99[.]jsRemote WASM loader URL selected for iOS 16.2–16.5.
URLhxxps[:]//utaq[.]cfww[.]shop/9af53c1bb40f0328841df6149f1ef94f5336ae11[.]jsRemote primary final-action module URL; terminal behavior remained under investigation.
URLhxxps[:]//utaq[.]cfww[.]shop/aea58f0e58801b528702a6c66bf4af8b99041243[.]jsRemote WASM ABI sub-module URL used by the architecture-specific dispatcher.
URLhxxps[:]//utaq[.]cfww[.]shop/bef10a7c014b826e9dd645984e80baf313c1635f[.]jsRemote shared cryptographic initialization module URL.
URLhxxps[:]//utaq[.]cfww[.]shop/f6377d5d458183d41c5fd99661c5a306b42c6255[.]jsRemote non-Safari WebKit cryptographic getter module URL.
URLhxxps[:]//utaq[.]cfww[.]shop/ff4f3cb4711fb364b52de5ab04a8f83140466f89[.]jsRemote WASM loader URL selected for iOS 15.6–16.1.
URLhxxps[:]//utaq[.]cfww[.]shop/gooll/49554fde7424c31c[.]jsExploit qualification and delivery framework entry-point URL.
URLhxxps[:]//utaq[.]cfww[.]shop/gooll/gooll[.]htmlWatering-hole landing page embedding the implant.
URLhxxps[:]//v3[.]jiathis[.]com/code/art[.]jsRemote script injected by compromised art-template 4.13.6.
URLhxxps[:]//v3[.]jiathis[.]com/code/jia[.]js?uid=artemplateRemote script injected by compromised art-template 4.13.5.

MITRE ATT&CK

T1027 · Obfuscated Files or InformationThe implant concealed strings and constants using UTF-16 integer packing, base64 module bodies, per-string XOR encoding, and XOR integer pairs.T1059.007 · JavaScriptThe injected browser JavaScript executed decoded and remotely fetched module bodies through new Function().T1071.001 · Web ProtocolsAn independent beacon loop sent HTTPS POST requests containing the victim's public IP, device version, and tracking code to C2 every ten seconds.T1082 · System Information DiscoveryThe framework inspected user-agent and platform information, scored iOS versions, and probed CPU architecture to select device-specific modules.T1105 · Ingress Tool TransferThe content-addressed loader retrieved additional JavaScript modules from the watering-hole origin using XHR and evaluated their contents.T1140 · Deobfuscate/Decode Files or InformationThe implant recovered packed strings at runtime, decoded base64 with atob(), and decoded XOR-encoded character arrays before evaluating modules.T1189 · Drive-by CompromiseDownstream websites consuming the compromised browser build silently loaded a watering-hole exploit delivery framework in visitors' browsers.T1195.001 · Compromise Software Dependencies and Development ToolsThe actor took control of art-template and published compromised dependency versions containing browser-side remote-script loaders.T1497.001 · System ChecksThe framework rejected webdriver-controlled browsers and checked WebRTC, WebGL, MathML rendering, storage behavior, and genuine WebAssembly runtime characteristics.

CVE

People

Threat Actors

Malware

Products

Tools

Related Articles