CastleLoader: A Deep Dive into Stealthy Loader Targeting Government Sector 

ANY.RUN’s team conducted an extensive malware analysis of CastleLoader, the first link in the chain of attacks impacting various industries, including government agencies and critical infrastructures. 

It’s a unique walkthrough of its entire execution path, from a packaged installer to C2 server connection, as well as an overview of a parser developed to extract initialized local variables and automatically decode indicators of compromise (IOCs) featured in them. 

Key Takeways 

  • CastleLoader is a stealthy malware loader used as the first stage in attacks against government entities and multiple industries. 
  • It relies on a multi-stage execution chain (Inno Setup → AutoIt → process hollowing) to evade detection. 
  • The final malicious payload only manifests in memory after the controlled process has been altered, making traditional static detection ineffective. 
  • CastleLoader delivers information stealers and RATs, enabling credential theft and persistent access. 
  • full-cycle analysis allowed us to extract runtime configuration, C2 infrastructure, and high-confidence IOCs. 

CastleLoader as an Initial Access Threat 

CastleLoader is a malicious loader malware built to deliver and install other malicious components. It lays the groundwork for the attack, becoming its starting point. 

This loader has commonly occurred in cyber attacks since early 2025. It gained popularity due to its high infection rate and universal nature, making it a powerful yet evasive tool. 

One of CastleLoader’s malicious campaigns is known to impact a total of 469 devices. It became a significant threat to organizations, especially US-based government entities. Its broader scope includes industries like IT, logistics, travel, and critical infrastructures across Europe. 

CastleLoader is dangerous as a link in the chain delivering information stealers and  RATs, making credential theft and persistent network access a high risk. 

The loader’s popularity has inspired ANY.RUN’s malware analysis team to break down its malicious sample in order to uncover what it’s made of, retrieve signatures, and retrieve  malware configurations. 

Detect CastleLoader and More with Threat Intelligence Feeds 

Modern malware like CastleLoader is designed to evade traditional detection. To keep up with the pace of adversaries, security teams need threat intelligence that reflects what attackers are using right now. 

ANY.RUN’s Threat Intelligence Feeds provide real-time indicators extracted from live malware executions performed by thousands of SOC teams worldwide. With TI Feeds, they achieve: 

  • Faster threat detection: Identify active loaders, stealers, and RATs as soon as they appear in real-world attacks thanks to 99% unique data extracted from the latest sandbox analyses by 15K SOCs and 500K analysts. 
  • Higher confidence decisions: Indicators are backed by execution context, not guesswork or outdated reports. 
  • Improved SOC efficiency: Fewer false positives mean less alert fatigue and better use of analyst time. 
  • Stronger risk management: Early visibility into emerging malware families helps prevent business disruption. 

By combining real-time sandbox intelligence with immediate IOC delivery, ANY.RUN TI Feeds help organizations stay ahead of fast-evolving threats like CastleLoader. 

Prevent attacks by tapping into 99% unique IOCs 
Integrate TI Feeds for better proactive defense



Reach out for details 


Initial Analysis: Sandbox Telemetry 

The analysis started with ANY.RUN’s Interactive Sandbox detonation.  

View analysis 

The launch of CastleLoader sample in ANY.RUN. Suspicious processes and network activities detected 

What instantly grabs our attention here is a system process chain, at the end of which a request to 94[.]159[.]113[.]32:80 was sent. To understand this activity better, we switched to the binary analysis. 

Static analysis: Inspecting Inno Setup Installer  

To get a basic overview of the binary, let’s process it via DIE (Detect It Easy).  

CastleLoader installer analyzed in Detect It Easy 

It reveals that the binary consists of Object Pascal (Delphi) and Inno Setup Module (installer). 

The next stage of the analysis requires the use of innoextract, a tool to unpack installers. We used a fork that allows you to unpack password-protected archives, which came in handy. 

Files extracted from Inno Setup installer 

Archive extraction reveals several executables. At this point, it’s Autolt3.exe and the compiled script freely.a3x that grab our attention most. These are the files that directly participate in the calling chain. Other files, as it turned out later, aren’t related to the malware execution, and their role is unclear. 

Next, let’s use Autolt-Ripper to extract compiled Autolt scripts from A3X containers. As a result of this, we get a file script.au3 containing 24,402 code lines. The majority of this code, which is responsible for the malicious chain, is unreadable: 

// A function’s minimal listing 

Func FUNC_38 ( $XGOHK_KNZJTRNG , $FRNQQSFKMV_ONCPFFG_IUESI , $OYJVN ) 

  Local $VAR_2745 [ 5 ] = [ ( $FOCOFQYNAZZDTMNK [ 0 ] [ 0 ] <= $VAR_1884 ? $APITY_TTXPNVODYF_UOFBAYSHE : 51205 ) , 51215 , ( $DCZH1PQYFZ0_9_S_KG8_Q3 < $WGCOD_JPCLUUNAEM [ 1 ] ? 51217 : $HQBFEELFMG_MKBEGBLQI ( ) ) , ( $XCEAEI_JVVDYWYNZG_VYLLS >= $G_HGLSAQTEAFZZZONMJ [ 6 ] ? $GVNKFKFUPA_XKWCWRP_GQDKXPY ( ) : 51193 ) , ( $UNPBEN < $G_HGLSAQTEAFZZZONMJ [ 8 ] ? 51205 : $VAR_1654 [ 1 ] [ 7 ] ) ] 

  Local $NWBSM 

  Local $JIQBD 

  For $JIQBD = ( $MON_GLZO__BPDFZTL [ 3 ] > $MON_GLZO__BPDFZTL [ 9 ] ? 0 : $VAR_364 [ 0 ] [ 0 ] ) To ( $G_HGLSAQTEAFZZZONMJ [ 6 ] <= $FOCOFQYNAZZDTMNK [ 0 ] [ 3 ] ? $VBTVZVORQTC : 4 ) 

    $NWBSM = $VAR_2745 [ $JIQBD ] 

    $NWBSM -= $JIQBD 

    $NWBSM += 14431 

    $NWBSM = $IGFABA_UFUGKAMKV ( $NWBSM , $JIQBD ) 

    $NWBSM = $RM_I2U_3RPS4_I5Y0IIHAZ1_6 ( $NWBSM , 65535 ) 

    $VAR_2745 [ $JIQBD ] = $IDBABKRDVSBFUNLRSLIOXWAD ( $NWBSM ) 

  Next 

  $VAR_2745 = $WWXHKDX ( $VAR_2745 , "" ) 

  Return $VAR_2745 

EndFunc

Still, we are able to learn about the loaded modules and WinAPI wrappers: 

// Some of the kernel32.dll module’s wrappers

Func _WINAPI_ASSIGNPROCESSTOJOBOBJECT ( $HJOB , $HPROCESS ) 

  Local $ACALL = DllCall ( "kernel32.dll" , "bool" , "AssignProcessToJobObject" , "handle" , $HJOB , "handle" , $HPROCESS ) 

  If @error Then Return SetError ( @error , @extended , False ) 

  Return $ACALL [ 0 ] 

