2026  July(5) August(40) September(4) October(0) November(0) December(0) | STATISTICS (0) | H  ARTICLES  CONFERENCE  MALWARE TRAFFICS


YARA-X's 1.20.0  Wireshark 4.6.8 Released


Linux Detection Engineering - Local Privilege Escalation

14.9.2026  ELASTIC  OS

Seven of the thirteen Linux privilege escalation CVEs we tracked in 2026 turned out to be the same copy-on-write bug pointed at different kernel interfaces. We ran the public proof-of-concept for eleven exploits and two misconfigurations, and noted which rules fired.

Local privilege escalation (LPE) is the step that turns a foothold into full control of a host. An attacker who lands as an unprivileged user rarely stops there. They want root, and Linux keeps offering new ways to get it.

In this edition of our "Linux Detection Engineering" series, we’ll cover:

The default flow that a Linux LPE produces on the host and the general rules that detect it.

The recurring LPE patterns behind the most recent LPEs and how each works, along with how each looks through the lens of Elastic Defend.

The Elastic detection and endpoint rules that fire on each.

Over the past year, the pace of publicly disclosed Linux LPEs has picked up sharply, and the shape of those disclosures has changed with it.

Timeline of 17 Linux local privilege escalation CVEs from 2016 to 2025, grouped into four bug classes

For most of the last decade, escalations arrived steadily but from all over the map, including from trusted helpers like sudo, pkexec, and polkit; kernel bugs scattered across Executable and Linkable Format (ELF) loading, ptrace, eBPF, and packet sockets; and user namespaces widening what an ordinary account could reach. That variety kept the workload manageable. Each bug had its own subsystem and write-up, so reading each advisory as it landed and adding a rule for that technique worked.

Then came 2026.

Timeline of 13 Linux privilege escalation disclosures from April to July 2026, colour-coded by bug class

Seven of the 13 disclosures that we track here share one bug class: a copy-on-write or zero-copy path that writes into data that it was supposed to copy first. Copy Fail opened in April 2026, and DirtyFrag, Fragnesia, DirtyDecrypt, and DirtyClone pushed the identical idea through ESP, RxRPC, and the socket-buffer fragment helpers within weeks. pedit COW moved it into traffic control. RefluXFS took it back to the filesystem in July 2026. Neither figure is a census, so read them as a picture of how the work changed rather than a count of every bug.

Qualys attributes RefluXFS to a research effort with Anthropic, pointing Claude Mythos Preview at the kernel's memory-management and filesystem code to hunt for a DirtyCOW-style race and then reproducing and verifying the result before disclosure. The author of OVSwrap credits a comparable large language model-assisted (LLM-assisted) workflow. Both teams kept humans on validation and disclosure, and LLMs are unlikely to be the only factor here. What the two write-ups show is the loop itself: hand a model a known bug class, ask for a new instance, repeat. When one idea can be aimed at a dozen kernel interfaces in a quarter, a detection rule written per Common Vulnerabilities and Exposures (CVE) keeps arriving late.

The good news is that most LPEs, however novel the trigger, share a single detectable flow, and beyond it, they fall into a small number of bug classes. So we detect in two layers: a general layer keyed on the flow every escalation produces (an unprivileged process becoming root), and a per-technique layer that adds signal specific to a bug class.

Setting up Elastic Defend and Auditd to detect Linux privilege escalation
To follow along and generate the telemetry shown here, enable the prebuilt rules and reproduce the techniques in a lab:

In Kibana, navigate to Security -> Rules -> Detection rules (SIEM), and install the Elastic prebuilt rules. Enable the Linux privilege escalation rules (by filtering on tags OS: Linux and Tactic: Privilege Escalation).

Deploy Elastic Defend on a Linux test host for endpoint (behavioral) coverage.

For syscall-level visibility, enable the Auditd Manager integration. The page-cache class, in particular, relies on socket, splice, and bind auditing, as well as execve. The Copy Fail and DirtyFrag research lists the exact auditd rules to add.

Reproduce each technique safely in a disposable virtual machine (VM) using the relevant public proof of concept (PoC). Treat all exploit code as lab-only, and never run it against systems that you don’t own.

All of the rules mentioned in the blog are available as a detection and/or endpoint rule. Detection rules live in Elastic’s detection-rules repository, while endpoint rules live in Elastic’s protections-artifacts repository.

The limitations of this Linux privilege escalation detection framework
This post is built around the public PoC for each vulnerability. We’re aware that a PoC can be modified: swap the targeted setuid binary, change paths, or reshape the exploit to sidestep a specific match. That’s exactly why the detection is layered and outcome-oriented rather than tied to any one implementation. The goal is a general LPE detection framework that holds up across reimplementations and covers the shared flow that every escalation produces.

We aren’t claiming to detect 100% of Linux LPEs, and certainly not an LPE custom-built to evade these detections. What we aim for is broad, durable coverage of the way that escalations actually behave on a host, with LPE technique-specific rules covering the foundations and bug class-specific rules to catch those that were missed.

How Linux privilege escalation detection works: The flow that every exploit produces
Almost every local privilege escalation, whatever the underlying bug, produces the same skeleton of activity on the host:

An unprivileged user (uid != 0) runs something, usually a freshly dropped or compiled binary, a script, or a shell one-liner, from a location that they can write to (for example, /tmp, /dev/shm, /var/tmp, /home, or /run/user/).

Moments later, a process in that lineage is running as root: a uid_change to 0, an effective uid or guid of 0, or an interactive root shell.

In certain PoCs, the exploit then confirms success by running whoami, id, or logname.

That "exec from a writable path and become root" skeleton is the backbone of our general detection. Because these rules key on the outcome and its immediate context rather than on any exploit-specific artifact, they cover a broad class of LPEs, including ones that we’ve never seen. They’re also what catch the page-cache family and the no-userland-tell kernel bugs, where there’s nothing implementation-specific to match.

Detecting SUID and SGID helper abuse
Setuid-root binaries and helpers are the single most common final step in a Linux LPE, because they’re the sanctioned way for an unprivileged user to run something as root, so any slip in how one of them behaves hands over that privilege. What ties the subcases together is the privilege shape: a process running with effective uid 0 while the real user (and usually the parent) is not, launched with minimal arguments from an interpreter, a shell one-liner, or a writable path. We split the coverage by how the abused binary is chosen, from the handful of helpers that appear in almost every write-up, out to the long tail and the proxying tricks that a name-based rule misses. This category maps to the Abuse Elevation Control Mechanism: Setuid and Setgid (T1548.001) technique on the MITRE ATT&CK matrix.

Detecting abuse of su, sudo, pkexec, and passwd
A short list of setuid helpers (su, sudo, pkexec, passwd) accounts for the overwhelming majority of real-world SUID abuse, whether as the finishing move of a memory-corruption exploit or a plain misconfiguration. A dedicated, tightly scoped rule for these keeps false positives near zero while covering the common case, so it’s the first thing to reach for.

Let’s begin by covering the different building blocks relevant to building a strong yet general SUID LPE detector, one by one. The following logic looks for instances where either the user or group ID is 0, while the real user/group ID is not. This is a default and benign SUID behavior and would trigger on typical sudo usage by a user.

(
(process.user.id == 0 and process.real_user.id != 0) or
(process.group.id == 0 and process.real_group.id != 0)
)

This logic is followed by the execution of a commonly abused SUID helper with a low process argument count. This already cuts down the false positive rate drastically. For example, in a benign use case, the sudo command is generally used with additional arguments, making a sudo invocation with an argument count of 1 rare. However, just relying on these two building blocks isn’t strong enough to be a detection on its own, as this activity still happens too frequently in benign scenarios.

(
(process.name == "su" and process.args_count <= 2) or
(process.name == "sudo" and process.args_count == 1) or
(process.name == "pkexec" and process.args_count == 1) or
(process.name == "passwd" and process.args_count <= 2)
)

The euid-0 / non-root-real-user shape is paired with an interpreter, writable-path, or shell one-liner parent, which is what separates exploitation from a user legitimately typing sudo.

(
process.parent.name like (
".*", "python*", "perl*", "ruby*", "lua*", "php*", "node",
"deno", "bun", "java"
) or
process.parent.executable like (
"./*", "/tmp/*", "/var/tmp/*", "/dev/shm/*", "/run/user/*",
"/var/run/user/*", "/home/*/*"
) or
(
process.parent.name in (
"bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish", "mksh"
) and
process.parent.args in ("-c", "-cl", "-lc", "--command", "-ic", "-ci") and
process.parent.args_count <= 4
)
)

And it’s followed by a bunch of known legitimate exclusion activity. Combining these three building blocks makes for a strong general SUID/SGID helper LPE detection. This logic maps to Suspicious SUID/SGID Utility Execution.

Detecting uncommon SUID binaries without a name list
Not every abused SUID binary is on that short list. This variant drops the hard-coded names entirely and keys on the privilege shape plus a self-referential command line (the process was invoked as itself), which is what a freshly abused, less common setuid binary looks like on the wire. We still check beforehand to see whether we’re dealing with a SUID binary:

(
(process.user.id == 0 and process.real_user.id != 0) or
(process.group.id == 0 and process.real_group.id != 0)
)

But this is quickly followed by the main logic differentiator between these different rules, which is displayed below:

(
stringcontains(process.executable, process.command_line) or
stringcontains(process.name, process.command_line)
)

Instead of relying on allowlisting a list of known SUID binaries, we use a clever stringcontains Event Query Language (EQL) trick. By using the stringcontains function, we can compare the process.executable to the process.command_line value (or process.name to process.command_line), effectively matching on instances where an unknown SUID binary (which we established through the user.id versus real_user.id comparison) is executed directly. The gap it fills is the long tail: because there’s no name list, there’s no blind spot for whichever setuid binary a given system happens to ship, at the cost of a broader exclusion list for legitimate helpers.

We follow this rule with an exclusion of known SUID helpers, to minimize coverage overlap with the previous (and other) rules. This maps to Potential Privilege Escalation via a SUID/SGID Binary.

Detecting SUID helper proxy execution via process arguments
Some abuse doesn’t run the helper as the process itself; it hands the helper as an argument to another privileged binary, proxying the execution so a name-based rule sees the wrong thing. The tell is a process whose command line starts with its own executable, a single-argument parent, and a known setuid helper path sitting in the arguments.

process.args in (
"/bin/su", "/usr/bin/su",
"/bin/umount", "/usr/bin/umount",
"/bin/chfn", "/usr/bin/chfn",
"/bin/chsh", "/usr/bin/chsh",
"/bin/gpasswd", "/usr/bin/gpasswd",
"/bin/newgrp", "/usr/bin/newgrp",
"/usr/bin/newuidmap", "/usr/bin/newgidmap",
"/usr/lib/dbus-1.0/dbus-daemon-launch-helper",
"/usr/libexec/dbus-daemon-launch-helper",
"/usr/lib/openssh/ssh-keysign", "/usr/libexec/openssh/ssh-keysign",
"/usr/bin/pkexec", "/usr/libexec/pkexec", "/usr/lib/polkit-1/pkexec",
"/usr/lib/snapd/snap-confine"
) and
process.args_count <= 2

The proxy execution rule differs from the two rules above by looking at the helper in process.args rather than process.name, so it catches the proxying pattern (binfmt_misc style and similar) that name-based matching would miss entirely. Although not exhaustive, the argument list does target the most commonly available SUID helpers on a default Linux system. This maps to Potential Privilege Escalation via SUID/SGID Proxy Execution.

Further SUID and SGID privilege escalation rules
We didn’t get into every SUID-based LPE rule that we created to cover this attack vector. We encourage anyone interested in digging deeper to take a look at our other public rules related to SUID/SGID LPE, which can be found here:

Self-elevation: Exec from a writable path and then a UID change to root
Many kernel and logic exploits never touch a helper; the exploit process, or something in its lineage, simply becomes root. The observable is always the same pair: a non-root process execs from a writable path (/tmp, /dev/shm, /var/tmp, /home/*, /run/user/*), and shortly after, a process in that lineage emits a uid_change to 0. The subcases differ only in how tightly we can tie the exec to the elevation and in whether the exploit politely confirms its own success.

Detecting exec and then elevating by correlating on the parent process
The most general form correlates the two events by their shared parent: a non-root, interactive exec from a writable path, followed by a uid_change to 0 under the same parent, within a short window.

sequence by process.parent.entity_id with maxspan=15s
[process where event.type == "start" and event.action == "exec" and
user.id != 0 and process.parent.user.id != 0 and
process.parent.group.id != 0 and
(
process.executable like (
".*", "/tmp/*", "/dev/shm/*", "/var/tmp/*", "/run/user/*",
"/var/run/user/*", "/home/*/*"
) or
process.parent.executable like (
".*", "/tmp/*", "/dev/shm/*", "/var/tmp/*", "/run/user/*",
"/var/run/user/*", "/home/*/*"
)
)]
[process where event.type == "change" and event.action == "uid_change" and
user.id == 0 and process.parent.user.id != 0 and
process.parent.group.id != 0]

It needs no recon command and no known binary, just the exec-then-elevate pair from a world-writable location, so it fires on self-elevating exploits that give nothing else away. Given that this activity is also known to fire on false positives (edge cases where benign precompiled binaries in /tmp or /home directories elevate), this rule requires slightly more tuning to fit in well with your environment. For static server environments, the rule should generally be plug and play. This maps to Potential Privilege Escalation via a Parent Process Sequence.

Using descendant-of to catch root transitions several processes deep
The root transition doesn’t always land in the immediate child. When a web server or interpreter running as a service account spawns a chain that ends in an interactive root process several hops down, a direct parent/child correlation breaks. To combat this, we added another layer, using the descendant of functionality.

In this query, we target interactive executions where the user.id is 0, while the parent user is a nonsystem user (uid >= 1000).

process where event.type == "start" and event.action == "exec" and
process.interactive == true and user.id == 0 and (
process.parent.user.id >= 1000 or
process.parent.user.name in (
"apache", "www-data", "httpd", "nginx", "lighttpd", "tomcat",
"tomcat8", "tomcat9", "ftp", "ftpuser", "ftpd"
)
)

 

The interactive-root match is then followed by descendant of logic, where the descendant is an executable launched from a world-/user-writable location.

descendant of [
process where event.type == "start" and event.action == "exec" and
user.id != 0 and
process.executable like (
".*", "/tmp/*", "/dev/shm/*", "/var/tmp/*", "/home/*/*",
"/run/user/*", "/var/run/user/*"
)
]

sing descendant of instead of a fixed parent link accommodates any depth of intermediate processes, and folding in service accounts (uid >= 1000, or www-data, nginx, tomcat) covers the web-shell-to-root path that the sequence rules can miss. This maps to Potential Local Privilege Escalation via a Suspicious Descendant Process.

Detecting the exec, elevate, and confirm sequence
When the exploit verifies its own success (the near-universal habit of running id, whoami, or logname right after getting root), we can require all three stages: the writable-path exec, the uid_change to 0, and then the privilege check as root.

sequence with maxspan=10s
[process where event.type == "start" and event.action == "exec" and
user.id != 0 and process.executable like (
".*", "/tmp/*", "/dev/shm/*", "/var/tmp/*", "/home/*/*",
"/run/user/*", "/var/run/user/*"
)] by process.entity_id
[process where event.type == "change" and event.action == "uid_change" and
user.id == 0] by process.entity_id
[process where event.type == "start" and event.action == "exec" and
process.name in ("whoami", "id", "logname") and
user.id == 0] by process.parent.entity_id

The confirm stage is what makes this the lowest-false-positive, highest-true-positive signal of the group for public PoCs, which frequently check their work, so it’s the rule to lead an investigation with. This maps to General Privilege Escalation Sequence Detected.

Detecting a Python interpreter escalating to root
A growing share of public PoCs finish with a one-line interpreter payload, and Python is the workhorse. Rather than matching an exact one-liner, we key on a uid_change to 0 where the responsible process is a Python interpreter running from a world-/user-writable working directory with a non-root parent.