EndFunc 

Func _WINAPI_ATTACHCONSOLE ( $IPID = + 4294967295 ) 

  Local $ACALL = DllCall ( "kernel32.dll" , "bool" , "AttachConsole" , "dword" , $IPID ) 

  If @error Then Return SetError ( @error , @extended , False ) 

  Return $ACALL [ 0 ] 

EndFunc 

Func _WINAPI_ATTACHTHREADINPUT ( $IATTACH , $IATTACHTO , $BATTACH ) 

  Local $ACALL = DllCall ( "user32.dll" , "bool" , "AttachThreadInput" , "dword" , $IATTACH , "dword" , $IATTACHTO , "bool" , $BATTACH ) 

  If @error Then Return SetError ( @error , @extended , False ) 

  Return $ACALL [ 0 ] 

EndFunc 

Func _WINAPI_CREATEEVENT ( $TATTRIBUTES = 0 , $BMANUALRESET = True , $BINITIALSTATE = True , $SNAME = "" ) 

  If $SNAME = "" Then $SNAME = Null 

  Local $ACALL = DllCall ( "kernel32.dll" , "handle" , "CreateEventW" , "struct*" , $TATTRIBUTES , "bool" , $BMANUALRESET , "bool" , $BINITIALSTATE , "wstr" , $SNAME ) 

  If @error Then Return SetError ( @error , @extended , 0 ) 

  Local $ILASTERROR = _WINAPI_GETLASTERROR ( ) 

  If $ILASTERROR Then Return SetExtended ( $ILASTERROR , 0 ) 

  Return $ACALL [ 0 ] 

EndFunc 

Func _WINAPI_CREATEJOBOBJECT ( $SNAME = "" , $TSECURITY = 0 ) 

  If Not StringStripWS ( $SNAME , $STR_STRIPLEADING + $STR_STRIPTRAILING ) Then $SNAME = Null 

  Local $ACALL = DllCall ( "kernel32.dll" , "handle" , "CreateJobObjectW" , "struct*" , $TSECURITY , "wstr" , $SNAME ) 

  If @error Then Return SetError ( @error , @extended , 0 ) 

  Return $ACALL [ 0 ] 

EndFunc 

Func _WINAPI_CREATEMUTEX ( $SMUTEX , $BINITIAL = True , $TSECURITY = 0 ) 

  Local $ACALL = DllCall ( "kernel32.dll" , "handle" , "CreateMutexW" , "struct*" , $TSECURITY , "bool" , $BINITIAL , "wstr" , $SMUTEX ) 

  If @error Then Return SetError ( @error , @extended , 0 ) 

  Return $ACALL [ 0 ] 

EndFunc 

Several WinAPI wrappers may potentially participate in attacks for further system infection, because it’s the Autolt scrip that prepares the environment and control handover. 

Key function calls 

This combination of functions looks suspicious and hints at cross-process manipulations: 

kernel32.GetProcAddress — Dynamic function resolution 

kernel32.CreateFileW — Working with files 

kernel32.CreateProcessW — Creating processes 

kernel32.CreateMutextW — Creating mutexes 

kernel32.OpenProcess — Opening process descriptors 

kernerl32.ReadProcessMemory — Reading the memory of other processes 

kernerl32.DuplicateTokenEx — Duplicating security tokens 

kernelbased.AdjustTokenPriviliges — Manipulating the privileges 

kernel32.WriteFile — Writing into files

Since full-scale deobfuscation would take up too much time, let’s switch to dynamic analysis for now. 

Dynamic Analysis: Tracing Execution 

Let’s launch Autolt3.exe in x32dbg with breakpoints at functions that we’ve listed above, with the compiled script freely.a3x as a parameter. 

Soon after the initialization of Autolt3.exe, we see a kernel32.CreateProcessW call, where jsc.exe, the final link of our chain, is located. 

Note: this is a JScript.NET compilator, a part of an older .NET Framework. What’s unusual is that no extra data is transmitted to lpCommanLine. 

A breakpoint at CreateProcessW function. A jsc.exe child process is created with CREATE_SUSPENDED flag 

Also, there’s a CREATE_SUSPENDED flag in dwCreationFlags, which points to an uncommon use of jsc.exe. But how does it get the payload? 

The next string of calls reveals this: 

  • kernel32.CreateProcessW creates the jsc.exe process flagged as CREATE_SUSPENDED. 
  • kernel32.GetThreadContext delivers registries — the context of the main flow. This is typical for the preparation to process hollowing
  • kernel32.VirtualAllocEX allocates a 0x3B000-sized memory area in jsc.exe process with MEM_COMMIT | MEM_RESERVE flags and PAGE_EXECUTE_READWRITE protection. This allows you to place and launch any code. 
A breakpoint at VirtualAllocEx. The memory area allocation in the child process with permission to launch (PAGE_EXECUTE_READWRITE)  

To confirm this and extract the key module, let’s keep tracing the malware. The next critical call is kernel32.WriteProcessMemory. Among its arguments is a pointer to a buffer with loaded data, featuring familiar PE Magic and DOS Stub signatures. This clearly means that a PE file is injected into the jsc.exe process. 

At this stage, we can safely dump a clean binary from the memory. 

A breakpoint at WriteProcessMemory. Malicious PE image is written into the allocated memory area  

The payload is revealed, but we continue unraveling the entire chain until the final call — kernel32.ResumeThreat. This will help us make sure that the malware doesn’t do anything extra, like embedding another hidden process, before the control handover.  

The next critical step is the call of kernel32.ReadProcessMemory. At this stage, the threat obtains a pointer to the PEB (Process Environment Block) structure, from which it extracts a PEB.ImageBaseAddress (base load address). This address is further rewritten to the injected PE module. That’s crucial for standard loading mechanisms of Windows, including early ntdll.LdrInintializeThunk initialization, as this allows for the correct processing of import tables, relocating, and restoring of the image’s data. 

A breakpoint at ReadProcessMemory. Extraction of PEB.ImageBaseAddress of the child process to replace it with the base address of the injected PE 

After this, kernel32.WriteProcessMemory is called, which completes the stage of replacing the base address in the PEB structure. 

Next, kernel32.SetThreadContext is invoked, almost finalizing the process hollowing. At this stage, the malware writes a pointer to the entry point of the injected module into the EAX register. 

After the call to kernel32.ResumeThread, control is handed over to ntdll.LdrInitializeThunk, which performs loader initialization and prepares the process execution environment. 

Once initialization is complete, ntdll.LdrInitializeThunk calls ntdll.NtContinue, restoring the execution context. 

As a result, the execution continues from the address stored in the EIP register. This is the beginning of the ntdll.RtlUserThreadStart procedure, which places the entry point from the EAX register onto the stack in accordance with the __stdcall calling convention and then hands over control to ntdll.__RtlUserThreadStart. 

A breakpoint at SetThreadContext, writing an EntryPoint of the injected module into EAX registry before renewing the flow 

Notably, this is not a common process hollowing. The regular method includes the extraction of the original memory area via NtUnmapViewOfSection. But in CastleLoader’s case, the malware dismisses this step intentionally. 