event.category:process and event.type:change and event.action:uid_change and user.id:0 and not process.parent.user.id:0 and
not process.parent.group.id:0 and process.name:python* and
process.working_directory:(
/tmp* or /var/tmp* or /dev/shm* or /home/* or /run/user* or
/var/run/user* or /var/www*
) and
process.parent.working_directory:(
/tmp* or /var/tmp* or /dev/shm* or /home/* or /run/user* or
/var/run/user* or /var/www*
) and
process.command_line:*

 

As this activity is also known to hit on false positives, the new terms rule type was used to only alert on instances where the process.command_line hasn’t been seen on the host.id in the last five days.

With so many 2026 PoCs (Copy Fail, DirtyClone, CIFSwitch among them) shipped as Python, this catches the interpreter-driven finish generically, independent of the specific exploit. This maps to Suspicious UID Change to Root via Python and its Elastic Defend counterpart, which is slightly more restricted in terms of logic: Potential Privilege Escalation via Python Exploit.

More exec and elevate rules for Linux privilege escalation detection
We just described the most common exec and elevate relationships. However, several LPEs don’t trigger on the parent/descendant relationship, but require keying on parent → child or process → process relationships. You can find the whole list of public detection and endpoint rules below:

The main difference between the detection and endpoint rule logic is the scope. Our endpoint detection and response (EDR) ruleset is generally optimized for a low false positive rate, over a high true positive rate. Because this can lead to false negatives, we “duplicate” the endpoint rule logic to detection rules with fewer to zero exclusions.

Detecting unshare and user namespace privilege escalation
Not every escalation runs straight at a setuid binary or a kernel bug in the host context. A large family of Linux LPEs first calls unshare(CLONE_NEWUSER) to gain capabilities inside a new user namespace and then uses that borrowed power to reach code paths (filesystems, mounts, networking) that were never meant to take untrusted input. Because that unshare step is shared across CIFSwitch, pedit COW, DirtyClone, and container escapes, we detect it independently of whichever bug follows.

We detect two behavioral red flags: correlating the namespace creation to a root transition, and flagging anomalous unshare usage on its own.

Detecting unshare followed by a root transition
The high-confidence form correlates a non-root unshare that creates a user namespace with a uid_change to 0 shortly after, under the same lineage.

sequence by process.parent.entity_id with maxspan=60s
[process where event.action == "exec" and event.type == "start" and
process.name == "unshare" and
process.args in ("-r", "-rm", "-m", "-U", "--user") and user.id != 0]
[process where event.action == "uid_change" and event.type == "change" and
user.id == 0 and process.parent.user.id != 0]

Match the namespace flags by substring rather than by exact token, so the combined short form is caught alongside the split -U -r -m form. This maps to Potential Local Privilege Escalation via Unshare.

The auditd variant additionally keys on the unshare syscall's namespace-flag argument, which is independent of how the flags were spelled on the command line.

sequence by host.id, process.parent.pid with maxspan=30s
[process where host.os.type == "linux" and
(
(
auditd.data.syscall == "unshare" and auditd.data.class == "namespace" and
auditd.data.a0 in (
"10000000", "50000000", "70000000", "10020000", "50020000", "70020000"
)
) or
(
process.name == "unshare" and
(
process.args in ("--user", "--map-root-user", "--map-current-user") or
process.args like ("-*U*", "-*r*")
)
)
) and user.id != "0" and user.id != null]
[process where host.os.type == "linux" and
user.id == "0" and user.id != null and
(
process.name in (
"su", "sudo", "pkexec", "passwd", "chsh", "newgrp", "doas", "run0",
"sg", "dash", "sh", "bash", "zsh", "fish", "ksh", "csh", "tcsh",
"ash", "mksh", "busybox", "rbash", "rzsh", "rksh", "tmux",
"screen", "node"
) or
process.name like ("python*", "perl*", "ruby*", "php*", "lua*")
)]

 

Tying the unshare to the subsequent uid_change keeps false positives low; sandboxing and container tooling call unshare constantly but rarely transition to root in the same lineage. This maps to Potential Privilege Escalation via unshare Followed by Root Process.

Detecting anomalous unshare usage without a root transition
Some namespace abuse is worth surfacing before any root transition, in particular, container escapes, where the goal is the host rather than uid 0. This form keys on unshare execution itself, filtered down to the parents that don’t legitimately use it.

process where host.os.type == "linux" and event.type == "start" and
event.action in ("exec", "exec_event", "start", "executed") and
process.name: "unshare"

 

The standalone unshare rule differs from the sequence rules by needing no root transition at all, which makes it a broader hunting and triage signal (and a noisier one), useful for the escape-to-host case that the correlation rules would never see. This maps to Namespace Manipulation Using Unshare.

GTFOBins abuse: Privilege escalation from a misconfigured SUID bit
The last category is the plain misconfiguration end of the spectrum: a binary that shouldn’t be setuid-root is, and dropping to a root shell is a one-liner straight out of GTFOBins. There’s no CVE or exploit chain, just a privilege that was granted and then abused.

Detecting known GTFOBins binaries running as root
A large, curated set of interactive-capable binaries (find, gdb, vim, dd, nmap, and many more) can spawn a shell or run a command, and when any of them ships setuid-root, that’s instant root. As this is a known list, we can use a large allowlist to detect this activity. We again use the ID versus real ID correlation to detect the execution of the SUID binary, in conjunction with a known SUID binary and a set of known noisy exclusions. The process listing is ordered from A-Z.

process where event.type == "start" and event.action == "exec" and (
(process.user.id == 0 and process.real_user.id != 0) or
(process.group.id == 0 and process.real_group.id != 0)
) and
process.name in (
"aa-exec", "ab", "agetty", "alpine", "ar", "arj", "arp", "as",
"ascii-xfr", "ash", "aspell", "atobm",
"base32", "base64", "basenc", "basez", "bc", "bridge", "busctl", "busybox",
[...]
"xdotool", "xmodmap", "xmore", "xxd", "xz",
"yash",
"zsh", "zsoelim"
)

This is the highest-volume, best-understood class, and a maintained name list keeps it cheap to run. It maps to Potential Privilege Escalation via SUID Binary.

Detecting GTFOBins edge cases: Capabilities and copied shells
While having this one allowlisted rule catches a lot of known bad behavior, it doesn’t suffice in scenarios where a capability, such as cap_setuid bit, is set instead of just a +s bit, or when a shell is copied to another directory and run from there. To catch some of these edge cases, we have several other rules in place:

With this general layer in place, we’ll now take a look at some of 2026’s LPEs. For each showcased technique, we explain how it works, run and validate the detection of the public PoC, and note the rules that fire (the general-flow rules above, plus anything technique-specific).

Testing the framework against 11 public proof-of-concept exploits
To test whether this model survives changes in implementation, we ran 11 public exploit PoCs and two SUID misconfiguration cases. The summary records the first useful signal from each run, the privileged effect the test reached, and the rules that best explain the chain.

“No distinct precursor alert” means that the run produced no alert identifying the kernel primitive before the privileged effect. It does not mean that the PoC generated no userland activity.

Page-cache and zero-copy corruption

Copy Fail: CVE-2026-31431 · AF_ALG AEAD page-cache corruption

Observed path: AF_ALG socket() and splice() burst → cached /usr/bin/su corrupted → su executes with root effective UID.

Key alerts: Potential Copy Fail (CVE-2026-31431) Exploitation via AF_ALG Socket; Suspicious SUID/SGID Utility Execution.

DirtyFrag: CVE-2026-43284 / CVE-2026-43500 · ESP or RxRPC page-cache corruption

Observed path: No distinct primitive alert in this run → shared page-cache fragments reach in-place processing → /bin/su executes with root effective UID.

Key alerts: Potential Privilege Escalation via a Parent/Child Process Sequence; Suspicious SUID Binary Execution; Suspicious SUID/SGID Utility Execution.

Observed path: Local compilation and network activity → skb_segment() loses the shared-fragment marker → ESP-in-TCP modifies cached /usr/bin/su and the corrupted image executes.

Key alerts: Potential Privilege Escalation via Recently Compiled Executable; Network Connection via Recently Compiled Executable; UID Elevation from Previously Unknown Executable.

DirtyDecrypt / DirtyCBC: CVE-2026-31635 · RxGK in-place decryption

Observed path: Local compilation; PoC creates user and network namespaces internally → AF_RXRPC and splice() place file-backed pages in the decrypt path → /usr/bin/su produces the privileged shell in this test.

Key alerts: General Privilege Escalation Sequence Detected; Potential Privilege Escalation via Recently Compiled Executable; Potential Privilege Escalation via SUID/SGID Proxy Execution.

pedit COW: CVE-2026-46331 · tc act_pedit partial COW

Observed path: PoC calls unshare() internally and configures act_pedit through Netlink → write extends beyond the copied region → cached su entry point is replaced and execution yields a root shell.

Key alerts: UID Elevation from Previously Unknown Executable; Potential Privilege Escalation via a Suspicious UID Change; Potential Privilege Escalation via SUID/SGID Proxy Execution.

DirtyClone Python port: CVE-2026-43503 · TEE clone and ESP page-cache corruption

Observed path: Python PoC executes from a user-controlled directory → cloned socket buffer loses SKBFL_SHARED_FRAG → Python uid_change to 0 observed.

Key alerts: Potential Privilege Escalation via Python Exploit; public SIEM counterpart: Suspicious UID Change to Root via Python.

For DirtyClone, confirm whether the observed uid_change represented host root or namespace-mapped root before describing it as completed host escalation.

Namespace and trusted-helper exploitation

CIFSwitch: CVE-2026-46243 · CIFS origin validation and trusted helper

Observed path: unshare creates a hostile mount namespace → forged cifs.spnego request launches root-owned cifs.upcall → helper loads attacker-controlled NSS code and writes a sudoers rule.

Key alerts: Namespace Manipulation Using Unshare; Suspicious Path Mounted; Sudoers File Activity.

Observed path: unshare -Urn provides namespace-local CAP_NET_ADMIN → wrapped nla_len enables kernel read and decrement primitives → host writer creates a passwordless sudo rule and launches sudo -n bash.

Key alerts: Namespace Manipulation Using Unshare; Passwordless Sudo Probing; Suspicious UID Change to Root via Python.

Ptrace_may_dream: CVE-2026-46333 · Exit-time FD theft and AccountsService abuse

Observed path: busctl --system call triggers AccountsService activity → pidfd_getfd() race duplicates a root-authenticated D-Bus socket → account shell, password, and administrator status are changed before su/sudo yields root.

Key alerts: Potential Privilege Escalation via Busctl System Call; File Creation in World-Writable Directory by Unusual Process.

Privileged file-descriptor theft

Ssh-keysign-pwn: CVE-2026-46333 · Exit-time FD theft

Observed path: Recently compiled PoC repeatedly starts SUID-root ssh-keysign → races pidfd_getfd() during process exit → duplicates and reads one SSH host private-key descriptor; no root shell.

Key alerts: Suspicious SUID Binary Execution; Potential Privilege Escalation via a Parent/Child Process Sequence; Potential Privilege Escalation via Recently Compiled Executable.

Chage_pwn: CVE-2026-46333 · Exit-time FD theft

Observed path: PoC repeatedly starts chage -l → races pidfd_getfd() after privilege drop → duplicates the open /etc/shadow descriptor and reads the file; no root shell.

Key alerts: Potential Shadow Read via Unprivileged User.

SUID misconfiguration

SUID find -exec: No CVE · SUID misconfiguration

Observed path: Root-owned SUID find executes /bin/sh -p through -exec → shell retains root effective UID.

Key alert: Privilege Escalation via SUID/SGID.

Privileged Bash with -p: No CVE · SUID misconfiguration

Observed path: System Bash is copied to a non-standard path and configured SUID-root → bash -p preserves the elevated effective UID → root-capable shell.

Key alerts: System Binary Copied or Moved; Shell Privileged Mode from Non-Standard Path with Root Effective User.

 

With the general layer in place, the public PoCs become a validation set. We don’t need every exploit to look the same. We need the alerts to tell the same story: an unprivileged process prepares the ground and crosses a trust boundary, and then a root process appears.

Sometimes the earliest signal is a kernel primitive, such as AF_ALG plus splice(), and other times it’s namespace setup with unshare. Sometimes the trigger is quiet, and the only clean signal is the finish: a SUID helper, a Python process, or a shell suddenly running with effective uid 0. That’s the point of layering. Each PoC enters through a different door, but the investigation keeps folding back into the same model: precursor, root transition, and privileged execution.

Kernel page-cache and zero-copy corruption: The Copy Fail bug class
The page-cache corruption variants are the clearest example of why per-CVE detection is too narrow. Linux uses zero-copy paths, such as splice() and sendfile(), to move file-backed page-cache pages through kernel subsystems without copying them. When one of those subsystems writes in place without first honoring copy-on-write, an unprivileged user can corrupt the in-memory image of a privileged file. The file on disk may remain clean, but the cached version of /usr/bin/su, /bin/su, or another privileged target is no longer the version that the system administrator expects.

The lineage runs from DirtyCOW and Dirty Pipe into the 2026 wave: Copy Fail, DirtyFrag, DirtyClone, Fragnesia, pedit COW, and related variants. The interfaces differ, but the defender’s problem is the same. We want to catch the primitive where it’s stable, and we want to catch the privileged outcome when the primitive isn’t visible enough.

Copy Fail (CVE-2026-31431)
Copy Fail is the cleanest place to start because it gives us both sides of the story. The public PoC chains an AF_ALG socket with splice() to land a controlled write into a page-cache page and then uses that corruption against a privileged file. Public technical write-ups describe the vulnerable path as the authencesn AEAD implementation mishandling input manipulated through splice(), producing page-cache corruption through the crypto API.

In Kibana, this gives us a rare luxury: detection of the primitive and of the finish. The auditd layer can catch the non-root process producing a burst of socket(AF_ALG) calls interleaved with splice(), while Elastic Defend catches the behavioral outcome when the corrupted privileged file is executed.

Kibana alerts for Copy Fail CVE-2026-31431: AF_ALG socket exploitation plus SUID/SGID privilege escalation

The screenshot shows the expected mix: Potential Copy Fail (CVE-2026-31431) Exploitation via AF_ALG Socket alongside multiple SUID/SGID detections spread across security information and event management (SIEM) and EDR, where Suspicious SUID/SGID Utility Execution is the main EDR rule that fires when su runs with elevated effective privileges. This is the ideal case for layered detection; the kernel-specific signal tells us which exploit family we’re probably looking at, and the general-flow rules confirm that the host actually crossed into root.

DirtyFrag (CVE-2026-43284)
DirtyFrag is a useful counterexample. It reaches the same page-cache corruption outcome, but it doesn’t look like Copy Fail on the wire. Public research describes DirtyFrag as chaining the xfrm-ESP Page-Cache Write issue (CVE-2026-43284), with the RxRPC Page-Cache Write issue (CVE-2026-43500). The common failure is that shared socket-buffer fragments can reach in-place writers without the kernel first forcing a safe copy.

That changes the detection story. We shouldn’t expect the AF_ALG rule to fire, because this is no longer the Copy Fail primitive. What remains stable is the finish. In the lab run, the exploit process drives the corruption, and then /bin/su appears with root effective privileges, while the real user remains non-root.

Kibana alerts for DirtyFrag CVE-2026-43284 showing /bin/su run as root by the ./exp exploit process

The screenshot shows the general layer doing the work: Suspicious SUID Binary Execution, Potential Privilege Escalation via a Parent/Child Process Sequence, and the Elastic Defend Suspicious SUID/SGID Utility Execution alert. The trigger changed, but the host still had to execute a privileged binary in a suspicious lineage.

The full auditd configuration and queries for the AF_ALG and DirtyFrag primitive coverage are in the Copy Fail and DirtyFrag research. The next variants keep the same page-cache finish but move the trigger into different kernel interfaces.

Fragnesia (CVE-2026-46300)
Fragnesia is close enough to DirtyFrag that it belongs right next to it, but it adds a useful detection angle because the public PoC leaves more endpoint exhaust. The PoC targets skb_segment() in net/core/skbuff.c. During Generic Segmentation Offload (GSO) segmentation, skb_segment() propagates SKBFL_SHARED_FRAG from the head skb but not from a frag_list member that carries page-cache-backed fragments. Once that marker is lost, the resulting skbs can pass the ESP skip_cow guard and be decrypted in place over page-cache pages. The trigger is networking-heavy, namespaces, veth pairs, send(), splice(), Generic Receive Offload (GRO) coalescing, GSO segmentation, and an ESP-in-TCP receiver, but the primitive is the same shape we keep seeing: a controlled page-cache write that’s iterated until a SUID binary is corrupted and a root shell appears.

Fragnesia CVE-2026-46300 alerts: recently compiled skb_segment_exploit, network connection and SUID/SGID

In Kibana, this one is louder than DirtyClone and more endpoint-friendly than a pure syscall primitive. The screenshot shows ./skb_segment_exploit driving the setup, followed by /usr/bin/su as the privileged finish. The alerts line up with that story. Two unique rules that triggered are related to the compilation of this exploit on the host, right before execution, and the fact that this exploit makes local network connections:

This is followed by similar SIEM and EDR rules triggering on the general LPE process:

That’s the right detection outcome for this variant. We don’t need a narrow rule named after skb_segment() to get useful coverage. The kernel trigger is specialized and timing-sensitive, but the exploit still has to stage from a user-controlled context, exercise an unusual local networking path, corrupt a privileged target, and pivot through a SUID helper. The general-flow rules capture the root transition, while the recently compiled executable, world-writable file, network, and SUID/SGID alerts provide the analyst with sufficient context to recognize the Fragnesia-style path.

DirtyDecrypt / DirtyCBC (CVE-2026-31635)

DirtyDecrypt, also called DirtyCBC by the PoC authors, is another Copy Fail–style page-cache write, but the abused interface moves into RxRPC. The repository describes it as an rxgk page-cache write caused by a missing copy-on-write guard in rxgk_decrypt_skb(). The PoC comments spell out the failure mode: rxgk_decrypt_skb() builds an skb scatterlist and calls into Kerberos decryption without first forcing a safe copy, while the krb5enc AEAD template decrypts in place before the HMAC check. When the skb fragments are backed by page-cache pages, the failed decrypt still corrupts the cached file data.

In practice, this looks like a sibling of DirtyFrag rather than of Copy Fail. There’s no AF_ALG burst to lean on. The PoC sets up user and network namespaces, drives the RxRPC path over loopback, splices file-backed pages into the packet path, and repeatedly fires the decrypt primitive until the target bytes land. The checked PoC then targets a readable SUID-root binary, such as /usr/bin/su, backs it up under /tmp, corrupts the in-memory image with a tiny setuid(0) plus /bin/sh payload, and executes the target.

DirtyDecrypt CVE-2026-31635 alerts: ./dirtydecrypt escalating to /usr/bin/su via SUID/SGID proxy execution

The screenshot shows the same layered outcome that we’ve seen across the page-cache family. The exploit process is ./dirtydecrypt, launched from a user-controlled working directory, and the privileged finish is /usr/bin/su. Coverage comes from the general-flow and SUID layers:

DirtyDecrypt moves the primitive into RxRPC and Kerberos-style in-place decrypt, but the endpoint story is still familiar: a recently compiled local PoC stages from a writable path, corrupts a privileged file-backed page, and pivots through a SUID helper.

pedit COW (CVE-2026-46331)

pedit COW moves the same failure mode into traffic control. Instead of crypto sockets or ESP/RxRPC paths, the abused interface is the tc packet-editing action, act_pedit. The kernel computes a copy-on-write range before the edit loop, but that calculation can miss the runtime offset used by typed keys, leaving part of the write region outside the copied area. The result is another page-cache corruption path. NVD describes the issue as net/sched: fix pedit partial COW leading to page cache corruption, where tcf_pedit_act() computes the COW range once before the key loop and can leave part of the write region un-COW’d.

pedit COW looks nothing like Copy Fail in telemetry. There’s no AF_ALG burst. The PoC needs the traffic-control path and typically begins by obtaining namespace-local networking capability, such as CAP_NET_ADMIN, through unshare. From the detection side, that means we lean on the namespace precursor and the root outcome.

pedit COW CVE-2026-46331 alerts: ./packet_edit_meme UID elevation and SUID/SGID proxy execution to /bin/su

The screenshot shows this clearly. Some of the interesting alerts are the broader signals: file creation in a world-writable directory, UID elevation from a previously unknown executable, suspicious UID change, parent-process escalation, and SUID/SGID proxy execution. There’s currently no per-CVE tc rule, but the layered model still catches the behavior that matters: a user-controlled process sets up the path, corrupts the privileged image, and pivots into root execution.

DirtyClone (CVE-2026-43503)

DirtyClone is the quietest of the page-cache examples in the endpoint view. The bug sits in the Linux networking stack, where socket-buffer fragment transfer helpers fail to preserve the SKBFL_SHARED_FRAG marker. When that marker is lost, later in-place writers can treat shared, file-backed memory as private and write into page-cache-backed data. NVD describes CVE-2026-43503 as missing propagation of SKBFL_SHARED_FRAG through helpers such as __pskb_copy_fclone() and skb_shift(), which can let an unprivileged user write into the page cache of a root-owned read-only file through later in-place writers.

In our run, the public PoC doesn’t give us a loud, stable userland primitive to key on. It’s Python-driven, runs from a user-controlled working directory, and crosses into root. That makes it a perfect test for the general-flow layer.

DirtyClone CVE-2026-43503 detected by a single alert: Potential Privilege Escalation via Python Exploit

The screenshot shows one alert: Potential Privilege Escalation via Python Exploit. That may look sparse compared to Copy Fail, but it’s an important result. It means that the framework still produced a signal when the implementation didn’t expose a useful per-CVE tell. We can enrich later if a stable syscall or interface pattern emerges, but we don’t need to wait for that to detect the root transition.

Taken together, the page-cache examples show the full range. Copy Fail gives us primitive-plus-outcome. DirtyFrag and Fragnesia show the same corruption model moving through networking paths, where SKB fragment handling, zero-copy, and in-place ESP processing do the damage. pedit COW moves the idea into traffic control. DirtyClone shows why the outcome layer has to stand on its own when the kernel trigger is quiet.

Exploits that start with unshare: CIFSwitch and OVSwrap

The next set of PoCs looks different because the attacker first changes the privilege context around the process. A large family of Linux LPEs begins with unshare(CLONE_NEWUSER), which gives an ordinary user capabilities inside a new namespace. Those namespace-local capabilities open kernel code paths in networking, filesystems, and mounts that weren’t designed with untrusted local users in mind.

This is also where kernel bugs and userspace helpers start to blur together. Some exploits use unshare to reach a kernel primitive. Others use it to build a hostile filesystem or mount namespace and then trick a privileged helper into trusting what it sees. For detection, unshare is valuable because it happens early and repeats across otherwise unrelated techniques.

CIFSwitch (CVE-2026-46243)

CIFSwitch is a trusted-helper bug reached through the kernel. The PoC abuses a missing validation in the cifs.spnego key type: an attacker calls request_key() with a forged key description, causing the kernel to invoke the root-owned cifs.upcall helper with attacker-controlled fields. With upcall_target=app, the helper enters the attacker's mount namespace and performs a getpwuid() lookup before dropping privileges: loading an attacker-controlled Network Security Services (NSS) library and executing code as root.

The important part is the handoff. The exploit starts with unshare to build the hostile namespace and then relies on a privileged helper to finish the escalation. That gives us several detection opportunities before and during the root transition.

CIFSwitch CVE-2026-46243 alerts: unshare namespace manipulation, suspicious mount and sudoers file activity

The screenshot shows the expected spread:

That’s the right shape for this technique. We aren’t depending on a rule named after CIFSwitch. We’re catching the setup, the suspicious namespace behavior, the mount activity, and the root transition. If the helper changes, the early namespace signal and the general escalation rules still give us coverage.

OVSwrap (CVE-2026-64531)

OVSwrap is a good example of the other side of namespace-based privilege escalation. Unlike CIFSwitch, where the namespace is used to construct an environment that a privileged userspace helper later trusts, OVSwrap uses a private user and network namespace to reach a vulnerable kernel interface directly. An ordinary user can run unshare -Urn, gain CAP_NET_ADMIN over the newly created network namespace, and create a private Open vSwitch (OVS) datapath without needing host-level CAP_NET_ADMIN.

The vulnerability is in the kernel's OVS action handling. OVS accepts nested Netlink actions from userspace and expands them into an internal action stream, but the nla_len field describing an individual Netlink attribute is only 16 bits wide. Before the fix, a generated nested action could grow beyond 65,535 bytes without being rejected. The stored length would wrap, causing later OVS parsing to resume from attacker-controlled data inside the generated action stream. The public PoC uses this to construct kernel read and targeted decrement primitives, locate a host-side process and its credentials, and modify its fsuid and fsgid until the process can write as root.

The endpoint story is particularly useful for detection because the kernel primitive itself is complex, but the setup and finish are not. The PoC is Python-driven and creates a private namespace with unshare; after corrupting the host-side writer's credentials, it writes a passwordless sudo rule and executes sudo -n bash.

OVSwrap CVE-2026-64531 alerts: unshare namespace manipulation, Python exploit and passwordless sudo probing

In the lab run, this produced the following alerts:

This is exactly the kind of exploit where the layered approach pays off. We don’t need an endpoint rule that understands malformed OVS CLONE actions, conntrack expansion, forged tunnel metadata, or the kernel decrement primitive. Instead, we see the stable behavior around it: a Python PoC enters a new namespace, unshare exposes a privileged kernel networking path, the process crosses from an ordinary user context into host-root capabilities, and the exploit finishes through passwordless sudo.

OVSwrap therefore complements CIFSwitch nicely. Both begin with an unprivileged user creating namespaces, but what happens next is very different: CIFSwitch hands control to a privileged helper, while OVSwrap attacks the kernel's OVS datapath and directly corrupts host credentials. The implementation changes; the namespace precursor and root-transition layer remain useful.

Privileged D-Bus and policy helpers
Not every helper-based LPE starts with a namespace. Some go straight at the services that grant controlled root access: sudo, polkit / pkexec, and privileged services reachable over D-Bus. These components are heavily used and well-audited, but they sit directly on the privilege boundary. One logic slip can turn a normal user request into root execution.

The upside for defenders is that the actors are named. We can key on specific binaries, services, and command-line shapes, in addition to the general root-transition layer.

ptrace_may_dream (busctl abuse)
ptrace_may_dream is a good example of a helper path that’s precise in telemetry. The technique talks to a privileged D-Bus system service directly with busctl. The escalation is driven by an unprivileged user invoking busctl --system call against a service that then performs a privileged action on the user’s behalf.

Because the tell is specific and rarely legitimate in normal workstation or server activity, detection can be tight.

ptrace_may_dream alerts: six busctl system call privilege escalation detections on a CentOS Stream 9 host

The screenshot shows repeated Potential Privilege Escalation via Busctl System Call alerts, plus File Creation in a World-Writable Directory by Unusual Process. That’s a different detection shape from the page-cache examples, but the same investigation logic applies: suspicious precursor, privileged service interaction, and a path toward root-controlled behavior.

Privileged file-descriptor theft from trusted helpers
The previous examples all end in something easy to recognize: a process becomes root, a privileged service acts, or a SUID binary hands the user a shell. This pattern is slightly different. The attacker doesn’t need the helper to execute a command. They need it to open something privileged, drop credentials, and die slowly enough that the file descriptor can be stolen.

That’s the core of CVE-2026-46333. The bug sits in the kernel’s __ptrace_may_access() path. During process exit, there’s a short window when a task has already dropped its memory image but still has open file descriptors. Paired with pidfd_getfd(), that window lets an unprivileged process duplicate descriptors from a dying privileged process when the credential checks line up. Qualys described the impact as both credential disclosure and root-code-execution potential, with case studies against chage, ssh-keysign, pkexec, and accounts-daemon.

For defenders, this is an important variation on the normal LPE flow. A successful exploit may never create an obvious root shell. Instead, root-only material leaves the boundary: SSH host private keys, /etc/shadow, or an authenticated privileged IPC connection. The detection strategy, therefore, has to widen slightly. We still care about suspicious SUID/SGID execution and parent-child escalation, but we also care about non-root processes entering sensitive group context, especially from user-writable or freshly compiled paths.

ssh-keysign-pwn (CVE-2026-46333)
ssh-keysign-pwn targets OpenSSH’s ssh-keysign helper. The helper is interesting because it opens SSH host private keys before dropping privileges. The public PoC repeatedly spawns ssh-keysign, opens a pidfd for the child, races pidfd_getfd() across likely file descriptors, and checks whether any duplicated descriptor points to an ssh_host_*_key file. The repository describes the target directly: sshkeysign_pwn pulls SSH host private keys, while chage_pwn pulls /etc/shadow.

ssh-keysign-pwn CVE-2026-46333 alerts: ssh-keysign run as root by a recently compiled ./sshkeysign_pwn

In the screenshot, the parent process is the user-controlled ./sshkeysign_pwn binary, and the privileged child is /usr/lib/openssh/ssh-keysign. The privilege shape is exactly what the SUID/SGID layer is built for: ssh-keysign runs with user.id:0, while the real user remains 1000, and the parent is a recently compiled executable in the user’s working directory. This results in the following rules triggering:

That’s enough to make the alert useful, even though the payload is a stolen descriptor, not a shell. The endpoint doesn’t have to prove that the SSH host key was printed to stdout. The host already showed the suspicious relationship that matters: a local PoC repeatedly drove a SUID-root helper that briefly held root-only secrets.

chage_pwn (CVE-2026-46333)
chage_pwn uses the same kernel primitive against a different helper and a more directly dangerous file. chage -l <user> opens account-aging data, including /etc/shadow, and then drops privileges. The PoC forks chage, opens a pidfd for the child, races pidfd_getfd() over candidate descriptors, looks for a duplicated descriptor pointing at /etc/shadow, and then reads from that descriptor.

chage_pwn CVE-2026-46333 alerts: ten Potential Shadow Read via Unprivileged User detections in Kibana

This one is useful because it validates a slightly different detection idea. The screenshot shows repeated Potential Shadow Read via Unprivileged User alerts on ./chage_pwn root. The process is still running as the unprivileged user, but the meaningful transition is group-based: the process enters shadow context from a user-controlled executable path.

Plain SUID and SGID misconfiguration
The last examples are deliberately simple. A binary that shouldn’t be SUID-root is SUID-root, and the user runs it in the way that GTFOBins has documented for years. It’s the same finish we saw in the page-cache family, just without the corruption step. Copy Fail, DirtyFrag, pedit COW, and similar bugs often end by making a privileged binary behave like an attacker-controlled SUID helper. GTFOBins abuse starts there.

SUID abuse example: Root shell via find -exec
find can execute commands with -exec. When find is SUID-root, that executed command inherits the elevated context.

GTFOBins SUID abuse alert: SUID-root find spawning a shell with -exec, real user 1000 and effective UID 0

The screenshot shows that find runs with root effective privileges, while the real user is non-root, and the command line includes the shell execution path. The alert is Privilege Escalation via SUID/SGID.

Privileged-mode shell: Root from bash -p
Shells usually drop elevated privileges unless told not to. The -p flag keeps the privileged effective identity. If a SUID-root shell exists, or if a root-owned copy of bash is placed somewhere unusual with the SUID bit set, launching it with -p drops the caller directly into a root-capable shell.

 

Privileged-mode shell alerts: /bin/bash copied to /var/tmp/rootbash then run with -p as root

The screenshot shows two useful detections: System Binary Copied or Moved, followed by Shell Privileged Mode from Non-Standard Path with Root Effective User. First, a system binary was copied into an unusual location (which is specific to how we set up this technique). Then the copied shell was executed in privileged mode.

This is the simplest form of the same pattern that we’ve been following throughout the section. A user-controlled path, a privileged execution context, and a root-capable process. Whether the attacker got there through AF_ALG, ESP/RxRPC, act_pedit, unshare, D-Bus, or a bad SUID bit, the endpoint story is still recognizable.

What this Linux privilege escalation detection framework covers
In this edition of our "Linux Detection Engineering" series, we built a layered framework for Linux local privilege escalation. The first layer detects the default flow every escalation shares: an unprivileged process executing from a writable path and becoming root, whether through a SUID helper, a self-elevating exploit, a suspicious descendant reaching root, a full exec-elevate-confirm sequence, a root shell from a nonstandard path, or an interpreter one-liner. The second layer adds bug-class coverage across the kernel page-cache corruption family, namespaces and capabilities, trusted-helper abuse, sudo and polkit, privileged D-Bus services, and plain SUID/SGID misconfiguration.

The value of this framework is durability. The 2026 surge produced many new CVEs, but they largely reused a handful of ideas and all ended in the same observable root transition, so outcome-oriented detection held up as the PoCs multiplied. It doesn’t claim to catch every possible LPE, but it gives defenders broad, resilient coverage of how escalations actually behave and a clear place to slot in each new technique as it appears.


ATOMIC MACOS (AMOS) STEALER INFECTION

11.9.2026  MALWARE TRAFFICS 

NOTICE:

NOTES:

ASSOCIATED FILES:

 

IMAGES


Shown above: Fake macOS software page.

 


Shown above: Text from the fake software page pasted into a macOS Terminal window.

 


Shown above: Traffic from the infection filtered in Wireshark.

 


XWORM INFECTION

11.9.2026  MALWARE TRAFFICS 

NOTICE:

ASSOCIATED FILES:

 

2026-09-08 (TUESDAY): XWORM INFECTION

EMAIL INFORMATION:

- Return-Path: amedrano.tornillo@gmail[.]com
- Received: from gmail[.]com (unknown [217.60.195[.]100])
  by [information removed]; Tue, 08 Sep 2026 17:43:14 +0000 (UTC)
- From: Alejandra Medrano (amedrano.tornillo@gmail[.]com)
- To: [information removed]
- Subject: ENVIO DOCUMENTOS FACTURA 4558
- Date: 08 Sep 2026 10:43:13 -0700

ATTACHED FILE:

- SHA-256 hash: 9b4e654a8435d91c7f4e24e7fd844cbbb62328131b0065bc5a534c6e948c02c5
- File size: 141,703 bytes
- File type: RAR archive data, v5
- File name: PAGO-ENVIO DOCUMENTOS FACTURA 4558.LZH

EXTRACTED MALWARE FOR XWORM:

- SHA-256 hash: 5ba1eee1204710adfe1963b730de79c7a8089b173e811052e7be464fc5da1a1d
- File size: 207,267 bytes
- File type: ASCII text, with very long lines, with CRLF, LF line terminators
- File name: PAGO-ENVIO DOCUMENTOS FACTURA 4558.js
- Sandbox analysis: https://www.joesandbox.com/analysis/1970315
- Sandbox analysis: https://tria.ge/260908-ymwaaagp3s/
- Sandbox analysis: https://app.any.run/tasks/7654b48a-cf1a-41f7-a65e-73d82381401c

XWORM C2 TRAFFIC:

- tcp[:]//43.228.157[.]141:7007/

NOTES:

- The infection did not survive a reboot on my infected Windows host.

Scans for Proxmox Servers

10.9.2026  SANS  Vulnerebility

About a week ago, Proxmox published an advisory revealing a vulnerability in older versions of Proxmox VE, its flagship Virtual Environment product. The vulnerability only affects version 7, which has not been supported for a couple of years now.

But it appears that the vulnerability may have caught the attention of some attackers and researchers. We do see a bump in scans for port 8006, and also some additional brute force traffic. For example, brute force requests like:

POST /api2/json/access/ticket HTTP/1.1
Host: [redacted]:8006
User-Agent: Go-http-client/1.1
Content-Length: 37
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
 

password=Ww778899&username=root%40pam

The PVE proxy log will log failed login attempts with a 401 status code:

::ffff:62.60.130.193 - - [09/09/2026:15:26:14 +0000] "POST /api2/json/access/ticket HTTP/1.1" 401 50
::ffff:62.60.130.193 - - [09/09/2026:15:28:04 +0000] "POST /api2/json/access/ticket HTTP/1.1" 308 18
::ffff:62.60.130.193 - - [09/09/2026:15:28:08 +0000] "POST /api2/json/access/ticket HTTP/1.1" 401 50
::ffff:62.60.130.193 - - [09/09/2026:15:29:49 +0000] "POST /api2/json/access/ticket HTTP/1.1" 308 18
::ffff:62.60.130.193 - - [09/09/2026:15:29:52 +0000] "POST /api2/json/access/ticket HTTP/1.1" 401 50
::ffff:62.60.130.193 - - [09/09/2026:15:31:33 +0000] "POST /api2/json/access/ticket HTTP/1.1" 308 18
::ffff:62.60.130.193 - - [09/09/2026:15:31:36 +0000] "POST /api2/json/access/ticket HTTP/1.1" 401 50

You may also see the less commonly used 308 status code if the attacker does not use TLS on their first attempt and instead sends a POST request (as shown above). A 308 access code allows a client to change the request method after following the redirect. 301 and 302 status codes require the same method for the follow-up request.

Other scans I have seen:

Classic Fingerprinting

/pve2/images/logo-128.png???????

And a POST request to /api2/extjs/access/ticket. This endpoint behaves differently from the prior endpoint. It always returns 200, but the JSON payload will contain the login failed messages. These are trickier to analyze because the proxy log does not indicate the outcome of authentication. A return payload size of 77 bytes should indicate failure.

 


Redtail Payload Analysis

10.9.2026  SANS  Security

Following a RedTail Linux Payload from DShield to Dynamic Analysis

During monitoring of my DShield honeypot, I observed an attacker uploading a collection of Linux executables targeting several processor architectures. The files included ARM, ARM64, i686, RISC-V and x86-64 variants named as part of a RedTail deployment package. Rather than relying only on static indicators or public threat-intelligence results, I extracted the captured payloads from Cowrie and analyzed the x86-64 variant in an isolated malware-analysis environment.

The x86-64 sample analyzed in this article has the following SHA-256 hash:
63be5f38b520b3143732962a5f8fec1f9abd1f483dbc741ed324e58f955dd35e


Dynamic analysis showed that the payload did considerably more than simply execute. It changed its visible process identity, terminated other processes, killed one of the filesystem-monitoring processes used during the experiment, and created a TCP listening socket. A matched pair of pre- and post-execution memory images was also acquired from the Proxmox hypervisor to preserve the malware's runtime state independently of the infected guest.

From Cowrie Upload to Malware Sample

The original files were recovered from the Cowrie download directory on the DShield honeypot and copied into a separate folder named after the event.code on the DShield SIEM “attack-a7fc773a9f1a”. The attack delivered multiple architecture-specific versions of the same malware family together with shell scripts responsible for deployment and cleanup.


The recovered set included variants for:

The associated deployment script inspected the host architecture and selected the appropriate RedTail executable. Static inspection of the x86-64 binary identified it as a statically linked ELF executable. Strings extracted from the sample also contained an indication that it had been processed with the UPX executable packer.


For the controlled experiment described here, I selected redtail.x86_64, matching the architecture of the Ubuntu analysis VM.

Isolated Analysis Environment

The malware was executed inside an Ubuntu 24.04 virtual machine hosted on Proxmox. The victim was assigned:
10.66.66.10/24

and was connected only to an isolated malware-analysis network.

An INetSim server at:

10.66.66.2
provided simulated network services. The victim had no default route to the Internet. Before execution, connectivity to INetSim was verified while attempts to reach an external address such as 8.8.8.8 returned Network is unreachable.


This design allowed the malware to encounter DNS and network services without allowing it to communicate with real external infrastructure.

Several monitoring mechanisms were started before staging the sample. These included auditd syscall and filesystem rules, inotifywait filesystem monitoring, continuous process and socket sampling, journal and kernel logging, tcpdump on both the victim and INetSim systems, and strace around the actual malware execution.

In addition, guest memory was acquired from outside the infected system using QEMU's dump-guest-memory functionality on the Proxmox host.

Detonating the redtail.x86_64 Elf executable only (Setup.sh and Clean.sh were not ran)

There were three runs (Run 001.1, Run 001.2 and Run 002) of the malware detonation executed, with the VM reverted back to original pre-detonation state between RUN 001 and RUN 002. In RUN 001, the malware file was detonated twice. RUN 001 was run as user privileges but RUN 002 was run as root.

This report will focus on analyzing RUN 002 with comparisons made to RUN 001.1 and 1.2 to establish similiarities and differences between the runs.

Analysing Run 002, two memory images were collected:

vm610-baseline-pre-redtail.elf
vm610-post-redtail.elf

Both images were approximately 6 GB and were independently SHA-256 verified after acquisition. The baseline image was collected after all monitoring processes had been started but before the malware was staged, making the two images suitable for later differential analysis.

 

 

 

 

 

 


Controlled Execution

For the second experiment, the malware was executed directly with the argument observed during the earlier investigation:

redtail.x86_64 ssh
strace confirmed successful execution:
execve("/analysis/run-002/sample/redtail.x86_64",
       ["/analysis/run-002/sample/redtail.x86_64", "ssh"],
       ...) = 0

This was important because it established that the subsequent behavior belonged to a successfully executing instance of the recovered Cowrie payload rather than to a failed launch or unrelated process.
Two RedTail-backed processes remained running after execution:

PID 10395
PID 10404

Both /proc/<PID>/exe links resolved to:
/analysis/run-002/sample/redtail.x86_64
and hashing those executable mappings produced the same SHA-256 as the original recovered sample.
Despite this, neither process presented itself as redtail.x86_64.
Instead, both appeared as:

php-fpm: pool www


Process Masquerading

The strace output captured the mechanism RedTail used to alter its visible process name:
prctl(PR_SET_NAME, "php") = 0
The successful return value demonstrates that RedTail deliberately modified its task name.
The result was a process that appeared in ordinary process listings as a legitimate PHP-FPM worker:
php-fpm: pool www
while /proc/<PID>/exe continued to identify the executable as the original RedTail sample.

This creates a useful forensic distinction. A process listing by itself could suggest that PHP-FPM was running on the system, while examining /proc/<PID>/exe and hashing the mapped executable revealed that the apparent PHP process was actually the RedTail binary.

This behavior was also consistent with an earlier experimental run in which surviving RedTail processes presented themselves using a PostgreSQL-like process name. The repeated observation suggests that RedTail uses legitimate-looking service names to make malicious processes less conspicuous in routine process inspection.

Process Termination and Monitoring Interference

One of the clearest behavioral findings from Run 002 was RedTail's use of SIGKILL.
Before execution, the automated readiness check confirmed that the filesystem-monitoring process was active:   

[OK] inotify PID 1199

During malware execution, strace recorded:

kill(1199, SIGKILL) = 0
The return value of zero indicates that the signal was successfully delivered.
After execution, the same readiness check reported:
[!!] inotify not running

This provides a direct evidence chain:

inotifywait running
        ↓
RedTail calls kill(1199, SIGKILL)
        ↓
kernel reports success
        ↓
inotifywait no longer running

RedTail also issued successful SIGKILL calls against several additional PIDs during the same execution.

An important limitation must be stated here: Run 002 executed RedTail with root privileges. This gave the malware sufficient permission to terminate the root-owned monitoring process. In the earlier Run 001 experiment, a lower-privileged RedTail process attempted to terminate a root-owned monitor but received EPERM. Therefore, the successful termination observed in Run 002 demonstrates RedTail's process-killing behavior, while the ability to kill the monitoring process specifically depended on the privileges under which the sample was executed.

Network Activity, Listener, and INetSim Observations
After execution, surviving RedTail process PID 10395 was observed listening on 0.0.0.0:39983

Although the process appeared as php-fpm: pool www, /proc/10395/exe resolved to the analyzed redtail.x86_64 sample. No packets involving TCP/39983 were observed in the Run 002 victim PCAP, so the purpose of the listening socket could not be determined.  


While INetSim and packet capture initially showed no obvious RedTail outbound traffic, auditd revealed that PID 10395 attempted multiple external connect() calls on TCP port 853. Destinations included 1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 9.9.9.9, 9.9.9.10, and several additional addresses. TCP/853 is commonly associated with DNS-over-TLS, and most of the observed destinations were public DNS resolver infrastructure.

Two addresses, 80.152.203.134 and 109.91.184.21, did not clearly correspond to known public resolver services during the investigation. Reverse-DNS information showed that 80.152.203.134 resolved to mail3.kekew.info and was allocated to Deutsche Telekom AG (AS3320), while 109.91.184.21 resolved to ip-109-091-184-021.um37.pools.vodafone-ip.de and belonged to a Vodafone GmbH static B2B customer pool (AS3209). Both addresses were contacted by the same RedTail-backed process on TCP/853, with the connection attempts failing with ENETUNREACH. Their specific role in the observed activity could therefore not be confirmed, and they were retained as anomalous resolver candidates rather than classified as malicious infrastructure.


Because the victim was deliberately configured without a default Internet route, every external connection attempt failed with ENETUNREACH before a packet could leave the host. This explains why these attempts were absent from both the victim PCAP and INetSim logs. In this case, endpoint auditing revealed network intent that network monitoring alone could not observe.

Differential analysis of the pre- and post-execution memory images also found several of the TCP/853 destinations only in post-execution memory. However, examination of the surrounding RAM showed that these strings belonged to cached audit records containing the RedTail PID, executable path, destination address and failed connect() result. The memory findings therefore corroborated the auditd evidence but were not treated as proof that RedTail stored its resolver list directly in plaintext process memory.




The same TCP/853 resolver sequence was reproduced in both separate RedTail executions. Several destinations corresponded to established DNS-over-TLS services, strongly supporting the interpretation that this sequence forms part of RedTail's resolver-selection or encrypted DNS initialization behaviour.

A RedTail-backed TCP listener was observed during both executions, but the listening port differed between runs (40219 in Run 001 and 39983 in Run 002). No traffic involving either listener was observed during the corresponding packet captures. This suggests that the listener port may be dynamically selected, although two observations are insufficient to determine the exact selection mechanism.

Filesystem Changes and Persistence

Run 002 provided direct evidence of persistence. Immediately after execution, the RedTail-backed process spawned a shell that first removed the existing root crontab and then installed a new entry containing @reboot <RedTail executable>. The resulting /var/spool/cron/crontabs/root file was absent from the pre-execution filesystem baseline but present following execution. This established a straightforward reboot-persistence mechanism: RedTail would be relaunched whenever the infected host restarted.






RedTail also spawned a separate shell that invoked iptables -F and attempted to insert an INPUT rule allowing TCP traffic to port 39983. This was the same port on which the surviving masqueraded RedTail process was listening. The behavior therefore suggests that RedTail attempted to expose its newly created listener through the host firewall. Audit and process-accounting evidence confirm that both iptables commands were executed as root; however, because no post-execution firewall ruleset or command termination status was preserved, successful application of the firewall changes could not be independently verified.





Run 001 showed the same persistence and firewall logic while RedTail was executed as the unprivileged victor58 account. Instead of creating a root crontab, RedTail removed and replaced the current user's crontab, resulting in the creation of /var/spool/cron/crontabs/victor58 with an @reboot entry pointing to the RedTail executable. This demonstrates that the cron persistence mechanism does not depend on root privileges; RedTail installs persistence under whichever account is executing the malware. Run 001 contained two separate executions of the sample, and each execution repeated this behavior. The corresponding firewall commands attempted to flush the ruleset and allow inbound access to the dynamically selected listener ports 39539 and 40219. Because these commands were executed as UID 1000 without root privileges, successful firewall modification was not established and would normally require additional privileges.




Across the two runs, the persistence behavior was therefore consistent while the resulting crontab depended on execution context: Run 001 persisted through the victor58 user crontab, whereas Run 002 persisted through the root crontab. The listener ports also differed across executions (39539, 40219, and 39983), further supporting the observation that RedTail selects a high-numbered listening port dynamically rather than relying on a single fixed port.

Process Masquerading and Listener Establishment

RedTail established a high-numbered TCP listener while disguising its process identity. During the first Run 001 execution, RedTail changed its process name to php, and the surviving malware process, PID 147999, was subsequently observed listening on 0.0.0.0:39539. Audit records from the same execution showed a child process invoking iptables -I INPUT -p tcp --dport 39539 -j ACCEPT, directly linking the firewall-modification attempt to the dynamically selected listener port. The iptables executable was successfully launched, although the preserved evidence does not confirm that the non-root process successfully applied the firewall rule.

The behaviour was reproduced with different values across subsequent executions. The second Run 001 execution masqueraded using a PostgreSQL-like process name and listened on TCP port 40219, while the root-privileged Run 002 execution used the process name php, a php-fpm: pool www process title, and listened on TCP port 39983. The differing ports across the three executions indicate dynamic high-port selection rather than reliance on a fixed listening port. In each case, RedTail's firewall command referenced the corresponding selected listener port.

RUN 001.1 Pictures


RUN 001.2 Pictures

RUN 002 Pictures



Summary

Host Discovery and System Profiling

Immediately after execution, RedTail performed extensive host profiling through Linux /proc and /sys interfaces. It queried processor characteristics, CPU topology and cache configuration, system memory, NUMA layout, huge-page availability, GPU information, kernel boot parameters, and DMI hardware identifiers.

Several of these queries were capable of identifying the analysis environment as virtualized. In Run 002, the returned data included the hypervisor CPU flag, QEMU system and chassis vendor values, SeaBIOS, and a Q35 virtual-machine product identifier. Despite receiving these virtualization indicators, RedTail continued executing its persistence, listener-creation and network-initialization routines.

To determine whether this profiling was incidental or part of a consistent initialization routine, the same query set was compared across both RedTail executions in Run 001 and the root-privileged execution in Run 002.

Raw Log Screenshot Snippets



Processed Logs Screenshot Snippet

RedTail Host Profiling Queries — Run 002

RedTail first queried /proc/cpuinfo and /proc/cmdline, obtaining processor, architecture and kernel information. The CPU information identified the virtual machine as exposing an AMD Ryzen 7 6800H processor with four visible CPUs and included the hypervisor CPU flag.

The sample then enumerated the topology of CPUs 0 through 3. It queried core IDs, CPU maps, package and die relationships, and CPU availability. This allowed it to identify the number and arrangement of available processors.

RedTail also performed unusually detailed cache enumeration. It queried the type, level, size, line size, number of sets, and sharing relationships of the available L1, L2 and L3 caches. It continued checking additional cache indexes until the kernel returned ENOENT, indicating that no further cache levels were present.

This behaviour shows that RedTail was not limited to simply determining the processor model or CPU count. It collected detailed information about the resources and topology available to the process.

CPU topology

CPU cache profiling

NUMA and memory profiling

RedTail queried /proc/meminfo to determine total and available system memory, swap configuration and huge-page availability. In Run 002, the VM exposed approximately 6 GB of RAM and 4 GB of swap, while no huge pages were currently allocated.

The sample also queried NUMA information under /sys/devices/system/node. It identified a single NUMA node, obtained the CPUs associated with that node, examined node-specific memory usage, and checked both 2 MB and 1 GB huge-page configurations. RedTail additionally attempted to query NUMA bandwidth and latency interfaces, although these returned ENOENT because the interfaces were unavailable in the VM.

The detailed CPU, cache, NUMA and huge-page enumeration resemble resource-suitability profiling that could be useful to a computationally intensive workload. However, the observed system calls 
alone do not establish exactly how RedTail used this information.

Hardware and virtualization profiling

RedTail queried multiple DMI identifiers under /sys/devices/virtual/dmi/id/. It also retrieved the VM's product_uuid when executing with root privileges.

These results show that RedTail queried information sufficient to identify the system as a QEMU virtual machine. The evidence does not establish that the malware performed anti-VM evasion or terminated based on these values; in this experiment, it continued execution despite receiving them.

Host Profiling Comparison Across Run 001 and Run 002

The host-profiling behaviour was highly reproducible.
Run 001 contained two separate non-root executions of RedTail, and each produced 180 extracted host query/reply records. Run 002 executed the same sample as root. After normalizing the process-specific /proc/<PID>/cpuset path, the unique host-information query sets from all three executions were identical and produced the same SHA-256 hash.

This demonstrated that RedTail consistently queried the same categories of information across all three executions:

• CPU and processor capabilities
• CPU topology
• cache configuration
• system memory
• NUMA topology
• huge-page configuration
• GPU information
• kernel configuration
• DMI hardware and virtualization identifiers

1. Identify which Run 001 trace files performed the host profiling

2. Extract PATH | REPLY from every matching RedTail trace

3. Then list what was created:

4. Make a clean list of only the paths queried

5. Compare the two Run 001 executions

6. Compare Run 001 with Run 002

Create its path-only version for Run 002, same formatting as applied to Run 001:

Then compare it against Run 001:

7. Normalizing the process-specific /proc/<PID>/cpuset pathname

8. Comparing all 3 runs query paths again with sha256 hashes of the files.

Result: All the same query paths being run.

After which, a comparison of the returned values was performed. A comparison was taken between the two non-root Run 001 executions:

The comparison of the returned values showed that most differences were simply caused by changing system state. For example, free and available memory differed between executions while the same /proc/meminfo query was performed each time.

The comparison between Run 001 and Run 002 were more interesting because Run 001 was non-root while Run 002 was root directly, the differences were related to execution privilege. During the non-root Run 001 executions, the following DMI queries returned EACCES:

chassis_serial | ERROR: EACCES
product_serial | ERROR: EACCES
product_uuid   | ERROR: EACCES

During root-privileged Run 002, RedTail queried exactly the same paths, but access succeeded:

chassis_serial | [empty]
product_serial | [empty]
product_uuid   | 770cb473-61eb-4f56-9777-d9e44d8ad48f

The second Run 001 execution gives the same non-root result, strengthening the finding.


This suggests that RedTail did not adapt its discovery routine according to privilege. Instead, it attempted the same enumeration sequence and obtained additional information when its execution context permitted access.

Root Privileges Query Output (No error returned):

Profiling Summary

The analysis showed that host and resource profiling is a consistent part of RedTail's initialization behaviour. Across three separate executions—two non-root executions in Run 001 and one root execution in Run 002—the malware queried an identical normalized set of host-information paths.

RedTail collected considerably more information than was required simply to identify the operating system. It enumerated CPU topology and cache geometry, system and NUMA memory, huge-page configuration, GPU availability, kernel parameters and DMI hardware identifiers. Execution privilege affected what information the operating system returned, but not which resources RedTail attempted to query.

Across all executions, RedTail obtained clear indicators that the analysis host was virtualized, including the hypervisor CPU flag, QEMU vendor strings, SeaBIOS and the Q35 virtual-machine identifier. Despite receiving these signals, the sample continued with cron persistence, listener creation, firewall-manipulation attempts and network initialization. This suggests that obvious virtualization indicators alone were not sufficient to alter or halt RedTail’s observed runtime behaviour. One possible explanation is that virtualization by itself is no longer a reliable indicator of a malware-analysis sandbox, because similar characteristics are also common in legitimate VPS and cloud-hosted Linux environments. The purpose of these virtualization-related queries therefore cannot be conclusively attributed to sandbox evasion.

Process Termination and Defense Evasion

During Run 002, RedTail enumerated running processes through /proc, resolved their executable paths, and inspected command-line arguments before selectively issuing SIGKILL. The malware successfully terminated PID 1199, an inotifywait process used by the analysis environment to monitor filesystem changes. It also successfully killed the timeout process supervising the tracing session, along with two sudo processes associated with the script used to launch the experiment. In each of these cases, the kill() system call returned 0, confirming that the termination request succeeded.

RedTail also identified /usr/bin/strace, read the command line showing that it was tracing the RedTail executable, and then issued SIGKILL against the strace process. The trace terminated while recording this system call, so its return value was not preserved. Nevertheless, the sequence provides strong evidence that RedTail actively interfered with the instrumentation used to observe its behaviour during the root-privileged execution. The available dynamic evidence confirms analysis-tool disruption, although it does not yet establish the exact criteria RedTail used to decide which processes to terminate.



The same process-enumeration and termination behaviour was reproduced during the two non-root executions in Run 001. In both executions, RedTail identified the root-owned inotifywait process used to monitor filesystem changes, read its command line, and attempted to terminate it with SIGKILL. These attempts returned EPERM, demonstrating that the non-root execution context prevented RedTail from terminating the root-owned monitor.


Process terminated as Root:

However, non-root privileges did not prevent RedTail from interfering with analysis processes running under the same user context. During the second Run 001 execution, RedTail identified and successfully terminated the timeout process supervising its strace session. It then identified /usr/bin/strace, read the command line showing that the tracer was monitoring the RedTail executable, and invoked SIGKILL; the trace terminated before the system-call return value could be recorded. The second execution also successfully terminated PID 147999, the surviving RedTail process from the first execution, suggesting possible previous-instance cleanup or single-instance enforcement.

Process terminated as User:


Together, Runs 001 and 002 show that RedTail's process-disruption routine operates regardless of privilege, while its effectiveness depends on the ownership and privilege level of the target process. Root execution enabled RedTail to terminate the root-owned filesystem monitor, whereas non-root execution was restricted to processes it was permitted to signal.

Overall Conclusion

Dynamic analysis of the RedTail sample revealed a consistent sequence of host discovery, persistence, process manipulation, network initialization, and defensive interference across both privileged and unprivileged executions. Although individual values such as process names and listening ports changed between executions, the underlying behavior was highly reproducible.

RedTail performed extensive host profiling through Linux /proc and /sys interfaces, enumerating processor characteristics, cache topology, memory, NUMA configuration, huge-page availability, and DMI hardware information. The same normalized set of host-information paths was queried across both Run 001 executions and Run 002. The sample also obtained explicit virtualization indicators, including the hypervisor CPU flag, QEMU identifiers, SeaBIOS, and a Q35 virtual-machine product name, but continued execution despite receiving this information. Execution privilege affected the information available to the malware but did not substantially alter its discovery routine.

Persistence was established through the current execution account's crontab using an @reboot entry pointing to the RedTail executable. Consequently, the non-root Run 001 execution created persistence for victor58, while the root-privileged Run 002 execution created root-level cron persistence. RedTail also attempted to manipulate the host firewall by flushing existing rules and inserting an INPUT rule for its dynamically selected TCP listener. The selected listener changed between executions—TCP ports 39539, 40219, and 39983 were observed—while the corresponding iptables command referenced the matching port in each case. Firewall modification was confirmed as attempted, although the preserved evidence does not establish successful rule application in every execution.

RedTail additionally disguised its running processes. Observed process names included php and a PostgreSQL-like postgres: user ..., while Run 002 also presented a process title of php-fpm: pool www despite the executable remaining redtail.x86_64. The masquerading processes owned the dynamically selected TCP listeners, demonstrating that the altered identities were associated with the surviving malware processes rather than unrelated applications.

A particularly significant finding was RedTail's interference with the analysis environment. The malware enumerated running processes, inspected executable paths and command-line arguments, and selectively issued SIGKILL. During non-root Run 001, attempts to terminate the root-owned inotifywait filesystem monitor failed with EPERM; however, RedTail remained capable of disrupting analysis processes that it had permission to signal, including the timeout process supervising its tracing session. During root-privileged Run 002, the same inotifywait monitor was successfully terminated. RedTail also identified /usr/bin/strace, read the command line showing that it was tracing redtail.x86_64, and issued SIGKILL; the trace terminated while recording that operation. These observations demonstrate that the process-disruption routine was present regardless of privilege, while its effectiveness depended on the privileges and ownership of the target process.

Network analysis identified repeated connection attempts to multiple external IP addresses on TCP port 853. The same target sequence appeared across Run 001 and Run 002, supporting its association with RedTail rather than unrelated host activity. Because the analysis VM deliberately had no default Internet route, these connections failed with ENETUNREACH and did not leave the host. The use of TCP/853 is consistent with DNS-over-TLS infrastructure, although the isolated environment prevented observation of any successful protocol exchange and therefore does not establish the ultimate purpose of those connections.

Static examination of the accompanying clean.sh script identified additional cleanup functionality targeting cron entries, shell-startup files, temporary directories, miner-related services, and suspicious process names. However, the script was not observed executing during either dynamic-analysis run. Its functionality should therefore be treated separately from behavior directly demonstrated by redtail.x86_64.

Overall, the experiments show RedTail as a Linux threat that combines persistent execution, extensive host profiling, process masquerading, dynamically selected listening services, attempted firewall manipulation, repeated external network initialization, and active interference with monitoring and analysis processes. Running the sample under both non-root and root contexts was particularly valuable: the experiments demonstrated that RedTail largely follows the same behavioral sequence regardless of privilege, while elevated privileges substantially increase the effectiveness of actions such as accessing protected host identifiers, modifying privileged resources, and terminating root-owned monitoring processes.

Limitations of Analysis:

• External TCP/853 connections could not complete because the victim intentionally had no Internet route.
• No inbound interaction with the RedTail listeners was observed, so their higher-level protocol/function was not established.
• Successful execution of iptables via execve() does not by itself prove that every firewall-rule change was successfully applied.
• clean.sh and setup.sh was analyzed statically and was not observed executing during Runs 001 or 002.

Indicators of Compromise

MITRE ATT&CK Mapping

Other Summary Findings – Supporting RedTail File Deployment and Clean Up

Static Analysis of SETUP.SH *Not Executed in any of the runs*

Static examination of setup.sh identified a multi-architecture staging and execution mechanism for RedTail. The script determines the victim's processor architecture and selects an associated payload for x86-64, x86, ARM or RISC-V systems. It enumerates user-owned writable directories and examines filesystem noexec settings to identify a suitable staging location, with /tmp, /var/tmp and /dev/shm included as fallback locations. The selected RedTail binary is copied into a randomly generated dot-prefixed filename, marked executable and launched with the argument ssh. Following execution, the script deletes the more readily identifiable redtail.* architecture-specific payload files from both the staging and original directories. This combination of malware relocation, hidden-file staging and artifact cleanup appears intended to reduce the visibility of the deployed executable. Static analysis does not, by itself, establish that setup.sh executed during the controlled dynamic-analysis runs.

Static Analysis of CLEAN.SH *Not Executed in any of the runs*

Static analysis of the accompanying clean.sh script revealed functionality designed to remove common Linux malware persistence mechanisms and terminate suspicious processes. The script first disables and stops a service named c3pool_miner. It then removes immutable and append-only attributes from cron files before filtering user and system cron configurations for commands containing strings such as wget, curl, /dev/tcp, /tmp, .sh, nc, bash -i, sh -i, and base64 -d.

The cleanup extends across user crontabs, /etc/crontab, cron scheduling directories, /etc/anacrontab, and the current user's crontab. The script additionally removes the top-level contents of /tmp, /var/tmp, and /dev/shm, and applies the same filtering routine to .bashrc, .bash_profile, and .profile. These actions are consistent with an attempt to remove scheduled-task, shell-startup, and temporary-file persistence.

Finally, the script attempts to terminate processes associated with unusual names including /bin/-bash, systemtd, and /usr/bin/.sh using SIGKILL. The name systemtd resembles the legitimate systemd service name and may represent an attempt to target a masquerading process. However, the available evidence does not establish that these filenames belong specifically to the RedTail sample analyzed in Runs 001 and 002.

The script was not observed executing during either dynamic-analysis run. Its contents should therefore be treated as static functionality associated with the recovered script rather than behaviour directly observed from redtail.x86_64.

SETUP.SH File Contents


CLEAN.SH File Contents

[1] https://www.inetsim.org/index.html
[2] https://github.com/bruneaug/DShield-SIEM/tree/main
[3] https://www.sans.edu/cyber-security-programs/bachelors-degree/

 


September 2026 Microsoft Patch Tuesday

9.9.2026  SANS  OS

This month, Microsoft released patches for a record-breaking 973 vulnerabilities, including 113 rated critical. It is by far the largest Patch Tuesday to date, well ahead of the previous high of 664 set in July 2026. Two vulnerabilities are listed as exploited in the wild, while none were publicly disclosed before Patch Tuesday. Notable fixes include Windows privilege escalation and critical RCEs in Skype for Business, MSMQ and RRAS.

A few vulnerabilities worth mentioning:

Windows Update Stack Elevation of Privilege Vulnerability (CVE-2026-81963)
Microsoft reports that CVE-2026-81963 is being exploited, though it was not publicly disclosed before Patch Tuesday. This Important-severity Windows Update Stack elevation of privilege vulnerability has a CVSS score of 7.8 and affects Windows 11 and Windows Server 2025 systems. The flaw involves improper link resolution before file access, allowing a local, authenticated attacker with low privileges to abuse link-following behavior and elevate to SYSTEM privileges. Administrators should prioritize applying the Windows security updates for affected Windows 11 and Windows Server 2025 systems, including Server Core installations.

Windows Advanced Local Procedure Call (ALPC) Elevation of Privilege Vulnerability (CVE-2026-85880)
Microsoft lists CVE-2026-85880 as exploited in the wild, although it was not publicly disclosed before Patch Tuesday and is not currently in CISA’s Known Exploited Vulnerabilities catalogue. This Important-severity Windows ALPC elevation of privilege vulnerability has a CVSS score of 7.8 and affects Windows 10 and multiple Windows Server releases, including Server 2012, 2016, 2019, and 2022. The flaw is a heap-based buffer overflow that can be exploited locally by an attacker who can run code in a low-privilege AppContainer; no user interaction is required. Successful exploitation allows the attacker to escape the sandbox and gain SYSTEM privileges on the affected host. Given Microsoft’s exploited-in-the-wild assessment, prioritize deployment of the applicable Windows security updates, especially on multi-user systems, exposed workstations, and servers where local code execution paths are available.

Skype for Business Remote Code Execution Vulnerability (CVE-2026-66302)
Microsoft reports that CVE-2026-66302 is not being exploited in the wild and was not publicly disclosed before Patch Tuesday. This is a Critical remote code execution vulnerability in Skype for Business Server with a CVSS score of 9.8, affecting Skype for Business Server 2015 CU13, Skype for Business Server 2019 CU8, and Skype for Business Server Subscription Edition CU1. The flaw involves external control of a file name or path, allowing an unauthenticated attacker to send a specially crafted network request that writes an attacker-controlled file to an arbitrary location on the affected server; successful exploitation could allow code execution on the target server without authentication or user interaction. Administrators should prioritize applying Microsoft’s updates for affected Skype for Business Server installations and review exposed deployments, logging, and access controls for signs of suspicious file writes or unexpected server-side code execution.

Windows Message Queuing Remote Code Execution Vulnerability (CVE-2026-69579)
Microsoft reports that CVE-2026-69579 is not known to be exploited in the wild and was not publicly disclosed before Patch Tuesday. This Critical remote code execution vulnerability carries a CVSS score of 9.8 and is a use-after-free flaw in Windows Message Queuing affecting supported Windows client and server releases. An unauthenticated attacker could exploit it remotely by sending a specially crafted packet to an affected Message Queuing service, with no user interaction required, potentially allowing code execution on the target system with high impact to confidentiality, integrity, and availability. Systems running MSMQ should be prioritized for patching; where Message Queuing is not needed, disabling the service or restricting network access to it, including limiting exposure of MSMQ traffic such as TCP port 1801, can reduce risk until updates are applied.

Windows Routing and Remote Access Service (RRAS) Remote Code Execution Vulnerability (CVE-2026-69590)
CVE-2026-69590 is not listed by Microsoft as exploited in the wild and has not been publicly disclosed; it is a Critical remote code execution vulnerability in Windows RRAS with a CVSS score of 9.8. An unauthenticated remote attacker could exploit the flaw by sending a specially crafted packet to an affected RRAS service over the network, with no user interaction required, potentially allowing code execution on the target system with serious confidentiality, integrity, and availability impact. Affected platforms include supported Windows 10, Windows 11, and Windows Server releases. Organizations should apply the Microsoft security update promptly, especially on systems running RRAS, and reduce exposure by disabling RRAS where it is not needed, restricting network access to the service with firewalls or VPN controls, and monitoring for unexpected traffic to RRAS-enabled hosts.

This was a summary of Microsoft’s monthly updates highlighting key vulnerabilities. Prioritize the exploited Important Windows EOP flaws, CVE-2026-81963 and CVE-2026-85880, then patch exposed Skype for Business, MSMQ, and RRAS systems vulnerable to Critical unauthenticated RCE.

A detailed list of this month's vulnerabilities follows below. To search and filter them, visit my dashboard: https://patchlens.io

Description

CVE

Disclosed

Exploited

Exploitability (old versions)

current version

Severity

CVSS Base (AVG)

CVSS Temporal (AVG)

.NET Elevation of Privilege Vulnerability

CVE-2026-69805

No

No

-

-

Important

7.5

6.5

CVE-2026-69806

No

No

-

-

Important

7.0

6.1

.NET Information Disclosure Vulnerability

CVE-2026-58649

No

No

-

-

Important

6.5

5.7

.NET and Visual Studio Elevation of Privilege Vulnerability

CVE-2026-69439

No

No

-

-

Important

8.8

7.7

.NET and Visual Studio Remote Code Execution Vulnerability

CVE-2026-69522

No

No

-

-

Important

8.8

7.7

CVE-2026-71328

No

No

-

-

Important

8.8

7.7

ASP.NET Core Denial of Service Vulnerability

CVE-2026-57099

No

No

-

-

Important

7.5

6.5

CVE-2026-69304

No

No

-

-

Important

5.9

5.2

Active Directory Certificate Services (AD CS) Elevation of Privilege Vulnerability

CVE-2026-62810

No

No

-

-

Important

7.8

6.8

CVE-2026-69821

No

No

-

-

Important

7.8

6.8

Active Directory Certificate Services (AD CS) Information Disclosure Vulnerability

CVE-2026-69395

No

No

-

-

Important

6.5

5.7

Active Directory Certificate Services (AD CS) Tampering Vulnerability

CVE-2026-69624

No

No

-

-

Important

6.5

5.7

Active Directory Domain Services Elevation of Privilege Vulnerability

CVE-2026-69359

No

No

-

-

Important

7.8

6.8

Active Directory Federation Services (AD FS) Denial of Service Vulnerability

CVE-2026-72978

No

No

-

-

Important

5.9

5.2

Audio Video Control Transport Protocol Elevation of Privilege Vulnerability

CVE-2026-69401

No

No

-

-

Important

7.0

6.1

Azure AI Language Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-70352

No

No

-

-

Critical

10.0

8.7

Azure Arc SQL Server Extension Elevation of Privilege Vulnerability

CVE-2026-62895

No

No

-

-

Important

8.8

7.7

Azure Cosmos DB Spoofing Vulnerability
(no customer action required)

CVE-2026-69857

No

No

-

-

Critical

8.5

7.4

Azure CycleCloud Information Disclosure Vulnerability

CVE-2026-77909

No

No

-

-

Important

7.7

6.7

Azure HDInsight Ambari Elevation of Privilege Vulnerability

CVE-2026-81349

No

No

-

-

Important

7.2

6.5

BranchCache Denial of Service Vulnerability

CVE-2026-69329

No

No

-

-

Important

7.5

6.5

Connected Devices Platform Service (Cdpsvc) Elevation of Privilege Vulnerability

CVE-2026-69516

No

No

-

-

Important

7.0

6.1

Connected User Experiences and Telemetry Elevation of Privilege Vulnerability

CVE-2026-68824

No

No

-

-

Important

7.0

6.1

CVE-2026-68847

No

No

-

-

Important

7.0

6.1

CVE-2026-69470

No

No

-

-

Important

7.0

6.1

CVE-2026-69625

No

No

-

-

Important

8.0

7.0

Copilot Studio Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-80098

No

No

-

-

Critical

9.3

8.1

Data Sharing Service Client Elevation of Privilege Vulnerability

CVE-2026-73014

No

No

-

-

Important

7.8

6.8

DirectWrite Remote Code Execution Vulnerability

CVE-2026-73006

No

No

-

-

Critical

8.8

7.7

CVE-2026-73016

No

No

-

-

Important

8.8

7.7

Entra ID Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-83941

No

No

-

-

Critical

9.9

8.6

GitHub Copilot and Visual Studio Code Information Disclosure Vulnerability

CVE-2026-81380

No

No

-

-

Important

5.3

4.6

CVE-2026-81381

No

No

-

-

Important

6.5

5.7

Graphic Fonts Elevation of Privilege Vulnerability

CVE-2026-69576

No

No

-

-

Important

7.8

6.8

Graphic Fonts Remote Code Execution Vulnerability

CVE-2026-72986

No

No

-

-

Critical

8.8

7.7

CVE-2026-73018

No

No

-

-

Critical

8.8

7.7

Graphics Kernel Remote Code Execution Vulnerability

CVE-2026-73017

No

No

-

-

Critical

7.5

6.5

HEIF Image Extensions Remote Code Execution Vulnerability

CVE-2026-81353

No

No

-

-

Important

7.8

6.8

HEVC Video Extensions Elevation of Privilege Vulnerability

CVE-2026-58600

No

No

-

-

Important

7.8

6.8

HEVC Video Extensions Remote Code Execution Vulnerability

CVE-2026-58599

No

No

-

-

Critical

7.8

6.8

HID Class Driver Elevation of Privilege Vulnerability

CVE-2026-69731

No

No

-

-

Important

7.8

6.8

IP Helper Remote Code Execution Vulnerability

CVE-2026-72981

No

No

-

-

Critical

8.1

7.1

Internet Connection Sharing (ICS) Remote Code Execution Vulnerability

CVE-2026-72983

No

No

-

-

Critical

9.8

8.5

Internet Storage Name Service Information Disclosure Vulnerability

CVE-2026-68895

No

No

-

-

Important

5.5

4.8

Kernel Streaming WOW Thunk Service Driver Elevation of Privilege Vulnerability

CVE-2026-69275

No

No

-

-

Important

7.0

6.1

CVE-2026-69900

No

No

-

-

Important

7.8

6.8

Microsoft Account Elevation of Privilege Vulnerability

CVE-2026-68850

No

No

-

-

Important

7.8

6.8

Microsoft Account Information Disclosure Vulnerability

CVE-2026-68852

No

No

-

-

Important

5.5

4.8

Microsoft Authentication Library (MSAL) for Node.js Spoofing Vulnerability

CVE-2026-84003

No

No

-

-

Important

7.4

6.4

Microsoft Authenticator Elevation of Privilege Vulnerability

CVE-2026-80097

No

No

-

-

Important

8.6

7.5

Microsoft Azure Active Directory B2C Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-83711

No

No

-

-

Critical

10.0

8.7

Microsoft Azure CLI Remote Code Execution Vulnerability

CVE-2026-83948

No

No

-

-

Important

8.0

7.0

Microsoft COM for Windows Elevation of Privilege Vulnerability

CVE-2026-69299

No

No

-

-

Important

7.0

6.1

Microsoft COM for Windows Information Disclosure Vulnerability

CVE-2026-69294

No

No

-

-

Important

5.5

4.8

Microsoft DirectMusic Remote Code Execution Vulnerability

CVE-2026-69491

No

No

-

-

Important

9.8

8.5

Microsoft Discovery Studio Information Disclosure Vulnerability
(no customer action required)

CVE-2026-62906

No

No

-

-

Critical

7.4

6.4

Microsoft Dynamics 365 On-Premises Remote Code Execution Vulnerability

CVE-2026-65772

No

No

-

-

Critical

8.8

7.7

CVE-2026-77908

No

No

-

-

Important

8.8

7.7

Microsoft Entra ID Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-62916

No

No

-

-

Critical

9.1

7.9

Microsoft Excel Information Disclosure Vulnerability

CVE-2026-81387

No

No

-

-

Important

5.5

4.8

CVE-2026-81390

No

No

-

-

Important

5.5

4.8

CVE-2026-81391

No

No

-

-

Important

5.5

4.8

CVE-2026-81392

No

No

-

-

Important

5.5

4.8

CVE-2026-81393

No

No

-

-

Important

5.5

4.8

CVE-2026-81394

No

No

-

-

Important

5.5

4.8

CVE-2026-81395

No

No

-

-

Important

5.5

4.8

CVE-2026-81399

No

No

-

-

Important

5.5

4.8

CVE-2026-81400

No

No

-

-

Important

5.5

4.8

CVE-2026-81401

No

No

-

-

Important

5.5

4.8

CVE-2026-81958

No

No

-

-

Important

5.5

4.8

Microsoft Excel Remote Code Execution Vulnerability

CVE-2026-81386

No

No

-

-

Important

7.8

6.8

CVE-2026-81388

No

No

-

-

Important

7.8

6.8

CVE-2026-81389

No

No

-

-

Important

7.0

6.1

CVE-2026-81396

No

No

-

-

Important

7.8

6.8

CVE-2026-81397

No

No

-

-

Important

7.8

6.8

CVE-2026-81398

No

No

-

-

Important

7.8

6.8

CVE-2026-81947

No

No

-

-

Important

7.8

6.8

CVE-2026-81948

No

No

-

-

Critical

7.8

6.8

CVE-2026-81949

No

No

-

-

Critical

7.8

6.8

CVE-2026-81950

No

No

-

-

Critical

7.8

6.8

CVE-2026-81951

No

No

-

-

Critical

7.8

6.8

CVE-2026-81953

No

No

-

-

Critical

7.8

6.8

CVE-2026-81954

No

No

-

-

Important

7.8

6.8

CVE-2026-81956

No

No

-

-

Important

7.8

6.8

CVE-2026-81957

No

No

-

-

Important

7.8

6.8

CVE-2026-81959

No

No

-

-

Critical

7.8

6.8

CVE-2026-81960

No

No

-

-

Important

7.8

6.8

Microsoft Exchange Server Denial of Service Vulnerability

CVE-2026-69378

No

No

-

-

Important

7.5

6.5

Microsoft Exchange Server Elevation of Privilege Vulnerability

CVE-2026-69380

No

No

-

-

Important

8.1

7.1

CVE-2026-69641

No

No

-

-

Important

9.1

7.9

Microsoft Exchange Server Information Disclosure Vulnerability

CVE-2026-69382

No

No

-

-

Important

5.9

5.2

Microsoft Exchange Server Remote Code Execution Vulnerability

CVE-2026-55007

No

No

-

-

Important

8.1

7.1

CVE-2026-69355

No

No

-

-

Important

8.8

7.7

Microsoft Exchange Server Spoofing Vulnerability

CVE-2026-69356

No

No

-

-

Important

9.3

8.1

CVE-2026-69361

No

No

-

-

Important

6.5

5.7

Microsoft Exchange Server Tampering Vulnerability

CVE-2026-69375

No

No

-

-

Important

6.5

5.7

Microsoft Fabric Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-70178

No

No

-

-

Critical

8.5

7.4

Microsoft Failover Cluster Remote Code Execution Vulnerability

CVE-2026-73010

No

No

-

-

Critical

9.8

8.5

CVE-2026-78444

No

No

-

-

Critical

8.1

7.1

Microsoft Graphics Component Elevation of Privilege Vulnerability

CVE-2026-69467

No

No

-

-

Important

7.8

6.8

CVE-2026-83990

No

No

-

-

Important

7.8

6.8

Microsoft Graphics Component Remote Code Execution Vulnerability

CVE-2026-84000

No

No

-

-

Important

7.8

6.8

Microsoft Install Service Elevation of Privilege Vulnerability

CVE-2026-69605

No

No

-

-

Important

7.0

6.1

Microsoft JScript Remote Code Execution Vulnerability

CVE-2026-69325

No

No

-

-

Important

8.1

7.1

CVE-2026-69438

No

No

-

-

Important

8.1

7.1

Microsoft Local Security Authority (LSA) Server Elevation of Privilege Vulnerability

CVE-2026-69277

No

No

-

-

Important

7.8

6.8

CVE-2026-69365

No

No

-

-

Important

8.0

7.0

CVE-2026-69594

No

No

-

-

Important

7.8

6.8

Microsoft Office Access Remote Code Execution Vulnerability

CVE-2026-69477

No

No

-

-

Important

7.3

6.4

CVE-2026-69529

No

No

-

-

Important

8.8

7.7

CVE-2026-69614

No

No

-

-

Important

8.8

7.7

CVE-2026-69778

No

No

-

-

Important

8.8

7.7

Microsoft Office Excel Information Disclosure Vulnerability

CVE-2026-72974

No

No

-

-

Important

6.5

5.7

CVE-2026-78515

No

No

-

-

Important

6.5

5.7

CVE-2026-85875

No

No

-

-

Important

5.5

4.8

Microsoft Office Excel Remote Code Execution Vulnerability

CVE-2026-78518

No

No

-

-

Important

8.8

7.7

Microsoft Office Graphics Component Remote Code Execution Vulnerability

CVE-2026-78439

No

No

-

-

Critical

8.8

7.7

Microsoft Office Information Disclosure Vulnerability

CVE-2026-69626

No

No

-

-

Important

6.5

5.7

CVE-2026-69739

No

No

-

-

Important

6.5

5.7

CVE-2026-80076

No

No

-

-

Important

6.5

5.7

CVE-2026-80078

No

No

-

-

Important

6.5

5.7

CVE-2026-80082

No

No

-

-

Important

6.5

5.7

CVE-2026-80087

No

No

-

-

Important

6.5

5.7

CVE-2026-80089

No

No

-

-

Important

6.5

5.7

CVE-2026-80091

No

No

-

-

Important

6.5

5.7

Microsoft Office Outlook Information Disclosure Vulnerability

CVE-2026-78520

No

No

-

-

Critical

6.5

5.7

CVE-2026-80073

No

No

-

-

Important

   

CVE-2026-80084

No

No

-

-

Important

6.5

5.7

Microsoft Office Outlook Remote Code Execution Vulnerability

CVE-2026-69629

No

No

-

-

Important

8.8

7.7

CVE-2026-78509

No

No

-

-

Critical

9.8

8.5

CVE-2026-78519

No

No

-

-

Critical

   

CVE-2026-78525

No

No

-

-

Critical

8.8

7.7

Microsoft Office PowerPoint Information Disclosure Vulnerability

CVE-2026-72938

No

No

-

-

Important

6.5

5.7

CVE-2026-72956

No

No

-

-

Important

6.5

5.7

CVE-2026-72975

No

No

-

-

Important

6.5

5.7

CVE-2026-72977

No

No

-

-

Important

6.5

5.7

CVE-2026-78513

No

No

-

-

Important

5.5

4.8

CVE-2026-80086

No

No

-

-

Important

6.5

5.7

Microsoft Office PowerPoint Remote Code Execution Vulnerability

CVE-2026-69678

No

No

-

-

Critical

8.8

7.7

CVE-2026-69767

No

No

-

-

Critical

8.8

7.7

CVE-2026-69797

No

No

-

-

Critical

8.8

7.7

CVE-2026-80081

No

No

-

-

Important

   

Microsoft Office Publisher Remote Code Execution Vulnerability

CVE-2026-69742

No

No

-

-

Important

8.8

7.7

CVE-2026-81385

No

No

-

-

Important

8.8

7.7

Microsoft Office Remote Code Execution Vulnerability

CVE-2026-69285

No

No

-

-

Critical

8.8

7.7

CVE-2026-69442

No

No

-

-

Important

8.8

7.7

CVE-2026-69632

No

No

-

-

Critical

8.8

7.7

CVE-2026-77898

No

No

-

-

Critical

7.5

6.5

CVE-2026-78505

No

No

-

-

Critical

8.8

7.7

CVE-2026-78524

No

No

-

-

Important

8.8

7.7

Microsoft Office SharePoint Elevation of Privilege Vulnerability

CVE-2026-69464

No

No

-

-

Important

8.8

7.7

CVE-2026-69716

No

No

-

-

Important

8.8

7.7

Microsoft Office SharePoint Information Disclosure Vulnerability

CVE-2026-69409

No

No

-

-

Important

6.5

5.7

CVE-2026-69636

No

No

-

-

Important

6.5

5.7

CVE-2026-69683

No

No

-

-

Important

6.5

5.7

CVE-2026-69904

No

No

-

-

Important

3.5

3.1

Microsoft Office SharePoint Remote Code Execution Vulnerability

CVE-2026-69268

No

No

-

-

Important

8.8

7.7

CVE-2026-69273

No

No

-

-

Important

8.8

7.7

CVE-2026-69282

No

No

-

-

Important

8.8

7.7

CVE-2026-69465

No

No

-

-

Important

8.8

7.7

CVE-2026-69724

No

No

-

-

Important

8.8

7.7

CVE-2026-69804

No

No

-

-

Important

7.5

6.5

Microsoft Office SharePoint Spoofing Vulnerability

CVE-2026-69402

No

No

-

-

Important

7.3

6.4

CVE-2026-69417

No

No

-

-

Important

7.3

6.4

CVE-2026-69615

No

No

-

-

Important

3.5

3.1

CVE-2026-69690

No

No

-

-

Important

4.6

4.0

Microsoft Office Spoofing Vulnerability

CVE-2026-64918

No

No

-

-

Important

6.5

5.7

Microsoft Office Word Information Disclosure Vulnerability

CVE-2026-68843

No

No

-

-

Important

5.5

4.8

CVE-2026-69719

No

No

-

-

Important

6.5

5.7

CVE-2026-69734

No

No

-

-

Important

6.5

5.7

CVE-2026-72976

No

No

-

-

Important

5.0

4.4

CVE-2026-77911

No

No

-

-

Important

6.5

5.7

CVE-2026-78502

No

No

-

-

Important

6.5

5.7

CVE-2026-78503

No

No

-

-

Important

6.5

5.7

CVE-2026-78506

No

No

-

-

Important

5.5

4.8

CVE-2026-78522

No

No

-

-

Important

   

CVE-2026-80079

No

No

-

-

Important

   

CVE-2026-80088

No

No

-

-

Important

6.5

5.7

CVE-2026-80090

No

No

-

-

Important

6.5

5.7

CVE-2026-83949

No

No

-

-

Important

5.5

4.8

CVE-2026-83951

No

No

-

-

Important

5.5

4.8

Microsoft Office Word Remote Code Execution Vulnerability

CVE-2026-69360

No

No

-

-

Important

8.8

7.7

CVE-2026-69556

No

No

-

-

Important

8.8

7.7

CVE-2026-69671

No

No

-

-

Important

8.8

7.7

CVE-2026-69686

No

No

-

-

Important

8.8

7.7

CVE-2026-69722

No

No

-

-

Important

8.8

7.7

CVE-2026-69759

No

No

-

-

Important

8.8

7.7

CVE-2026-69764

No

No

-

-

Important

8.8

7.7

CVE-2026-72972

No

No

-

-

Important

8.8

7.7

CVE-2026-72973

No

No

-

-

Important

8.8

7.7

CVE-2026-77504

No

No

-

-

Critical

8.8

7.7

CVE-2026-77901

No

No

-

-

Important

8.8

7.7

CVE-2026-78504

No

No

-

-

Important

8.8

7.7

CVE-2026-78507

No

No

-

-

Important

8.8

7.7

CVE-2026-78511

No

No

-

-

Important

8.8

7.7

CVE-2026-78512

No

No

-

-

Important

8.8

7.7

CVE-2026-78514

No

No

-

-

Important

8.8

7.7

CVE-2026-78517

No

No

-

-

Important

8.8

7.7

CVE-2026-78521

No

No

-

-

Important

8.8

7.7

CVE-2026-78526

No

No

-

-

Important

8.8

7.7

CVE-2026-80080

No

No

-

-

Important

8.8

7.7

CVE-2026-80085

No

No

-

-

Important

8.8

7.7

Microsoft OpenSSH for Windows Remote Code Execution Vulnerability

CVE-2026-69397

No

No

-

-

Important

7.5

6.5

Microsoft Power Automate Desktop Elevation of Privilege Vulnerability

CVE-2026-77897

No

No

-

-

Important

7.0

6.1

Microsoft PowerShell Security Feature Bypass Vulnerability

CVE-2026-62801

No

No

-

-

Important

6.5

5.7

Microsoft Remote Desktop App for Windows Information Disclosure Vulnerability

CVE-2026-57098

No

No

-

-

Important

7.5

6.5

Microsoft SQL Server Denial of Service Vulnerability

CVE-2026-67376

No

No

-

-

Important

7.5

6.5

CVE-2026-67633

No

No

-

-

Important

6.5

5.7

CVE-2026-67641

No

No

-

-

Important

6.5

5.7

Microsoft SQL Server Elevation of Privilege Vulnerability

CVE-2026-65669

No

No

-

-

Critical

9.6

8.3

CVE-2026-66814

No

No

-

-

Important

8.8

7.7

CVE-2026-66818

No

No

-

-

Important

8.8

7.7

CVE-2026-66819

No

No

-

-

Important

8.8

7.7

CVE-2026-67368

No

No

-

-

Important

8.8

7.7

CVE-2026-67370

No

No

-

-

Important

8.8

7.7

CVE-2026-67381

No

No

-

-

Important

8.8

7.7

Microsoft SQL Server Information Disclosure Vulnerability

CVE-2026-67369

No

No

-

-

Important

6.5

5.7

CVE-2026-67383

No

No

-

-

Important

6.5

5.7

CVE-2026-67386

No

No

-

-

Important

6.5

5.7

CVE-2026-67389

No

No

-

-

Important

6.5

5.7

CVE-2026-67390

No

No

-

-

Important

6.5

5.7

CVE-2026-67393

No

No

-

-

Important

6.5

5.7

CVE-2026-67624

No

No

-

-

Important

6.5

5.7

CVE-2026-67629

No

No

-

-

Important

6.5

5.7

CVE-2026-67630

No

No

-

-

Important

6.5

5.7

CVE-2026-67645

No

No

-

-

Important

6.5

5.7

CVE-2026-67648

No

No

-

-

Important

6.5

5.7

CVE-2026-68776

No

No

-

-

Important

6.5

5.7

CVE-2026-68777

No

No

-

-

Important

6.5

5.7

CVE-2026-68778

No

No

-

-

Important

6.5

5.7

CVE-2026-68779

No

No

-

-

Important

6.5

5.7

CVE-2026-68780

No

No

-

-

Important

6.5

5.7

CVE-2026-68781

No

No

-

-

Important

6.5

5.7

CVE-2026-68784

No

No

-

-

Important

6.5

5.7

CVE-2026-69562

No

No

-

-

Important

6.5

5.7

CVE-2026-73029

No

No

-

-

Important

6.5

5.7

CVE-2026-77488

No

No

-

-

Important

5.5

4.8

Microsoft SQL Server Remote Code Execution Vulnerability

CVE-2026-47297

No

No

-

-

Important

8.1

7.1

CVE-2026-67373

No

No

-

-

Important

8.8

7.7

CVE-2026-67378

No

No

-

-

Critical

8.5

7.4

CVE-2026-67379

No

No

-

-

Important

8.5

7.4

CVE-2026-67380

No

No

-

-

Important

8.8

7.7

CVE-2026-67384

No

No

-

-

Important

8.8

7.7

CVE-2026-67385

No

No

-

-

Important

8.8

7.7

CVE-2026-67388

No

No

-

-

Important

8.8

7.7

CVE-2026-67631

No

No

-

-

Critical

8.8

7.7

CVE-2026-67636

No

No

-

-

Critical

8.5

7.4

CVE-2026-67638

No

No

-

-

Important

8.8

7.7

CVE-2026-67639

No

No

-

-

Important

8.8

7.7

CVE-2026-67642

No

No

-

-

Important

8.8

7.7

CVE-2026-67643

No

No

-

-

Critical

8.8

7.7

CVE-2026-68775

No

No

-

-

Important

8.8

7.7

CVE-2026-68785

No

No

-

-

Important

4.9

4.3

CVE-2026-68786

No

No

-

-

Important

8.8

7.7

CVE-2026-68787

No

No

-

-

Important

7.8

6.8

CVE-2026-77481

No

No

-

-

Important

8.8

7.7

CVE-2026-77482

No

No

-

-

Important

8.8

7.7

CVE-2026-77484

No

No

-

-

Important

8.8

7.7

CVE-2026-77486

No

No

-

-

Important

8.8

7.7

Microsoft SQL Server Security Feature Bypass Vulnerability

CVE-2026-66816

No

No

-

-

Important

6.5

5.7

Microsoft Standard XPS Elevation of Privilege Vulnerability

CVE-2026-68885

No

No

-

-

Important

7.8

6.8

CVE-2026-68888

No

No

-

-

Important

7.8

6.8

CVE-2026-68889

No

No

-

-

Important

7.1

6.2

CVE-2026-68890

No

No

-

-

Important

7.8

6.8

CVE-2026-68892

No

No

-

-

Important

7.8

6.8

CVE-2026-68897

No

No

-

-

Important

7.0

6.1

CVE-2026-69269

No

No

-

-

Important

7.8

6.8

CVE-2026-69271

No

No

-

-

Important

8.0

7.0

CVE-2026-69272

No

No

-

-

Important

7.1

6.2

CVE-2026-69313

No

No

-

-

Important

7.1

6.2

CVE-2026-69336

No

No

-

-

Important

7.1

6.2

Microsoft Standard XPS Information Disclosure Vulnerability

CVE-2026-68881

No

No

-

-

Important

5.5

4.8

CVE-2026-68891

No

No

-

-

Important

4.7

4.1

CVE-2026-69308

No

No

-

-

Important

5.5

4.8

CVE-2026-69345

No

No

-

-

Important

5.5

4.8

CVE-2026-69367

No

No

-

-

Important

5.5

4.8

CVE-2026-69376

No

No

-

-

Important

5.5

4.8

Microsoft Standard XPS Remote Code Execution Vulnerability

CVE-2026-69824

No

No

-

-

Important

9.8

8.5

Microsoft Storage Port Driver Elevation of Privilege Vulnerability

CVE-2026-72946

No

No

-

-

Important

7.8

6.8

Microsoft Teams for Android Information Disclosure Vulnerability

CVE-2026-65812

No

No

-

-

Important

6.8

5.9

CVE-2026-69559

No

No

-

-

Important

5.8

5.1

Microsoft Trace Data Helper Elevation of Privilege Vulnerability

CVE-2026-56198

No

No

-

-

Important

7.8

6.8

Microsoft UxTheme Library (uxtheme.dll) Remote Code Execution Vulnerability

CVE-2026-69276

No

No

-

-

Important

9.8

8.5

Microsoft VOLSNAP.SYS Elevation of Privilege Vulnerability

CVE-2026-69420

No

No

-

-

Important

7.8

6.8

CVE-2026-69427

No

No

-

-

Important

8.0

7.0

Microsoft WDAC OLE DB provider for SQL Remote Code Execution Vulnerability

CVE-2026-72933

No

No

-

-

Important

8.8

7.7

Microsoft WebP Image Extension Remote Code Execution Vulnerability

CVE-2026-70351

No

No

-

-

Critical

8.8

7.7

Microsoft Windows Media Foundation Remote Code Execution Vulnerability

CVE-2026-62706

No

No

-

-

Important

8.8

7.7

CVE-2026-62744

No

No

-

-

Important

8.8

7.7

CVE-2026-69386

No

No

-

-

Important

8.8

7.7

CVE-2026-69408

No

No

-

-

Important

9.8

8.5

CVE-2026-69511

No

No

-

-

Important

8.8

7.7

CVE-2026-69601

No

No

-

-

Critical

8.8

7.7

Microsoft Windows PDF Remote Code Execution Vulnerability

CVE-2026-69586

No

No

-

-

Important

9.8

8.5

Microsoft Windows SCSI Class System File Elevation of Privilege Vulnerability

CVE-2026-78451

No

No

-

-

Important

6.8

5.9

Microsoft Windows SCSI Class System File Information Disclosure Vulnerability

CVE-2026-78452

No

No

-

-

Important

4.6

4.0

CVE-2026-78453

No

No

-

-

Important

6.5

5.7

Microsoft Windows Search Component Elevation of Privilege Vulnerability

CVE-2026-68896

No

No

-

-

Important

7.8

6.8

CVE-2026-69305

No

No

-

-

Important

7.1

6.2

CVE-2026-69322

No

No

-

-

Important

8.0

7.0

CVE-2026-69585

No

No

-

-

Important

7.8

6.8

CVE-2026-69600

No

No

-

-

Important

7.0

6.1

CVE-2026-69608

No

No

-

-

Important

7.8

6.8

CVE-2026-69911

No

No

-

-

Important

7.0

6.1

Microsoft Windows Search Component Information Disclosure Vulnerability

CVE-2026-69507

No

No

-

-

Important

5.7

5.0

CVE-2026-70145

No

No

-

-

Important

5.5

4.8

Microsoft Windows Search Component Tampering Vulnerability

CVE-2026-69453

No

No

-

-

Important

5.5

4.8

CVE-2026-69554

No

No

-

-

Important

5.5

4.8

Microsoft Windows Speech Elevation of Privilege Vulnerability

CVE-2026-69444

No

No

-

-

Important

7.8

6.8

CVE-2026-69456

No

No

-

-

Important

7.8

6.8

Microsoft Windows Speech Tampering Vulnerability

CVE-2026-69531

No

No

-

-

Important

5.5

4.8

Microsoft Word Remote Code Execution Vulnerability

CVE-2026-62804

No

No

-

-

Important

7.8

6.8

CVE-2026-78510

No

No

-

-

Critical

9.8

8.5

CVE-2026-81952

No

No

-

-

Critical

8.8

7.7

Power Automate Elevation of Privilege Vulnerability
(no customer action required)

CVE-2026-65818

No

No

-

-

Critical

8.5

7.4

PowerShell Elevation of Privilege Vulnerability

CVE-2026-69807

No

No

-

-

Important

8.0

7.0

Push Message Routing Service Information Disclosure Vulnerability

CVE-2026-69303

No

No

-

-

Important

5.5

4.8

RPC Runtime Library Remote Code Execution Vulnerability

CVE-2026-69819

No

No

-

-

Important

9.8

8.5

Raw Image Extension Remote Code Execution Vulnerability

CVE-2026-69649

No

No

-

-

Critical

8.8

7.7

Remote Desktop Client Remote Code Execution Vulnerability

CVE-2026-68828

No

No

-

-

Important

8.8

7.7

CVE-2026-69358

No

No

-

-

Important

7.1

6.2

CVE-2026-69485

No

No

-

-

Important

8.8

7.7

CVE-2026-78463

No

No

-

-

Important

8.8

7.7

CVE-2026-80074

No

No

-

-

Important

8.8

7.7

CVE-2026-80077

No

No

-

-

Important

8.8

7.7

CVE-2026-83998

No

No

-

-

Important

8.8

7.7

Remote Desktop Gateway Service Elevation of Privilege Vulnerability

CVE-2026-69292

No

No

-

-

Important

7.0

6.1

CVE-2026-69338

No

No

-

-

Important

7.1

6.2

Remote Desktop Licensing Service Elevation of Privilege Vulnerability

CVE-2026-68893

No

No

-

-

Important

7.1

6.2

Remote Desktop ServicesRemote Code Execution Vulnerability

CVE-2026-69514

No

No

-

-

Important

7.5

6.5

CVE-2026-69525

No

No

-

-

Important

9.8

8.5

CVE-2026-69536

No

No

-

-

Important

7.1

6.2

CVE-2026-69539

No

No

-

-

Important

7.5

6.5

CVE-2026-69599

No

No

-

-

Important

7.5

6.5

Role: Windows Fax Service Elevation of Privilege Vulnerability

CVE-2026-69509

No

No

-

-

Important

7.8

6.8

CVE-2026-69621

No

No

-

-

Important

7.0

6.1

CVE-2026-72944

No

No

-

-

Important

7.8

6.8

SQL Server Elevation of Privilege Vulnerability

CVE-2026-66820

No

No

-

-

Important

8.8

7.7

CVE-2026-73028

No

No

-

-

Important

8.8

7.7

CVE-2026-77480

No

No

-

-

Important

8.8

7.7

CVE-2026-77483

No

No

-

-

Important

8.8

7.7

CVE-2026-77485

No

No

-

-

Important

7.0

6.1

CVE-2026-77487

No

No

-

-

Important

8.8

7.7

SQL Server Remote Code Execution Vulnerability

CVE-2026-78456

No

No

-

-

Important

8.8

7.7

Skype for Business Information Disclosure Vulnerability

CVE-2026-66304

No

No

-

-

Important

7.5

6.5

CVE-2026-66306

No

No

-

-

Important

6.5

5.7

Skype for Business Remote Code Execution Vulnerability

CVE-2026-66302

No

No

-

-

Critical

9.8

8.5

Skype for Business Spoofing Vulnerability

CVE-2026-63523

No

No

-

-

Important

6.5

5.7

CVE-2026-66305

No

No

-

-

Important

7.1

6.2

CVE-2026-69642

No

No

-

-

Important

6.5

5.7

CVE-2026-69646

No

No

-

-

Important

8.3

7.2

Skype for Business and Lync Denial of Service Vulnerability

CVE-2026-66303

No

No

-

-

Important

6.5

5.7

CVE-2026-66307

No

No

-

-

Important

7.5

6.5

CVE-2026-66308

No

No

-

-

Important

6.5

5.7

Spring Cloud Azure Elevation of Privilege Vulnerability

CVE-2026-69854

No

No

-

-

Critical

9.0

7.8

Storage Spaces Controller Information Disclosure Vulnerability

CVE-2026-69568

No

No

-

-

Important

5.5

4.8

Telnet Client Remote Code Execution Vulnerability

CVE-2026-69431

No

No

-

-

Important

9.8

8.5

Virtual Hard Disk (VHD) Miniport Driver Denial of Service Vulnerability

CVE-2026-69384

No

No

-

-

Important

7.1

6.2

Virtual Hard Disk (VHD) Miniport Driver Elevation of Privilege Vulernability

CVE-2026-69541

No

No

-

-

Important

7.8

6.8

CVE-2026-69549

No

No

-

-

Important

7.0

6.1

CVE-2026-69611

No

No

-

-

Important

7.0

6.1

CVE-2026-69681

No

No

-

-

Important

8.0

7.0

CVE-2026-70574

No

No

-

-

Important

7.8

6.8

Virtual Hard Disk (VHD) Miniport Driver Remote Code Execution Vulnerability

CVE-2026-81355

No

No

-

-

Critical

7.5

6.5

Visual Studio Code Information Disclosure Vulnerability

CVE-2026-81383

No

No

-

-

Important

7.4

6.4

Visual Studio Code Security Feature Bypass Vulnerability

CVE-2026-70334

No

No

-

-

Important

7.8

6.8

CVE-2026-78461

No

No

-

-

Important

7.4

6.4

CVE-2026-78462

No

No

-

-

Important

8.8

7.7

CVE-2026-81356

No

No

-

-

Important

8.2

7.1

CVE-2026-81357

No

No

-

-

Important

8.2

7.1

CVE-2026-81376

No

No

-

-

Important

9.6

8.3

CVE-2026-81378

No

No

-

-

Important

8.2

7.1

CVE-2026-81379

No

No

-

-

Important

8.2

7.1

Visual Studio Code Tampering Vulnerability

CVE-2026-81377

No

No

-

-

Important

6.5

5.7

Visual Studio Remote Code Execution Vulnerability

CVE-2026-77906

No

No

-

-

Important

8.8

7.7

CVE-2026-77907

No

No

-

-

Important

8.8

7.7

Volume Manager Driver Elevation of Privilege Vulnerability

CVE-2026-69407

No

No

-

-

Important

7.8

6.8

CVE-2026-69418

No

No

-

-

Important

8.0

7.0

CVE-2026-69432

No

No

-

-

Important

7.8

6.8

Volume Shadow Copy Elevation of Privilege Vulnerability

CVE-2026-72985

No

No

-

-

Important

6.8

5.9

Web Media Extensions Remote Code Execution Vulnerability

CVE-2026-81352

No

No

-

-

Critical

8.8

7.7

Win32k Information Disclosure Vulnerability

CVE-2026-69609

No

No

-

-

Important

5.5

4.8

CVE-2026-69808

No

No

-

-

Important

5.5

4.8

CVE-2026-69832

No

No

-

-

Important

5.6

4.9

CVE-2026-69853

No

No

-

-

Important

4.7

4.1

CVE-2026-70290

No

No

-

-

Important

5.5

4.8

Windows AF_UNIX Socket Provider Elevation of Privilege Vulnerability

CVE-2026-70565

No

No

-

-

Important

7.0

6.1

Windows ALPC Elevation of Privilege Vulnerability

CVE-2026-69834

No

No

-

-

Important

7.0

6.1

CVE-2026-69874

No

No

-

-

Critical

8.2

7.1

Windows Accounts Control Elevation of Privilege Vulnerability

CVE-2026-69654

No

No

-

-

Important

7.0

6.1

CVE-2026-69816

No

No

-

-

Important

7.0

6.1

Windows Active Directory Domain Services Denial of Service Vulnerability

CVE-2026-62762

No

No

-

-

Important

6.5

5.7

CVE-2026-69809

No

No

-

-

Important

7.5

6.5

Windows Active Directory Domain Services Remote Code Execution Vulnerability

CVE-2026-62813

No

No

-

-

Important

7.5

6.5

CVE-2026-69524

No

No

-

-

Important

8.1

7.1

CVE-2026-69546

No

No

-

-

Important

8.1

7.1

Windows Advanced Local Procedure Call (ALPC) Elevation of Privilege Vulnerability

CVE-2026-85880

No

Yes

-

-

Important

7.8

6.8

Windows Ancillary Function Driver for WinSock Elevation of Privilege Vulnerability

CVE-2026-50349

No

No

-

-

Important

7.0

6.1

CVE-2026-70342

No

No

-

-

Important

8.1

7.1

Windows Audio Service Elevation of Privilege Vulnerability

CVE-2026-69311

No

No

-

-

Important

7.0

6.1

CVE-2026-69394

No

No

-

-

Important

7.0

6.1

CVE-2026-69447

No

No

-

-

Important

7.8

6.8

CVE-2026-69540

No

No

-

-

Important

7.0

6.1

CVE-2026-69604

No

No

-

-

Important

7.8

6.8

CVE-2026-69692

No

No

-

-

Important

7.0

6.1

CVE-2026-69801

No

No

-

-

Important

7.8

6.8

CVE-2026-70562

No

No

-

-

Important

7.0

6.1

Windows Authentication Methods Elevation of Privilege Vulnerability

CVE-2026-73005

No

No

-

-

Important

7.0

6.1

Windows Autopilot Tampering Vulnerability

CVE-2026-73004

No

No

-

-

Important

5.5

4.8

Windows Bind Filter Driver Elevation of Privilege Vulnerability

CVE-2026-68825

No

No

-

-

Important

7.0

6.1

Windows Biometric Service Elevation of Privilege Vulnerability

CVE-2026-69293

No

No

-

-

Important

7.8

6.8

CVE-2026-69298

No

No

-

-

Important

7.8

6.8

CVE-2026-69323

No

No

-

-

Important

7.8

6.8

CVE-2026-69352

No

No

-

-

Important

7.8

6.8

CVE-2026-69476

No

No

-

-

Important

7.8

6.8

CVE-2026-69489

No

No

-

-

Important

7.8

6.8

CVE-2026-69580

No

No

-

-

Important

7.8

6.8

CVE-2026-69583

No

No

-

-

Important

7.8

6.8

CVE-2026-69589

No

No

-

-

Important

7.8

6.8

CVE-2026-69593

No

No

-

-

Important

7.8

6.8

CVE-2026-69727

No

No

-

-

Important

8.0

7.0

CVE-2026-69738

No

No

-

-

Important

7.8

6.8

CVE-2026-69773

No

No

-

-

Important

8.0

7.0

CVE-2026-69787

No

No

-

-

Important

7.8

6.8

CVE-2026-69826

No

No

-

-

Important

8.0

7.0

CVE-2026-70572

No

No

-

-

Important

7.8

6.8

CVE-2026-70573

No

No

-

-

Important

7.0

6.1

CVE-2026-70581

No

No

-

-

Important

7.8

6.8

CVE-2026-72941

No

No

-

-

Important

7.8

6.8

CVE-2026-72988

No

No

-

-

Important

7.8

6.8

CVE-2026-72990

No

No

-

-

Important

7.8

6.8

CVE-2026-72991

No

No

-

-

Important

7.8

6.8

CVE-2026-72992

No

No

-

-

Important

7.8

6.8

CVE-2026-72993

No

No

-

-

Important

7.8

6.8

CVE-2026-72994

No

No

-

-

Important

7.8

6.8

CVE-2026-72995

No

No

-

-

Important

7.8

6.8

CVE-2026-72996

No

No

-

-

Important

7.8

6.8

CVE-2026-72997

No

No

-

-

Important

7.8

6.8

CVE-2026-73000

No

No

-

-

Important

7.8

6.8

CVE-2026-73001

No

No

-

-

Important

7.8

6.8

CVE-2026-73002

No

No

-

-

Important

7.8

6.8

CVE-2026-73007

No

No

-

-

Important

7.8

6.8

CVE-2026-73011

No

No

-

-

Important

7.8

6.8

CVE-2026-73015

No

No

-

-

Important

7.8

6.8

CVE-2026-73020

No

No

-

-

Important

7.8

6.8

CVE-2026-73021

No

No

-

-

Important

7.8

6.8

CVE-2026-73026

No

No

-

-

Important

7.8

6.8

CVE-2026-77489

No

No

-

-

Important

7.8

6.8

CVE-2026-78447

No

No

-

-

Important

7.8

6.8

CVE-2026-78448

No

No

-

-

Important

7.8

6.8

CVE-2026-83954

No

No

-

-

Important

7.8

6.8

CVE-2026-83955

No

No

-

-

Important

7.8

6.8

CVE-2026-83967

No

No

-

-

Important

7.8

6.8

CVE-2026-83968

No

No

-

-

Important

7.8

6.8

CVE-2026-83969

No

No

-

-

Important

7.8

6.8

CVE-2026-83970

No

No

-

-

Important

7.8

6.8

CVE-2026-83971

No

No

-

-

Important

7.8

6.8

CVE-2026-83972

No

No

-

-

Important

7.8

6.8

CVE-2026-83973

No

No

-

-

Important

7.8

6.8

CVE-2026-83974

No

No

-

-

Important

7.8

6.8

CVE-2026-83975

No

No

-

-

Important

7.8

6.8

CVE-2026-83976

No

No

-

-

Important

7.8

6.8

CVE-2026-83977

No

No

-

-

Important

7.8

6.8

CVE-2026-83978

No

No

-

-

Important

7.8

6.8

CVE-2026-83979

No

No

-

-

Important

7.8

6.8

CVE-2026-83980

No

No

-

-

Important

7.8

6.8

CVE-2026-83981

No

No

-

-

Important

7.8

6.8

CVE-2026-83982

No

No

-

-

Important

7.8

6.8

CVE-2026-83983

No

No

-

-

Important

7.8

6.8

CVE-2026-83985

No

No

-

-

Important

7.8

6.8

CVE-2026-83986

No

No

-

-

Important

7.8

6.8

CVE-2026-83987

No

No

-

-

Important

7.8

6.8

CVE-2026-83988

No

No

-

-

Important

7.8

6.8

Windows Biometric Service Information Disclosure Vulnerability

CVE-2026-73008

No

No

-

-

Important

5.5

4.8

Windows BitLocker Elevation of Privilege Vulnerability

CVE-2026-69458

No

No

-

-

Important

8.0

7.0

Windows BitLocker Remote Code Execution Vulnerability

CVE-2026-69449

No

No

-

-

Important

6.7

5.8

Windows Bluetooth Port Driver Elevation of Privilege Vulnerability

CVE-2026-69817

No

No

-

-

Important

7.0

6.1

Windows Bluetooth Port Driver Information Disclosure Vulnerability

CVE-2026-68849

No

No

-

-

Important

4.7

4.1

Windows Bluetooth Service Elevation of Privilege Vulnerability

CVE-2026-69388

No

No

-

-

Important

7.0

6.1

CVE-2026-69398

No

No

-

-

Important

7.0

6.1

CVE-2026-69448

No

No

-

-

Important

7.0

6.1

CVE-2026-69889

No

No

-

-

Important

7.0

6.1

Windows Boot Manager Elevation of Privilege Vulnerability

CVE-2026-77892

No

No

-

-

Important

6.8

5.9

Windows Broadcast DVR User Service Elevation of Privilege Vulnerability

CVE-2026-69735

No

No

-

-

Important

7.0

6.1

Windows Broker Infrastructure Service Elevation of Privilege Vulnerability

CVE-2026-69391

No

No

-

-

Important

7.8

6.8

Windows CD-ROM Driver Elevation of Privilege Vulnerability

CVE-2026-69283

No

No

-

-

Important

7.8

6.8

CVE-2026-69561

No

No

-

-

Important

7.8

6.8

Windows CD-ROM Driver Information Disclosure Vulnerability

CVE-2026-78454

No

No

-

-

Important

5.5

4.8

CVE-2026-78508

No

No

-

-

Important

4.6

4.0

Windows Camera Frame Server Monitor Elevation of Privilege Vulnerability

CVE-2026-69542

No

No

-

-

Important

7.8

6.8

Windows Cloud Files Mini Filter Driver Elevation of Privilege Vulnerability

CVE-2026-69279

No

No

-

-

Important

7.0

6.1

CVE-2026-80093

No

No

-

-

Important

7.0

6.1

Windows Cloud Files Mini Filter Driver Tampering Vulnerability

CVE-2026-83991

No

No

-

-

Important

5.5

4.8

Windows Compressed Folder Elevation of Privilege Vulnerability

CVE-2026-69445

No

No

-

-

Important

7.8

6.8

Windows Compressed Folder Information Disclosure Vulnerability

CVE-2026-70019

No

No

-

-

Important

6.5

5.7

Windows Compressed Folder Remote Code Execution Vulnerability

CVE-2026-69496

No

No

-

-

Important

9.8

8.5

Windows Connected User Experiences and Telemetry Information Disclosure Vulnerability

CVE-2026-69267

No

No

-

-

Important

6.5

5.7

Windows Container Manager Service Security Feature Bypass Vulnerability

CVE-2026-69771

No

No

-

-

Important

4.7

4.1

Windows Core Messaging Elevation of Privilege Vulnerability

CVE-2026-70583

No

No

-

-

Important

7.8

6.8

CVE-2026-70584

No

No

-

-

Important

7.8

6.8

Windows Credential Guard Elevation of Privilege Vulnerability

CVE-2026-70578

No

No

-

-

Important

7.0

6.1

CVE-2026-72958

No

No

-

-

Critical

8.2

7.1

Windows Credential Providers Elevation of Privilege Vulnerability

CVE-2026-69790

No

No

-

-

Important

7.8

6.8

CVE-2026-69814

No

No

-

-

Important

7.0

6.1

Windows Credential Providers Remote Code Execution Vulnerability

CVE-2026-69729

No

No

-

-

Important

8.8

7.7

Windows DCOM Server Elevation of Privilege Vulnerability

CVE-2026-69284

No

No

-

-

Important

7.8

6.8

Windows DHCP Client Denial of Service Vulnerability

CVE-2026-69781

No

No

-

-

Important

6.5

5.7

Windows DHCP Client Elevation of Privilege Vulnerability

CVE-2026-69777

No

No

-

-

Important

8.0

7.0

Windows DHCP Server Denial of Service Vulnerability

CVE-2026-69342

No

No

-

-

Important

7.5

6.5

CVE-2026-69405

No

No

-

-

Important

5.7

5.0

CVE-2026-69416

No

No

-

-

Important

5.7

5.0

CVE-2026-69497

No

No

-

-

Important

6.5

5.7

CVE-2026-69637

No

No

-

-

Important

5.7

5.0

CVE-2026-69679

No

No

-

-

Important

5.7

5.0

CVE-2026-70065

No

No

-

-

Important

7.5

6.5

CVE-2026-77494

No

No

-

-

Important

7.5

6.5

CVE-2026-77498

No

No

-

-

Important

7.5

6.5

CVE-2026-77499

No

No

-

-

Important

7.5

6.5

CVE-2026-77501

No

No

-

-

Important

7.5

6.5

CVE-2026-77502

No

No

-

-

Important

7.5

6.5

CVE-2026-77886

No

No

-

-

Important

7.5

6.5

CVE-2026-77888

No

No

-

-

Important

7.5

6.5

CVE-2026-77889

No

No

-

-

Important

7.5

6.5

CVE-2026-77890

No

No

-

-

Important

7.5

6.5

CVE-2026-77893

No

No

-

-

Important

7.5

6.5

CVE-2026-77895

No

No

-

-

Important

7.5

6.5

Windows DHCP Server Elevation of Privilege Vulnerability

CVE-2026-69415

No

No

-

-

Important

6.8

5.9

Windows DHCP Server Information Disclosure Vulnerability

CVE-2026-69297

No

No

-

-

Important

6.5

5.7

CVE-2026-69803

No

No

-

-

Important

5.9

5.2

CVE-2026-69929

No

No

-

-

Important

5.9

5.2

CVE-2026-69930

No

No

-

-

Important

5.9

5.2

CVE-2026-70124

No

No

-

-

Important

5.9

5.2

Windows DHCP Server Remote Code Execution Vulnerability

CVE-2026-69266

No

No

-

-

Important

8.8

7.7

CVE-2026-69412

No

No

-

-

Important

8.0

7.0

CVE-2026-69510

No

No

-

-

Important

8.1

7.1

CVE-2026-69547

No

No

-

-

Important

8.8

7.7

CVE-2026-69620

No

No

-

-

Important

8.1

7.1

CVE-2026-69845

No

No

-

-

Critical

9.8

8.5

CVE-2026-69847

No

No

-

-

Important

8.0

7.0

CVE-2026-69876

No

No

-

-

Important

8.0

7.0

CVE-2026-69878

No

No

-

-

Important

6.4

5.6

CVE-2026-72979

No

No

-

-

Critical

9.8

8.5

CVE-2026-77887

No

No

-

-

Important

6.4

5.6

CVE-2026-77891

No

No

-

-

Important

6.4

5.6

Windows DNS Denial of Service Vulnerability

CVE-2026-69631

No

No

-

-

Important

7.5

6.5

CVE-2026-70091

No

No

-

-

Important

5.9

5.2

Windows DNS Elevation of Privilege Vulnerability

CVE-2026-69310

No

No

-

-

Important

7.0

6.1

CVE-2026-72948

No

No

-

-

Important

6.7

5.8

Windows DNS Information Disclosure Vulnerability

CVE-2026-69369

No

No

-

-

Important

5.5

4.8

CVE-2026-69672

No

No

-

-

Important

5.5

4.8

Windows DNS Remote Code Execution Vulnerability

CVE-2026-72987

No

No

-

-

Critical

8.1

7.1

Windows DNS Server Denial of Service Vulnerability

CVE-2026-78523

No

No

-

-

Important

5.9

5.2

Windows DNS Server Remote Code Execution Vulnerability

CVE-2026-69551

No

No

-

-

Important

8.8

7.7

CVE-2026-69730

No

No

-

-

Critical

9.8

8.5

CVE-2026-69782

No

No

-

-

Important

8.1

7.1

CVE-2026-69813

No

No

-

-

Critical

8.1

7.1

CVE-2026-69827

No

No

-

-

Critical

8.1

7.1

CVE-2026-69858

No

No

-

-

Critical

8.1

7.1

CVE-2026-69989

No

No

-

-

Important

8.1

7.1

CVE-2026-72928

No

No

-

-

Important

7.5

6.5

CVE-2026-77505

No

No

-

-

Critical

8.1

7.1

Windows DNS Spoofing Vulnerability

CVE-2026-69680

No

No

-

-

Important

8.1

7.1

Windows DWM Core Library Elevation of Privilege Vulnerability

CVE-2026-69775

No

No

-

-

Important

7.1

6.2

Windows Defender Firewall Service Elevation of Privilege Vulnerability

CVE-2026-70568

No

No

-

-

Important

7.0

6.1

Windows Defender Firewall Service Information Disclosure Vulnerability

CVE-2026-68831

No

No

-

-

Important

5.5

4.8

Windows Deployment Services Remote Code Execution Vulnerability

CVE-2026-69607

No

No

-

-

Important

7.5

6.5

CVE-2026-72943

No

No

-

-

Important

7.5

6.5

CVE-2026-72954

No

No

-

-

Critical

7.5

6.5

CVE-2026-72957

No

No

-

-

Critical

7.8

6.8

Windows Device Association Broker Service Elevation of Privilege Vulnerability

CVE-2026-69314

No

No

-

-

Important

7.1

6.2

CVE-2026-69693

No

No

-

-

Important

7.0

6.1

Windows Device Association Service Elevation of Privilege Vulnerability

CVE-2026-69296

No

No

-

-

Important

7.1

6.2

CVE-2026-69478

No

No

-

-

Important

7.8

6.8

CVE-2026-69488

No

No

-

-

Important

7.0

6.1

CVE-2026-69574

No

No

-

-

Important

7.0

6.1

CVE-2026-69581

No

No

-

-

Important

7.0

6.1

CVE-2026-69711

No

No

-

-

Important

7.0

6.1

CVE-2026-69714

No

No

-

-

Important

8.0

7.0

CVE-2026-69791

No

No

-

-

Important

7.0

6.1

CVE-2026-69866

No

No

-

-

Important

7.0

6.1

CVE-2026-77500

No

No

-

-

Important

7.8

6.8

CVE-2026-83940

No

No

-

-

Important

7.0

6.1

Windows Device Health Attestation (DHA) Information Disclosure Vulnerability

CVE-2026-69443

No

No

-

-

Important

7.5

7.5

Windows Devices Human Interface Elevation of Privilege Vulnerability

CVE-2026-69472

No

No

-

-

Important

7.0

6.1

Windows Direct Show Remote Code Execution Vulnerability

CVE-2026-69715

No

No

-

-

Important

9.8

8.5

Windows Display Enhancement Service Elevation of Privilege Vulnerability

CVE-2026-70567

No

No

-

-

Important

7.0

6.1

Windows Distributed File System (DFS) Denial of Service Vulnerability

CVE-2026-78446

No

No

-

-

Important

5.3

4.6

Windows Distributed File System (DFS) Elevation of Privilege Vulnerability

CVE-2026-69424

No

No

-

-

Important

7.8

6.8

Windows Embedded Mode Service Elevation of Privilege Vulnerability

CVE-2026-69430

No

No

-

-

Important

7.0

6.1

Windows Encrypting File System (EFS) Elevation of Privilege Vulnerability

CVE-2026-69688

No

No

-

-

Important

7.1

6.2

CVE-2026-69841

No

No

-

-

Important

7.8

6.8

Windows Encrypting File System (EFS) Information Disclosure Vulnerability

CVE-2026-69794

No

No

-

-

Important

5.5

4.8

Windows Enterprise App Management Elevation of Privilege Vulnerability

CVE-2026-69481

No

No

-

-

Important

8.0

7.0

CVE-2026-69907

No

No

-

-

Important

7.8

6.8

Windows Error Reporting Elevation of Privilege Vulnerability

CVE-2026-68894

No

No

-

-

Important

8.0

7.0

CVE-2026-69362

No

No

-

-

Important

7.0

6.1

CVE-2026-69433

No

No

-

-

Important

7.8

6.8

CVE-2026-69436

No

No

-

-

Important

7.8

6.8

CVE-2026-69450

No

No

-

-

Important

7.8

6.8

CVE-2026-69462

No

No

-

-

Important

8.0

7.0

CVE-2026-69513

No

No

-

-

Important

7.8

6.8

CVE-2026-69612

No

No

-

-

Important

7.8

6.8

CVE-2026-69896

No

No

-

-

Important

7.0

6.1

CVE-2026-83996

No

No

-

-

Important

8.8

7.7

Windows Error Reporting Information Disclosure Vulnerability

CVE-2026-69684

No

No

-

-

Important

5.5

4.8

Windows Error Reporting Tampering Vulnerability

CVE-2026-69482

No

No

-

-

Important

7.1

6.2

Windows Event Logging Service Remote Code Execution Vulnerability

CVE-2026-69493

No

No

-

-

Important

9.8

8.5

CVE-2026-69494

No

No

-

-

Important

8.8

7.7

CVE-2026-69495

No

No

-

-

Important

8.8

7.7

Windows Failover Cluster Elevation of Privilege Vulnerability

CVE-2026-71338

No

No

-

-

Important

6.4

5.6

Windows Failover Cluster Information Disclosure Vulnerability

CVE-2026-72989

No

No

-

-

Important

7.5

6.5

Windows Fast FAT Driver Elevation of Privilege Vulnerability

CVE-2026-68878

No

No

-

-

Important

8.0

7.0

Windows Fast FAT Driver Remote Code Execution Vulnerability

CVE-2026-69347

No

No

-

-

Important

7.4

6.4

Windows File History Service Elevation of Privilege Vulnerability

CVE-2026-68837

No

No

-

-

Important

7.0

6.1

CVE-2026-71340

No

No

-

-

Important

7.0

6.1

CVE-2026-72947

No

No

-

-

Important

6.4

5.6

Windows GDI Information Disclosure Vulnerability

CVE-2026-77491

No

No

-

-

Important

5.5

4.8

Windows GDI+ Elevation of Privilege Vulnerability

CVE-2026-68827

No

No

-

-

Important

8.0

7.0

Windows GDI+ Information Disclosure Vulnerability

CVE-2026-69288

No

No

-

-

Important

5.5

4.8

Windows Graphics Component Remote Code Execution Vulnerability

CVE-2026-77493

No

No

-

-

Critical

9.8

8.5

CVE-2026-81955

No

No

-

-

Critical

8.8

7.7

Windows Group Policy Elevation of Privilege Vulnerability

CVE-2026-69717

No

No

-

-

Important

8.0

7.0

Windows HTTP Print Provider Remote Code Execution Vulnerability

CVE-2026-69623

No

No

-

-

Important

8.0

7.0

CVE-2026-69769

No

No

-

-

Critical

9.8

8.5

Windows HTTP.sys Elevation of Privilege Vulnerability

CVE-2026-69597

No

No

-

-

Important

7.1

6.2

Windows Hello Elevation of Privilege Vulnerability

CVE-2026-69710

No

No

-

-

Critical

7.5

6.5

CVE-2026-69725

No

No

-

-

Critical

7.8

6.8

CVE-2026-69740

No

No

-

-

Critical

8.8

7.7

CVE-2026-69784

No

No

-

-

Critical

8.8

7.7

CVE-2026-69799

No

No

-

-

Critical

7.8

6.8

CVE-2026-69820

No

No

-

-

Critical

8.2

7.1

CVE-2026-69864

No

No

-

-

Critical

7.8

6.8

CVE-2026-81354

No

No

-

-

Critical

8.2

7.1

Windows Hello Security Feature Bypass Vulnerability

CVE-2026-72980

No

No

-

-

Critical

4.4

3.9

Windows Host Guardian Service Elevation of Privilege Vulnerability

CVE-2026-69682

No

No

-

-

Important

7.0

6.1

Windows Hyper-V Elevation of Privilege Vulnerability

CVE-2026-69553

No

No

-

-

Important

7.1

6.2

CVE-2026-72961

No

No

-

-

Critical

8.2

7.1

Windows Hyper-V Remote Code Execution Vulnerability

CVE-2026-69603

No

No

-

-

Critical

8.8

7.7

CVE-2026-69910

No

No

-

-

Important

9.8

8.5

CVE-2026-80083

No

No

-

-

Critical

8.8

7.7

Windows IP Address Management (IPAM) Service Elevation of Privilege Vulnerability

CVE-2026-69694

No

No

-

-

Important

7.0

6.1

Windows Image Acquisition Elevation of Privilege Vulnerability

CVE-2026-69341

No

No

-

-

Important

7.0

6.1

CVE-2026-69500

No

No

-

-

Important

7.0

6.1

CVE-2026-69613

No

No

-

-

Important

7.0

6.1

Windows Image Acquisition Information Disclosure Vulnerability

CVE-2026-69483

No

No

-

-

Important

4.7

4.1

Windows Imaging Component Information Disclosure Vulnerability

CVE-2026-69318

No

No

-

-

Important

5.5

4.8

Windows Imaging Component Remote Code Execution Vulnerability

CVE-2026-69499

No

No

-

-

Critical

8.8

7.7

CVE-2026-69860

No

No

-

-

Critical

8.8

7.7

CVE-2026-70296

No

No

-

-

Critical

9.8

8.5

CVE-2026-73013

No

No

-

-

Critical

8.8

7.7

CVE-2026-73023

No

No

-

-

Critical

8.8

7.7

CVE-2026-77495

No

No

-

-

Critical

8.8

7.7

CVE-2026-83992

No

No

-

-

Important

8.8

7.7

Windows Installer Elevation of Privilege Vulnerability

CVE-2026-62694

No

No

-

-

Important

7.0

6.1

CVE-2026-69441

No

No

-

-

Important

7.0

6.1

CVE-2026-71339

No

No

-

-

Important

6.7

5.8

CVE-2026-72929

No

No

-

-

Important

7.8

6.8

CVE-2026-77894

No

No

-

-

Important

7.0

6.1

Windows Internet Connection Sharing (ICS) Elevation of Privilege Vulnerability

CVE-2026-72926

No

No

-

-

Important

7.0

6.1

Windows Internet Connection Sharing (ICS) Tampering Vulnerability

CVE-2026-72964

No

No

-

-

Important

5.5

4.8

Windows Internet Key Exchange (IKE) Extension Denial of Service Vulnerability

CVE-2026-69587

No

No

-

-

Important

7.5

6.5

CVE-2026-69881

No

No

-

-

Important

7.5

6.5

Windows Internet Key Exchange (IKE) Protocol Extensions Remote Code Execution Vulnerability

CVE-2026-69429

No

No

-

-

Important

7.5

6.5

Windows Kerberos Denial of Service Vulnerability

CVE-2026-69744

No

No

-

-

Important

7.5

6.5

CVE-2026-69760

No

No

-

-

Important

7.5

6.5

Windows Kerberos Elevation of Privilege Vulnerability

CVE-2026-69685

No

No

-

-

Important

7.8

6.8

CVE-2026-69822

No

No

-

-

Important

7.8

6.8

Windows Kerberos Remote Code Execution Vulnerability

CVE-2026-69676

No

No

-

-

Critical

8.8

7.7

Windows Kernel Elevation of Privilege Vulnerability

CVE-2026-68846

No

No

-

-

Important

7.1

6.2

CVE-2026-68884

No

No

-

-

Important

7.0

6.1

CVE-2026-69366

No

No

-

-

Important

7.1

6.2

CVE-2026-69466

No

No

-

-

Important

7.0

6.1

CVE-2026-69473

No

No

-

-

Important

7.0

6.1

CVE-2026-69578

No

No

-

-

Important

7.0

6.1

CVE-2026-83942

No

No

-

-

Important

7.8

6.8

CVE-2026-85360

No

No

-

-

Important

7.0

6.1

Windows Kernel Information Disclosure Vulnerability

CVE-2026-69406

No

No

-

-

Important

5.5

4.8

CVE-2026-69723

No

No

-

-

Important

5.7

5.0

Windows Kernel Remote Code Execution Vulnerability

CVE-2026-69669

No

No

-

-

Important

8.8

7.7

Windows Kernel-Mode Driver Elevation of Privilege Vulnerability

CVE-2026-69421

No

No

-

-

Important

7.8

6.8

Windows Key Distribution Center Denial of Service Vulnerability

CVE-2026-84001

No

No

-

-

Important

7.5

6.5

Windows Key Distribution Center Remote Code Execution Vulnerability

CVE-2026-69712

No

No

-

-

Critical

8.8

7.7

Windows LDAP - Lightweight Directory Access Protocol Denial of Service Vulnerability

CVE-2026-69428

No

No

-

-

Important

7.5

6.5

Windows License Manager Elevation of Privilege Vulnerability

CVE-2026-69281

No

No

-

-

Important

7.0

6.1

Windows License Manager Information Disclosure Vulnerability

CVE-2026-69315

No

No

-

-

Important

5.5

4.8

Windows Link Layer Topology Discovery Protocol Remote Code Execution Vulnerability

CVE-2026-69732

No

No

-

-

Important

8.1

7.1

Windows MIDI Service Module Elevation of Privileges Vulnerability

CVE-2026-69440

No

No

-

-

Important

7.0

6.1

CVE-2026-69508

No

No

-

-

Important

7.8

6.8

CVE-2026-69720

No

No

-

-

Important

7.8

6.8

CVE-2026-78464

No

No

-

-

Important

7.0

6.1

Windows MIDI Service Module Information Disclosure Vulnerability

CVE-2026-68842

No

No

-

-

Important

5.5

4.8

CVE-2026-69339

No

No

-

-

Important

5.5

4.8

Windows Management Instrumentation Elevation of Privilege Vulnerability

CVE-2026-69451

No

No

-

-

Important

7.1

6.2

CVE-2026-70582

No

No

-

-

Important

6.4

5.6

CVE-2026-77905

No

No

-

-

Important

7.0

6.1

Windows Management Instrumentation Information Disclosure Vulnerability

CVE-2026-69349

No

No

-

-

Important

5.7

5.0

Windows Management Services Elevation of Privilege Vulnerability

CVE-2026-73012

No

No

-

-

Important

8.8

7.7

Windows Media Elevation of Privilege Vulnerability

CVE-2026-69891

No

No

-

-

Important

7.0

6.1

Windows Media Player Remote Code Execution Vulnerability

CVE-2026-70203

No

No

-

-

Critical

8.8

7.7

CVE-2026-72960

No

No

-

-

Critical

8.8

7.7

Windows Message Queuing Elevation of Privilege Vulnerability

CVE-2026-69645

No

No

-

-

Important

7.0

6.1

Windows Message Queuing Queue Manager Denial of Service Vulnerability

CVE-2026-68887

No

No

-

-

Important

7.5

6.5

Windows Message Queuing Queue Manager Information Disclosure Vulnerability

CVE-2026-72932

No

No

-

-

Important

7.5

6.5

Windows Message Queuing Remote Code Execution Vulnerability

CVE-2026-69579

No

No

-

-

Critical

9.8

8.5

CVE-2026-83997

No

No

-

-

Important

8.1

7.1

Windows Mobile Broadband Information Disclosure Vulnerability

CVE-2026-70579

No

No

-

-

Important

7.5

6.5

Windows Modern Device Management (MDM) Elevation of Privilege Vulnerability

CVE-2026-69377

No

No

-

-

Important

7.8

6.8

CVE-2026-69460

No

No

-

-

Important

7.1

6.2

CVE-2026-70577

No

No

-

-

Important

7.0

6.1

CVE-2026-73003

No

No

-

-

Important

7.0

6.1

CVE-2026-73022

No

No

-

-

Important

7.0

6.1

Windows Modern Device Management (MDM) Security Feature Bypass Vulnerability

CVE-2026-69674

No

No

-

-

Important

5.5

4.8

Windows Modern Execution Server Elevation of Privilege Vulnerability

CVE-2026-72963

No

No

-

-

Important

7.0

6.1

Windows NDIS Elevation of Privilege Vulnerability

CVE-2026-69357

No

No

-

-

Important

7.1

6.2

CVE-2026-69396

No

No

-

-

Important

7.1

6.2

Windows NFS Portmapper Elevation of Privilege Vulnerability

CVE-2026-71334

No

No

-

-

Important

7.8

6.8

Windows NTFS Elevation of Privilege Vulnerability

CVE-2026-68832

No

No

-

-

Important

7.8

6.8

CVE-2026-68834

No

No

-

-

Important

8.0

7.0

CVE-2026-68838

No

No

-

-

Important

8.0

7.0

CVE-2026-68841

No

No

-

-

Important

7.8

6.8

CVE-2026-69265

No

No

-

-

Important

7.8

6.8

CVE-2026-69312

No

No

-

-

Important

7.8

6.8

CVE-2026-69332

No

No

-

-

Important

8.0

7.0

CVE-2026-69340

No

No

-

-

Important

7.1

6.2

CVE-2026-69379

No

No

-

-

Important

7.0

6.1

CVE-2026-69505

No

No

-

-

Important

8.0

7.0

CVE-2026-69532

No

No

-

-

Important

7.8

6.8

CVE-2026-69567

No

No

-

-

Important

7.0

6.1

CVE-2026-69875

No

No

-

-

Important

8.0

7.0

CVE-2026-72935

No

No

-

-

Important

6.7

5.8

CVE-2026-77503

No

No

-

-

Important

8.4

7.3

CVE-2026-83995

No

No

-

-

Important

7.8

6.8

Windows NTFS Information Disclosure Vulnerability

CVE-2026-68851

No

No

-

-

Important

5.5

4.8

CVE-2026-69504

No

No

-

-

Important

5.5

4.8

CVE-2026-69591

No

No

-

-

Important

5.7

5.0

Windows NTFS Remote Code Execution Vulnerability

CVE-2026-68833

No

No

-

-

Important

6.8

5.9

CVE-2026-68875

No

No

-

-

Important

7.8

6.8

CVE-2026-69461

No

No

-

-

Important

8.8

7.7

CVE-2026-69463

No

No

-

-

Important

9.8

8.5

CVE-2026-69479

No

No

-

-

Important

8.4

7.3

CVE-2026-69566

No

No

-

-

Important

6.8

5.9

CVE-2026-69638

No

No

-

-

Important

8.4

7.3

CVE-2026-69709

No

No

-

-

Important

7.8

6.8

CVE-2026-71329

No

No

-

-

Important

6.8

5.9

Windows NTFS Tampering Vulnerability

CVE-2026-69425

No

No

-

-

Important

4.7

4.1

Windows Netlogon Remote Code Execution Vulnerability

CVE-2026-72982

No

No

-

-

Critical

9.8

8.5

Windows Netlogon Spoofing Vulnerability

CVE-2026-62759

No

No

-

-

Important

7.5

6.5

Windows Network Connection Broker Elevation of Privilege Vulnerability

CVE-2026-72967

No

No

-

-

Important

7.8

6.8

Windows Network Connection Broker Information Disclosure Vulnerability

CVE-2026-68886

No

No

-

-

Important

5.5

4.8

Windows Network File System Denial of Service Vulnerability

CVE-2026-69372

No

No

-

-

Important

5.7

5.0

Windows Network File System Remote Code Execution Vulnerability

CVE-2026-69772

No

No

-

-

Important

8.8

7.7

Windows Notification Elevation of Privilege Vulnerability

CVE-2026-69648

No

No

-

-

Important

7.0

6.1

Windows OLE DB Information Disclosure Vulnerability

CVE-2026-78441

No

No

-

-

Important

6.5

5.7

Windows OLE DB Remote Code Execution Vulnerability

CVE-2026-78442

No

No

-

-

Important

8.8

7.7

Windows Online Certificate Status Protocol (OCSP) Elevation of Privilege Vulnerability

CVE-2026-69564

No

No

-

-

Important

7.0

6.1

Windows Overlay Filter Elevation of Privilege Vulnerability

CVE-2026-69350

No

No

-

-

Important

6.7

5.8

CVE-2026-69368

No

No

-

-

Important

7.8

6.8

CVE-2026-69371

No

No

-

-

Important

8.0

7.0

CVE-2026-69373

No

No

-

-

Important

6.7

5.8

Windows Overlay Filter Information Disclosure Vulnerability

CVE-2026-69316

No

No

-

-

Important

4.7

4.1

CVE-2026-69343

No

No

-

-

Important

5.5

4.8

CVE-2026-69474

No

No

-

-

Important

4.8

4.2

Windows Paint Remote Code Execution Vulnerability

CVE-2026-70586

No

No

-

-

Critical

8.8

7.7

Windows Partition Management Driver Elevation of Privilege Vulnerability

CVE-2026-69480

No

No

-

-

Important

7.8

6.8

CVE-2026-69492

No

No

-

-

Important

7.0

6.1

Windows Partition Management Driver Information Disclosure Vulnerability

CVE-2026-71341

No

No

-

-

Important

5.5

4.8

Windows Performance Monitor Elevation of Privilege Vulnerability

CVE-2026-69324

No

No

-

-

Important

7.8

6.8

Windows Power Dependency Coordinator Elevation of Privilege Vulnerability

CVE-2026-69459

No

No

-

-

Important

7.8

6.8

Windows Power Dependency Coordinator Tampering Vulnerability

CVE-2026-69321

No

No

-

-

Important

5.5

4.8

Windows Print Spooler Components Denial of Service Vulnerability

CVE-2026-69569

No

No

-

-

Important

5.7

5.0

Windows Print Spooler Components Elevation of Privilege Vulnerability

CVE-2026-68835

No

No

-

-

Important

7.1

6.2

CVE-2026-68848

No

No

-

-

Important

7.8

6.8

CVE-2026-69309

No

No

-

-

Important

7.0

6.1

CVE-2026-69346

No

No

-

-

Important

8.0

7.0

CVE-2026-69364

No

No

-

-

Important

7.1

6.2

CVE-2026-69838

No

No

-

-

Important

7.0

6.1

CVE-2026-69921

No

No

-

-

Important

7.8

6.8

CVE-2026-70564

No

No

-

-

Important

7.8

6.8

Windows Print Spooler Components Information Disclosure Vulnerability

CVE-2026-69344

No

No

-

-

Important

5.5

4.8

CVE-2026-69552

No

No

-

-

Important

5.7

5.0

Windows Print Spooler Remote Code Execution Vulnerability

CVE-2026-85877

No

No

-

-

Important

8.8

7.7

Windows PrintWorkflowUserSvc Elevation of Privilege Vulnerability

CVE-2026-69602

No

No

-

-

Important

7.1

6.2

Windows Program Compatibility Assistant Service Elevation of Privilege Vulnerability

CVE-2026-68845

No

No

-

-

Important

7.8

6.8

CVE-2026-68876

No

No

-

-

Important

8.0

7.0

CVE-2026-69534

No

No

-

-

Important

7.8

6.8

CVE-2026-69563

No

No

-

-

Important

7.0

6.1

Windows Program Compatibility Assistant Service Information Disclosure Vulnerability

CVE-2026-68873

No

No

-

-

Important

5.5

4.8

CVE-2026-68874

No

No

-

-

Important

5.7

5.0

Windows Push Notifications Elevation of Privilege Vulnerability

CVE-2026-62697

No

No

-

-

Important

7.8

6.8

CVE-2026-69280

No

No

-

-

Important

7.0

6.1

CVE-2026-69300

No

No

-

-

Important

7.0

6.1

Windows RNDIS Information Disclosure Vulnerability

CVE-2026-69548

No

No

-

-

Important

4.6

4.0

Windows RNDIS Remote Code Execution Vulnerability

CVE-2026-69768

No

No

-

-

Important

9.8

8.5

Windows Registry Elevation of Privilege Vulnerability

CVE-2026-69337

No

No

-

-

Important

7.1

6.2

Windows Reliable Multicast Transport Driver (RMCAST) Remote Code Execution Vulnerability

CVE-2026-69530

No

No

-

-

Critical

8.1

7.1

CVE-2026-78449

No

No

-

-

Critical

8.1

7.1

CVE-2026-78450

No

No

-

-

Critical

8.1

7.1

Windows Remote Access Connection Manager Elevation of Privilege Vulnerability

CVE-2026-69331

No

No

-

-

Important

7.0

6.1

CVE-2026-69455

No

No

-

-

Important

7.8

6.8

CVE-2026-71333

No

No

-

-

Important

7.0

6.1

CVE-2026-71342

No

No

-

-

Important

7.0

6.1

Windows Remote Access Connection Manager Remote Code Execution Vulnerability

CVE-2026-71343

No

No

-

-

Important

7.8

6.8

CVE-2026-71352

No

No

-

-

Important

8.8

7.7

Windows Remote Access Connection Manager Tampering Vulnerability

CVE-2026-72966

No

No

-

-

Important

5.5

4.8

Windows Remote Desktop Client Denial of Service Vulnerability

CVE-2026-77896

No

No

-

-

Important

6.5

5.7

Windows Remote Desktop Client Information Disclosure Vulnerability

CVE-2026-69317

No

No

-

-

Important

5.7

5.0

Windows Remote Desktop Licensing Service Information Disclosure Vulnerability

CVE-2026-69627

No

No

-

-

Important

5.5

4.8

Windows Remote Desktop Protocol Information Disclosure Vulnerability

CVE-2026-70587

No

No

-

-

Important

7.5

6.5

Windows Remote Desktop Remote Code Execution Vulnerability

CVE-2026-69518

No

No

-

-

Critical

8.8

7.7

Windows Remote Desktop Services Elevation of Privilege Vulnerability

CVE-2026-69287

No

No

-

-

Important

7.0

6.1

CVE-2026-69475

No

No

-

-

Important

7.8

6.8

CVE-2026-80096

No

No

-

-

Important

8.8

7.7

Windows Remote Desktop Services Information Disclosure Vulnerability

CVE-2026-69616

No

No

-

-

Important

5.5

4.8

Windows Resilient File System (ReFS) Deduplication Service Elevation of Privilege Vulnerability

CVE-2026-83999

No

No

-

-

Important

7.0

6.1

Windows Resilient File System (ReFS) Elevation of Privilege Vulnerability

CVE-2026-69617

No

No

-

-

Important

7.0

6.1

CVE-2026-83952

No

No

-

-

Important

7.8

6.8

Windows Routing and Remote Access Service (RRAS) Denial of Service Vulnerability

CVE-2026-72939

No

No

-

-

Important

6.5

5.7

Windows Routing and Remote Access Service (RRAS) Elevation of Privilege Vulnerability

CVE-2026-71351

No

No

-

-

Important

7.0

6.1

CVE-2026-71353

No

No

-

-

Important

7.0

6.1

Windows Routing and Remote Access Service (RRAS) Remote Code Execution Vulnerability

CVE-2026-69590

No

No

-

-

Critical

9.8

8.5

CVE-2026-69852

No

No

-

-

Critical

7.5

6.5

CVE-2026-70570

No

No

-

-

Important

7.5

6.5

CVE-2026-72950

No

No

-

-

Critical

8.8

7.7

CVE-2026-72959

No

No

-

-

Critical

8.8

7.7

Windows SMB Client Elevation of Privilege Vulnerability

CVE-2026-69544

No

No

-

-

Important

7.8

6.8

Windows SMB Client Information Disclosure Vulnerability

CVE-2026-69572

No

No

-

-

Important

5.7

5.0

CVE-2026-69618

No

No

-

-

Important

5.5

4.8

Windows SMB Client Remote Code Execution Vulnerability

CVE-2026-72936

No

No

-

-

Important

8.1

7.1

Windows SMB Server Denial of Service Vulnerability

CVE-2026-69374

No

No

-

-

Important

6.5

5.7

Windows SMB Server Information Disclosure Vulnerability

CVE-2026-69403

No

No

-

-

Important

5.5

4.8

Windows SMB Server Network Transport Driver (srvnet.sys) Denial of Service Vulnerability

CVE-2026-72949

No

No

-

-

Important

7.5

6.5

Windows Schannel Denial of Service Vulnerability

CVE-2026-70575

No

No

-

-

Important

5.3

4.6

Windows Schannel Remote Code Execution Vulnerability

CVE-2026-72940

No

No

-

-

Important

8.8

7.7

Windows Secure Boot Security Feature Bypass Vulnerability

CVE-2026-69713

No

No

-

-

Important

4.4

3.9

Windows Secure Kernel Mode Elevation of Privilege Vulnerability

CVE-2026-69501

No

No

-

-

Critical

7.0

6.1

CVE-2026-69846

No

No

-

-

Critical

8.2

7.1

CVE-2026-69906

No

No

-

-

Critical

8.2

7.1

CVE-2026-83939

No

No

-

-

Critical

8.2

7.1

Windows Secure Socket Tunneling Protocol (SSTP) Denial of Service Vulnerability

CVE-2026-72931

No

No

-

-

Important

4.7

4.1

Windows Secure Socket Tunneling Protocol (SSTP) Elevation of Privilege Vulnerability

CVE-2026-71332

No

No

-

-

Important

7.0

6.1

Windows Secure Socket Tunneling Protocol (SSTP) Remote Code Execution Vulnerability

CVE-2026-72930

No

No

-

-

Important

7.0

6.1

CVE-2026-73009

No

No

-

-

Critical

9.8

8.5

Windows Security Center Elevation of Privilege Vulnerability

CVE-2026-77899

No

No

-

-

Important

7.0

6.1

Windows Security Health Service Elevation of Privilege Vulnerability

CVE-2026-78457

No

No

-

-

Important

7.0

6.1

Windows Server Elevation of Privilege Vulnerability

CVE-2026-56177

No

No

-

-

Important

7.8

6.8

Windows Services for NFS ONCRPC XDR Driver Denial of Service Vulnerability

CVE-2026-83989

No

No

-

-

Important

7.5

6.5

Windows Services for NFS ONCRPC XDR Driver Elevation of Privilege Vulnerability

CVE-2026-73024

No

No

-

-

Important

7.8

6.8

Windows Services for NFS ONCRPC XDR Driver Information Disclosure Vulnerability

CVE-2026-71330

No

No

-

-

Important

7.5

6.5

Windows Services for NFS ONCRPC XDR Driver Remote Code Execution Vulnerability

CVE-2026-69595

No

No

-

-

Critical

9.8

8.5

CVE-2026-70585

No

No

-

-

Critical

7.0

6.1

CVE-2026-78445

No

No

-

-

Critical

9.8

8.5

Windows Setup Files Cleanup Elevation of Privilege Vulnerability

CVE-2026-69289

No

No

-

-

Important

7.8

6.8

Windows Shell Elevation of Privilege Vulnerability

CVE-2026-69383

No

No

-

-

Important

7.0

6.1

CVE-2026-69392

No

No

-

-

Important

7.8

6.8

CVE-2026-69528

No

No

-

-

Important

7.8

6.8

CVE-2026-69606

No

No

-

-

Important

7.0

6.1

Windows Shell Remote Code Execution Vulnerability

CVE-2026-69829

No

No

-

-

Critical

9.8

8.5

Windows Shell Spoofing Vulnerability

CVE-2026-70563

No

No

-

-

Important

8.1

7.1

Windows Smart Card Elevation of Privilege Vulnerability

CVE-2026-69785

No

No

-

-

Important

7.8

6.8

Windows Spaceport.sys Elevation of Privilege Vulnerability

CVE-2026-69512

No

No

-

-

Important

8.0

7.0

CVE-2026-69535

No

No

-

-

Important

7.8

6.8

CVE-2026-69643

No

No

-

-

Important

8.0

7.0

CVE-2026-69691

No

No

-

-

Important

7.8

6.8

CVE-2026-70569

No

No

-

-

Important

7.8

6.8

Windows Spaceport.sys Information Disclosure Vulnerability

CVE-2026-69390

No

No

-

-

Important

5.5

4.8

CVE-2026-69393

No

No

-

-

Important

5.7

5.0

CVE-2026-69741

No

No

-

-

Important

5.5

4.8

CVE-2026-69770

No

No

-

-

Important

5.5

4.8

CVE-2026-69895

No

No

-

-

Important

4.7

4.1

CVE-2026-72942

No

No

-

-

Important

6.5

5.7

Windows Spaceport.sys Remote Code Execution Vulnerability

CVE-2026-69538

No

No

-

-

Important

7.8

6.8

CVE-2026-71345

No

No

-

-

Important

7.8

6.8

CVE-2026-71348

No

No

-

-

Important

6.8

5.9

CVE-2026-71349

No

No

-

-

Important

6.8

5.9

CVE-2026-71350

No

No

-

-

Important

6.8

5.9

CVE-2026-72952

No

No

-

-

Important

7.0

6.1

Windows Storage Elevation of Privilege Vulnerability

CVE-2026-69328

No

No

-

-

Important

7.8

6.8

Windows Storage Information Disclosure Vulnerability

CVE-2026-78516

No

No

-

-

Important

4.3

3.8

Windows Storage Management Provider Elevation of Privilege Vulnerability

CVE-2026-69389

No

No

-

-

Important

7.8

6.8

CVE-2026-71337

No

No

-

-

Important

7.8

6.8

Windows Storage Port Driver Information Disclosure Vulnerability

CVE-2026-69381

No

No

-

-

Important

4.6

4.0

CVE-2026-72937

No

No

-

-

Important

5.5

4.8

CVE-2026-77492

No

No

-

-

Important

5.5

4.8

Windows Storage Spaces Controller Elevation of Privilege Vulnerability

CVE-2026-69290

No

No

-

-

Important

7.8

6.8

CVE-2026-69575

No

No

-

-

Important

7.0

6.1

Windows Storage Spaces Controller Remote Code Execution Vulnerability

CVE-2026-68844

No

No

-

-

Important

7.8

6.8

CVE-2026-68877

No

No

-

-

Important

7.8

6.8

Windows TCP/IP Denial of Service Vulnerability

CVE-2026-69588

No

No

-

-

Important

7.5

6.5

Windows TCP/IP Elevation of Privilege Vulnerability

CVE-2026-69385

No

No

-

-

Important

7.0

6.1

CVE-2026-69404

No

No

-

-

Important

7.0

6.1

CVE-2026-69757

No

No

-

-

Important

7.1

6.2

CVE-2026-69761

No

No

-

-

Important

7.1

6.2

Windows TCP/IP Security Feature Bypass Vulnerability

CVE-2026-69793

No

No

-

-

Important

7.5

6.5

Windows Task Scheduler Information Disclosure Vulnerability

CVE-2026-72945

No

No

-

-

Important

5.5

4.8

Windows Text Shaping Information Disclosure Vulnerability

CVE-2026-69353

No

No

-

-

Important

5.5

4.8

Windows Text Shaping Remote Code Execution Vulnerability

CVE-2026-69786

No

No

-

-

Important

8.1

7.1

Windows URL Moniker Remote Code Execution Vulnerability

CVE-2026-69434

No

No

-

-

Important

8.8

7.7

Windows URL Moniker Security Feature Bypass Vulnerability

CVE-2026-73019

No

No

-

-

Important

4.3

3.8

Windows USB Audio Class Driver Information Disclosure Vulnerability

CVE-2026-69286

No

No

-

-

Important

5.5

4.8

Windows USB Audio Class driver (usbaudio.sys) Elevation of Privilege Vulnerability

CVE-2026-69270

No

No

-

-

Important

7.8

6.8

CVE-2026-69307

No

No

-

-

Important

7.8

6.8

CVE-2026-69413

No

No

-

-

Important

7.0

6.1

CVE-2026-69469

No

No

-

-

Important

6.6

5.8

CVE-2026-69571

No

No

-

-

Important

7.8

6.8

CVE-2026-69687

No

No

-

-

Important

7.8

6.8

CVE-2026-69707

No

No

-

-

Important

7.8

6.8

CVE-2026-69859

No

No

-

-

Important

7.0

6.1

Windows USB Driver Elevation of Privilege Vulnerability

CVE-2026-68840

No

No

-

-

Important

7.0

6.1

CVE-2026-69295

No

No

-

-

Important

7.8

6.8

CVE-2026-69503

No

No

-

-

Important

8.0

7.0

CVE-2026-72953

No

No

-

-

Important

7.8

6.8

Windows USB Driver Information Disclosure Vulnerability

CVE-2026-69457

No

No

-

-

Important

5.5

4.8

Windows USB Hub Driver Elevation of Privilege Vulnerability

CVE-2026-72999

No

No

-

-

Important

6.8

5.9

Windows USB Mass Storage Class Driver Elevation of Privilege Vulnerability

CVE-2026-69490

No

No

-

-

Important

6.8

5.9

Windows USB Mass Storage Class Driver Information Disclosure Vulnerability

CVE-2026-69527

No

No

-

-

Important

5.5

4.8

Windows USB Mass Storage Class Driver Remote Code Execution Vulnerability

CVE-2026-68839

No

No

-

-

Important

9.8

8.5

Windows USB Video Driver Elevation of Privilege Vulnerability

CVE-2026-69319

No

No

-

-

Important

7.0

6.1

CVE-2026-69422

No

No

-

-

Important

7.0

6.1

CVE-2026-69423

No

No

-

-

Important

8.0

7.0

CVE-2026-69584

No

No

-

-

Important

7.8

6.8

CVE-2026-72962

No

No

-

-

Critical

8.2

7.1

Windows Universal Disk Format File System Driver (UDFS) Elevation of Privilege Vulnerability

CVE-2026-69573

No

No

-

-

Important

7.0

6.1

CVE-2026-69592

No

No

-

-

Important

7.8

7.8

CVE-2026-69758

No

No

-

-

Important

7.8

7.8

Windows Universal Plug and Play (UPnP) Device Host Information Disclosure Vulnerability

CVE-2026-68830

No

No

-

-

Important

5.5

4.8

CVE-2026-69351

No

No

-

-

Important

5.5

4.8

Windows Update Stack Elevation of Privilege Vulnerability

CVE-2026-81963

No

Yes

-

-

Important

7.8

7.2

Windows VHD miniport driver Elevation of Privilege Vulnerability

CVE-2026-56172

No

No

-

-

Important

7.8

6.8

Windows VOLSNAP.SYS Remote Code Execution Vulnerability

CVE-2026-69426

No

No

-

-

Important

7.8

6.8

Windows Virtual Trusted Platform Module Elevation of Privilege Vulnerability

CVE-2026-69890

No

No

-

-

Critical

7.5

6.5

Windows Virtualization-Based Security (VBS) Enclave Elevation of Privilege Vulnerability

CVE-2026-83498

No

No

-

-

Critical

7.8

6.8

Windows Virtualization-Based Security (VBS) Information Disclosure Vulnerability

CVE-2026-83501

No

No

-

-

Critical

5.5

4.8

Windows Volume Manager Extension Driver Elevation of Privilege Vulnerability

CVE-2026-69468

No

No

-

-

Important

7.0

6.1

CVE-2026-69582

No

No

-

-

Important

7.8

6.8

CVE-2026-77904

No

No

-

-

Important

7.8

6.8

Windows Volume Manager Extension Driver Remote Code Execution Vulnerability

CVE-2026-69291

No

No

-

-

Important

8.8

7.7

CVE-2026-69334

No

No

-

-

Important

8.8

7.7

Windows Web Platform Storage Elevation of Privilege Vulnerability

CVE-2026-69708

No

No

-

-

Important

7.0

6.1

Windows WebClient Service Elevation of Privilege Vulnerability

CVE-2026-72965

No

No

-

-

Important

7.8

6.8

Windows Win32K Security Feature Bypass Vulnerability

CVE-2026-69792

No

No

-

-

Important

4.7

4.1

Windows Win32k Elevation of Privilege Vulnerability

CVE-2026-68880

No

No

-

-

Important

8.0

7.0

CVE-2026-69274

No

No

-

-

Important

7.1

6.2

CVE-2026-69301

No

No

-

-

Important

8.0

7.0

CVE-2026-69333

No

No

-

-

Important

7.0

6.1

CVE-2026-69335

No

No

-

-

Important

7.0

6.1

CVE-2026-69348

No

No

-

-

Important

7.8

6.8

CVE-2026-69410

No

No

-

-

Important

7.0

6.1

CVE-2026-69498

No

No

-

-

Important

7.0

6.1

CVE-2026-69610

No

No

-

-

Important

7.0

6.1

CVE-2026-69630

No

No

-

-

Important

7.0

6.1

CVE-2026-69652

No

No

-

-

Important

7.0

6.1

CVE-2026-69689

No

No

-

-

Important

8.0

7.0

CVE-2026-69706

No

No

-

-

Important

7.1

6.2

CVE-2026-69762

No

No

-

-

Important

8.0

7.0

CVE-2026-69779

No

No

-

-

Important

7.0

6.1

CVE-2026-69818

No

No

-

-

Important

7.0

6.1

CVE-2026-69844

No

No

-

-

Important

7.8

6.8

CVE-2026-70283

No

No

-

-

Important

7.0

6.1

CVE-2026-70289

No

No

-

-

Important

7.8

6.8

Windows Wireless Networking Elevation of Privilege Vulnerability

CVE-2026-69517

No

No

-

-

Important

7.0

6.1

Windows Wireless Wide Area Network Service Information Disclosure Vulnerability

CVE-2026-69862

No

No

-

-

Important

5.5

4.8

Windows Work Folder Service Elevation of Privilege Vulnerability

CVE-2026-69560

No

No

-

-

Important

7.0

6.1

Windows Work Folder Service Remote Code Execution Vulnerability

CVE-2026-71336

No

No

-

-

Important

8.8

7.7

Windows Work Folders Elevation of Privilege Vulnerability

CVE-2026-80075

No

No

-

-

Important

7.8

6.8

Windows exFAT File System Elevation of Privilege Vulnerability

CVE-2026-69619

No

No

-

-

Important

8.0

7.0

Windows iSCSI Denial of Service Vulnerability

CVE-2026-68898

No

No

-

-

Important

6.5

5.7

Windows iSCSI Remote Code Execution Vulnerability

CVE-2026-69598

No

No

-

-

Important

8.8

7.7

CVE-2026-69628

No

No

-

-

Important

8.8

7.7

Windows iSCSI Security Feature Bypass Vulnerability

CVE-2026-73025

No

No

-

-

Important

9.8

8.5

Windows iSCSI Target Service Denial of Service Vulnerability

CVE-2026-69839

No

No

-

-

Important

6.5

5.7

Winsock Elevation of Privilege Vulnerability

CVE-2026-72927

No

No

-

-

Important

6.7

5.8

Xbox Gaming Services Elevation of Privilege Vulnerability

CVE-2026-58611

No

No

-

-

Important

7.8

6.8

Xbox Information Disclosure Vulnerability

CVE-2026-78455

No

No

-

-

Important

4.3

3.8

 


ESSENTIAL MACOS STEALER INFECTION

5.9.26  malware-traffic-analysis  Virus

NOTICE:

ASSOCIATED FILES:

IMAGES


Shown above: Fake macOS software page.


Shown above: Text from the fake software page pasted into a macOS Terminal window.


Shown above: Traffic from the infection filtered in Wireshark.


Shown above: Transaction information on the Polygon blockchain address with C2 server info.


Angry Birds: Toy Ghouls’ new toys

4.9.26  SECURELIST  APT

We continue tracking the activity of Toy Ghouls (also known as Bearlyfy, Laboo.boo, and Feral Wolf), a financially motivated group that has been targeting Russian organizations since 2025. The attackers initially relied exclusively on tools pulled from public GitHub repositories along with leaked Babuk and LockBit ransomware builders, later shifting to their own custom ransomware, GenieLocker. In early July 2026, we observed the group using a custom backdoor for the first time.

We identified two versions of this backdoor: one uses the HiveMQ MQTT broker as its C2 server, while the other relies on the Element messenger. Both versions include “bird” in their names:

This post examines how the backdoor is delivered to target systems, how it establishes persistence, and how it communicates with its C2 server.

Technical details

Delivery

In this campaign, the attackers use Windows Remote Management (WinRM) to deliver the backdoors and their configuration files to compromised systems. The group relies on open-source tools such as Evil-WinRM and WinRM-fs to do this.

Installation

The backdoor can both run within an interactive command-line session and establish persistence as a Windows service, using the --install or install option, depending on the backdoor version. The --service (or service) option is not available by default and is instead used as an argument for the installed Windows service.

Other launch options are listed in the backdoor’s help output:

C:\cplsupport.exe -h

Bird Agent - MQTT server monitor

Usage: cplsupport.exe [OPTIONS]

 

Options:

-c, --config <CONFIG> Path to config.toml config file

--install Install as a system service

--uninstall Uninstall the system service

--seal Encrypt sensitive config fields in-place using a machine-bound key

-h, --help Print help

-V, --version Print version

 

HiveMQ version backdoor help output

In the Element version, the backdoor help output looks as follows:

C:\wtass.exe -h

Matrix monitoring agent

 

Usage: wtass.exe [OPTIONS] [COMMAND]

 

Commands:

  install    Register this agent with the Matrix homeserver and panel

  uninstall  Remove this agent's service and credentials

  service    Run as a Windows service (internal)

  help       Print this message or the help of the given subcommand(s)

 

Options:

  -c, --config <CONFIG>

  -h, --help             Print help

  -V, --version          Print version

 

Element version backdoor help output

By default, the backdoor looks for a config.toml configuration file in the directory where the executable was launched, then falls back to %PROGRAMDATA%\SynapseAgent\config.toml (Element version) or %PROGRAMDATA%\cplsupport\config.toml (HiveMQ version). If no configuration file is found in either location, the full path can be specified using the -c (--config) option.

The backdoor accepts both unencrypted configuration files and files with partially encrypted sections. In the first case, once the backdoor is launched, it reads the file and partially encrypts it using the seal() function (the --seal option in the HiveMQ version), applying the ChaCha20-Poly1305 algorithm with a key derived from the value of the HKLM\Software\Microsoft\Cryptography\MachineGuid registry key. This means that after the backdoor’s first run, the configuration file becomes bound to that specific machine. On subsequent runs, the configuration is decrypted automatically. If the input configuration was already partially encrypted, it is likewise decrypted automatically.

If the configuration cannot be decrypted, the backdoor stops running.

Encrypted configuration files look as follows:

Encrypted backdoor configuration file, HiveMQ version

Encrypted backdoor configuration file, HiveMQ version

The encrypted portion of the HiveMQ version’s configuration contains the following parameters:

Decrypted blob field in the HiveMQ version's configuration

Decrypted blob field in the HiveMQ version’s configuration

In the Element version, the configuration file is deleted immediately after the first run, and the relevant parameters are instead written to the HKLM\Software\synapse\Config\SealedConfig registry key. On subsequent runs, the backdoor checks the registry for its configuration first.

Decrypted Element version configuration file, retrieved from the registry

Decrypted Element version configuration file, retrieved from the registry

The Element version’s configuration specifies the address of an Element server controlled by the attackers, a room identifier, and an access_token used to access that room. If this parameter is left empty, the backdoor prompts for the password interactively during installation. After successfully creating a session, the backdoor saves the received token to the blob field.

Communication

At startup, both backdoor versions send a GET request to http://ip-api.com/json to determine the system’s public IP address and country of origin.

The first version uses the public HiveMQ MQTT broker (broker.hivemq.com) as its C2 server. The free tier of this broker supports up to 100 concurrent connections and up to 10 GB of traffic per month. The attackers set up their own cluster and used it both to collect telemetry from compromised systems and to send commands to the backdoor.

For the second backdoor version, the attackers set up their own Element server running on the Matrix protocol, meet.element[.]tw, as the C2 server. On this server, they created a room used to receive messages containing device information and to send commands for execution on the compromised system. The communication flow is as follows:

Takeaways

We have been tracking Toy Ghouls’ activity for quite some time. We previously found that the group had expanded its arsenal with a custom ransomware strain, GenieLocker, and we have now discovered that it has also developed a backdoor capable of giving it full control over an infected device. The new tools use unconventional channels to communicate with their C2 server: the HiveMQ MQTT broker and the Matrix-based Element messenger. This shift away from publicly available open-source projects toward custom-built tools suggests that Toy Ghouls is working to make its attacks more sophisticated and to evade detection for longer.

Indicators of compromise

Kaspersky security solution verdicts:

File names and MD5 hashes:

Registry keys:

Service names:

Domain names:


Honeypot-Omaha and batch.py [Guest Diary]

3.9.2026  SANS  Security

[This is a Guest Diary by Frank Igbokwe, an ISC intern as part of the SANS.edu BACS program]

Honeypot-Omaha is a DShied Sensor located at the Internet Storm Center (ISC) that is set up as a decoy for the original target and deployed over the internet. It is a flawed and very vulnerable system that was intentionally designed to attract threat actors with malicious intents. I view it as a massive log aggregator that collects data that an analyst like myself can then analyse, hypothesize, synthesize and then generate a cohesive and coherent report.

DShield Sensor uses a collective of tools to track internet threat actors, one of those packaged tools is called “cowrie”. It emulates port twenty-two and twenty-three, which are secure shell and telnet. Automation is at its rise and almost everything has been or would be automated at some point in time. From botnets to password brute force attacks to credentials scraping and gathering of data, we observe more automated activities.

Tools like hashcat and jack the ripper make credential collection easy. So, cowrie waits and listens on the decoy ports set up for DShield Sensor. It exposes these ports to the public facing internet and relays the data to a centralized station (ISC). Which logs every information about that threat actor and its activities. “DShield.org” and the Internet Storm Center—founded by Dr. Johannes Ullrich in November 2000 out of the precursor site Incidents.org—provide valuable threat intelligence.

When a potential threat actor infiltrates the sensor, cowrie records their activities. Questions begin to arise like methods used to access the system, what vulnerability was exploited, did they succeed or fail at their attempts, what commands were used, where it was used, what was exfiltrated. With this valuable intel an analyst can build a time frame of when the activity started and ended. Answers to most of these questions asked would be revealed as we proceed.

The next question is how do I correlate and gather all these data of interest, types, and structure. There are web logs, firewall logs, cowrie logs with credentials and other valuable information. I tried using tools like zeek for data behaviour correlation, carving, and analysis, rwfilter for metadata carving of specific fields of interest and converting to silk then my favorite tool, tcpdump for parsing network traffic packets. 

All these tools are excellent tools but they are multiple tools that perform specific functions. I needed one tool that could consolidate all my logs of data, filter out the relevant data of interest and use those filtered consolidated data to answer all the questions asked on my internship template. For example, an analyst may want to get more information about a specific internet address, and all the activities engaged by that address. 

An analyst has to have a way to input an internet address or fully qualified domain name (FQDN) and it recursively gathers different data of interest related to that address, by searching and querying different “APIs” application programming interfaces for data.

Then converts the data into a tab separated value format, analyzes, correlates, gathers threat intelligence, common vulnerabilities and exposure (CVE), mitre, exploits, threat score, session id, hash and fingerprints, port numbers, geolocation, internet service and cloud service  providers (ISPs or CSP) and a way to mitigate the threat actors activities.

This tool should be able to implement hashing mechanisms using any of the secure algorithms, for example using a combination of symmetric-asymmetric ciphers, and consolidating relevant data across a given directory into one view. Nothing complicated, just a simple script that synthesizes, consolidates data and brings all that into a focused, comprehensive, cohesive functionality and possibly more. Now you see where I am going with this delima.

All data are important but which ones are  relevant to solving my internship questions. After a long research, I had an “Aha!” moment, you can call it an epiphany or what I call my “eureka” moment. That's where the idea of a “batch” process was formulated. I use my recently gained knowledge and skills of the python programming language to write a script called “batch.py”.

Batch is a script based on the python programming language, I wrote to assist me do most of what I described above. Here is the step by step breakdown of what it does. It is composed of “Four” integrated phases of the analysis processing pipeline. The fidelity of “batch.py” is based on the raw logs it parses. For now the logs must be located in the same directory as batch.py. I use secure copy (scp) to download my logs located on my amazon web services to a local directory on my computer.
 
As a security conscious analyst, persistence security of data should be a priority. This is the start of “batch”, you can either log in as full admin or grant access to guests. To use the 
batch.py program you start by running a bash script on your local terminal window to generate a master password, I use a mac. It uses the secure hashing algorithm(SHA-256) to generate a master and a guest token.You have to generate a master password first by executing the bash script below. 

Start:
Generating master password or guest passcode.
 

 
Authentication and verification are used to prevent unauthorized access to sensitive data. The principle of least privilege (POLP) is a necessary requirement for accountability, monitoring, and data loss prevention. 

Select an option for the authentication process. 

If option two is chosen and an analyst does not have a guest passcode, a message will be generated notifying the analyst that they need to have a guest passcode for them to access the program. 

Select option 3 to generate a guest passcode and login.

Phase 1

After an analyst authenticates and is verified, the phase one process starts by gathering and feeding relevant data through the analysis pipeline, then converts the .json, .log, .gz, and any other relevant data to a .tsv file format. “TSV” stands for tab separated values.

The gathered intelligence data from querying ip-api.com, cve.org and paloaltonetworks.com are broken down into sections and fields to delineate the processing stages. With the integrated unified analysis pipeline design, batch.py is engineered for efficiency, low latency, and the rapid parsing of large volumes of logs.

Phase 2

Stage: 1
This displays on your screen showing a summary of the top 10 unique internet addresses that made contact with honeypot_omaha. 

Stage: 2
As you can observe on what is displayed on the screen. I only have two cowrie protocols shown. There are more but on this stage I am focusing on just a few of the protocols used by cowrie.

Stage: 3
This displays on your screen the top 10 correlation of usernames to their respective internet address.

Stage: 4
This shows the top 10 correlation of passwords to their respective internet addresses.

Stage: 5
This displays the top 10 talkers with possible threat intelligence, attempts, geolocation, and their respective internet service and cloud providers. Not all top talkers are threat actors or have malicious intents. This requires the know-how and expertise of trained analysts to dissect and discern relevant data from noise.

Stage: 6
As an analyst, a long tail analysis of the data of interest will give you an idea of where to start your analysis. Sometimes threat actors use beaconing and command and control to relay data back and forth. Check for specific time intervals.

Stage: 7
Batch aggregates all the data it has parsed and gives a summary of how many attempts were made by the threat actors to an endpoint.

Phase 3
Generates a summary report and visual pie chart compilation.

Stage: 8
Compilation and summarization of data, using matplotlib to create the pie charts in a png file format and generating text document reports. 

Phase 4
This phase displays an interactive menu an analyst can use to further examine and analyze data. It comprises six numbered menu points. Let's start with the first menu.

Stage: 9
An easy navigation menu for an analyst to access detailed information on a given threat actor's internet address and activities.

Menu 1
Any artifacts found or indication of compromise will be displayed here using the program "less". Instead of having my data clutter and flood my screen, less seems like a better option.

Menu 2
This is a cumulation of all the exploits used by the malicious actors. It is a lot and it is sorted by the highest threat rating score.


Menu 3
Option menu three is used to navigate the pie chart options. An analyst has the choice of generating an individual chart or both. 


It is always good practice to provide error feedback if the program fails to execute seamlessly.

The pie chart is dynamically generated once the pipeline is initiated. An analyst can choose any of the options to initiate the process of populating the pie chart with the data of interest, and displaying it on the monitor.  Below is an example of a dynamically generated pie chart with all information.

The pie chart below shows the top talkers, protocols, usernames, and passwords.



Made using matplotlib.

Menu 4
This menu option is a quick console overview of what was found when batch executed and initiated the unified processing pipeline. 

There are over four hundred file artifacts discovered. The data is viewed using the “ less” program, an analyst can use the built-in sort functionality to sort the data. 

Menu 5
An analyst can query an internet address or fully qualified domain name and search for more data related to that internet address. A "
honeypot_Omaha_query_reoprt.txt"  is generated.


After some analysis I observed that the threat actor made twenty-eight attempts and it shows a lot of the malicious actors' detailed activities. An analyst can use this consolidated view to analyze the data all in one screen. It displays the behavior analysis, pattern, utc timestamps, a count of how many attempts were made, the threat actors credentials and more.

Attempt number five displays the malicious actor’s secure shell client hash fingerprint: 2ec37a7cc8daf20b10e1ad6221061ca5 showing an established session. Attempt number 6 shows a failed login.

At attempt number eight, the threat actor used a different password. Attempt number nine shows the secure shell version used. An analyst can track session id, there are five recorded sessions made by the threat actor. 

A new connection and login were successfully established at attempt number ten and eleven, batch displays the fingerprint and login details

The malicious actor has gained access to the system. I observed multiple commands executed on attempt number thirteen, such as exporting of the “usr/local/sbin”. This is the location that contains the system administration program tools and daemons installed locally by the owner of the system. “uname” and "Busybox” are visible, this threat actor gained and exfiltrated a wealth of information about the compromised system. The threat actor is covering up its activities by using this command “rm -rf filter”. This command recursively deletes any file or folder that is named filter. The rm removes any shell commands used in a Linux operating system, -r stands for recursive, which is used to perform a deep granular deletion of data forcefully. I am going to make an educated guess**—**Basically, the threat actor is probing, gathering data, and cleaning up their tracks.

Connection lost on attempt number fifteen.

The malicious actor is now using a different password as displayed on attempt number sixteen. 

A failed attempt was logged on attempt number nineteen and the connection was lost at attempt number twenty. Another attempt to re-establish a connection was successful as observed on attempt number twenty-four. 

As an analyst, you are a step behind the threat actor and must follow whatever digital breadcrumbs they leave behind to understand their movements. Every action creates a pattern—often captured by the acronym “RIPLE” (Reconnaissance, Initial exploitation, Persistence-privilege escalation, Lateral movement, and Exfiltration of data). As I often say, if you throw a rock into a pond, it produces a ripple effect.

The relentless, defenseless assault on honeypot_omaha continued, as shown on attempt number twenty-six.

Connection lost again and the threat actor exited as displayed on the screen at attempt number twenty-eight. A summary report of the threat actors’ activities is generated below.

Reflecting back to the original questions at the beginning of the diary. How did the threat actor gain access to the system, what was exfiltrated, and how do I as an analyst go about gathering more data for further investigation?

Recalling from the previous discussions, cowrie is designed to be vulnerable, so the malicious actor was able to guess the username and password.

Summary report on the shell commands executed on honeypot_omaha is generated and displayed on the screen. 

The batch.py script performed a detailed query on the application programming interfaces of  cve.org, paloaltonetworks.com and ip-api.com to generate and correlate intelligence data related to a suspected system compromise. It displays the threat rating score, status code, associated exploits, attack intent, and mitigation strategies. The targeted endpoints are sorted by their threat rating score and displayed below.

Reconnaissance and script profiling reveal the behavioral fingerprints of automated malware, botnets, or exploit payloads when they first gain access to a compromised shell**—in this case,** captured by honeypot_omaha as a “cowrie.command.input” event. Always practice persistence defense in depth, principle of least privilege’ and continuous diagnostics and mitigation. 
As an analyst, I was inquisitive about the data and conducted Google research on the internet service provider called “Pptechnology limited” and the executed commands. Below is a description of the internet service provider and a breakdown of what each section of the command does:

PPTECHNOLOGY LIMITED: Often associated with the brand/network name PTechnology) is a corporate entity and network infrastructure holder that has appeared in cybersecurity research, threat intelligence reports, and UK corporate registries.
Corporate Profile & UK Registration

Company Status: According to UK Companies House records, PPTECHNOLOGY LIMITED (Company Number: 12176225) was incorporated on August 27, 2019, and was officially dissolved on December 23, 2025.
Registered Address: It was registered at a mass-registration virtual office address in London (35 Firs Avenue)—a location known for hosting thousands of distinct corporate entities.
Registered Nature of Business: Officially classified under SIC code 96090 (Other service activities not elsewhere classified).

Threat Intelligence Context

In cybersecurity investigations (such as threat-hunting reports tracking offshore or "bulletproof-style" hosting infrastructure—notably research by firms like Team Cymru examining networks associated with anonymous hosting, ignore-DMCA setups, and malicious campaigns like Jingle Shells), PPTECHNOLOGY LIMITED has surfaced in analyses of proxy infrastructure:

Shell/Paper Companies: Security researchers have identified that shell and dormant UK entities like PPTECHNOLOGY LIMITED are frequently used as corporate facades or administrative holders for IP space and backend infrastructure associated with high-privacy or quasi-anonymous hosting environments.

Fraud Risk Scoring: Due to the nature of the IP blocks assigned to or historically associated with it, security scoring engines (like Scamalytics or VirusTotal) often flag traffic originating from these ranges as carrying higher risk or anonymity traits.

Note: The analysis above was performed by the analyst, using Google.com solely to research the internet service provider and executed commands. 

 


Guildma (Astaroth) malware infection from Brazilian Portuguese email

3.9.2026  SANS 

Introduction

On Monday 2026-08-31, I used a link from a malicious Brazilian Portuguese email to infect a Windows host in my lab. This was a Guildma (Astaroth) malware infection.

The link from the email is geofenced for Brazil, meaning that it would only deliver the malware if I checked it from a Brazil-based IP address. Otherwise, it would send a legitimate installer (in this case for Android Studio) and not the malware. Furthermore, my web browser and operating system needed to use Brazilian Portuguese language settings and Brazil regional settings.

The initial downloaded file was a zip archive that contained a Windows shortcut. The shortcut retrieved content from a web server and saved it as an alternate data stream to a file created under the user's AppData\Local\Temp directory. This alternate data stream contained a 64-bit DLL file that doesn't appear to be malicious, but it was used to retrieve and install an AutoIt package for Guildma malware.

Today's diary shares indicators from the activity. Of note, many of the specific indicators like some of the SHA-256 hashes appear to be unique for this particular infection.

Images From the Infection


Shown above: Screenshot of the email.


Shown above: Malicious file downloaded from link in the email.


Shown above: Traffic from the infection filtered in Wireshark.


Shown above: Malware persistent on the infected Windows host.

Indicators of the Activity

Select headers from the email:

Link from the message text: 

Downloaded zip archive and extracted Windows shortcut:

SHA-256 hash: cc44782356cb0effc528a7ab22c19ab360a55ebbbe01feb0967031aa191c5869

SHA-256 hash: 47d2908c4dd7f6f5eb4a8ef4306077b10315c44231f4bacd2bb811b245561911

DLL saved as an alternate data stream during the infection, doesn't appear to be malicious:

SHA-256 hash: a6044786991afdb9d42ceb350943987765a7d0e8537369b2092e3f019c0f63ca

Compiled AutoIt script for the persistent Guildma malware:

SHA-256 hash: f62a958faf0491b2b2803be2ee69b664b58e4a1261f64e8530cdc1a3ff666aa4

Domains the infected Windows host communicated with over HTTPS (TCP port 443):

TCP traffic to another domain:

Note: I saw HTTPS traffic to WhatsApp and GitHub domains later during this infection, but those are legitimate domains, so I didn't include them in this write-up. A previous article has noted this campaign abusing GitHub, so I've included the mention here. 

Bradley Duncan
brad [at] malware-traffic-analysis.net

 


Fire Ant Evolves: From Hypervisors to Trusted Infrastructure

2.9.26  SYGNIA  APT

 

First reported in 2025, Fire Ant remained active into 2026. Explore how the threat actor expanded beyond hypervisors into trusted infrastructure, compromising routers, authentication systems, and Linux management hosts to maintain covert access, collect credentials and traffic, and reach connected high-value environments.

Key Observations

Executive Summary

Fire Ant, first reported in 2025, remained active in 2026 and expanded its operations beyond hypervisors into the trusted infrastructure that routes traffic, authenticates administrators, manages access, and records activity. The main finding is that the actor was no longer targeting only individual systems, it was targeting the infrastructure layer that controls how entire environments connect and operate both within and across organizational boundaries.

This created a “target behind the target” risk. By compromising routers, authentication systems, and Linux management hosts, Fire Ant gained strategic positions from which it could collect traffic and credentials, maintain covert access, and explore paths toward connected high-value environments, including critical infrastructure. The compromise therefore had implications beyond the systems directly affected.

The actor also manipulated the evidence sources defenders depend on. It suppressed router logging, altered command output, captured administrative credentials, tampered with host logs, and deployed multiple persistent backdoors. As a result, investigators could not rely on any single source of telemetry to accurately reconstruct the activity.

The key implication for organizations is that routers, authentication servers, hypervisors, jump hosts, and management appliances must be treated as first-class security and forensic assets. These systems require the same level of monitoring, hardening, and incident-response readiness as traditional endpoints and servers. When trusted infrastructure is compromised, an attacker can gain both a path into connected environments and the ability to obscure how that access was used.

From Hypervisors to Trusted Infrastructure

Fire Ant’s earlier activity showed that hypervisors can be more than platforms that host workloads. In the hands of an advanced actor, they can become privileged vantage points from which to reach guest systems, bypass segmentation and operate under the line of sight of many endpoint controls.

The 2026 activity expands this same principle to network and management infrastructure. The actor did not only pursue servers and workstations. It targeted systems that other systems depend on: edge routers, TACACS servers, Linux jump hosts and virtualized management servers. These are the systems that decide who can reach what, which credentials are trusted and which logs exist after the fact.

This is the continuity from 2025 to 2026. The technology changed, but the strategy remained consistent: operate from layers that are trusted, privileged and difficult to inspect.

The Target Behind the Target

Highly interconnected environments are strategically valuable because they sit between systems and network zones. They provide routing, managed connectivity, authentication paths, and operational access across connected networks. A compromised infrastructure layer can become a bridge to other environments.

This is the key difference from prior Fire Ant activity. The actor appeared to use the compromised environment as an infrastructure platform from which it could explore reachability into connected high-value networks, including critical infrastructure. In this model, routers, TACACS servers and jump hosts are not peripheral assets. They are the path to the target behind the target.

For defenders, this distinction matters. If the investigation focuses only on the initially compromised systems, it may miss the broader operational objective. If the investigation treats the network and management infrastructure as a trusted connectivity layer, the scope expands to connected routes, administrative paths, shared authentication infrastructure and the systems that control segmentation.

Figure 1: The compromised environment as a bridge into connected targets.

Figure 1: The compromised environment as a bridge into connected targets.

Compromising Network Infrastructure

Fire Ant’s activity demonstrated that edge routers should not be treated as passive network infrastructure. In this intrusion, the actor gained access to Cisco IOS XR routers and turned them into operational platforms capable of supporting stealth, persistence, and potential reach into connected environments.

The investigation began with an anomaly that appeared, at first, to be a configuration inconsistency: a tunnel interface became operational on a Cisco IOS XR router even though no corresponding running configuration or commit history could explain its creation. The interface was associated with a specific VRF and used GRE encapsulation, but standard configuration review did not provide a reliable explanation for how it appeared. This discrepancy became a key investigative lead because it suggested that the device’s operational state could no longer be trusted to match the configuration and audit records visible to administrators.

Inside Fire Ant’s IOS XR Router Toolkit

Fire Ant’s router compromise was not built around generic Linux tooling. The malware recovered from the compromised Cisco IOS XR environment was purpose-built for the router control plane, with components that interacted directly with IOS XR logging, command execution, routing, VRF resolution, AAA, and Telnet-management functions. This distinction is important: Fire Ant was not simply running malware on a Linux-based appliance; it was modifying the systems that make the router manageable and trustworthy.

The toolkit included a boot-themed persistence script on /etc/rc.d/init.d/grub-rommon masquerading as a legitimate service.

Figure 2: Masqueraded grub-common service used to monitor and launch the acpid implant.

Figure 2: Masqueraded grub-common service used to monitor and launch the acpid implant. This script monitored and launched the acpid implant from /usr/bin/acpid, using an hourly schedule that started the implant during odd-numbered hours and stopped it during even-numbered hours. The design suggests an attempt to maintain access while reducing continuous process visibility during routine inspection.

A code snippet in a programming language that defines a function to check if the current hour is odd or even.

Figure 3: The persistence script starts acpid only during odd-numbered hours and stops it during

Figure 3: The persistence script starts acpid only during odd-numbered hours and stops it during The acpid component embedded a modified IOS XR syslog library. In the modified evsyslog flow, log delivery was routed through a custom wrapper that checked for the string “Health” before calling mq_send. When the condition was not met, the wrapper returned a success-like value without forwarding the message, indicating selective manipulation of router log delivery.

Code snippet showing a function `evsyslog` that builds a syslog message, opens a message queue, and sends the message with error handling.

Figure 4: Modified IOS XR syslog flow in acpid: log delivery is routed through sub_7000, which conditionally forwards messages to mg_send based on the presence of “Health”.

Figure 4: Modified IOS XR syslog flow in acpid: log delivery is routed through sub_7000, which conditionally forwards messages to mg_send based on the presence of “Health”. The acpid component also contained shell-related indicators, including references to pseudo-terminal paths, interactive connection banners, escape-sequence handling, and a command to unset shell-history environment variables. It indicates that acpid likely supported interactive access or shell staging in addition to its telemetry-manipulation role.

Figure 5: Shell-related strings in acpid indicate interactive session support, and shell-history suppression logic.

Figure 5: Shell-related strings in acpid indicate interactive session support, and shell-history suppression logic.
Another component, masquerading as /pkg/bin/dhcpd_show_issu_status, provided outbound connectivity. The binary contained a hardcoded external IP address and Telnet client functionality, while importing IOS XR-specific routing, VRF, RIB, and Telnet-management libraries. This indicates that the actor designed the communication component to operate from within the router’s native networking context rather than relying on standard Linux networking behavior.

Figure 6: Telnet communication logic in dhcpd_show_issu_status passes the hardcoded C2 IP address into the connection flow after Telnet session setup and state checks

Figure 6: Telnet communication logic in dhcpd_show_issu_status passes the hardcoded C2 IP address into the connection flow after Telnet session setup and state checks
Fire Ant also attempted to manipulate what administrators could see from the router CLI. Reverse engineering of the recovered /pkg/bin/hd component showed that the actor modified the IOS XR command execution path to append an IOS-style “| exclude” filter to show commands before forwarding them to the normal shell_send_cmd() routine. Separately, command history from the affected device showed repeated show commands using exclusion filters that matched tunnel-related configuration elements, including the tunnel interface, VRF, tunnel source, tunnel VRF, and tunnel destination.

Taken together, these components show that Fire Ant treated routers as operational platforms. The actor built capabilities for persistence, outbound communication, syslog suppression, and command-output manipulation. In a highly interconnected environment, this level of router control is strategically significant: a compromised edge router can become a vantage point for covert connectivity, traffic observation, and access to connected networks, including critical infrastructure environments that rely on trusted routing and management paths.

Following the GRE Tunnel

The tunnel anomaly also shifted the investigation from the compromised router itself to the infrastructure it appeared to connect with. Once Fire Ant demonstrated the ability to manipulate the router’s configuration view, suppress telemetry, and potentially conceal operational state, the key question was no longer only how the tunnel was created, but where it led and what role the other side played in the operation. Tracing the far end of the GRE tunnel exposed another part of the actor’s infrastructure: a legacy Linux system.

Activity on the Linux system showed that the GRE tunnel was not only an anomalous configuration artifact; it was also an operational path. From this host, Fire Ant conducted repeated connection attempts and port probing toward connected high-value environments, including systems associated with critical infrastructure. The observed activity included attempts against common administrative and service ports such as SSH, HTTP/HTTPS, SMB/RPC-related ports and RDP. This indicates that the actor used the tunnel to extend reach beyond the compromised router and into environments reachable through the compromised network infrastructure.

Figure 7: /var/log/secure entries showing repeated sshd connect_to failures toward connected IP addresses and common service ports, indicating scanning activity routed through the Linux host.

Figure 7: /var/log/secure entries showing repeated sshd connect_to failures toward connected IP addresses and common service ports, indicating scanning activity routed through the Linux host.
This shifted the role of the Linux host from a passive tunnel endpoint to an active staging and reconnaissance node. On this system, investigators identified a suspicious binary named zabbix_agent. Although the name appeared to imitate a legitimate Zabbix monitoring component, the binary did not align with expected Zabbix behavior. Instead, it functioned as a backdoor that supported actor-controlled access and command execution from the Linux management host. The legitimate Zabbix agent is typically named zabbix_agentd, making the zabbix_agent filename a likely attempt to blend into a monitoring environment.

BridgeAgent

Sygnia tracks this Zabbix-masquerading implant as BridgeAgent, reflecting its role on the GRE-connected Linux host as a bridge for actor-controlled access into connected environments.

BridgeAgent is configured for persistence through a zabbix_agent.service systemd unit, set to run as root with automatic restart behavior. Once executed, BridgeAgent changed its apparent command line to resemble /usr/bin/gnome-shell, loaded encrypted configuration from /opt/.ICEauthority, and performed periodic HTTPS polling to retrieve controller-supplied configuration.

Figure 8: BridgeAgent execution flow: persistence through zabbix_agent.service, command-line masquerading as /usr/bin/gnome-shell, encrypted configuration stored at /opt/.ICEauthority, periodic HTTPS polling, and outbound TLS reverse-shell capability.

Figure 8: BridgeAgent execution flow: persistence through zabbix_agent.service, command-line masquerading as /usr/bin/gnome-shell, encrypted configuration stored at /opt/.ICEauthority, periodic HTTPS polling, and outbound TLS reverse-shell capability.
BridgeAgent stored its runtime configuration in encrypted form under /opt/.ICEauthority. Static analysis of the binary identified an embedded AES key used to decrypt this configuration. This design allowed the implant to keep C2 parameters out of plaintext on disk while still retrieving them locally at runtime.

Figure 9: BridgeAgent stores its runtime configuration as an encrypted blob, with an embedded AES key enabling local decryption of C2 parameters at runtime.

Figure 9: BridgeAgent stores its runtime configuration as an encrypted blob, with an embedded AES key enabling local decryption of C2 parameters at runtime.

 Using the recovered AES key, Sygnia decrypted the .ICEauthority configuration file and recovered the implant’s runtime settings, including controller host, port, polling interval, host identifier, and reverse-shell parameters.

Figure 10: Decrypted BridgeAgent configuration from /opt/.ICEauthority, revealing connection parameters used for outbound C2 polling and reverse-shell configuration.

Figure 10: Decrypted BridgeAgent configuration from /opt/.ICEauthority, revealing connection parameters used for outbound C2 polling and reverse-shell configuration.
BridgeAgent’s runtime logs showed repeated attempts to establish TLS-based outbound connectivity to actor-controlled infrastructure over port 443. The logs also showed the implant processing controller-supplied configuration and attempting to launch reverse-shell functionality, indicating that the malware was designed to operate as an outbound command-and-control backdoor rather than as a normal monitoring agent.

Figure 11: Journal logs showing BridgeAgent loading encrypted configuration, parsing controller-supplied connection parameters, and attempting TLS-based outbound communication to actor-controlled infrastructure.

Figure 11: Journal logs showing BridgeAgent loading encrypted configuration, parsing controller-supplied connection parameters, and attempting TLS-based outbound communication to actor-controlled infrastructure.
Additional journal evidence showed BridgeAgent launching a secondary binary named ntfsfixed. The child process connected to actor-controlled infrastructure and included the magic string KS2ow2232ssww2342234323 in its command line. This suggests that BridgeAgent acted not only as a backdoor, but also as an execution mechanism for additional actor tooling on the Linux host.

Figure 12: Journal logs showing BridgeAgent launching the secondary binary ntfsfixed, which connected to actor-controlled infrastructure using a command-line magic string.

Figure 12: Journal logs showing BridgeAgent launching the secondary binary ntfsfixed, which connected to actor-controlled infrastructure using a command-line magic string.
BridgeAgent’s role was therefore broader than simple backdoor access to a Linux host. The implant was positioned on infrastructure connected to the GRE tunnel and gave the actor an operational foothold at the boundary between the compromised environment and connected networks. From this position, Fire Ant could receive commands from external infrastructure, execute additional tooling, and use the tunnel path to explore reachability beyond the immediate victim environment.

Figure 13: The actor reaches BridgeAgent on the legacy Linux server, where a GRE tunnel provides a pivot to the edge router and opens a route into a connected environment.

Figure 13: The actor reaches BridgeAgent on the legacy Linux server, where a GRE tunnel provides a pivot to the edge router and opens a route into a connected environment.

Routers as Collection Points

After establishing access to router infrastructure, Fire Ant used the network layer as an intelligence source. The actor was observed capturing traffic from multiple Cisco routers and uploading the resulting PCAP files to external FTP infrastructure. This behavior shifts the router’s role from a transit device to a collection platform. once the actor controlled the router, the device became a vantage point for observing traffic moving through trusted network paths.

Figure 14: Router administration logs showing PCAP files exported from Cisco routers to external FTP infrastructure.
The activity was performed through router-administration workflows using a legitimate administrative account. Traffic captures were generated from multiple router interfaces and uploaded to external FTP servers. The observed activity involved several routers, indicating that the actor was not collecting from a single point of access but was selecting network vantage points from across the environment.

Router-based PCAP collection is especially valuable for infrastructure-focused actors. Packet captures from routers can expose internal topology, management connections, authentication flows, routing relationships, and traffic patterns between connected environments. Unlike endpoint collection, which gives visibility into a single host, router collection can provide a broader view of how systems, administrators, and connected networks interact.

The timing and preparation of the external FTP infrastructure also stood out. One of the FTP services used for the uploads appeared to have been installed on the same day the router PCAP upload activity occurred, suggesting that the actor prepared external collection infrastructure close to the operational window.

Additional router commands observed around the same administrative activity included access to command-history-related paths and traceroute activity toward unusual external domains. The pattern is consistent with an actor using routers for both collection and network reconnaissance.

This activity reinforces one of the core observations from the investigation: when a threat actor controls routers, they do not only gain reach. They gain perspective. Fire Ant used network infrastructure to observe the environment from the inside, collecting information that could support lateral movement, credential targeting, and cross-network access planning.

Owning the Authentication Layer

Fire Ant’s activity extended beyond the routers themselves into the systems used to authenticate and record administrative access to them. This is a critical distinction: the actor was not only abusing valid credentials but also targeting the infrastructure responsible for validating those credentials and preserving the audit trail.

On the TACACS server, investigators identified a VMCI-socket-based backdoor deployed under /var/tmp/audit. The backdoor supported communication over VMware VSOCK/VMCI interfaces, providing an access path that would not necessarily appear as a normal network login to the guest operating system. This finding connected the TACACS compromise back to Fire Ant’s broader pattern of abusing virtualization-adjacent access paths.

Figure 15: The /var/tmp/audit backdoor contains VSOCK/VMCI logic, including AF_VSOCK socket creation and fallback access to VMware VSOCK device paths.

Figure 15: The /var/tmp/audit backdoor contains VSOCK/VMCI logic, including AF_VSOCK socket creation and fallback access to VMware VSOCK device paths.

TacTap

The investigation also identified a malicious binary, /usr/sbin/acppid. Sygnia tracks this TACACS credential-collection toolset as TacTap. TacTap should be understood as a multi-component mechanism rather than a single binary: /usr/sbin/acppid acted as the injector and collection process, while /lib/libseconfd.so operated inside the tac_plus process. Together, the components enabled library injection, accepted-session interception, Unix-socket file-descriptor handoff through /var/run/acpid.lock, and creation of the XOR-obfuscated credential artifact at /var/log/.tacplus.acct

Reverse engineering of acppid showed that the binary was designed to maintain a malicious shared object inside the TACACS daemon. The original IDA view shows that acppid retrieves optional runtime configuration from the TARGET_PROG and SO_PATH environment variables. If those values are not provided, it defaults to targeting the tac_plus process and using /lib/libseconfd.so as the shared object path.

Figure 16: Reverse engineering of accpid showing default targeting of the tac_plus process and loading path for the malicious shared object /lib/libseconfd.so

Figure 16: Reverse engineering of accpid showing default targeting of the tac_plus process and loading path for the malicious shared object /lib/libseconfd.so
To improve readability, the next snippet is a simplified pseudocode reconstructed from the binary. It preserves the relevant injection logic while omitting decompiled artifacts and unrelated error handling.

Figure 17: Simplified pseudocode reconstructed from acppid, showing how the implant locates tac_plus, checks whether /lib/libseconfd.so is already mapped, writes the embedded payload, invokes the injection routine, and removes the on-disk library afterward.

Figure 17: Simplified pseudocode reconstructed from acppid, showing how the implant locates tac_plus, checks whether /lib/libseconfd.so is already mapped, writes the embedded payload, invokes the injection routine, and removes the on-disk library afterward.

The injected library, libseconfd.so, was designed to operate inside the TACACS process. Reverse engineering showed that it hooked accept and accept4, placing the implant inside the TACACS session-handling path. This allowed the malicious code to interact with newly accepted TACACS client connections from within the service process itself.

The hook then forwarded accepted connection file descriptors to acppid through a local UNIX socket at /var/run/acpid.lock, using sendmsg-style file-descriptor passing. This design allowed one malicious component inside the TACACS process to hand live connection handles to another process, enabling the actor to observe or process TACACS session material from within the authentication flow.

Figure 18: After intercepting accepted TACACS connections, libseconfd.so forwards the accepted socket file descriptor to acppid over /var/run/acpid.lock.

Figure 18: After intercepting accepted TACACS connections, libseconfd.so forwards the accepted socket file descriptor to acppid over /var/run/acpid.lock.

The operational result of this access was visible in the recovered credential artifact. Investigators identified an encrypted file at /var/log/.tacplus.acct containing TACACS-related credential material. The file was encoded using a single-byte XOR scheme, indicating that the actor attempted to lightly obfuscate the harvested data while keeping it simple to recover operationally. This artifact connects the injection and session-handoff mechanism to credential collection from the authentication layer.

Figure 19: TACACS malware workflow showing library injection, accepted-session handoff through a UNIX socket, and credential artifact creation

Figure 19: TACACS malware workflow showing library injection, accepted-session handoff through a UNIX socket, and credential artifact creation
The recovered /var/log/.tacplus.acct file was decoded using a single-byte XOR operation with key 0xEF, revealing TACACS-related credential material.

The key choice is notable because Mandiant previously documented UNC3886 TACACS credential-collection tooling in which captured credential records were also XORed with 0xEF before being written to a credential log file. In this case, however, the more significant finding is the collection mechanism itself: Fire Ant used acppid to inject libseconfd.so into the running tac_plus process, intercept accepted TACACS sessions, pass connection file descriptors back through /var/run/acpid.lock, and write the resulting credential artifact to /var/log/.tacplus.acct. To our knowledge, this specific tac_plus library-injection technique has not been publicly described before, making it a notable evolution of Fire Ant’s TACACS-focused credential collection tradecraft.

Figure 20: CyberChef decoding of /var/log/.tacplus.acct using single-byte XOR key 0xEF, revealing TACACS-related credential material.

Figure 20: CyberChef decoding of /var/log/.tacplus.acct using single-byte XOR key 0xEF, revealing TACACS-related credential material.

This technique is more significant than ordinary credential theft. TACACS servers sit at an administrative chokepoint: they authenticate users, authorize commands, and record activity across network devices. By compromising this layer, Fire Ant positioned itself close to the trust boundary between administrators and infrastructure. The actor could potentially harvest credentials as they were used, observe administrative activity, and create ambiguity between legitimate account use and malicious activity.

The lesson is clear: when the authentication layer is compromised, defenders can no longer ask only “which account performed the action? They must also ask whether the system recording that action can still be trusted.

Building the Access Layer

Fire Ant did not rely on a single foothold. Across Linux management infrastructure, the actor built a durable access layer using Medusa-rootkit, custom SSH backdoors, masqueraded binaries, credential capture, and host-level configuration changes. The objective was not only to compromise Linux hosts, but to convert them into reusable operational infrastructure.

A key feature of this access layer was its duration. Several Linux access components were deployed in 2025 and remained available into 2026, when Fire Ant was later observed using them for hands-on activity. This shows that the actor treated Linux management hosts as long-lived staging and access nodes, not temporary footholds.

The long-lived nature of this access layer was visible in the Linux bodyfile timeline. Several Medusa-rootkit-related and custom SSH backdoor artifacts were created in 2025, including files under /usr/lib/locate and binaries such as /usr/sbin/cupsdd and /usr/sbin/smartdd. These artifacts remained relevant into 2026, when Fire Ant later launched hands-on activity through the same access layer

Figure 21: Linux bodyfile timeline showing 2025 creation of Medusa-rootkit-related and custom SSH backdoor artifacts, with later 2026 activity demonstrating reuse of the long-lived access layer.

Figure 21: Linux bodyfile timeline showing 2025 creation of Medusa-rootkit-related and custom SSH backdoor artifacts, with later 2026 activity demonstrating reuse of the long-lived access layer.

The names cupsdd and smartdd appear designed to blend in with legitimate Linux service names: cupsd, the CUPS printing daemon, and smartd, the smartmontools storage-health daemon.

One example of this reuse was the custom SSH backdoor /usr/sbin/cupsdd. The process tree below reflects 2026 operator activity launched through the prepositioned access layer, rather than initial deployment. Through cupsdd, Fire Ant staged and executed additional tooling from /var/tmp, including client and se.py, to support reverse-shell and tunneling activity. Because this access path operated outside the normal SSH service flow, it likely reduced the forensic footprint expected from a conventional SSH session.

Figure 22: Process tree showing 2026 threat actor activity launched from /usr/sbin/cupsdd, including file staging, permission changes, execution of client, and reverse-tunneling activity through se.py.

Figure 22: Process tree showing 2026 threat actor activity launched from /usr/sbin/cupsdd, including file staging, permission changes, execution of client, and reverse-tunneling activity through se.py.
Fire Ant also reinforced this access layer with credential capture.

The file /var/log/remote.txt contained harvested SSH credentials from user sessions, providing the actor with a credential-based fallback alongside its implants. This meant that even if an implant was removed or a backdoor was discovered, the actor may still have retained reusable credentials for future access.

Figure 23: Contents of /var/log/remote.txt showing captured credentials from user accounts on the Linux management host.

Figure 23: Contents of /var/log/remote.txt showing captured credentials from user accounts on the Linux management host.

The actor also used process masquerading to make malicious tooling appear legitimate. Fire Ant staged a binary named /var/tmp/ping, renamed it to resemble the endpoint security software, SentinelOne, moved it into a directory associated with the security agent, modified timestamps to match legitimate SentinelOne files, and executed it from that trusted-looking path. In another case, the same style of masquerading was observed under a Cybereason-like path.

Even after the executable was removed from disk, the process remained active in memory. This demonstrates how Fire Ant combined trusted naming, timestamp manipulation, and deleted-but-running execution to hinder defender analysis and reduce the value of disk-only triage.

Figure 24: Deployment process and defense evasion techniques used by Fire Ant during ping deployment

Figure 24: Deployment process and defense evasion techniques used by Fire Ant during ping deployment

Figure 25: Memory analysis showing the masqueraded binary is active in memory

Figure 25: Memory analysis showing the masqueraded binary is active in memory
The deleted executable was later recovered from memory for analysis.

Analysis showed that the binary initially staged as /var/tmp/ping and later disguised under an endpoint-security path was not a simple reverse-shell launcher. Instead, it was a packet-triggered backdoor that inspected raw network traffic for embedded activation markers before establishing operator access.

The binary showed strong functional and code-level overlap with REPTILE-style tooling publicly associated with UNC3886. Similar to REPTILE, it created a raw Layer-2 packet socket, parsed received packets directly, and searched for magic strings before activating. Notably, the sample reused the “hpaVAj2FJ“ kill marker, which has been publicly documented as a REPTILE kill marker. However, the sample was not identical to the previously reported REPTILE implementation: its primary activation marker was “sxcdewqaz!@#” rather than “mznCvqSBo”, and its packet-decoding logic differed from the date-derived XOR routine described in earlier reporting.

The ping binary also showed operational linkage to the earlier se.py activity through the same magic string, “sxcdewqaz!@#”, which was observed in the actor’s connect-back workflow. This suggests that the actor reused a common activation or session-control marker across multiple access components, while adapting the underlying implementation and filenames.

Packet triggered function

Analysis showed that the malware is a raw packet triggered remote-access controller, that listens on the network interface for TCP packets destined for ports 443, 541, 8443, or 10443, and UDP packets sent from source port 40443 and destination port 500. The malware looks for network packets with two magic strings within the packet.

Figure 26: Packet-trigger logic showing the implant parsing IPv4 ICMP echo traffic and searching for embedded magic strings used to activate or control the backdoor.

Figure 26: Packet-trigger logic showing the implant parsing IPv4 ICMP echo traffic and searching for embedded magic strings used to activate or control the backdoor.

 The code below shows that the implant monitored raw IPv4 Ethernet traffic and accepted activation data through:

Figure 27: Trigger-port filtering logic showing the implant monitoring TCP destination ports 443, 541, 8443, and 10443, as well as UDP traffic from source port 40443 to destination port 500.

Figure 27: Trigger-port filtering logic showing the implant monitoring TCP destination ports 443, 541, 8443, and 10443, as well as UDP traffic from source port 40443 to destination port 500.

A second magic string, ;7(Zu9YTsA7qQ#vw, appeared to mark command completion, file-transfer completion, or control-session termination.

Figure 28: Control-session handling logic showing the implant checking for the magic string ;7(Zu9YTsA7qQ#vw, likely used to mark command completion or session termination.

Figure 28: Control-session handling logic showing the implant checking for the magic string ;7(Zu9YTsA7qQ#vw, likely used to mark command completion or session termination.

Interactive PTY Shell

The malware creates a PTY pair; the master side is for controlling process to send and receive data while an interactive shell is attached to the slave side. By setting the HISTFILE value to null, the bash history logging is disabled. Hence, the commands executed by the threat actor could not be seen from the .bash_history file. However, analysts can rely on other log sources such as journal log and EDR telemetry.

Figure 29: Interactive shell setup showing PTY-related logic and HISTFILE= manipulation to suppress bash history logging during operator activity.

Figure 29: Interactive shell setup showing PTY-related logic and HISTFILE= manipulation to suppress bash history logging during operator activity.

The malware also handled terminal settings from the remote peer, including terminal type and window dimensions. This allowed applications launched inside the remote shell to behave as though they were connected to an operator-controlled terminal.

Figure 30: Terminal-handling logic showing the implant receiving the remote terminal type, setting TERM, and processing terminal window dimensions to support an interactive PTY session.

Figure 30: Terminal-handling logic showing the implant receiving the remote terminal type, setting TERM, and processing terminal window dimensions to support an interactive PTY session.

Fire Ant reconfigured the configurations of the compromised Linux management hosts so that they could sustain and relay access rather than simply running an isolated malware. The actor weakened or disabled SELinux, modified iptables rules governing SSH, redirected selected inbound connections from port 22 to port 443, and enabled IPv4 forwarding. These changes turned the Linux management hosts into covert access and tunneling nodes capable of receiving traffic on an alternative port and forwarding it onward into the environment.

Figure 31: Commands used by Fire Ant to allow malicious files to stay undetected and facilitate communication between infected machines

Figure 31: Commands used by Fire Ant to allow malicious files to stay undetected and facilitate communication between infected machines

This design provided Fire Ant with an independent fallback channel that did not depend on the host’s legitimate SSH service or a continuously listening application port. The process could remain dormant until a valid trigger arrived, while support for ICMP, TCP, and UDP gave the actor several possible paths through network controls. Combined with masquerading as legitimate files, timestamp manipulation, deleted-but-running execution, cupsdd, Medusa-related persistence, and reverse-tunneling tools, the implant strengthened Fire Ant’s layered access architecture: removing one binary or closing one service would not necessarily eliminate the actor’s ability to return.

Making the Infrastructure Lie

Across the observed activity, Fire Ant repeatedly targeted the reliability of telemetry itself. The actor did not just seek to remain unseen. It modified, bypassed or removed the systems defenders normally use to reconstruct an intrusion.

On network devices, the actor manipulated the evidence layer by hiding logs, hiding commit activity, suppressing AAA requests, suppressing SNMP traps and filtering command output. On Linux systems, the actor deleted files after execution, left processes running from deleted paths, disabled SELinux, tampered with logs and modified firewall rules. On access appliances and management paths, incomplete command and authentication telemetry created ambiguity around how specific SSH sessions were established.

The result is a fundamental investigative problem: the environment may contain evidence, but the evidence sources may no longer be fully reliable. For this class of actor, defenders cannot simply collect logs and assume they represent ground truth. They must validate logs against memory, disk, network telemetry, authentication records, configuration state, and independent external observations.

Fire Ant anti-forensic activity on the Linux management hosts was selective. The actor replaced the Cisco router’s IP address with an internal IP address within three authentication artifacts, /var/log/wtmp, /var/log/utmp and /var/log/btmp.

Figure 32: Commands used to rewrite Linux login-history artifacts by replacing references to with in wtmp, utmp, btmp, and lastlog.

Figure 32: Commands used to rewrite Linux login-history artifacts by replacing references to with in wtmp, utmp, btmp, and lastlog.
Fire Ant removed sudo-related entries from /var/log/messages and /var/log/secure, reducing the reliability of standard Linux audit artifacts.

Figure 33: Commands used to remove sudo-related entries from Linux log artifacts, reducing visibility into privileged activity and weakening forensic reconstruction.

Figure 33: Commands used to remove sudo-related entries from Linux log artifacts, reducing visibility into privileged activity and weakening forensic reconstruction.
By disabling or weakening SELinux, the actor reduced a host-level control that could otherwise constrain post-exploitation behavior, even for privileged processes.

Figure 34: Content of a modified /etc/selinux/config file where SELinux is disabled.

Figure 34: Content of a modified /etc/selinux/config file where SELinux is disabled.

Threat Intelligence Context

Fire Ant’s activity should be understood in the broader context of infrastructure-focused espionage tradecraft. Public reporting from Mandiant and Google Cloud describes UNC3886 as a China-nexus espionage cluster with a sustained focus on virtualization platforms, edge devices and network infrastructure. Sygnia assesses that Fire Ant activity strongly overlaps with this public reporting.

The overlap is strongest at the level of durable behavior. Public reporting has described VMCI-based backdoors, TACACS credential theft, Medusa-rootkit usage, custom SSH access, and router-focused operations. Sygnia’s 2026 observations contain the same operational themes: virtualization-adjacent access, credential capture from authentication infrastructure, Linux rootkits, custom SSH backdoors, router compromise, and deliberate telemetry suppression.

The differences are also important. Several filenames, paths and deployment details differ from public reporting. This should not be treated as a contradiction. For mature actors, atomic indicators often change after exposure, while the operating model remains stable. In this case, the stronger correlation comes from how the actor uses infrastructure, not from whether every path or filename matches a previous report.

Fire Ant’s Objective

The new intelligence value from Sygnia’s observations extends the model into a highly interconnected environment where routers, TACACS servers and Linux management hosts were used as part of a broader access and collection layer. This reinforces the view that Fire Ant/UNC3886-like operations are not endpoint-centric campaigns. They are infrastructure-control-plane campaigns.

From a threat intelligence perspective, this also clarifies the likely objective behind the activity. In a highly interconnected environment, routers, TACACS servers, virtualization platforms, and Linux management hosts are not only internal systems; they are part of the trusted infrastructure layer that connects, authenticates, and manages access across connected networks. Compromising this layer can provide an actor with more than just persistence inside the immediate victim. It can create a bridge toward other high-value environments, including critical infrastructure that depends on trusted routing, authentication and management relationships.

This reinforces the “target behind the target” concept introduced earlier in this report. Fire Ant’s interest in the compromised organization should be understood not only as an attempt to compromise a single environment, but as an effort to control infrastructure that may enable visibility, collection, and potential access beyond the immediate victim. The strategic value lies in the trust relationships the organization maintains with connected environments.

Fire Ant’s Operating Model

The findings can be summarized as a four-part operating model. Fire Ant first seeks control over infrastructure systems, then uses those systems to collect intelligence and credentials, builds durable access, and conceals activity by manipulating the evidence layer.

This model is useful because it moves defenders beyond isolated IOCs. A single filename may change. A path may vary. A hash may disappear after remediation. The actor’s operational requirements, however, remain consistent: reach privileged infrastructure, understand routes and trust relationships, harvest credentials, maintain covert access, and weaken the reliability of telemetry.

Phase

What Fire Ant does

Defender implication

Control

Compromises routers, hypervisors, TACACS servers, jump hosts and access appliances.

Scope must include infrastructure that controls reachability, not only business workloads.

Collect

Captures traffic, extracts credentials and enumerates routes, users, histories and access paths.

Collection may look like administration or troubleshooting unless correlated across systems.

Build access

Deploys rootkits, custom SSH, masqueraded binaries, VMCI backdoors and scheduled persistence.

Remediation must assume multiple access paths and credential reuse.

Conceal

Suppresses logs, AAA, SNMP, command output, process artifacts and file evidence.

Investigations must validate telemetry through independent evidence sources.

Figure 35: Fire Ant operating model and defender implications.

When Trusted Infrastructure Becomes the Target

Fire Ant’s recent activity shows that mature espionage actors are no longer focused only on endpoints, servers, or cloud workloads. They are increasingly targeting the infrastructure that sits between environments: routers, hypervisors, TACACS servers, access appliances, Linux management hosts, and the systems that create trust, reachability, and visibility.

In this campaign, the compromised environment was not only a victim. By compromising infrastructure that routes traffic, authenticates administrators, manages access, and records activity, Fire Ant turned the environment into a potential access path toward connected high-value networks, including critical infrastructure. This position allowed the actor to explore reachability beyond the initially compromised environment while also weakening the evidence sources defenders rely on to understand what happened.

The central lesson is that defenders must protect more than the systems that store sensitive data. They must protect the infrastructure that makes other systems reachable, trusted, and observable. When that layer is compromised, the impact extends beyond a single organization: the actor may gain a vantage point for collection, a path toward connected targets, and the ability to make trusted infrastructure tell an incomplete story.

Threat Hunting and Detection Opportunities

Hunting Fire Ant requires defenders to prioritize behaviors and asset roles over atomic indicators. The most important question is not simply whether a known file exists. It is whether infrastructure systems are exhibiting behavior consistent with control-plane abuse, credential capture, collection or evidence manipulation.

The following hunting guidance is organized around the systems most relevant to the actor’s operating model.

Asset class

High-signal hunting leads

Network devices

• Unexpected GRE or tunnel interfaces
• Configuration state that differs from command output
• PCAP generation from routers
• FTP/SCP from routers
• Command-accounting gaps
• Shell access
• Memory anomalies in legitimate network-device processes.
• Traceroute or reachability testing to unusual external destinations

TACACS / AAA servers

• Tac_plus process injection
• Credential-like artifacts under log or temporary directories
• Command activity without corresponding login sessions
• Unexplained encryption or xor-encoded files.

Linux jump hosts and management servers

• Selinux disabling
• /var/tmp staging
• /usr/lib/locate artifacts
• Deleted-but-running processes
• Custom SSH listeners
• Suspicious iptables NAT or port redirection
• Service names that imitate legitimate daemons or security agents.

Security-agent masquerading

• Unexpected binaries under security-agent directories
• Security-agent-like processes that spawn shells, Python, scp, or network tools
• Timestomped files matching nearby legitimate agent timestamps

Tunneling and scanning activity

• Repeated /var/log/secure entries containing sshd: error: connect_to … port … failed
• Linux hosts with GRE tunnel configuration that are not approved network devices

Linux log and login-record tampering

• Use of utmpdump against /var/log/wtmp, /var/log/utmp, or /var/log/btmp
• sed replacement of IP addresses inside login-history artifacts
• sed -i ‘/sudo/d’ against /var/log/*

Figure 36: Fire Ant threat hunting and detection opportunities

Indicators of Compromise

The following indicators are selected for defensive use and have been sanitized to remove victim-specific identifiers. Organizations should treat them as starting points for hunting rather than as complete detection logic.

filename

SHA1

Role/Description

/bin/atd

C164BFC953C66E58B11FC280E69FD43B8F255839

Custom SSH backdoor

/bin/gdm          

Medusa-rootkit-related component

/usr/sbin/cupsdd

1aa6ab2006b5d9199aa87bb0bbd995aec698ac4f

Custom SSH backdoor.

/usr/sbin/smartdd

c164bfc953c66e58b11fc280e69fd43b8f255839

Medusa rootkit binary.

/opt/cybereason/sensor/bin/cybereason-agent/cybereason-agent

REPTILE like binary renamed to masquerade as Cybereason agent.

/opt/sentinelone/bin/sentinel-agent/sentinel-agent

REPTILE like binary renamed to masquerade as SentinelOne agent.

/usr/lib/locate

Medusa rootkit working directory.

/usr/lib/locate/.backup_ld.so

Medusa rootkit-related file.

/usr/lib/locate/.l

Medusa rootkit-related file.

/usr/lib/locate/.pd

Medusa rootkit-related file.

/usr/lib/locate/.pts

Medusa rootkit-related file.

/usr/lib/locate/boot.sh

Cusotm SSH backdoor and Medusa-rootkit startup script

/usr/lib/locate/libdl.so

Hijacked shared object associated with Medusa rootkit.

/usr/lib/locate/local.txt

Medusa rootkit-related file.

/var/log/remote.txt

Credential log associated with Medusa-rootkit activity.

/usr/sbin/acppid

36005f5e4398a1c62a2a9271eddfcc1b44b1ad00

TacTap -Injector targeting tac_plus; injects /lib/libseconfd.so and listens on /var/run/acpid.lock.

/lib/libseconfd.so

955cd45a2f6f226a2fdf44b329af1c8dde90cb38

TacTap – Injected TACACS library loaded into tac_plus; intercepts accepted TACACS sessions and sends descriptors to /var/run/acpid.lock.

/var/log/.tacplus.acct

TacTap – XOR-obfuscated TACACS credential artifact

/var/run/acpid.lock

TacTap – Unix socket used by acppid to receive accepted TACACS connection file descriptors.

/var/tmp/.bashrc

Threat actor shell initialization file used with bash rcfile execution.

/var/tmp/audit

13f0c2a598e3aa63856c032a96b110aed963f0e8

VMCI/VSOCK-based backdoor providing shell access through virtualization-adjacent channel.

/var/tmp/esv3X

Archive

/var/tmp/hourglass-cn

Threat actor-run script.

/var/tmp/ping

5ba1242050b5b447052b210788a5a25593d6987d

REPTILE like binary later renamed to masquerade as security agent processes.

/var/tmp/sync

7dab017f14628345d47bd4eb69cc49224f3054a7

Tineyshell

/var/tmp/tacacs.pcap

TACACS packet capture artifact created by Fire Ant

/var/tmp/ttt.tar

Threat actor-created archive.

/var/tmp/u6.py

Threat actor-created Python script.

a.zip

Threat actor-created archive.

cli.tar

Threat actor-created archive.

client

Malicious client component executed by the threat actor.

se.py

Threat actor script used for reverse connection / pivoting activity.

ttt.zip.enc

Threat actor-created archive.

/usr/bin/acpid

be6b27f429324a4af05a310d8ec9635e37c68a94

IOS XR implant

/pkg/bin/dhcpd_show_issu_status

1682b652a15bde732489f22809b0b7594c228fd3

IOS XR implant

/pkg/bin/hd

b149fa3a34bd585e7a674a4fd9538437bd06f514

IOS XR implant

/etc/rc.d/init.d/grub-rommon

6ef7d2985edf743ebff413a9298a127e9475d72f

Masqueraded startup script used for persistence

Yara Rules

rule FIREANT_BridgeAgent_Backdoor
{
    meta:
        description = "Detects Fire Ant BridgeAgent Linux backdoor"
        author = "Sygnia"
        sha256 = "110e6fb23be00d2ed251a445ee5b65aadf23b48b8db7419900d64539ad90c5a3"

    strings:
        $s1 = "[+] ########## GetRemoteCfg ##########" ascii
        $s2 = "[+] ########## ParseJson ##########" ascii
        $s3 = "[+] reverse_shell..." ascii
        $s4 = "If you want me to fake your argv, you need to call the program with a longer name." ascii
        $s5 = "/message/" ascii
        $s6 = "thread: running timeout" ascii
        $s7 = "fMDJLBukHuXgtFsCW68o5Zs1qGf" ascii
        $s8 = "2y7b4BSVukszyZz2vuZMppaA4" ascii
        $aes_key = { 07 FA AA 79 67 F1 3F 26 22 8F 5E 9A C9 0B F1 54 }

    condition:
        uint32(0) == 0x464C457F and
        5 of ($s*) and
        $aes_key
}

rule FIREANT_BridgeAgent_Systemd_Unit
{
    meta:
        description = "Detects the companion systemd service from the analyzed sample"
        author = "Sygnia analysis"
        sha256 = "251c7a2684542c29ae2c1e1282b780163bf9f844179ef0759094b2b7e2f62f0f"

    strings:
        $a = "Description=Service for zabbix hosted on PVE" ascii
        $b = "Type=forking" ascii
        $c = "ExecStart=/usr/sbin/zabbix_agent 60" ascii
        $d = "Restart=always" ascii
        $e = "User=root" ascii

    condition:
        all of them
}
rule FIREANT_TACTAP_LIBSECONFD_1 {
    meta:
        author = "Sygnia"
        description = "Detects TacTap injected TACACS library component"
        family = "TacTap"
        component = "libseconfd.so"
        sha1 = "955cd45a2f6f226a2fdf44b329af1c8dde90cb38"
    strings:
        $lib_name = "libseconfd.so" ascii
        $old_accept = "old_accept" ascii
        $old_accept4 = "old_accept4" ascii
        $lib_main = "_lib_main" ascii
        $accept_filter = "accept_filter" ascii
        $accept4_filter = "accept4_filter" ascii
        $plthook1 = "plthook_open_by_address" ascii
        $plthook2 = "plthook_replace" ascii
        $sendmsg = "sendmsg" ascii
        $proc_maps = "/proc/self/maps" ascii

        $acpid_lock_stack = {
            48 BE 2F 76 61 72 2F 72 75 6E
            48 89 30
            48 B9 2F 61 63 70 69 64 2E 6C
            48 89 48 08
            C7 40 10 6F 63 6B 00
        }

    condition:
        uint32(0) == 0x464c457f and
        uint8(4) == 2 and
        uint8(5) == 1 and
        uint16(16) == 3 and
        uint16(18) == 0x3e and
        filesize < 64KB and
        all of them
}

 

rule FIREANT_TACTAP_ACPPID_1 {
    meta:
        author = "Sygnia"
        description = "Detects TacTap acppid TACACS injector component"
        family = "TacTap"
        component = "acppid"
        sha1 = "36005f5e4398a1c62a2a9271eddfcc1b44b1ad00"

    strings:
        $target_prog = "TARGET_PROG" ascii
        $so_path_env = "SO_PATH" ascii
        $target_proc = "tac_plus" ascii
        $so_path = "/lib/libseconfd.so" ascii
        $socket_path = "/var/run/acpid.lock" ascii
        $proc_maps = "/proc/%s/maps" ascii
        $proc_comm = "/proc/%s/comm" ascii
        $dlopen = "__libc_dlopen_mode" ascii
        $attach_err = "waitpid error while attaching: %s" ascii

    condition:
        uint32(0) == 0x464c457f and
        uint8(4) == 2 and
        uint8(5) == 1 and
        uint16(16) == 2 and
        uint16(18) == 0x3e and
        all of them and
        @target_prog < @so_path_env and
        @so_path_env < @target_proc and
        @target_proc < @so_path and
        (@so_path - @target_prog) < 0x100
}

 


Mirage Kitten targeting aviation and FinTech sectors across the Middle East and Africa with a new malware set

1.9.26  SECURELIST  Virus

While monitoring Mirage Kitten activity, we uncovered a previously undocumented malware family that we dubbed NodeRabbit. We identified the first sample on a system in Afghanistan. Further threat hunting revealed two additional, more advanced, variants: one on a system in Egypt and another on a system in Ethiopia.

NodeRabbit is a cross-platform remote access trojan (RAT) built with Node.js. It targets Windows, Linux, and macOS. Its operators deliver it through spear-phishing messages on LinkedIn and other job search platforms that contain trojanized coding challenge archives.

During the same investigation, we discovered another previously undocumented malware family that we dubbed PollCat. Like NodeRabbit, PollCat is a cross-platform RAT, but it is written in obfuscated JavaScript also distributed through trojanized coding challenge archives.

Mirage Kitten has historically relied on native malware written in languages such as C, C++, and Go, often deploying it through DLL search-order hijacking. NodeRabbit and PollCat represent the first publicly documented use of Node.js- and JavaScript-based malware by this APT group.

Kaspersky’s products detect this threat as Trojan.JS.MirageKitten.*

Background

During recent threat research, we detected suspicious activity on a system in Afghanistan. We traced it to an archive containing a software development project that the user may have received during a job application process. The archive purported to contain a coding challenge for candidates applying for an engineering role.

The archive, Front-Technical-Challenge.zip (MD5: 1EA83E4E4592B01E4ACAB63EB867BEE5), was hosted in an Amazon S3 bucket at: https://oracle-challenge.s3[.]us-east-1.amazonaws[.]com/Front-Technical-Challenge.zip

It contained TaskFlow, an app for software engineering assessment built with Express, React, and Vite. The accompanying README instructed the candidate to review the application and fix defects in its frontend. It also claimed that server.js was bug-free and should not be modified, conveniently directing attention away from the only application source file the attackers had altered.

README file for a trojanized coding challenge app

README file for a trojanized coding challenge app

The README also imposed a three-hour time limit and prohibited the use of AI assistants. Notably, an AI code-review assistant tasked with auditing the project would likely have flagged the suspicious first-line import of an unknown npm package and warned the targeted developer that the project was trojanized.

Rules and time limit included in the trojanized coding challenge app README file

Rules and time limit included in the trojanized coding challenge app README file

The first line of server.js imported a trojanized npm package named colorized_terminal, version 2.1.0. The attackers bundled the package directly in the challenge task archive’s node_modules directory rather than publishing it to the npm registry. When imported, the package silently launched an implant from node_modules/.cache/.320697f1/index.js as a detached background process.

Retrospective threat hunting across our telemetry revealed the broader scope of the campaign. We identified three NodeRabbit variants with a shared code lineage; each was recovered from a system in a different country. The operators delivered the variants through similarly themed coding challenges and used two trojanized packages, colorized_terminal and pretty-log, both pinned to version 2.1.0.

The campaign also delivered PollCat, a second RAT with a substantially different structure, through a separate coding challenge lure. We’ll analyze PollCat later in this research.

Initial access

The infection chain begins with fake recruiter accounts contacting prospective targets on a job search platform. According to a publicly cited source, a threat actor posing as a talent acquisition specialist at a major technology company contacted a software engineer and advertised a job opening, inviting the target to complete a technical assessment.

The target received a link to a coding challenge hosted on Amazon S3 and was pressured to download and run the project immediately. This public post matches the delivery chain we reconstructed from our telemetry: recruiter outreach on a job search platform, a coding challenge presented as a technical assessment, and a trojanized project archive hosted on legitimate cloud infrastructure.

NodeRabbit RAT: the first variant

We discovered the first NodeRabbit variant on a system in Afghanistan. The malware was concealed within the TaskFlow assessment at node_modules/.cache/.320697f1/index.js and executed by the trojanized colorized_terminal package.

Once running, NodeRabbit generates a unique agent identifier from available host information. It calculates the SHA-256 hash of the hostname, username, operating system version, architecture, and MAC address, then truncates the result to its first 32 hexadecimal characters.

NodeRabbit binds a TCP listener to 127.0.0.1:48739. This listener acts as a single-instance mechanism. If the malware cannot bind to the port, it assumes that another instance is already running and terminates silently.

NodeRabbit uses a persistence mechanism for each operating system:

Operating system

Persistence mechanism

Windows

Copies itself to %APPDATA%\Microsoft\EdgeUpdate\msedge_update.js; clones the local node.exe to nodew.exe in the same folder and patches its PE subsystem from Console to Windows GUI to suppress the console window; creates HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MicrosoftEdgeUpdate registry key executing nodew.exe msedge_update.js

Linux

Copies itself to ~/.config/microsoft-edge-update/msedge_update.js and creates an @reboot cron entry that invokes the script using the current Node.js executable.

macOS

Copies itself to ~/.config/microsoft-edge-update, creates ~/Library/LaunchAgents/com.microsoft.edgeupdate.plist configuration file pointing at the copy’s location with RunAtLoad and KeepAlive parameters, and attempts to load it.

The malware communicates with its command-and-control servers through three API endpoints, choosing from the following Azure-hosted C2 infrastructure addresses. On failure, it switches to the next C2 address:

1. https://plugplay.azurewebsites[.]net

2. https://Rgbteller.azurewebsites[.]net

3. https://Wslwebui.azurewebsites[.]net

Method

Endpoint

Purpose

POST

/api/rabbit/checkin

Register agent and host info

POST

/api/rabbit/task

Poll for commands

POST

/api/rabbit/result

Submit results

NodeRabbit serializes each C2 request object as JSON and wraps it with AES-256-GCM. The AES key is the SHA-256 digest of an ASCII seed embedded into the agent. Every request uses a fresh 12-byte IV and a 16-byte authentication tag:

The malware sends encrypted requests using the following structure:

{

  "d": "base64(IV || ciphertext || authentication_tag)",

  "_r": "8 hexadecimal characters",

  "_t": "epoch timestamp"

}

C2 responses are structured the same way and may contain a command to execute. We observed the first NodeRabbit variant supporting 11 commands:

Command

Functionality

sys:info

Return hostname, domain user information, username, and process ID.

proc:list

List running processes.

proc:start

Execute an arbitrary shell command.

fs:list

List a directory.

fs:read

Read a file in chunks and return Base64 data.

fs:write

Decode Base64 and write it at a chosen file offset.

fs:delete

Delete a file or recursively delete a directory.

fs:mkdir

Create directories recursively.

net:config

Enumerate adapters, MAC addresses, IP addresses, and DNS settings.

agent:sleep

Change the beacon interval.

script:exec

Write a base64 Node.js script to a randomly named .tmp file, execute it and delete it.

NodeRabbit RAT: the second variant

Retrospective threat hunting following the discovery in Afghanistan led us to a second infection on a system in Egypt. This sample is a more advanced NodeRabbit variant, launched through the trojanized pretty-log package instead of colorized_terminal.

Before running its core functionality, the malware checks whether the host resembles an analysis environment. It terminates if it detects limited system memory, a low CPU count, short system uptime, analyst-associated usernames or hostnames, or common analysis tools running on the system.

Before terminating, the malware generates benign HEAD requests to www.google.com, www.microsoft.com, and www.cloudflare.com, then exits without ever contacting its C2 infrastructure. Most likely, it attempts to look less suspicious by showing some benign activity before exiting.

Variant 2 implements partial corporate proxy support: it checks HTTP(S) proxy environment variables, Windows Internet Settings, including an explicit PAC URL, and WinHTTP configuration; tunnels its HTTPS C2 through HTTP CONNECT. It first tries to establish an unauthenticated connection. If it fails, it retries using URL-embedded basic credentials. Finally, it delegates Windows NTLM/Negotiate challenges to curl.exe --proxy-anyauth --proxy-user. It caches the proxy-discovery result, including when no proxy is found, for five minutes. If the polling loop detects a network-interface or IP-address change, it clears the cache and runs proxy discovery again on the next checkin.

To make sure a single instance is running, Variant 2 uses a host-specific port derived from the agent identifier instead of the fixed TCP port used by the first variant. It interprets the first four hexadecimal characters of the identifier as an integer and applies the following calculation: 41984 + (value mod 5000).

The resulting listener port falls between 41984 and 46983. Unlike the shared port used by Variant 1, this port varies depending on the infected host.

For persistence, Variant 2 masquerades as Intel Driver & Support Assistant. The exact persistence mechanism, once again, depends on the operating system.

Operating system

Persistence mechanism

Windows

Copies itself to %LOCALAPPDATA%\Intel\DSA\idriver_support.js. It then copies the local node.exe binary to IntelDSA.exe and changes its PE subsystem from Console to Windows GUI, suppressing the console window. Finally, it creates a scheduled task named IntelDriverSupportUpdate, which runs daily at 10AM and executes IntelDSA.exe with the dropped script.

Linux

Copies itself to ~/.config/intel-dsa/idriver_support.js and creates an @reboot cron entry.

macOS

Copies itself to ~/Library/Application Support/Intel DSA/idriver_support.js and creates the LaunchAgent com.intel.dsa.helper with RunAtLoad and KeepAlive enabled.

NodeRabbit RAT: the third variant

Further threat hunting identified a third NodeRabbit variant on a system in Ethiopia. Like the second variant, it is launched through the trojanized pretty-log package. It retains much of the previous variant’s functionality but introduces significant changes to its command-and-control configuration, command set, and persistence mechanisms.

The third variant communicates with its C2 infrastructure through a different set of API endpoints:

Method

Endpoint

Purpose

POST

/sdk/v2/ready

Register agent and host info

POST

/sdk/v2/config

Poll for commands

POST

/sdk/v2/events

Submit results

We observed the malware using a C2 chain composed of Azure- and Cloudflare-hosted domains.

1. https://visitfinancedentists[.]com

2. https://kyrasey-f8hfexa5cqamh7fk.westeurope-01.azurewebsites[.]net

3. https://healthcomfsdpower[.]com

 

For persistence, Variant 3 implements the following mechanisms depending on the operating system in use:

Operating system

Persistence mechanism

Windows

Attempts to copy the payload to ProgramData or LocalAppData, create a build-specific daily 10AM task, and start the copied payload. To choose the exact directory, it tries to list C:\Windows\System32\config. If successful, it selects ProgramData with /ru SYSTEM /rl highest; in case of a failure, it selects LocalAppData without explicit /ru or /rl settings.

macOS

Copies the payload to ~/Library/Application Support, creates and loads a RunAtLoad/KeepAlive LaunchAgent and starts the copied payload.

Linux

Copies the payload to ~/.local/share, attempts to add an @reboot cron entry, and starts the copied payload. If crontab -l fails, persistence is skipped.

WSL

Uses the payload copied for persistence on the main Linux system, as described above. Writes launcher.vbs under the Windows user profile, and creates a daily 10AM Windows task that relaunches it through wscript.exe and wsl.exe.

A new command, agent:servers, replaces the active in-memory C2 server list and can write the updated list to .sv.json. The third variant retains the original 11 commands and adds 12 new ones, bringing the total to 23.

New commands

Functionality

fs:drives

Enumerate accessible Windows drive letters or WSL-mounted drives

proc:exec

Execute a process

proc:kill

Kill process by PID or image name

agent:servers

Replace the active C2 and attempt to keep the new configuration

agent:getchain

Return the current C2

outlook:emails

Harvest account addresses from Outlook OST and PST artifacts

persist:check

Check selected VS Code, scheduled-task, and Run-key persistence indicators

persist:vscode

Attempt to install a fake VS Code extension and Windows Run value

persist:vscode:remove

Remove the fake extension

persist:projects:scan

Search recent and common development locations for Git repositories

persist:project:inject

Inject a launcher into a repository’s Git hooks

persist:project:remove

Remove the marked Git-hook launcher

Beyond the persistence mechanisms described above, Variant 3 introduces two additional persistence mechanisms that relaunch the malware through common developer workflows.

1. Malicious VS Code extension

The persist:vscode command first copies the payload to its build-specific install path. If a compatible extension directory exists, it creates a fake extension displayed as GitHub Copilot Helper, with the description AI coding assistant helper service and the activation event on StartupFinished.

The extension’s extension.js file attempts to start the installed payload as a detached Node.js process. To look less suspicious to the user, it uses a trusted publisher name borrowed from local extension metadata or a trustedPublishers value found in state.vscdb. However, no signature or trusted status is copied.

Separately, the handler tries to disable Workspace Trust if the VS Code User directory exists. On Windows, it attempts to establish persistence using a current-user Run registry key value even if the extension directory is missing.

2. Git hook injection

Git-hook persistence works in two steps. First, persist:projects:scan checks recent VS Code workspace paths directly. Under common locations such as ~/projects and ~/source, it checks only the first 60 immediate children, not the root itself, and returns no more than 20 repositories.

For a selected repository, persist:project:inject appends a marked launcher to .git/hooks/post-merge and .git/hooks/post-checkout by default. The marker is # shepherd-persist; the line following the marker attempts to start the installed payload with Node in the background. A later Git operation must trigger one of those hooks, and the referenced Node executable and payload must still exist.

PollCat RAT

While tracking NodeRabbit infections, we discovered another malicious tool we dubbed PollCat, which is also distributed under the guise of a programming challenge. The sample we obtained resides inside RankChallenge-react, a React code-fixing challenge presented as a time-limited developer assessment. Running the project invokes npm i && node index.js, which starts the local application and attempts to open the challenge in the user’s browser.

Although the visible exercise is not a security CTF, the project uses CTF terminology in several places. The root package is named ctf-server, the backend prints CTF server running, the frontend uses several ctf-* storage keys, and the tutorial refers to path/to/ctf. These repeated labels, together with instructions that do not fully match the delivered application, are consistent with an AI-assisted or template-generated project. One possible explanation is that the attacker prompted an AI coding assistant to create a CTF-style React platform and later inserted the malicious components.

README instructions and challenge overview included in the trojanized React coding project

README instructions and challenge overview included in the trojanized React coding project

The PDF tutorial contained in the same archive as the project tells the target to click Continue, enter a six-digit OTP code, and complete the challenge within a one-hour session. It states that codes are supplied by the recruiter, are single-use, and expire quickly; the visible login page also claims that codes rotate every 30 seconds. In the delivery scenario described by the investigation, the threat actor posing as a recruiter could provide the code directly to the targeted developer. This gives the operator control over access to the lure, while the expiring code and countdown create a sense of urgency, pressuring the target to run the project and complete the assessment quickly, potentially accelerating the infection process.

One-hour session window enforced by the trojanized coding challenge

The bundled .env file contains the JWT signing secret, OTP service URL, and OTP client ID.

Configuration embedded in .env file of the trojanized coding project, including the OTP service URL and client identifier

The application forwards submitted codes to an attacker-managed domain registered in late June-2026: https://lifespotify[.]com/api/users/b879746e-fed9-4211-a6da-4d8223681267/otp/validate.

That said, PollCat starts independently of the OTP authentication process. During application startup, app.js loads requireAuth.js, which imports and immediately starts the malicious requireObjects.js component. PollCat can therefore begin C2 registration and command polling while the application is still loading, before the user enters an access code.

A failed OTP validation prevents the user from accessing the protected challenge features, but PollCat continues running in the background. A successful OTP validation issues a JWT and creates another worker that starts an additional PollCat instance. The first authenticated request also triggers the persistence attempt.

Persistence starts when the first request carrying a valid JWT reaches the protected middleware. PollCat then uses one of the following methods:

Operation system

Persistence mechanism

Windows

Writes package.json and requireObject.js to %APPDATA%\Microsoft\Network, runs npm install, and creates a daily task named NetSync_<username> and scheduled for 09AM that runs the worker with Node.js.

Linux

Writes the worker to ~/.node_packages, runs npm i, and appends both a daily 09AM cron line and an @reboot line.

macOS

Uses the same ~/.node_packages copy and cron path, then creates and loads ~/Library/LaunchAgents/com.harsh.requireobject.plist with RunAtLoad and a daily 09AM trigger.

Once active, PollCat identifies the host as 129--<hostname> and iterates over the following C2s until registration succeeds:

1. https://sahi-finance[.]com

2. https://GamebarAppinformation[.]azurewebsites[.]net

3. https://GamebarApp[.]azurewebsites[.]net

 

To register, it sends the following HTTP request to the C2:

POST /beacon HTTP/1.1

Host: <c2-host>

Content-Type: application/json

 

{"clientId":"<client-id>","type":"poll","pcName":"<hostname>","userName":"<username>"}

 

On successful registration, PollCat expects an unusual HTTP 400 response containing a socket identifier and optional timing values:

HTTP/1.1 400

Content-Type: application/json

 

{"socketId":"<socket-id>","pollInterval":<poll-interval-ms>,"jitterTime":<jitter-ms>}

 

After registration, PollCat sends host information to /gate/hello, polls /gate/fetch for commands, and returns results through /gate/submit. All endpoints in use are presented in the table below.

Method

Endpoint

Purpose

POST

/beacon

Register the client and obtain a socketId and optional timing values.

POST

/gate/hello

Submit host, user, domain, OS information, and its current privilege level.

GET

/gate/fetch?token=<socketId>

Poll for commands.

POST

/gate/submit

Submit a Base64-encoded command-result structure.

GET

/vault/<uuid>

Retrieve a hosted file and write it to the victim machine.

PUT

/vault/push/

Upload a local file or file chunk to the C2.

POST

/gate/track

Report chunk-upload progress.

By default, PollCat RAT polls every two minutes with up to five seconds of jitter. Commands and results are stored as little-endian binary records and carried as Base64 text.

PollCat RAT declares 22 commands, but three of them have no implementation:

Command

Functionality

0x02 (DIR)

List a directory.

0x03 (MV)

Move a file or directory.

0x04 (RUN)

Execute a shell command.

0x05 (TASKLIST)

List running processes.

0x06 (DEL)

Delete a file or directory.

0x07 (UPLOAD)

Download a file from the C2 to the victim’s machine.

0x08 (DOWNLOAD)

Upload a local file to the C2.

0X09 (DRIVES)

List drives, volumes, or mount points.

0X0A (TERMINATE)

Terminate a process by PID.

0X0B (RUNDLL)

Load a DLL and call an exported function on Windows.

0X0C (MKDIR)

Create a directory.

0X0D (ZIP)

Create or extract a ZIP archive.

0X0E (CHUNKED_DOWNLOAD)

Upload a local file in chunks.

0X0F (RUN_HIDDEN)

Start a hidden background process.

0X20 (EVAL_JS)

Execute JavaScript supplied by the C2.

0X30 (SYSTEM_CHECK)

Collect process and software inventory.

0XA1 (WS_DOWNLOAD)

Defined but not implemented.

0xB0 (REQUEST_ELEVATION)

Defined but not implemented.

0XB1 (PERSIST)

Defined but not implemented.

0xF0 (SET_SLEEP_TIME)

Change the polling interval.

0XF1 (SET_IDLE_TIME)

Store an idle-time value.

0xF2 (SET_JITTER_TIME)

Change polling jitter.

The command names UPLOADDOWNLOAD, and CHUNKED_DOWNLOAD are written from the C2’s perspective. UPLOAD sends a C2-hosted file to the victim’s machine, while the two download commands transfer victim files back to the C2.

EVAL_JS runs JavaScript supplied by the C2 and gives that code access to Node.js modules, files, processes, networking, and child-process functions.
SYSTEM_CHECK collects the names of running processes and lists files and folders from:

It also searches for folders matching 24 hardcoded strings corresponding to security software vendor names: ‘Google’, ‘Microsoft’, ‘Palo Alto Networks’, ‘Cisco’, ‘VMware’, ‘Fortinet’, ‘Citrix’, ‘CheckPoint’, ‘Juniper Networks’, ‘LogMeIn’, ‘Sophos’, ‘Symantec’, ‘Trend Micro’, ‘McAfee’, ‘Kaspersky Lab’, ‘ESET’, ‘Bitdefender’, ‘Avast Software’, ‘CrowdStrike’, ‘SentinelOne’, ‘Malwarebytes’, ‘BraveSoftware’, ‘Tencent’, and ‘Naver’.

When PollCat finds a matching folder, it lists that folder’s root contents. It does not recursively scan the entire product directory. The detailed inventory, including process names, directory listings, and collected paths, is sent as JSON to POST /api/system-details/result.

Infrastructure

Mirage Kitten continues to rely on Azure Websites and Cloudflare-backed domains to hinder infrastructure discovery and tracking. More importantly, the use of Microsoft Azure subdomains for C2 helps the traffic blend into legitimate organizational network activity. In some cases that we encountered during our research, the actors even incorporated the targeted organization’s name into the Azure subdomain, making C2 communications appear more like normal business traffic originating from an employee machine during regular business days.

Domain

Registrar

ASN

Malware sample

naturalapplication.azurewebsites[.]net
retaildemo.azurewebsites[.]net
tubitak.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 1

rgbteller.azurewebsites[.]net
wslwebui.azurewebsites[.]net
plugplay.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 2

crossdwm.azurewebsites[.]net
wdisystem.azurewebsites[.]net
wslmenus.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 3

dnshnsdev.azurewebsites[.]net
hpjumpsrv.azurewebsites[.]net
storview.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 4

healthcomfsdpower[.]com
visitfinancedentists[.]com

NameCheap, Inc.

AS 13335

NodeRabbit RAT sample 5

kyrasey-f8hfexa5cqamh7fk.westeurope-01.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

greenyjsgfd.azurewebsites[.]net
helptellerbls.azurewebsites[.]net
timedrv.azurewebsites[.]net
userwellgtfs.azurewebsites[.]net

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 6

hecowime-aqdphyd4bbdef6es.westeurope-01.azurewebsites[.]net
msmanagementgrp[.]com
msmanagementgrpmedia[.]com

MarkMonitor Inc.

AS 8075

NodeRabbit RAT sample 7

lifespotify[.]com

Dynadot

AS 8075

PollCat RAT

gamebarapp.azurewebsites[.]net
gamebarappinformation.azurewebsites[.]net

MarkMonitor Inc.

sahi-finance[.]com

NameCheap, Inc.

Based on our analysis of Mirage Kitten’s infrastructure, we identified certain patterns across several command-and-control channels, including msmanagementgrp[.]com and visitfinancedentists[.]com

Further investigation based on these patterns led to the discovery of approximately 11 additional infrastructure assets attributed to the same group.

Domain

Creation date

Registrar

healthful-hub[.]com

2026-07-03

NameCheap, Inc.

neumedicahealthcare[.]com

2026-07-03

NameCheap, Inc.

optimumhealthcredit[.]com

2026-07-03

NameCheap, Inc.

healthfullyrecipes[.]com

2026-06-30

NameCheap, Inc.

refreshhealthandwellness[.]com

2026-06-09

NameCheap, Inc.

healthvitalitycare[.]com

2026-05-18

NameCheap, Inc.

aceofspadesmanagement[.]com

2026-05-18

NameCheap, Inc.

glmediaagency[.]com

2026-05-18

NameCheap, Inc.

digimediaskill[.]com

2026-05-18

NameCheap, Inc.

healthyweightplan[.]com

2026-05-18

NameCheap, Inc.

mens-health-online[.]com

2026-05-15

NameCheap, Inc.

Victims

Based on our telemetry, we identified victims in fintech, aviation and aerospace sectors across the Middle East and Africa – specifically, in Egypt, Ethiopia and Afghanistan.

We also observed submissions of ZIP archives with trojanized projects containing NodeRabbit and PollCat to an online multi-scanner originating from several countries, including India, Türkiye, Israel, Iraq, Germany, and Ireland.

Attribution

We attribute this activity to Mirage Kitten with a high degree of confidence based on the following observations:

  1. 1 Structural similarities with the Retrograde/MiniFast native DLL backdoor (MD5:810F8E3B88EB05F710C09552941D6F56)

  2. 2 Speaking of victimology, the attacks are consistent with Mirage Kitten’s known geographic targeting, with the group maintaining a strong focus on entities across Africa and the Middle East, this time with a particular focus on the aviation and FinTech sectors.

  3. 3 As for the operational infrastructure, Mirage Kitten has historically hosted its initial ZIP lures on legitimate third-party services. Previously, it used onlyoffice.com for this purpose. In this activity, the group shifted to Amazon S3 buckets.

  4. 4 Finally, the combination of Azure Websites and Cloudflare‑backed domains has been a hallmark of Mirage Kitten’s TTPs, which we have observed across NodeRabbit and PollCat.

Conclusions

Mirage Kitten’s latest activity marks a notable evolution in the group’s tooling: NodeRabbit and PollCat are the group’s first Node.js/JavaScript-based implants, departing from its usual native malware deployed through DLL search-order hijacking. The shift to cross-platform scripting gives the operators a single codebase that runs on Windows, Linux, and macOS, with payloads that blend naturally into developer workstations.

The delivery mechanism, however, remains consistent with Mirage Kitten’s historical tradecraft: the use of recruiter personas on LinkedIn to target critical sectors across the Middle East and Africa for cyberespionage purposes. We continue to track the group’s activity and will report on new developments in future publications.

Indicators of compromise

Additional IoCs are available to customers of our Threat Intelligence Reporting service. For more details, contact us at intelreports@kaspersky.com.

File hashes

CBAAF0900A13F28E380F49ADECEC932C  FrontEnd-Task.zip
1EA83E4E4592B01E4ACAB63EB867BEE5  Front-Technical-Challenge.zip
366515822D5AC1CC500711EF57A2E32E  Task-FullStack.zip
CF449F1992C2819E62AC44A0B06AC2E7  fullstack-1536.zip
E95A4366686E3F786EA3C056FAB5B0DA  webapp76592.zip
DE5AF16A3757EF700B01DC34D67079AE  webapp76531.zip
BE086789568441D0D7E4679AEE51F566  challenges-17831.zip
E259C5EDF158AAC4CFE14F77DDD0B196  challenges-17832.zip
291AC3ABE73C5158E59A437B75D5F0AA  Project-1802.zip
0962F56D7EC69F4F2A0162DCBE22116B  Case-34234.zip
795E053A990A1569FFDCB57F48F6D085  RankChallenge-react-6uJSX3-main.zip

Domains and IPs

oracle-challenge.s3[.]us-east-1.amazonaws[.]com
naturalapplication.azurewebsites[.]net
retaildemo.azurewebsites[.]net
tubitak.azurewebsites[.]net
rgbteller.azurewebsites[.]net
wslwebui.azurewebsites[.]net
plugplay.azurewebsites[.]net
crossdwm.azurewebsites[.]net
wdisystem.azurewebsites[.]net
wslmenus.azurewebsites[.]net
dnshnsdev.azurewebsites[.]net
hpjumpsrv.azurewebsites[.]net
storview.azurewebsites[.]net
healthcomfsdpower[.]com
visitfinancedentists[.]com
kyrasey-f8hfexa5cqamh7fk.westeurope-01.azurewebsites[.]net
greenyjsgfd.azurewebsites[.]net
helptellerbls.azurewebsites[.]net
timedrv.azurewebsites[.]net
userwellgtfs.azurewebsites[.]net
hecowime-aqdphyd4bbdef6es.westeurope-01.azurewebsites[.]net
msmanagementgrp[.]com
msmanagementgrpmedia[.]com
lifespotify[.]com
gamebarapp.azurewebsites[.]net
gamebarappinformation.azurewebsites[.]net
sahi-finance[.]com
healthful-hub[.]com
neumedicahealthcare[.]com
optimumhealthcredit[.]com
healthfullyrecipes[.]com
Refreshhealthandwellness[.]com
healthvitalitycare[.]com
aceofspadesmanagement[.]com
glmediaagency[.]com
digimediaskill[.]com
healthyweightplan[.]com
mens-health-online[.]com


 H  ARTICLES  ALERTS  CONFERENCE  MALWARE TRAFFICS  UPDATE  SOFTWARE  BATTLEFIELD UKRAINE