To monitoring tools like System Informed, the process doesn’t look off. It’s also not a part of an event chain known to EDR

This decreases the probability of detection without disrupting the processing of all tables and structures, ensuring normal functioning of the injected module. 

Preliminary Results 

The original Inno Setup installer turned out to be a container with a set of auxiliary files, among which the AutoIt3.exe + freely.a3x combination played a key role. We were able to extract and partially decompile the AutoIt script; however, most of its logic was heavily obfuscated and consisted of numerous wrappers around the WinAPI

Static analysis showed that the script prepares the environment and launches the next stage, while dynamic analysis confirmed that after jsc.exe is started, one of the process hollowing techniques is executed: another executable module is injected into the process’s address space. 

As a result, we discovered a fully functional PE file — the main CastleLoader module —  inside the process and successfully dumped it for further analysis. 

Such a sophisticated multi-stage execution chain was not implemented merely to complicate analysis, but specifically as an attempt to conceal the execution of the main payload from detection mechanisms. Using Inno Setup as a container, an AutoIt script as an intermediate layer, and process hollowing over jsc.exe, allows CastleLoader to distribute across several components that appearbenign at first glance. 

After the loader completes its execution, the files extracted by the Inno Setup installer remain on the disk. This may either be a deliberate attempt to mimic the normal behavior of legitimate software, which often leaves installation artifacts behind, or simply an implementation flaw. Given the relative novelty of the malware family, it’s probably the latter.  

This execution model reduces the likelihood of detection, as each individual stage appears legitimate, and the final payload only manifests in memory after the controlled process has been altered. As a result, static signatures, simple behavioral heuristics, and process monitoring systems become ineffective. A fully functional malicious module exists only at runtime, and only within an already modified process. 

Static signatures, simple behavioral heuristics, and process monitoring systems become ineffective 

Dynamic analysis from ANY.RUN:
Boost DR by 36%, cut MTTR by 21 minutes



Contact for demo 


Going Back to Static Analysis 

After uploading the memory dump to Ghidra, let’s start the analysis of its execution context. Right after opening the dump we see a kernel32.MessageBoxW call, which displays a fake error message: “System Error. The program can’t start because VCRUNTIME140.dll is missing from your computer. Try reinstalling the program to fix this problem.” 

After that, the execution of malicious code continues. 

WinMain entry point in Ghidra decompilator. Early analysis of the malicious code’s structure 

During the analysis, we can see functions with unclear values. By studying their references, we see that they are actively called throughout the program’s execution. 

In FUN_00e469f0, the first argument of the function is a pointer to the start of the PE module. At first, the value is dereferenced and checked for a DOS heading 0x5A4D (“MZ”). This is followed by NT heading’s validation and decomposition of PE’s key structures. 

The function manually gets access to the export table, allowing for a rewrite of the basic module address (IMAGE_DOC_HEADER*). Then each exported character goes through an embedded hash function, while the calculated hash is compared to the initial value.  

GetProcAddressByHash function, dynamic resolution of API addresses by hash names 

Since we now know the origin of each digest and the way the function resolves the required APIs by hash, we can gather a set of potentially used network functions, run them through the hashing algorithm, and generate an enumeration (enum) for Ghidra

Using the script, we automatically replaced all hashes with their corresponding function names — the result can be seen in the Equates Table. Each hash is now tied with a readable API name, along with the number of cross-references to it. 

This also makes it easy to track all calls of these functions via the References section, where for each usage point there’s a reference to the corresponding API address. 

Equates table. Correlation of hashes with names of imported WinAPI functions 

After generating the enum and substituting API names in the Equates Table, we see that the binary uses WINHTTP.WinHttpOpen. Cross-references to the corresponding hash prove that. We annotated a function with this call to make it easier to follow the logic. Then, by examining the cross-references to this function, we can move to its caller — the point where the HTTP session setup begins. 

InitSession function – calling for WinHttpOpen for the initialization of a HTTP session 

While examining the HTTP connection’s initialization stage, we identified a function that returns a pointer to the data structure used as the initial configuration for the network logic. The format of this structure isn’t clear; but the fact that it’s there suggests the presence of a dedicated procedure responsible for creating and populating the configuration structure. 

We annotated several references around the returned pointer and proceeded to analyze the function that forms the configuration structure. This is done to restore its components and understand which parameters are used for network connection. 

GetMalwareConfig calling and configuration handover to InitSession for the establishment of the connection 

Several nested functions lead us to a large-scale procedure, during which the configuration data is prepared. Its values aren’t static strings, but a mass of encrypted bytes packaged into DWORDs with two UTF-16LE characters and placed right on the stack. This data is postprocessed with a simple bit-by-bit transformation into string buffers. 

A function for getting the configuration — XOR decoding of configuration strings with a cyclic key at the stack 

The temporary buffers are then passed to UniStr::Copy and pasted into fixed global addresses. All of these addresses are laid out sequentially in .data sections, effectively forming a single contiguous configuration block. 

At the end, the function returns the address of the first element (0xE67830), allowing the entire data set to be used as an array or a structure with fixed offsets. 

An example of a decryption algorithm 

input[8] = 0x67; 

input[9] = 0x4a; 

input[10] = 0xda; 

input[0xb] = 0xb6; 

step = 0; 

input[0xc] = 99; 

input[0xd] = 0x7d; 

input[0xe] = 0xa0; 

input[0xf] = 0xe4; 

input[0x10] = 0x31; 

input[0x11] = 0x62; 

input[0x12] = 0x87; 

input[0x13] = 0xa7; 

input[0x14] = 0x62; 

input[0x15] = 0x49; 

input[0x16] = 0x98; 

input[0x17] = 0x98; 

input[0x18] = 0x6c; 

input[0x19] = 0x6d; 

input[0x1a] = 0xbf; 

input[0x1b] = 0xaa; 

input[0x1c] = 0; 

do { 

  output[step + 8] = (ushort)(byte)(&key)[step & 3] ^ input[step + 8]; 

  output[step + 9] = (ushort)(byte)(&key)[step + 1 & 3] ^ input[step + 9]; 

  output[step + 10] = (ushort)(byte)(&key)[step + 2 & 3] ^ input[step + 10]; 

  step = step + 3; 

} while (step < 0x15); 

UniStr::Copy(&DAT_00e67848,(short *)(output + 8)); 

// In this fragment, there’s a small static block of data (byte array) formed. 

// Then, bit-by-bit, it’s decrypted by undergoing XOR operation with a cyclic one-table key. 

// Decrypted bytes are extended to UTF-16LE characters and written into an exit buffer, which is then pasted into the global memory region 

// via UniStr::Copy. 

// Basically, this is a simple custom decryption of strings using fixed bytes arrays and cyclic XOR masking by index with transformation to Unicode.

Building a Custom Parser 

After manually decrypting several strings, we realized that the process could be automated. The extraction logic used by CastleLoader is known: it has a single UTF-16LE DWORD pattern, loop construct, and fixed addresses, from which the XOR bytes are taken. That’s enough to identify the repeating code fragments and write a Python script that extracts all strings from the dump in a single pass. 

Parser’s results 

E32E6D: %s/settings/%s  

E33F4C: windows_version  

E3417F: machine_id  

E33D70: access_key  

E35E40: %s/tasks/complete/id/%lu  

E37732: http://94[.]159[.]113[.]32/service (C2)  

E377D2: gM7dczM61ejubNuJljRx (UserAgent)  

E378A8: N3sBJNQKOyBSqzOgQSQVf9 (Mutex)  

E3F4E9: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36

… and so on. 

The analysis of the configuration function was the right call. We ended up with the entire strings array used by CastleLoader. As a result, we get the published script

Most importantly, the resulting strings feature the very C2 address which we saw in the sandbox analysis. Now it’s extracted not as a secondary effect of network activity, but as a part of malware configuration. This decisively confirms its role and proves that retrieved IOCs are reliable for detection and analysis. 

This decisively confirms its role and proves that retrieved [sandbox] IOCs are reliable for detection and analysis. 

Final Observations 

Since we wanted to demonstrate the entire analysis process from start to finish, we deliberately followed the extended analysis path, from coming up with hypotheses to testing and adjusting them. In practice, many of these stages could have been skipped. 

ANY.RUN provides sufficiently detailed telemetry to significantly shorten the analysis. 

ANY.RUN provides sufficiently detailed telemetry to significantly shorten the analysis. For example, we didn’t have to investigate the Inno Setup module, since the sample did not remove the extracted files afterwards. 

Detect any threat in under 60 seconds
Integrate ANY.RUN’s Sandbox in your SOC



Sign up now


The final process could have been dumped immediately, too, to bypass the intermediate stages, as it was the only one that actually interacted with the network and generated traffic. 

Nevertheless, the full walkthrough proved valuable: it allowed us to reconstruct the entire execution chain, understand the loader’s internal logic, and verify that the extracted data really indicatesCastleLoader’s presence. This approach gave us not only the final set of IOCs, but also an understanding of the mechanisms behind them. 

About ANY.RUN 

ANY.RUN is a leading provider of interactive malware analysis and threat intelligence solutions trusted by security teams worldwide. The platform combines real-time sandboxing with a comprehensive intelligence ecosystem, including Threat Intelligence FeedsTI Lookup, and public malware submissions. 

More than 500,000 security analysts and 15,000 organizations rely on ANY.RUN to accelerate investigations, validate TTPs, collect fresh IOCs, and track emerging threats through live, behavior-driven analysis. 

By giving defenders an interactive, second-by-second view of malware execution, ANY.RUN enables faster detection, better-informed decisions, and a stronger overall security posture. 

Discover how ANY.RUN can enhance your SOC — start your 14-day trial today. 

Appendix 1: IOCs 

Analyzed Files 

Name  MD5  SHA1  SHA256 
8b7c1657f4d5cf0cc82d68c1f1a385adf0de27d46fc544bba249698e6b427856.exe (Inno Setup Installer)  9A0960C674378A049B8D9AD0E1C641C3  0580A364AB986B051398A78D089300CF73481E70  8B7C1657F4D5CF0CC82D68C1F1A385ADF0DE27D46FC544BBA249698E6B427856 
freely.a3x (AutoIt Script)  AFBABA49796528C053938E0397F238FF  DD029CD4711C773F87377D45A005C8D9785281A3  FDDC186F3E5E14B2B8E68DDBD18B2BDA41D38A70417A38E67281EB7995E24BAC 
payload.exe (CastleLoader Core Module)  1E0F94E8EC83C1879CCD25FEC59098F1  9E11E8866F40E5E9C20B1F012D0B68E0D56E85B3  DFAF277D54C1B1CF5A3AF80783ED878CAC152FF2C52DBF17FB05A7795FE29E79 

Network Indicators 

C2 Server 

  • 94[.]159[.]113[.]32 

HTTP Request 

Mutex 

  • N3sBJNQKOyBSqzOgQSQVf9 

User-Agents 

  • gM7dczM61ejubNuJljRx 
  • Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 

YARA Rules 

rule CastleLoader { 

    meta: 

        author = "ANY.RUN" 

        date = "2025-12-02" 

        description = "Identifies CastleLoader malware samples" 

        threat = "CastleLoader" 

    strings: 

        $p1 = { 44 a0 2d 39 } //CreateMutexW 

        $p2 = { 82 06 d7 4e } //WinHttpOpen 

        $p3 = { 81 03 08 6f } //WinHttpConnect 

        $p4 = { 18 7b d4 2e } //WinHttpOpenRequest 

        $p5 = { e4 f4 96 33 } //WinHttpReceiveResponse 

        $p6 = { d8 da 54 96 } //ShellExecuteW 

        $p7 = { 5f 9e 43 16 } //GetUserNameW 

        $p8 = { b4 89 86 1b } //GetComputerNameW 

condition: 

        all of ($p*) 

}

MITRE ATT&CK Techniques 

Tactic  Technique  Description 
TA0002: Execution  T1059.010: AutoHotKey & AutoIT  Execution via AutoIt script (freely.a3x) 
TA0005: Defense Evasion  T1027.002: Software Packing  Multi-stage: Inno Setup → AutoIt → PE injection 
  T1055.012: Process Hollowing  Process hollowing into jsc.exe 
  T1106: Native API  API resolution via hash-based GetProcAddress 
  T1140: Deobfuscate/Decode Files or Information  Runtime XOR-decoding of configuration strings (C2, User-Agent, Mutex); obfuscated AutoIt script 
TA0007: Discovery  T1082: System Information Discovery  Collects computer_name, windows_version, machine_id 
TA0011: Command and Control  T1071.001: Web Protocols  HTTP communication to 94[.]159[.]113[.]32:80/service 

The post CastleLoader: A Deep Dive into Stealthy Loader Targeting Government Sector  appeared first on ANY.RUN’s Cybersecurity Blog.

ANY.RUN’s Cybersecurity Blog – ​Read More

deVixor: An Evolving Android Banking RAT with Ransomware Capabilities Targeting Iran

deLuxor

Executive Summary

deVixor is an actively developed Android banking malware campaign operating at scale, targeting Iranian users through phishing websites that masquerade as legitimate automotive businesses.

Distributed as malicious APK files, deVixor has evolved from a basic SMS-harvesting threat into a fully featured Remote Access Trojan (RAT) that combines banking fraud, credential theft, ransomware, and persistent device surveillance within a single platform.

Active since October 2025, Cyble Research and Intelligence Lab’s (CRIL) analysis of over 700 samples indicates with high confidence that the threat actor has been conducting a mass infection campaign leveraging Telegram-based infrastructure, enabling centralized control, rapid updates, and sustained campaign evolution.

Key Takeaways

  • deVixor is a sophisticated Android banking trojan that combines financial data theft, device surveillance, and remote control into a single malware platform.
  • The malware is actively distributed through fake websites posing as legitimate automotive businesses, tricking users into installing malicious APK files.
  • deVixor extensively harvests SMS-based financial information, including OTPs, account balances, card numbers, and messages from banks and cryptocurrency exchanges.
  • It leverages WebView-based JavaScript injection to capture banking credentials by loading legitimate banking pages inside a WebView.
  • The malware includes a remotely triggered ransomware module capable of locking devices and demanding cryptocurrency payments.
  • deVixor uses Firebase for command delivery and Telegram-based bot infrastructure for administration, allowing attackers to manage infections at scale and evade traditional detection mechanisms.

Overview

Android banking malware has progressed well beyond basic credential-harvesting threats, evolving into sophisticated remote access toolkits maintained as persistent, service-driven criminal operations.

During our ongoing analysis of malicious sites, we uncovered deVixor, a previously underreported Android Remote Access Trojan (RAT) actively distributed via fraudulent websites masquerading as legitimate automotive companies.

These sites lure victims with heavily discounted vehicle offers and trick them into downloading a malicious APK, which ultimately installs the deVixor malware on the device.

Some of the malicious URLs distributing deVixor RAT are:

  • hxxp://asankhodroo[.]shop
  • hxxp://www[.]asan-khodro.store
  • hxxp://www[.]naftyar.info/naftman.apk
  • hxxp://abfayar[.]info/abfa.apk
  • hxxps://blupod[.]site/blupod.apk
  • hxxps://naftman[.]oghabvip.ir/naftman.apk
  • hxxp://vamino[.]online.infochatgpt.com/vamino.apk
  • hxxps://lllgx[.]site/mm/V6.apk

CRIL identified more than 700 samples of multiple variants of the deVixor RAT from October 2025. Early versions of the malware exhibited limited functionality, primarily focused on collecting PII and harvesting banking-related SMS messages.

Subsequent variants showed a clear evolution in capabilities, introducing banking-focused overlay attacks, keylogging, ransomware attacks, Google Play Protect bypass techniques, and extensive abuse of Android’s Accessibility Service.

Our investigation also uncovered a Telegram channel operated by the threat actor, which was created shortly after the initial development of deVixor RAT and was actively used to publish version updates, promote new capabilities, and share operational screenshots.

Notably, screenshots posted in the channel reveal numerous devices that are simultaneously infected, each associated with a unique Bot ID (referred to by the actor as a “Port”), suggesting an active campaign operating at scale.

The channel’s growing subscriber base further supports the assessment that deVixor is being maintained and distributed as an ongoing criminal service rather than a short-lived operation. (See Figures 1, 2, and 3)

Figure 1 – Initial version announcement of deVixor RAT
Figure 1 – Initial version announcement of deVixor RAT

Figure 2 – Version 2 announcement of deVixor RAT
Figure 2 – Version 2 announcement of deVixor RAT

Figure 3 – deVixor RAT updates in Telegram Group
Figure 3 – deVixor RAT updates in Telegram Group

The deVixor RAT leverages a Telegram bot–based administrative panel for issuing commands. Each deployed APK is assigned a unique Bot ID stored in a local port.json file, enabling the operator to track, monitor, and control individual infected devices.

Once registered, the operator receives real-time updates via Telegram and can issue commands that are relayed to infected devices through backend infrastructure. Figure 4 illustrates the available administrative actions and operational updates as observed in the threat actor’s Telegram channel. (see Figure 4)

Figure 4 – Admin panel screenshot posted on Telegram channel
Figure 4 – Admin panel screenshot posted on Telegram channel

Multiple indicators suggest that the campaign is regionally focused. Linguistic artifacts observed in Telegram communications, operator messages, and hardcoded strings within the APK, combined with the exclusive targeting of Iranian banks, domestic payment services, and local cryptocurrency exchanges, strongly indicate that Iranian users are the primary targets of this operation. The use of Persian-language user interface elements in phishing overlays further reinforces this assessment.

DeVixor demonstrates how modern Android banking malware has evolved into a scalable, service-driven criminal platform capable of compromising devices over the long term and facilitating financial abuse.

Its active development, growing feature set, and reliance on legitimate platforms such as Telegram for command-and-control pose a significant risk to Android users. The next section provides a detailed technical analysis of deVixor RAT’s functionality, command structure, and abuse mechanisms observed across multiple variants.

Technical Analysis

Upon installation, the deVixor RAT prompts victims to grant permissions to access SMS messages, contacts, and files. In newer variants, it additionally requests Accessibility service permissions. (see Figure 5)

Figure 5 – Prompting to grant permissions
Figure 5 – Prompting to grant permissions

Once the required permissions are granted, the malware establishes communication with Firebase to receive commands from the threat actor. In parallel, deVixor decrypts a hardcoded alternate Command-and-Control (C&C) server URL, which is used to exfiltrate the collected data.

Overall, deVixor relies on two distinct servers for its operations: (see Figure 6)

  • Firebase server – used for receiving commands
  • C&C server – used for transmitting stolen data

Figure 6 – Firebase command execution (left) and decryption of C&C server URL (Right)
Figure 6 – Firebase command execution (left) and decryption of C&C server URL (Right)

Bank Information Harvesting

The deVixor RAT uses multiple techniques to steal banking information. One of its main approaches involves collecting banking-related data from SMS messages. In addition, deVixor leverages a WebView injection technique to redirect victims to banking pages, where JavaScript-based injections are used to capture login credentials and other sensitive financial information.

SMS-Based Banking Data Harvesting

deVixor has implemented multiple commands to harvest banking information, including card details, bank balance amounts, SMSs coming from banks and crypto applications, and OTPs:

GET_BANK_BALANCE Command

The command scans up to 5,000 SMS messages on the infected device to identify banking-related content, extract account balances and OTPs, and associate them with known Iranian banks using a hardcoded set of sender and bank keyword signatures.

It applies regular expressions to parse balances and OTP codes, checks whether the corresponding official banking applications are installed, and exfiltrates the results as a structured JSON response under the GET_ACCOUNT_SUMMARY command.

The report includes the bank name, balance, OTP availability and value, app installation status, and the total number of identified banks. (see Figure 7)

Figure 7 –  Collecting bank balance amount and OTPs
Figure 7 – Collecting bank balance amount and OTPs

GET_CARD_NUMBER Command

Similar to the previous command, deVixor scans all SMS messages in the infected device’s inbox to identify credit and debit card numbers. It uses regular expressions to detect and validate card numbers, then exfiltrates the extracted information to the C&C server.

GET_EXCHANGE Command

This command scans the victim’s SMS inbox for messages originating from cryptocurrency exchanges and payment services. It extracts recent messages for each identified sender and exfiltrates the collected data to the C&C server. The malware specifically targets SMS messages associated with the following cryptocurrency exchanges (see Figure 8)

  • Binance
  • CoinEx
  • Ramzinex
  • Exir
  • Tabdeal
  • Bitbarg
  • TetherLand
  • AbanTether
  • OkExchange
  • ArzDigital
  • IranCryptoMarket
  • Cryptoland
  • Bitex
  • Excoino

Figure 8 – Collecting cryptocurrency-related SMSs
Figure 8 – Collecting cryptocurrency-related SMSs

GET_BANK_SMS Command

Similar to the GET_EXCHANGE command, this command collects the most recent SMS messages sent by known banks and payment services. The harvested messages are returned to the C&C server as a structured JSON response labeled GET_BANK_SMS. Below is the list of banks and payment services targeted by deVixor (see Figure 9)

  • Bank Melli Iran
  • Bank Mellat
  • Bank Tejarat
  • Bank Saderat Iran
  • Bank Sepah
  • Bank Maskan
  • Bank Keshavarzi
  • Bank Refah
  • Bank Pasargad
  • Bank Parsian
  • Bank Ayandeh
  • Bank Saman
  • Bank Sina
  • Bank Dey
  • Post Bank Iran
  • Middle East Bank
  • Iran Zamin Bank
  • Eghtesad Novin Bank
  • Karafarin Bank
  • Shahr Bank
  • Hekmat Iranian Bank
  • Industry & Mine Bank
  • Export Development Bank of Iran
  • Tavon Bank
  • BluBank
  • Iran Kish

Figure 9 – Collecting SMSes coming from banks
Figure 9 – Collecting SMSes coming from banks

This SMS-based financial information harvesting enables attackers to carry out banking fraud and account takeovers, leading to wallet draining and significant financial losses for victims.

Fake Bank Notification and Credential Harvesting

deVixor uses the “BankEntryNotification” command to generate fraudulent bank notifications designed to lure users into interacting with them. When a victim taps the notification, the malware loads a legitimate banking website inside a WebView and injects malicious JavaScript into the login forms.

Once the user enters their username and password and clicks the login button, the credentials are silently exfiltrated to the C&C server. The figure below illustrates the JavaScript injection technique used for credential harvesting. (see Figure 10)

Figure 10 – JavaScript injection activity for harvesting credentials
Figure 10 – JavaScript injection activity for harvesting credentials

Ransomware Activity

The deVixor RAT includes an embedded ransomware module that can be remotely triggered using the “RANSOMWARE” command. Upon receiving this command, the malware parses the attacker-supplied parameters, including the ransom note, a TRON cryptocurrency wallet address, and the demanded payment amount.

These details are stored locally in a file named LockTouch.json, which serves as a persistent configuration file to retain the ransomware state across device reboots. The malware then sets an internal locked status and prepares the ransom metadata used by the lock-screen component.

Based on screenshots shared on the threat actor’s Telegram channel, deVixor locks the victim’s device and displays a ransom message stating “Your device is locked. Deposit to unlock”, along with the attacker’s TRON wallet address and a demand of 50 TRX.

The malware also generates a response containing device identifiers and ransom-related details, which is sent back to the C&C server to track victim status and potential compliance. (see Figure 11)

Figure 11 – Ransomware activity posted on TA’s Telegram channel
Figure 11 – Ransomware activity posted on TA’s Telegram channel

This functionality demonstrates that deVixor is capable of conducting financial extortion, in addition to its existing capabilities for credential theft and user surveillance.

In addition to the features described above, the malware is capable of collecting all device notifications, capturing keystrokes, preventing uninstallation, hiding its presence, harvesting contacts, and taking screenshots. We’ve compiled a full list of supported commands below:

deVixor v1 and v2 Commands

V1 Commands V2 Commands Description
RUN_USSD: RUN_USSD: Execute USSD request
SET_OF_MOD: SEARCH_APP: Finds the targeted application installed on the device
SEARCH_ALL_SMS Search SMSs with the keywords, store the result in sms_search_keyword.txt, and send the file to the server.
BankEntryNotification: BankEntryNotification: Generate a fake Bank notification to initiate bank login activity and harvest credentials using JavaScript injection.
SET_WARNING_BANK: Displays a fake bank security warning to trick users into logging in on fraudulent banking pages.
CHANGE_SERVER: CHANGE_SERVER: Change C&C server
CHANGE_FIREBASE: CHANGE_FIREBASE: Change the Firebase server
RANSOMWARE: Initiate Ransomware Activity
SEND_SMS: SEND_SMS: Send SMS to the number received from the server
SEND_SMS_TO_ALL: SEND_SMS_TO_ALL: Send SMS to all the contacts saved in the infected device
GET_HISTORY_SMS: GET_HISTORY_SMS: Saves all SMSs from the infected device to chat_history_*.txt and sends it to the server
ADD_CONTACT: ADD_CONTACT: Insert the contact into the infected device’s contact list
IMPORT_VCF IMPORT_VCF Collects the vCard file
GET_CAMERA_PHOTOS GET_CAMERA_PHOTOS Collects pictures captured using the camera
GET_ALL_SENT_SMS Collects sent sms history
NOTIFICATION_READER Collect notifications
UNHIDE UNHIDE Appears again in the applications
SET_VIBRATE SET_VIBRATE SET_VIBRATION_MODE
BANK_WARNING Collect the active fake bank warning list.
ONCHANGE ONCHANGE Disguise as a YouTube app
GET_APPS GET_APPS Collects the application package list
GET_GOLD Collecting SMSs that are coming from the mentioned mobile numbers
SMS_TO_ALL SMS_TO_ALL Collects SIM information
GET_BANK_BALANCE GET_BANK_BALANCE Collects bank balance from SMSs
GET_BNC_APPS GET_BNC_APPS Collects the banking application list
GET_ALL_RECEIVED_SMS Collects all received SMSs
GET_SIM_SMS GET_SIM_SMS Get SIM information
HIDE HIDE Hides application
TAKE_SCREENSHOT TAKE_SCREENSHOT Captures Screenshot
REMOVE_RANSOMWARE Remove Ransomware Overlay
GET_DEVICE_INFO GET_DEVICE_INFO Collects device information
SET_SOUND SET_SOUND Set notification sound
OFFCHANGE OFFCHANGE Disable disguise and appear using the original app icon
GET_EXCHANGE GET_EXCHANGE Collect SMSs related to crypto exchange and financial services
GET_IPS GET_IPS Collect the IP address of the infected device
GET_CARD_NUMBER GET_CARD_NUMBER Collects card numbers from SMSs
GET_BANK_SMS GET_BANK_SMS Collecting all SMSs coming from banks
GET_ACCOUNT GET_ACCOUNT Get account details from the infected device
REVIVE_FOREGROUND REVIVE_FOREGROUND Sends the device’s active status
GET_USSD_INFO GET_USSD_INFO Get SIM Info to support USSD operations
GET_LAST_SMS Collecting recent SMSs
GET_ALL_SMS GET_ALL_SMS Collect all SMSs
KEYLOGGER Collects Keylogged data stored in file keuboard_history.txt
GET_SCREENSHOTS GET_SCREENSHOTS Collects screenshots from the server
GET_PHONE_NUMBER GET_PHONE_NUMBER Collect the device phone number
SET_SILENT SET_SILENT Put the device on silent
GET_GALLERY GET_GALLERY Collect gallery media
GET_CONTACTS GET_CONTACTS Collect contacts

Conclusion

deVixor is a feature-rich Android banking Trojan that reflects the latest evolution of Android malware. It combines SMS-based financial data harvesting, WebView-based JavaScript injection attacks, ransomware capabilities, and full remote device control to facilitate banking fraud, account takeovers, financial extortion, and prolonged user surveillance from a single platform.

The modular command architecture, persistent configuration mechanisms, and an active development cycle all indicate that deVixor is not an isolated campaign, but a maintained and extensible criminal service.

The targeted focus on Iranian banks, payment services, and cryptocurrency platforms highlights deliberate victim profiling and regional specialization.


Cyble’s Threat Intelligence Platforms continuously monitor emerging threats, infrastructure, and activity across the dark web, deep web, and open sources. This proactive intelligence empowers organizations with early detection, impersonation, infrastructure mapping, and attribution insights. Altogether, these capabilities provide a critical head start in mitigating and responding to evolving cyber threats.

Our Recommendations

We have listed some essential cybersecurity best practices that create the first line of control against attackers. We recommend that our readers follow the best practices given below:

  • Install Apps Only from Trusted Sources:
    Download apps exclusively from official platforms, such as the Google Play Store. Avoid third-party app stores or links received via SMS, social media, or email.
  • Be Cautious with Permissions and Installs:
    Never grant permissions and install an application unless you’re certain of an app’s legitimacy.
  • Watch for Phishing Pages:
    Always verify the URL and avoid suspicious links and websites that ask for sensitive information.
  • Enable Multi-Factor Authentication (MFA):
    Use MFA for banking and financial apps to add an extra layer of protection, even if credentials are compromised.
  • Report Suspicious Activity:
    If you suspect you’ve been targeted or infected, report the incident to your bank and local authorities immediately. If necessary, reset your credentials and perform a factory reset.
  • Use Mobile Security Solutions:
    Install a mobile security application that includes real-time scanning.
  • Keep Your Device Updated:
     Ensure your Android OS and apps are updated regularly. Security patches often address vulnerabilities that malware exploits.

MITRE ATT&CK® Techniques

Tactic Technique ID Procedure
Initial Access (TA0027) Phishing (T1660) Malware is distributed via a phishing site
Persistence (TA0028) Event Triggered Execution: Broadcast Receivers(T1624.001) deVixor registered the BOOT_COMPLETED broadcast receiver to activate on device startup
Persistence (TA0028) Foreground Persistence (T1541) deVixor uses foreground services by showing a notification
Defense Evasion (TA0030) Hide Artifacts: Suppress Application Icon (T1628.001) deVixor hides icon
Defense Evasion (TA0030) Impair Defenses: Prevent Application Removal (T1629.001) Prevent uninstallation
Defense Evasion (TA0030) Impair Defenses: Disable or Modify Tools (T1629.003) deVixor can disable Google Play Protect
Defense Evasion (TA0030) Masquerading: Match Legitimate Name or Location (T1655.001) Masquerade as a YouTube app
Defense Evasion (TA0030) Obfuscated Files or Information (T1406) deVixor uses an encrypted C&C server URL
Credential Access (TA0031) Access Notifications (T1517) deVixor collects device notifications
Credential Access (TA0031) Input Capture: Keylogging (T1417.001) deVixor collects keylogged data
Credential Access (TA0031) Input Capture: GUI Input Capture (T1417.002) deVixor collects entered banking credentials
Discovery (TA0032) Software Discovery (T1418) deVixor collects the installed application list
Discovery (TA0032) System Information Discovery (T1426) deVixor collects the device information
Collection (TA0035) Archive Collected Data (T1532) deVixor compressing collected data and saving to a .zip file
Collection (TA0035) Data from Local System (T1533) deVixor collects media from the gallery
Collection (TA0035) Protected User Data: Contact List (T1636.003) Collects contact data
Collection (TA0035) Protected User Data: SMS Messages (T1636.004) Collects SMS data
Collection (TA0035) Protected User Data: Accounts (T1636.005) deVixor collects Accounts data
Collection (TA0035) Screen Capture (T1513) deVixor can take Screenshots
Command and Control (TA0037) Application Layer Protocol: Web Protocols (T1437.001) Malware uses HTTPs protocol
Exfiltration (TA0036) Exfiltration Over C2 Channel (T1646) deVixor sends collected data to the C&C server
Impact (TA0034) SMS Control (T1582) deVixor can send SMSs from the infected device

Indicators of Compromise (IOCs)

The IOCs have been added to this GitHub repository. Please review and integrate them into your Threat Intelligence feed to enhance protection and improve your overall security posture.

The post deVixor: An Evolving Android Banking RAT with Ransomware Capabilities Targeting Iran appeared first on Cyble.

Cyble – ​Read More

Activity-masking infostealer dropper | Kaspersky official blog

Our experts have detected a new wave of malicious emails targeting Russian private-sector organizations. The goal of the attack is to infect victims’ computers with an infostealer. This campaign is particularly noteworthy because the attackers tried to disguise their activity as the operations of legitimate software and traffic to the ubiquitously-used state and municipal services website.

How the attack begins

The attackers distribute an email containing a malicious attachment disguised as a regular PDF document. In reality, the file is an executable hiding behind a PDF icon; double-clicking it triggers an infection chain on the victim’s computer. In the campaign we analyzed, the malicious files were named УВЕДОМЛЕНИЕ о возбуждении исполнительного производства (NOTICE of Initiation of Enforcement Proceedings) and Дополнительные выплаты (Additional Payouts), though these are probably not the only document names the attackers employ to trick victims into clicking the files.

Technically, the file disguised as a document is a downloader built with the help of the .NET framework. It downloads a secondary loader that installs itself as a service to establish persistence on the victim’s machine. This other loader then retrieves a JSON string containing encrypted files from the command-and-control server. It saves these files to the compromised computer in C:ProgramDataMicrosoft DiagnosticTasks, and executes them one by one.

Example of the server response

Example of the server response

The key feature of this delivery method is its flexibility: the attackers can provide any malicious payload from the command-and-control server for the malware to download and execute. Presently, the attackers are using an infostealer as the final payload, but this attack could potentially be used to deliver even more dangerous threats – such as ransomware, wipers, or tools for deeper lateral movement within the victim’s infrastructure.

Masking malicious activity

The command-and-control server used to download the malicious payload in this attack was hosted on the domain gossuslugi{.}com. The name is visually similar to Russia’s widely used state and municipal services portal. Furthermore, the second-stage loader has the filename NetworkDiagnostic.exe, which installs itself in the system as a Network Diagnostic Service.

Consequently, an analyst doing only a superficial review of network traffic logs or system events might overlook the server communication and malware execution. This can also complicate any subsequent incident investigation efforts.

What the infostealer collects

The attackers start by gathering information about the compromised system: the computer name, OS version, hardware specifications, and the victim’s IP address. Additionally, the malware is capable of capturing screenshots from the victim’s computer, and harvesting files in formats of interest to the attackers (primarily various documents and archives). Files smaller than 100MB, along with the rest of the collected data, are sent to a separate communication server: ants-queen-dev.azurewebsites{.}net.

File formats of interest to the attackers

File formats of interest to the attackers

The final malicious payload currently in use consists of four files: one executable and three DLL libraries. The executable enables screen capture capabilities. One of the libraries is used to add the executable to startup, another is responsible for data collection, while the third handles data exfiltration.

During network communication, the malware adds an AuthKey header to its requests, which contains the victim’s operating system identifier.

Code snippet: a function for sending messages to the attackers' server

Code snippet: a function for sending messages to the attackers’ server

How to stay safe

Our security solutions detect both the malicious code used in this attack and its communication with the attackers’ command-and-control servers. Therefore, we recommend using reliable security solutions on all devices used by your company to access the internet. And to prevent malicious emails from ever reaching your employees, we also advise deploying a security solution at the corporate email gateway level too.

Kaspersky official blog – ​Read More

The State of Ransomware in Enterprise 2025

Categories: Products & Services

Tags: Ransomware, Enterprise, Solutions, The State of Ransomware

Sophos Blogs – ​Read More

Year in Review 2025: The major headlines and moments from Sophos this year

Categories: Security news, Sophos Insights

Tags: Year in Review

Sophos Blogs – ​Read More

A big finish to 2025 in December’s Patch Tuesday

Post Content

Sophos Blogs – ​Read More

The Week in Vulnerabilities: 2026 Starts with 100 PoCs and New Exploits 

Week in Vulnerabilities by Cyble

Cyble Vulnerability Intelligence researchers tracked 678 vulnerabilities in the last week, a decline from the high volume of new vulnerabilities observed in the last few weeks of 2025.  

Nearly 100 of the disclosed vulnerabilities already have a publicly available Proof-of-Concept (PoC), significantly increasing the likelihood of real-world attacks on those vulnerabilities. 

A total of 42 vulnerabilities were rated as critical under the CVSS v3.1 scoring system, while 15 received a critical severity rating based on the newer CVSS v4.0 scoring system. 

Below are some of the more significant IT and industrial control system (ICS) vulnerabilities highlighted by Cyble in recent reports to clients. 

The Week’s Top IT Vulnerabilities 

CVE-2025-60534 is a critical authentication bypass vulnerability affecting Blue Access Cobalt v02.000.195, which could allow an attacker to selectively proxy requests to operate functionality on the web application without the need for authentication, potentially allowing full admin access to application and door systems. 

CVE-2025-68428 is a critical path traversal and local file inclusion vulnerability in the jsPDF JavaScript library’s Node.js builds. It affects methods like loadFile, addImage, html, and addFont, where unsanitized user input as file paths could enable attackers to read arbitrary server files and embed their contents into generated PDFs. 

CVE-2020-36923 is a medium-severity insecure direct object reference (IDOR) vulnerability in Sony BRAVIA Digital Signage 1.7.8, which could allow attackers to bypass authorization controls and access hidden system resources like ‘/#/content-creation’ by manipulating client-side access restrictions. 

CISA added its first two vulnerabilities of 2026 to the Known Exploited Vulnerabilities (KEV) catalog: A 16-year-old Microsoft PowerPoint flaw and a new maximum-severity HPE vulnerability. The agency added 245 vulnerabilities to the KEV catalog in 2025. 

CVE-2025-37164 is a 10.0-severity Code Injection vulnerability in HPE’s OneView IT infrastructure management software up to version 10.20 that has had a publicly available PoC since last month, while CVE-2009-0556 is a 9.3-rated Code Injection vulnerability present in Microsoft Office PowerPoint 2000 SP3, 2002 SP3, and 2003 SP3, and PowerPoint in Microsoft Office 2004 for Mac that was first known to be exploited in April 2009. 

Notable vulnerabilities discussed in open-source communities include CVE-2025-13915, a critical authentication bypass vulnerability in IBM API Connect that could allow remote unauthenticated attackers to circumvent authentication controls and gain unauthorized access to sensitive API management functions. Another was CVE-2025-68668, a 9.9-severity sandbox bypass vulnerability in the n8n workflow automation platform’s Python Code Node that uses Pyodide. 

Another vulnerability getting attention is CVE-2025-52691, a maximum-severity unauthenticated arbitrary file upload vulnerability in SmarterMail email servers. The flaw affects SmarterMail versions before Build 9413 and could allow remote attackers to upload malicious files to any server location without requiring credentials, which could lead to remote code execution (RCE), full server compromise, data theft, or ransomware deployment. 

Cyble dark web researchers observed a threat actor (TA) on a cybercrime forum advertising a zero-day vulnerability allegedly affecting the latest version of Microsoft Word. The TA described the vulnerability as affecting a Dynamic Link Library (DLL) module that Microsoft Word loads without proper verification due to the absence of absolute path validation, allegedly enabling remote code execution and local privilege escalation exploitation. The TA did not provide technical proof of concept, affected version numbers, or independent verification; therefore, the claim remains unverified. 

ICS Vulnerabilities 

Three ICS vulnerabilities also merit priority attention by security teams. 

CVE-2025-3699 is a Missing Authentication for Critical Function vulnerability affecting multiple versions of Mitsubishi Electric Air Conditioning Systems. Successful exploitation of the vulnerability could have far-reaching consequences beyond simple unauthorized access. By bypassing authentication, an attacker could gain full control over the air conditioning system, enabling them to manipulate environmental conditions within commercial facilities. This could lead to equipment overheating, disruption of medical environments, or production downtime. Additionally, access to sensitive information stored within the system, such as configuration files, user credentials, or operational logs, could provide attackers with valuable intelligence for further compromise. 

CVE-2025-59287, a vulnerability disclosed by Microsoft in the Windows Server Update Services (WSUS) application, impacts servers running Schneider Electric EcoStruxure Foxboro DCS Advisor. Deserialization of untrusted data in WSUS could allow an unauthorized attacker to execute code over a network. 

CVE-2018-4063 is a remote code execution vulnerability in the upload.cgi functionality of Sierra Wireless AirLink ES450 FW 4.9.3 that was added to CISA’s KEV database last month after attacks were detected on OT network perimeter devices. 

Conclusion 

New vulnerabilities declining closer to long-term trends would be welcome news if it continues, but that still leaves security teams with hundreds of new vulnerabilities a week to contend with, many of which have PoCs or active exploits. In that challenging environment, rapid, well-targeted actions are needed to patch the most critical vulnerabilities and successfully defend IT and critical infrastructure. A risk-based vulnerability management program should be at the heart of those defensive efforts. 

Other cybersecurity best practices that can help guard against a wide range of threats include segmentation of critical assets; removing or protecting web-facing assets; Zero-Trust access principles; ransomware-resistant backups; hardened endpoints, infrastructure, and configurations; network, endpoint, and cloud monitoring; and well-rehearsed incident response plans. 

Cyble’s comprehensive attack surface management solutions can help by scanning network and cloud assets for exposures and prioritizing fixes, in addition to monitoring for leaked credentials and other early warning signs of major cyberattacks

The post The Week in Vulnerabilities: 2026 Starts with 100 PoCs and New Exploits  appeared first on Cyble.

Cyble – ​Read More